<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>开源日记</title><link>/feed/MP_WXS_3877547210.rss</link><description>分享10k+Star的优质开源项目。</description><language>zh-CN</language><generator>Mp-We-Rss</generator><lastBuildDate>Wed, 17 Jun 2026 16:27:30 +0800</lastBuildDate><image><url>http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png</url><title>开源日记</title><link>/feed/MP_WXS_3877547210.rss</link></image><item><id>3877547210-2247512951_1</id><title>京东又一开源神器，长视频更稳了。</title><description>Sora 关闭之后，AI 视频赛道就变得更火了。          国产这边，可灵、即梦、海艺都在发力，但长视频角色一致性仍是行业公认难题，目前能彻底解决的工具不多。          最近京东开源了JoyAI-Echo。          五分钟的视频中，人物的脸部、声音和服饰都可以保持不变，不会再出现越拍越不像自己的情况了。          JoyAI-Echo是京东JoyFutureAca...</description><guid>https://mp.weixin.qq.com/s/80DNOCQYGziW-EovDfuKpA</guid><enclosure url="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblJxzdB0JHib7jibiamSL3bf6CmDbZewdbEkgiastfN5c5s5dJkG1SjNMK0vsQYFRnqhwNC5eiabMibQeRnIB79WnHpL9r5icic98MUUt0M/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="font-size: 16px; color: black; padding: 0px 10px; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.24em; font-size: 13.5px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1160" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.24em; font-size: 13.5px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.24em; font-size: 13.5px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   Sora 关闭之后，AI 视频赛道就变得更火了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.24em; font-size: 13.5px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   国产这边，可灵、即梦、海艺都在发力，但长视频角色一致性仍是行业公认难题，目前能彻底解决的工具不多。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.24em; font-size: 13.5px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   最近京东开源了JoyAI-Echo。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.24em; font-size: 13.5px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   五分钟的视频中，人物的脸部、声音和服饰都可以保持不变，不会再出现越拍越不像自己的情况了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.24em; font-size: 13.5px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   JoyAI-Echo是京东JoyFutureAcademy团队所开发的一个长音频和视频生成框架。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.24em; font-size: 13.5px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   目前在GitHub上已经获得了1600个Star，在短短两周的时间里增长速度非常快。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLCkFa2GQh5UghGTHpdRVXic8ct6icdKZhXNPdSMiaaXXVgnMfoynJV1RQ6J5SHBiapSiaHNREotuFpRp5HV17vh4LibkuNjgo99sUvI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.24em; font-size: 13.5px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   简单来说，它就是让 AI 视频里的角色更稳定。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.24em; font-size: 13.5px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    几分钟的视频里，即使切换多个镜头，人物也不会突然变脸、变声，看起来更像是同一个人在演。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;span style="width: 660px !important; height: 384px !important; overflow: hidden;"&gt;
   &lt;div id="page-content"&gt;
    &lt;!--S 全屏播放 full_screen_mv--&gt;
    &lt;div id="js_mpvedio_wrapper_wxv_4563362045425139715" style="position:relative;height:100%"&gt;
     &lt;div class="add_bg_color appmsg_video"&gt;
      &lt;div class="video_tail_module video_screen_half" id="js_video_tail_panel_wxv_4563362045425139715" style="display: none;"&gt;
       &lt;div class="video_tail_module__hd" id="js_video_tail_hd"&gt;
        &lt;div class="account_info_wrp"&gt;
         &lt;div class="profile_info_wrp js_go_profile"&gt;
          &lt;img/&gt;
          &lt;div class="account_name" id="js_tail_panel_account_name"&gt;
          &lt;/div&gt;
          &lt;div class="subscription_info subscription_success"&gt;
           &lt;div class="account_subscription_tips js_subscription_success" id="js_subscription_success" style="display: none;"&gt;
            已关注
           &lt;/div&gt;
           &lt;i class="account_link_icon js_profile_icon" id="js_profile_icon"&gt;
           &lt;/i&gt;
          &lt;/div&gt;
         &lt;/div&gt;
         &lt;div class="btn_account_subscription js_btn_account_subscription" id="js_btn_account_subscription" style="display: none;"&gt;
          关注
         &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class="opr_wrp"&gt;
         &lt;span&gt;
          &lt;i class="opr_item refresh_icon"&gt;
          &lt;/i&gt;
          &lt;span&gt;
           重播
          &lt;/span&gt;
         &lt;/span&gt;
         &lt;span style="display: none;"&gt;
          &lt;i class="opr_item share_icon"&gt;
          &lt;/i&gt;
          &lt;span&gt;
           分享
          &lt;/span&gt;
         &lt;/span&gt;
         &lt;!--点赞后 加className selected--&gt;
         &lt;span style="display: none;"&gt;
          &lt;i class="opr_item like_icon"&gt;
          &lt;/i&gt;
          &lt;span&gt;
           赞
          &lt;/span&gt;
         &lt;/span&gt;
         &lt;!-- &lt;span class="opr_item_wrp recommend_item_wrp" id="js_tail_channel_button"               style="display: none;"&gt;               &lt;i class="opr_item video-logo_icon"&gt;&lt;/i&gt;               &lt;span class="opr_item_text"&gt;随便看看&lt;/span&gt;             &lt;/span&gt; --&gt;
        &lt;/div&gt;
       &lt;/div&gt;
       &lt;!-- 有拓展内容 --&gt;
       &lt;div class="have_expand" id="js_expand_area"&gt;
       &lt;/div&gt;
       &lt;!-- 广告内容 --&gt;
       &lt;div class="ad_area" id="js_tail_video_ad_area"&gt;
       &lt;/div&gt;
      &lt;/div&gt;
     &lt;/div&gt;
     &lt;div class="feed-wrapper"&gt;
      &lt;div aria-hidden="true" aria-modal="true" class="wx_bottom_modal_wrp player_relate_video_dialog weui-half-screen-dialog_fold" hidewhensideslip="" role="dialog" style="visibility: hidden; display: none;" tabindex="0"&gt;
       &lt;div class="wx_bottom_modal_mask_fixed"&gt;
       &lt;/div&gt;
       &lt;div class="weui-mask wx_bottom_modal_mask" style="--opacity: 1; display: none;"&gt;
       &lt;/div&gt;
       &lt;div class="weui-half-screen-dialog wx_bottom_modal" style="max-height: none;"&gt;
        &lt;div class="wx_bottom_modal_group_container" style="transform: translateX(calc(0% + 0px)); max-height: none;"&gt;
         &lt;div aria-hidden="false" class="wx_bottom_modal_group" style="left: 0%; max-height: none;"&gt;
          &lt;div class="weui-half-screen-dialog__hd__wrp"&gt;
           &lt;div class="weui-half-screen-dialog__hd"&gt;
            &lt;div class="weui-half-screen-dialog__hd__side"&gt;
             &lt;button class="weui-btn_icon weui-wa-hotarea"&gt;
              关闭
              &lt;i class="weui-icon-half-screen-close"&gt;
              &lt;/i&gt;
             &lt;/button&gt;
            &lt;/div&gt;
            &lt;div class="weui-half-screen-dialog__hd__main"&gt;
             &lt;strong class="weui-half-screen-dialog__title"&gt;
              观看更多
             &lt;/strong&gt;
            &lt;/div&gt;
            &lt;div class="weui-half-screen-dialog__hd__side"&gt;
             &lt;!-- --&gt;
             &lt;button class="weui-btn_icon weui-wa-hotarea" style="display: none;"&gt;
              更多
              &lt;i class="weui-icon-more"&gt;
              &lt;/i&gt;
             &lt;/button&gt;
            &lt;/div&gt;
           &lt;/div&gt;
          &lt;/div&gt;
          &lt;div class="weui-half-screen-dialog__bd" id="contentAreaWrp"&gt;
           &lt;div class="weui-loadmore" style="display: none;"&gt;
            &lt;i class="weui-loading"&gt;
            &lt;/i&gt;
           &lt;/div&gt;
           &lt;div class="wx_bottom_modal_msg_wrp" style="display: none;"&gt;
            &lt;div class="wx_bottom_modal_msg"&gt;
             &lt;i class="weui-loading"&gt;
             &lt;/i&gt;
            &lt;/div&gt;
           &lt;/div&gt;
           &lt;div class="weui-loadmore weui-loadmore_line weui-loadmore_dot" style="display: none;"&gt;
            &lt;span&gt;
            &lt;/span&gt;
           &lt;/div&gt;
           &lt;div class=""&gt;
            &lt;ul class="player_relate_video_list" id="js_player_relate_video_list"&gt;
            &lt;/ul&gt;
            &lt;div class="weui-loadmore weui-loadmore_default weui-loadmore_line weui-loadmore_dot player_video_list_end_line"&gt;
             &lt;span&gt;
             &lt;/span&gt;
            &lt;/div&gt;
           &lt;/div&gt;
           &lt;div class="weui-loadmore" style="display: none;"&gt;
            &lt;i class="weui-loading"&gt;
            &lt;/i&gt;
           &lt;/div&gt;
          &lt;/div&gt;
          &lt;!-- --&gt;
         &lt;/div&gt;
        &lt;/div&gt;
       &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class="js_video_fullscreen_profile video_full-screen__head video_full-screen__head_fixed" style="padding-top: 16px; transform: translate3d(0px, 0px, 0px); display: none;"&gt;
       &lt;div class="video_full-screen__head__inner"&gt;
        &lt;div class="video_full-screen__head__body"&gt;
         &lt;div class="js_video_fullscreen_profile_exit video_full-screen__head__item"&gt;
          &lt;div class="video_full-screen__article-title"&gt;
           &lt;button class="weui-wa-hotarea js_video_fullscreen_profile_exit reset_btn video_close_fullscreen_btn"&gt;
            &lt;i class="weui-icon-close"&gt;
             退出全屏
            &lt;/i&gt;
           &lt;/button&gt;
          &lt;/div&gt;
         &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class="video_full-screen__head__ft"&gt;
         &lt;a aria-label="更多操作" class="video_menu_more js_video_fullscreen_menu_more weui-wa-hotarea_before" href="javascript:;" role="button"&gt;
          &lt;i class="weui-icon-outlined-more"&gt;
          &lt;/i&gt;
         &lt;/a&gt;
        &lt;/div&gt;
       &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class="infinity-list__wrapper" style="height: 372px;"&gt;
       &lt;div class="" style="height: 372px; overflow: visible;"&gt;
        &lt;div class="infinity-list__page destory-enter-to" data-key="wxv_4563362045425139715" infinity-idx="0" style="height: 372px; position: absolute; top: 0px; opacity: 1;"&gt;
         &lt;div class="mp-video-player" data-v-f4ee5450="" style="height: 100%;"&gt;
          &lt;div class="js_mpvedio page_video_wrapper" data-v-82497581="" data-v-f4ee5450="" id="js_mpvedio_1781600572886_1507127780686"&gt;
           &lt;div class="js_page_video page_video ratio_primary align_upper_center page_video_without-control page_video_skin-normal" data-v-82497581="" style="display: block; width: 100%; height: 372px;"&gt;
            &lt;svg class="border_filler border_filler_lefttop" data-v-82497581="" height="4px" viewbox="0 0 2 2" width="4px" xmlns="http://www.w3.org/2000/svg"&gt;
             &lt;path d="M1.85.005A2 2 0 000 2V0h2z" data-v-82497581="" fill="#ffffff" fill-rule="evenodd"&gt;
             &lt;/path&gt;
            &lt;/svg&gt;
            &lt;svg class="border_filler border_filler_righttop" data-v-82497581="" height="4px" viewbox="0 0 2 2" width="4px" xmlns="http://www.w3.org/2000/svg"&gt;
             &lt;path d="M1.85.005A2 2 0 000 2V0h2z" data-v-82497581="" fill="#ffffff" fill-rule="evenodd"&gt;
             &lt;/path&gt;
            &lt;/svg&gt;
            &lt;svg class="border_filler border_filler_rightbot" data-v-82497581="" height="4px" viewbox="0 0 2 2" width="4px" xmlns="http://www.w3.org/2000/svg"&gt;
             &lt;path d="M1.85.005A2 2 0 000 2V0h2z" data-v-82497581="" fill="#ffffff" fill-rule="evenodd"&gt;
             &lt;/path&gt;
            &lt;/svg&gt;
            &lt;svg class="border_filler border_filler_leftbot" data-v-82497581="" height="4px" viewbox="0 0 2 2" width="4px" xmlns="http://www.w3.org/2000/svg"&gt;
             &lt;path d="M1.85.005A2 2 0 000 2V0h2z" data-v-82497581="" fill="#ffffff" fill-rule="evenodd"&gt;
             &lt;/path&gt;
            &lt;/svg&gt;
            &lt;div class="js_video_fullscreen_profile video_full-screen__head" data-v-82497581="" style="display: none;"&gt;
             &lt;div class="video_full-screen__head__inner" data-v-82497581=""&gt;
              &lt;div class="video_full-screen__head__body" data-v-82497581=""&gt;
               &lt;div class="js_video_fullscreen_profile_exit video_full-screen__head__item" data-v-82497581=""&gt;
                &lt;div class="video_full-screen__article-title" data-v-82497581=""&gt;
                 &lt;button class="weui-wa-hotarea js_video_fullscreen_profile_exit reset_btn video_close_fullscreen_btn" data-v-82497581="" style="display: none;"&gt;
                  &lt;i class="weui-icon-back-arrow" data-v-82497581=""&gt;
                   切换到竖屏全屏
                  &lt;/i&gt;
                 &lt;/button&gt;
                 &lt;button class="weui-wa-hotarea js_video_fullscreen_profile_exit reset_btn video_close_fullscreen_btn" data-v-82497581="" style="display: none;"&gt;
                  &lt;i class="weui-icon-close" data-v-82497581=""&gt;
                   退出全屏
                  &lt;/i&gt;
                 &lt;/button&gt;
                 &lt;div class="video_full-screen__account" data-v-82497581="" role="button" style="display: none;"&gt;
                  &lt;div class="video_full-screen__account-info" data-v-82497581=""&gt;
                   &lt;span style='background: url("http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png") center center / cover no-repeat;'&gt;
                   &lt;/span&gt;
                   &lt;span&gt;
                    开源日记
                   &lt;/span&gt;
                   &lt;button class="reset_btn video_profile_follow_btn weui-wa-hotarea" data-v-82497581="" style="display: none;" type="button"&gt;
                    已关注
                   &lt;/button&gt;
                  &lt;/div&gt;
                 &lt;/div&gt;
                &lt;/div&gt;
               &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="video_full-screen__head__ft" data-v-82497581=""&gt;
               &lt;a aria-label="更多操作" class="video_menu_more js_video_fullscreen_menu_more weui-wa-hotarea_before" data-v-82497581="" href="javascript:;" role="button" style="display: none;"&gt;
                &lt;i class="weui-icon-outlined-more" data-v-82497581=""&gt;
                &lt;/i&gt;
               &lt;/a&gt;
              &lt;/div&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="js_share_btn_contain top_screen_opr video_share_opr" data-v-82497581="" style="display: none;"&gt;
             &lt;div class="wx_video_share_area" data-v-82497581=""&gt;
              &lt;button class="js_share_btn wx_video_share_btn weui-wa-hotarea" data-v-82497581="" type="button"&gt;
               分享视频
              &lt;/button&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div aria-label="加载中" class="wrp_loading js_loading" data-v-82497581="" role="alert" style="display: none;"&gt;
             &lt;span&gt;
              &lt;span&gt;
              &lt;/span&gt;
             &lt;/span&gt;
            &lt;/div&gt;
            &lt;div class="poster_cover" data-v-82497581="" style='background-image: url("http://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblIdx8iakfJ2rCLXFlDsIR2YarZF1JonWEHaPeAvYc4uX1iczEw74D1H8ibdB8CM2ibehzOEWUOWSz2COzWNMBOl6X9rpjibxECoWicP0/640?wx_fmt=jpeg&amp;amp;wxfrom=16"); background-size: cover; z-index: 10;'&gt;
            &lt;/div&gt;
            &lt;div class="full_screen_opr wx_video_play_opr" data-v-82497581="" style=""&gt;
             &lt;button class="mid_play_box reset_btn" data-v-82497581="" type="button"&gt;
              &lt;i aria-label="播放视频" class="pic_mid_play" data-v-82497581=""&gt;
              &lt;/i&gt;
              &lt;span&gt;
               ，时长
              &lt;/span&gt;
              &lt;span&gt;
               00:09
              &lt;/span&gt;
             &lt;/button&gt;
            &lt;/div&gt;
            &lt;!-- --&gt;
            &lt;div class="top_screen_opr wx_video_flow_wrap" data-v-82497581="" role="alert" style="display: none;"&gt;
             &lt;div class="wx_video_flow" data-v-82497581=""&gt;
              &lt;p&gt;
              &lt;/p&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="mid_opr fast_pre_next" data-v-82497581="" style="display: none;"&gt;
             &lt;div class="video_processor_bar" data-v-82497581=""&gt;
              &lt;div class="processor_bar_inner js_forward_bar" data-v-82497581="" style="width: 0%;"&gt;
              &lt;/div&gt;
             &lt;/div&gt;
             &lt;p&gt;
              &lt;span&gt;
               0
              &lt;/span&gt;
              &lt;span&gt;
               /
              &lt;/span&gt;
              &lt;span&gt;
               0
              &lt;/span&gt;
             &lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="wx_video_progress_msg full_screen_opr" data-v-82497581="" role="alert" style="display: none;"&gt;
             &lt;div class="wx_video_progress_msg_inner" data-v-82497581=""&gt;
              &lt;span&gt;
               00:00
              &lt;/span&gt;
              &lt;span&gt;
               /
              &lt;/span&gt;
              &lt;span&gt;
               00:09
              &lt;/span&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="video_fullscreen_mask" data-v-82497581="" style="display: none;"&gt;
            &lt;/div&gt;
            &lt;div class="video_screen_mode_switch" data-v-82497581="" style="bottom: calc(50% - 242.666667px); display: none;"&gt;
             &lt;button class="reset_btn video_screen_mode_switch_btn weui-wa-hotarea" data-v-82497581="" type="button"&gt;
              切换到横屏模式
             &lt;/button&gt;
            &lt;/div&gt;
            &lt;div class="full_screen_opr wx_video_pause_full_mod" data-v-82497581="" style="display: none;"&gt;
             &lt;button class="reset_btn wx_video_pause_full_btn" data-v-82497581="" type="button"&gt;
              继续播放
             &lt;/button&gt;
            &lt;/div&gt;
            &lt;input aria-hidden="true" class="aria_hidden_abs" data-v-82497581="" title="显示工具栏" type="checkbox"/&gt;
            &lt;div class="js_control video_opr video_opr_normal padding_play_bar" data-v-82497581=""&gt;
             &lt;div class="opr_inner" data-v-82497581=""&gt;
              &lt;div class="opr_inner_fl" data-v-82497581=""&gt;
               &lt;div class="js_play_bar_wrapper wrp_play_bar wrp_play_bar_hide_speed-dot" data-v-82497581="" style="display: none;"&gt;
                &lt;div class="js_progress_bar wrp_progress" data-v-82497581="" style="padding-top: 6px; padding-bottom: 0px;"&gt;
                 &lt;div class="progress_bar" data-v-82497581=""&gt;
                  &lt;div class="background_bar" data-v-82497581=""&gt;
                  &lt;/div&gt;
                  &lt;div aria-labelledby="ariaPlayedCurrent" class="js_played_bar played_bar" data-v-82497581="" role="option" style="width: 0%;" title="按住可调"&gt;
                   &lt;span&gt;
                    进度条，百分之0
                   &lt;/span&gt;
                  &lt;/div&gt;
                  &lt;div class="js_buffer_bar buffer_bar" data-v-82497581="" style="width: 0%;"&gt;
                  &lt;/div&gt;
                  &lt;!-- --&gt;
                  &lt;div class="weui-wa-hotarea js_played_speed_cnt wrp_speed_dot" data-v-82497581="" style="left: 0%;"&gt;
                   &lt;i class="speed_dot" data-v-82497581=""&gt;
                   &lt;/i&gt;
                  &lt;/div&gt;
                 &lt;/div&gt;
                &lt;/div&gt;
               &lt;/div&gt;
              &lt;/div&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="js_control video_opr video_opr_sns" data-v-82497581="" style="bottom: 0px; display: none;"&gt;
             &lt;div class="opr_inner" data-v-82497581=""&gt;
              &lt;div class="opr_inner_fl" data-v-82497581=""&gt;
               &lt;div class="js_switch weui-wa-hotarea switch switch_on" data-v-82497581=""&gt;
                &lt;a class="btn_opr" data-v-82497581="" href="javascript:;" role="button"&gt;
                 播放
                &lt;/a&gt;
               &lt;/div&gt;
               &lt;div data-v-82497581="" role="option"&gt;
                &lt;div class="played_time js_now_play_time" data-v-82497581=""&gt;
                 00:00
                &lt;/div&gt;
                &lt;span&gt;
                 /
                &lt;/span&gt;
                &lt;div class="total_time js_total_time" data-v-82497581=""&gt;
                 00:09
                &lt;/div&gt;
               &lt;/div&gt;
               &lt;!-- --&gt;
               &lt;div class="total_time js_total_time" data-v-82497581="" role="option" style="display: none;"&gt;
                00:09
               &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="opr_inner_fr" data-v-82497581=""&gt;
               &lt;!-- --&gt;
               &lt;!-- --&gt;
               &lt;!-- --&gt;
               &lt;div class="weui-wa-hotarea js_full_screen_control screenSize_control full" data-v-82497581="" role="button"&gt;
                &lt;i class="icon_control" data-v-82497581=""&gt;
                 全屏
                &lt;/i&gt;
               &lt;/div&gt;
              &lt;/div&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="js-toast weui-toast weui-toast_text" data-v-82497581="" role="alert" style="display: none;"&gt;
             &lt;p&gt;
             &lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="full_screen_opr video_quick_play_context" data-v-82497581="" role="alert" style="display: none;"&gt;
             &lt;div class="video_quick_play_msg" data-v-82497581=""&gt;
              &lt;i class="icon_video_quick_play" data-v-82497581=""&gt;
              &lt;/i&gt;
              倍速播放中
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="js_sub_setting video_full-screen__footer video_full-screen__footer__sub-setting hide" data-v-82497581=""&gt;
             &lt;div class="video_full-screen__sub-setting video_full-screen__sub-setting__speed js_playback_mode_select" data-v-82497581="" style="display: none;"&gt;
              &lt;a class="video_full-screen__sub-setting__item js_playback_0" data-v-82497581="" href="javascript:;"&gt;
               0.5倍
              &lt;/a&gt;
              &lt;a class="video_full-screen__sub-setting__item js_playback_1" data-v-82497581="" href="javascript:;"&gt;
               0.75倍
              &lt;/a&gt;
              &lt;a class="video_full-screen__sub-setting__item current js_playback_2" data-v-82497581="" href="javascript:;"&gt;
               1.0倍
              &lt;/a&gt;
              &lt;a class="video_full-screen__sub-setting__item js_playback_3" data-v-82497581="" href="javascript:;"&gt;
               1.5倍
              &lt;/a&gt;
              &lt;a class="video_full-screen__sub-setting__item js_playback_4" data-v-82497581="" href="javascript:;"&gt;
               2.0倍
              &lt;/a&gt;
             &lt;/div&gt;
             &lt;div class="video_full-screen__sub-setting video_full-screen__sub-setting__ratio js_play_mode_select" data-v-82497581="" style="display: none;"&gt;
              &lt;a class="video_full-screen__sub-setting__item current js_resolution_0" data-v-82497581="" href="javascript:;"&gt;
               超清
              &lt;/a&gt;
              &lt;a class="video_full-screen__sub-setting__item js_resolution_1" data-v-82497581="" href="javascript:;"&gt;
               流畅
              &lt;/a&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="js_inner inner not_fullscreen" data-v-82497581=""&gt;
             &lt;div class="js_video_poster video_poster" data-v-82497581=""&gt;
              &lt;div class="video_mask" data-v-82497581=""&gt;
              &lt;/div&gt;
              &lt;video class="video_fill" controlslist="nodownload" crossorigin="anonymous" data-v-82497581="" playsinline="isiPhoneShowPlaysinline" poster="http://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblIdx8iakfJ2rCLXFlDsIR2YarZF1JonWEHaPeAvYc4uX1iczEw74D1H8ibdB8CM2ibehzOEWUOWSz2COzWNMBOl6X9rpjibxECoWicP0/0?wx_fmt=jpeg&amp;amp;wxfrom=16" preload="metadata" src="https://mpvideo.qpic.cn/0b2eweazeaab4uahlyzrhfvfdmodskyqdeqa.f10102.mp4?dis_k=0bdded74de2a213506d7f2f6302259d9&amp;amp;dis_t=1781600565&amp;amp;play_scene=10120&amp;amp;auth_info=XMuGn7p6Q3133NiNii8xAWlXZklAOAN5MHZDSCtnTTd6Y01wDzM8BwZ6bRYdFD0i&amp;amp;auth_key=f32bef8d32776acbf9a8fdac95325452&amp;amp;vid=wxv_4563362045425139715&amp;amp;format_id=10102&amp;amp;support_redirect=0&amp;amp;mmversion=false" style="display: block; width: 660px; height: 372px;" webkit-playsinline="isiPhoneShowPlaysinline"&gt;
               您的浏览器不支持 video 标签
              &lt;/video&gt;
             &lt;/div&gt;
             &lt;div class="video_poster__info__play" data-v-82497581="" data-v-f4ee5450="" style="display: none;"&gt;
              &lt;i class="" data-v-82497581="" data-v-f4ee5450=""&gt;
              &lt;/i&gt;
             &lt;/div&gt;
             &lt;div class="video_poster__info" data-v-82497581="" data-v-f4ee5450="" style="display: none;"&gt;
              &lt;p style="font-size: 17px;"&gt;
               继续观看
              &lt;/p&gt;
              &lt;p style="font-size: 12px;"&gt;
               京东又一开源神器，长视频更稳了。
              &lt;/p&gt;
             &lt;/div&gt;
             &lt;div class="video_poster__info__mask" data-v-82497581="" data-v-f4ee5450="" style="width: 100%; display: none;"&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="video_profile_area" data-v-82497581="" style="display: none;"&gt;
             &lt;div data-v-82497581=""&gt;
              &lt;button class="reset_btn video_profile_relate_video_btn js_wx_tap_highlight wx_tap_link" data-v-82497581="" data-v-f4ee5450="" style="display: none;"&gt;
               观看更多
               &lt;i class="weui-icon-filled-arrow video_profile_relate_video_btn_arrow"&gt;
               &lt;/i&gt;
              &lt;/button&gt;
             &lt;/div&gt;
             &lt;div data-v-82497581="" role="link" style="width: fit-content; max-width: 100%;" tabindex="0"&gt;
              &lt;div class="weui-wa-hotarea video_profile_desc_wrp" data-v-82497581="" role="option"&gt;
               &lt;div class="icon_appmsg_tag_wrp" data-v-82497581="" style="display: none;"&gt;
                &lt;div class="icon_appmsg_tag" data-v-82497581=""&gt;
                 转载
                &lt;/div&gt;
               &lt;/div&gt;
               &lt;div class="weui-hidden_abs" data-v-82497581=""&gt;
                ,
               &lt;/div&gt;
               &lt;div class="video_profile_desc" data-v-82497581=""&gt;
                京东又一开源神器，长视频更稳了。
               &lt;/div&gt;
               &lt;i class="weui-icon-outlined-arrow video_profile_desc_arrow" data-v-82497581=""&gt;
               &lt;/i&gt;
              &lt;/div&gt;
             &lt;/div&gt;
             &lt;div class="video_profile_wrp weui-flex" data-v-82497581=""&gt;
              &lt;div class="video_profile weui-flex weui-flex__item" data-v-82497581=""&gt;
               &lt;span style='background: url("http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png") center center / cover no-repeat;'&gt;
               &lt;/span&gt;
               &lt;span&gt;
                开源日记
               &lt;/span&gt;
               &lt;button class="reset_btn video_profile_follow_btn weui-wa-hotarea" data-v-82497581="" style="display: none;" type="button"&gt;
                已关注
               &lt;/button&gt;
              &lt;/div&gt;
              &lt;div class="video_sns_context" data-v-82497581="" style="display: none;"&gt;
               &lt;button class="video_sns_btn video_sns_btn_share" data-v-82497581="" style="display: none;" type="button"&gt;
                &lt;span&gt;
                 分享
                &lt;/span&gt;
               &lt;/button&gt;
               &lt;button class="video_sns_btn video_sns_btn_praise" data-v-82497581="" title="" type="button"&gt;
                &lt;span&gt;
                 点赞
                &lt;/span&gt;
               &lt;/button&gt;
               &lt;button class="video_sns_btn video_sns_btn_love" data-v-82497581="" title="" type="button"&gt;
                &lt;span&gt;
                 在看
                &lt;/span&gt;
               &lt;/button&gt;
              &lt;/div&gt;
              &lt;div class="like_comment_wrp" data-v-82497581="" role="alert" style="display: none;"&gt;
               &lt;div class="like_comment_inner" data-v-82497581=""&gt;
                &lt;div class="like_comment_bd" data-v-82497581=""&gt;
                 &lt;div class="like_comment_tips" data-v-82497581=""&gt;
                  &lt;i class="weui-icon-success" data-v-82497581=""&gt;
                  &lt;/i&gt;
                  &lt;i class="icon-success-primary" data-v-82497581=""&gt;
                  &lt;/i&gt;
                  已同步到看一看
                  &lt;a class="like_comment_share_link weui-wa-hotarea_before" data-v-82497581="" href="javascript:;"&gt;
                   写下你的评论
                  &lt;/a&gt;
                 &lt;/div&gt;
                &lt;/div&gt;
               &lt;/div&gt;
              &lt;/div&gt;
             &lt;/div&gt;
            &lt;/div&gt;
           &lt;/div&gt;
          &lt;/div&gt;
          &lt;div data-v-f4ee5450="" style="display: none;"&gt;
           &lt;div class="weui-mask_transparent" data-v-f4ee5450=""&gt;
           &lt;/div&gt;
           &lt;div class="weui-toast" data-v-f4ee5450="" style="top: 45%; position: absolute;"&gt;
            &lt;i class="weui-icon-success-no-circle weui-icon_toast" data-v-f4ee5450=""&gt;
            &lt;/i&gt;
            &lt;p&gt;
            &lt;/p&gt;
           &lt;/div&gt;
          &lt;/div&gt;
          &lt;div class="fullscreen-screenshot__layer" data-v-f4ee5450="" style="background-color: rgb(0, 0, 0); display: none;"&gt;
          &lt;/div&gt;
          &lt;div class="fullscreen-screenshot__layer" data-v-f4ee5450="" style='z-index: -1; background-image: url(""); display: none;'&gt;
          &lt;/div&gt;
         &lt;/div&gt;
        &lt;/div&gt;
       &lt;/div&gt;
      &lt;/div&gt;
      &lt;!-- --&gt;
     &lt;/div&gt;
    &lt;/div&gt;
    &lt;!--E 视频播放器--&gt;
    &lt;!-- S 视频社交--&gt;
    &lt;div class="interact_video" id="bottom_bar" style="display:none;height: 35px;"&gt;
     &lt;div class="inter_opr"&gt;
      &lt;a class="access_original" href="javascript:;" id="video_detail_btn" target="_blank"&gt;
       视频详情
      &lt;/a&gt;
     &lt;/div&gt;
    &lt;/div&gt;
   &lt;/div&gt;
  &lt;/span&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.24em; font-size: 13.5px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIvHFMMzYGPmDSpdgxT04iaMvG7xLwxDyXzuLibR7aXDffvwEC2bKWpdLsVicj7XBMPM5otoAKZVsa73p8neU21fs7oOJkiaHdkmia8/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   怎么做到的 ？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    它用 6大绝技解决角色一致性。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    第一个叫「跨模态记忆库」，本质上是在治"角色老变脸"的毛病。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   比如 AI 每次生成新的镜头的时候都得重新开始计算，并且没有任何的记忆，不知道上一个镜头里的主人公是什么样子，所以就容易出现偏差。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   JoyAI-Echo 做法就是给 AI 配上一个“记忆库”。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   当角色第一次出现的时候就把它的脸型、声音和穿着打扮等特征记录下来，并保存到记忆库里去。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   在生成后面的镜头的时候，把之前的信息当作条件从记忆库中提取出来，并且强迫AI用同一个角色去绘制。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   该记忆库有一个重要的设计就是把视觉与听觉结合起来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLx5A62bXOMaTdXQgQfWyIzJv372dILGHDScSSWbINK7XIPF8hzQKNkLS1w5oFjHMcibkEXXVwh1PHj7g6UI8Km49t8ZERDZO18/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不只是保存了人脸的照片，而且还保存了人的声音。因此在生成新的镜头的时候，不但脸是正确的，而且声音也是一样的人。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   官方测评数据显示，语音内容正确率为0.8646，在用户的喜好测试中，音频质量为81.7%，优于其他产品。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJfNEyeyj9gV9DRFGTics61mXoAc1ErscwlNnG5xicIiaFJBuXh4oLmq69k8LfvZW9mOYmjctibYXVWJUOsQDvjvyMCzgBk5l5RV3s/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    第二个叫「DMD 分布匹配蒸馏」，针对的就是长视频生成太慢的毛病。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   传统的多步扩散模型，在产生几秒钟到几十秒长的视频时会花费很长时间。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   并且角色一致性的程度越高，所需要的计算量就越大，速度也就越慢。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   JoyAI-Echo 使用了DMD分布匹配蒸馏技术来把多步扩散压缩为少步推理。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   实现约7.5倍的速度提高，并且没有降低角色的一致性。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这个速度并不是以降低质量为代价来实现的，而是在不减少推理过程的前提下使整个流程更加简洁。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    第三个叫「音视频联合生成」，本质上是在治"声音乱变"的毛病。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   很多情况下声音会变得很杂乱，这是因为视频与音频是分别生成的。先制作好视频之后再用外部的声音工具进行配音，这样口型和台词就很难对上了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   JoyAI-Echo的做法是：一个管道同时输出视频和声音。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;span style="width: 660px !important; height: 384px !important; overflow: hidden;"&gt;
   &lt;div id="page-content"&gt;
    &lt;!--S 全屏播放 full_screen_mv--&gt;
    &lt;div id="js_mpvedio_wrapper_wxv_4563361815409115143" style="position:relative;height:100%"&gt;
     &lt;div class="add_bg_color appmsg_video"&gt;
      &lt;div class="video_tail_module video_screen_half" id="js_video_tail_panel_wxv_4563361815409115143" style="display: none;"&gt;
       &lt;div class="video_tail_module__hd" id="js_video_tail_hd"&gt;
        &lt;div class="account_info_wrp"&gt;
         &lt;div class="profile_info_wrp js_go_profile"&gt;
          &lt;img/&gt;
          &lt;div class="account_name" id="js_tail_panel_account_name"&gt;
          &lt;/div&gt;
          &lt;div class="subscription_info subscription_success"&gt;
           &lt;div class="account_subscription_tips js_subscription_success" id="js_subscription_success" style="display: none;"&gt;
            已关注
           &lt;/div&gt;
           &lt;i class="account_link_icon js_profile_icon" id="js_profile_icon"&gt;
           &lt;/i&gt;
          &lt;/div&gt;
         &lt;/div&gt;
         &lt;div class="btn_account_subscription js_btn_account_subscription" id="js_btn_account_subscription" style="display: none;"&gt;
          关注
         &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class="opr_wrp"&gt;
         &lt;span&gt;
          &lt;i class="opr_item refresh_icon"&gt;
          &lt;/i&gt;
          &lt;span&gt;
           重播
          &lt;/span&gt;
         &lt;/span&gt;
         &lt;span style="display: none;"&gt;
          &lt;i class="opr_item share_icon"&gt;
          &lt;/i&gt;
          &lt;span&gt;
           分享
          &lt;/span&gt;
         &lt;/span&gt;
         &lt;!--点赞后 加className selected--&gt;
         &lt;span style="display: none;"&gt;
          &lt;i class="opr_item like_icon"&gt;
          &lt;/i&gt;
          &lt;span&gt;
           赞
          &lt;/span&gt;
         &lt;/span&gt;
         &lt;!-- &lt;span class="opr_item_wrp recommend_item_wrp" id="js_tail_channel_button"               style="display: none;"&gt;               &lt;i class="opr_item video-logo_icon"&gt;&lt;/i&gt;               &lt;span class="opr_item_text"&gt;随便看看&lt;/span&gt;             &lt;/span&gt; --&gt;
        &lt;/div&gt;
       &lt;/div&gt;
       &lt;!-- 有拓展内容 --&gt;
       &lt;div class="have_expand" id="js_expand_area"&gt;
       &lt;/div&gt;
       &lt;!-- 广告内容 --&gt;
       &lt;div class="ad_area" id="js_tail_video_ad_area"&gt;
       &lt;/div&gt;
      &lt;/div&gt;
     &lt;/div&gt;
     &lt;div class="feed-wrapper"&gt;
      &lt;div aria-hidden="true" aria-modal="true" class="wx_bottom_modal_wrp player_relate_video_dialog weui-half-screen-dialog_fold" hidewhensideslip="" role="dialog" style="visibility: hidden; display: none;" tabindex="0"&gt;
       &lt;div class="wx_bottom_modal_mask_fixed"&gt;
       &lt;/div&gt;
       &lt;div class="weui-mask wx_bottom_modal_mask" style="--opacity: 1; display: none;"&gt;
       &lt;/div&gt;
       &lt;div class="weui-half-screen-dialog wx_bottom_modal" style="max-height: none;"&gt;
        &lt;div class="wx_bottom_modal_group_container" style="transform: translateX(calc(0% + 0px)); max-height: none;"&gt;
         &lt;div aria-hidden="false" class="wx_bottom_modal_group" style="left: 0%; max-height: none;"&gt;
          &lt;div class="weui-half-screen-dialog__hd__wrp"&gt;
           &lt;div class="weui-half-screen-dialog__hd"&gt;
            &lt;div class="weui-half-screen-dialog__hd__side"&gt;
             &lt;button class="weui-btn_icon weui-wa-hotarea"&gt;
              关闭
              &lt;i class="weui-icon-half-screen-close"&gt;
              &lt;/i&gt;
             &lt;/button&gt;
            &lt;/div&gt;
            &lt;div class="weui-half-screen-dialog__hd__main"&gt;
             &lt;strong class="weui-half-screen-dialog__title"&gt;
              观看更多
             &lt;/strong&gt;
            &lt;/div&gt;
            &lt;div class="weui-half-screen-dialog__hd__side"&gt;
             &lt;!-- --&gt;
             &lt;button class="weui-btn_icon weui-wa-hotarea" style="display: none;"&gt;
              更多
              &lt;i class="weui-icon-more"&gt;
              &lt;/i&gt;
             &lt;/button&gt;
            &lt;/div&gt;
           &lt;/div&gt;
          &lt;/div&gt;
          &lt;div class="weui-half-screen-dialog__bd" id="contentAreaWrp"&gt;
           &lt;div class="weui-loadmore" style="display: none;"&gt;
            &lt;i class="weui-loading"&gt;
            &lt;/i&gt;
           &lt;/div&gt;
           &lt;div class="wx_bottom_modal_msg_wrp" style="display: none;"&gt;
            &lt;div class="wx_bottom_modal_msg"&gt;
             &lt;i class="weui-loading"&gt;
             &lt;/i&gt;
            &lt;/div&gt;
           &lt;/div&gt;
           &lt;div class="weui-loadmore weui-loadmore_line weui-loadmore_dot" style="display: none;"&gt;
            &lt;span&gt;
            &lt;/span&gt;
           &lt;/div&gt;
           &lt;div class=""&gt;
            &lt;ul class="player_relate_video_list" id="js_player_relate_video_list"&gt;
            &lt;/ul&gt;
            &lt;div class="weui-loadmore weui-loadmore_default weui-loadmore_line weui-loadmore_dot player_video_list_end_line"&gt;
             &lt;span&gt;
             &lt;/span&gt;
            &lt;/div&gt;
           &lt;/div&gt;
           &lt;div class="weui-loadmore" style="display: none;"&gt;
            &lt;i class="weui-loading"&gt;
            &lt;/i&gt;
           &lt;/div&gt;
          &lt;/div&gt;
          &lt;!-- --&gt;
         &lt;/div&gt;
        &lt;/div&gt;
       &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class="js_video_fullscreen_profile video_full-screen__head video_full-screen__head_fixed" style="padding-top: 16px; transform: translate3d(0px, 0px, 0px); display: none;"&gt;
       &lt;div class="video_full-screen__head__inner"&gt;
        &lt;div class="video_full-screen__head__body"&gt;
         &lt;div class="js_video_fullscreen_profile_exit video_full-screen__head__item"&gt;
          &lt;div class="video_full-screen__article-title"&gt;
           &lt;button class="weui-wa-hotarea js_video_fullscreen_profile_exit reset_btn video_close_fullscreen_btn"&gt;
            &lt;i class="weui-icon-close"&gt;
             退出全屏
            &lt;/i&gt;
           &lt;/button&gt;
          &lt;/div&gt;
         &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class="video_full-screen__head__ft"&gt;
         &lt;a aria-label="更多操作" class="video_menu_more js_video_fullscreen_menu_more weui-wa-hotarea_before" href="javascript:;" role="button"&gt;
          &lt;i class="weui-icon-outlined-more"&gt;
          &lt;/i&gt;
         &lt;/a&gt;
        &lt;/div&gt;
       &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class="infinity-list__wrapper" style="height: 372px;"&gt;
       &lt;div class="" style="height: 372px; overflow: visible;"&gt;
        &lt;div class="infinity-list__page destory-enter-to" data-key="wxv_4563361815409115143" infinity-idx="0" style="height: 372px; position: absolute; top: 0px; opacity: 1;"&gt;
         &lt;div class="mp-video-player" data-v-f4ee5450="" style="height: 100%;"&gt;
          &lt;div class="js_mpvedio page_video_wrapper" data-v-82497581="" data-v-f4ee5450="" id="js_mpvedio_1781600573079_747288985655"&gt;
           &lt;div class="js_page_video page_video ratio_primary align_upper_center page_video_without-control page_video_skin-normal" data-v-82497581="" style="display: block; width: 100%; height: 372px;"&gt;
            &lt;svg class="border_filler border_filler_lefttop" data-v-82497581="" height="4px" viewbox="0 0 2 2" width="4px" xmlns="http://www.w3.org/2000/svg"&gt;
             &lt;path d="M1.85.005A2 2 0 000 2V0h2z" data-v-82497581="" fill="#ffffff" fill-rule="evenodd"&gt;
             &lt;/path&gt;
            &lt;/svg&gt;
            &lt;svg class="border_filler border_filler_righttop" data-v-82497581="" height="4px" viewbox="0 0 2 2" width="4px" xmlns="http://www.w3.org/2000/svg"&gt;
             &lt;path d="M1.85.005A2 2 0 000 2V0h2z" data-v-82497581="" fill="#ffffff" fill-rule="evenodd"&gt;
             &lt;/path&gt;
            &lt;/svg&gt;
            &lt;svg class="border_filler border_filler_rightbot" data-v-82497581="" height="4px" viewbox="0 0 2 2" width="4px" xmlns="http://www.w3.org/2000/svg"&gt;
             &lt;path d="M1.85.005A2 2 0 000 2V0h2z" data-v-82497581="" fill="#ffffff" fill-rule="evenodd"&gt;
             &lt;/path&gt;
            &lt;/svg&gt;
            &lt;svg class="border_filler border_filler_leftbot" data-v-82497581="" height="4px" viewbox="0 0 2 2" width="4px" xmlns="http://www.w3.org/2000/svg"&gt;
             &lt;path d="M1.85.005A2 2 0 000 2V0h2z" data-v-82497581="" fill="#ffffff" fill-rule="evenodd"&gt;
             &lt;/path&gt;
            &lt;/svg&gt;
            &lt;div class="js_video_fullscreen_profile video_full-screen__head" data-v-82497581="" style="display: none;"&gt;
             &lt;div class="video_full-screen__head__inner" data-v-82497581=""&gt;
              &lt;div class="video_full-screen__head__body" data-v-82497581=""&gt;
               &lt;div class="js_video_fullscreen_profile_exit video_full-screen__head__item" data-v-82497581=""&gt;
                &lt;div class="video_full-screen__article-title" data-v-82497581=""&gt;
                 &lt;button class="weui-wa-hotarea js_video_fullscreen_profile_exit reset_btn video_close_fullscreen_btn" data-v-82497581="" style="display: none;"&gt;
                  &lt;i class="weui-icon-back-arrow" data-v-82497581=""&gt;
                   切换到竖屏全屏
                  &lt;/i&gt;
                 &lt;/button&gt;
                 &lt;button class="weui-wa-hotarea js_video_fullscreen_profile_exit reset_btn video_close_fullscreen_btn" data-v-82497581="" style="display: none;"&gt;
                  &lt;i class="weui-icon-close" data-v-82497581=""&gt;
                   退出全屏
                  &lt;/i&gt;
                 &lt;/button&gt;
                 &lt;div class="video_full-screen__account" data-v-82497581="" role="button" style="display: none;"&gt;
                  &lt;div class="video_full-screen__account-info" data-v-82497581=""&gt;
                   &lt;span style='background: url("http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png") center center / cover no-repeat;'&gt;
                   &lt;/span&gt;
                   &lt;span&gt;
                    开源日记
                   &lt;/span&gt;
                   &lt;button class="reset_btn video_profile_follow_btn weui-wa-hotarea" data-v-82497581="" style="display: none;" type="button"&gt;
                    已关注
                   &lt;/button&gt;
                  &lt;/div&gt;
                 &lt;/div&gt;
                &lt;/div&gt;
               &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="video_full-screen__head__ft" data-v-82497581=""&gt;
               &lt;a aria-label="更多操作" class="video_menu_more js_video_fullscreen_menu_more weui-wa-hotarea_before" data-v-82497581="" href="javascript:;" role="button" style="display: none;"&gt;
                &lt;i class="weui-icon-outlined-more" data-v-82497581=""&gt;
                &lt;/i&gt;
               &lt;/a&gt;
              &lt;/div&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="js_share_btn_contain top_screen_opr video_share_opr" data-v-82497581="" style="display: none;"&gt;
             &lt;div class="wx_video_share_area" data-v-82497581=""&gt;
              &lt;button class="js_share_btn wx_video_share_btn weui-wa-hotarea" data-v-82497581="" type="button"&gt;
               分享视频
              &lt;/button&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div aria-label="加载中" class="wrp_loading js_loading" data-v-82497581="" role="alert" style="display: none;"&gt;
             &lt;span&gt;
              &lt;span&gt;
              &lt;/span&gt;
             &lt;/span&gt;
            &lt;/div&gt;
            &lt;div class="poster_cover" data-v-82497581="" style='background-image: url("http://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblJCriaVJ7lrUSYA0wNriaEQltPfomrqBfHatIv26n6rBwvia2Rw5X8auYo3ag4licmicRPMazbBgj72ecLDm1gFpfibks52Pic9FQ4M3k/640?wx_fmt=jpeg&amp;amp;wxfrom=16"); background-size: cover; z-index: 10;'&gt;
            &lt;/div&gt;
            &lt;div class="full_screen_opr wx_video_play_opr" data-v-82497581="" style=""&gt;
             &lt;button class="mid_play_box reset_btn" data-v-82497581="" type="button"&gt;
              &lt;i aria-label="播放视频" class="pic_mid_play" data-v-82497581=""&gt;
              &lt;/i&gt;
              &lt;span&gt;
               ，时长
              &lt;/span&gt;
              &lt;span&gt;
               00:10
              &lt;/span&gt;
             &lt;/button&gt;
            &lt;/div&gt;
            &lt;!-- --&gt;
            &lt;div class="top_screen_opr wx_video_flow_wrap" data-v-82497581="" role="alert" style="display: none;"&gt;
             &lt;div class="wx_video_flow" data-v-82497581=""&gt;
              &lt;p&gt;
              &lt;/p&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="mid_opr fast_pre_next" data-v-82497581="" style="display: none;"&gt;
             &lt;div class="video_processor_bar" data-v-82497581=""&gt;
              &lt;div class="processor_bar_inner js_forward_bar" data-v-82497581="" style="width: 0%;"&gt;
              &lt;/div&gt;
             &lt;/div&gt;
             &lt;p&gt;
              &lt;span&gt;
               0
              &lt;/span&gt;
              &lt;span&gt;
               /
              &lt;/span&gt;
              &lt;span&gt;
               0
              &lt;/span&gt;
             &lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="wx_video_progress_msg full_screen_opr" data-v-82497581="" role="alert" style="display: none;"&gt;
             &lt;div class="wx_video_progress_msg_inner" data-v-82497581=""&gt;
              &lt;span&gt;
               00:00
              &lt;/span&gt;
              &lt;span&gt;
               /
              &lt;/span&gt;
              &lt;span&gt;
               00:10
              &lt;/span&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="video_fullscreen_mask" data-v-82497581="" style="display: none;"&gt;
            &lt;/div&gt;
            &lt;div class="video_screen_mode_switch" data-v-82497581="" style="bottom: calc(50% - 242.666667px); display: none;"&gt;
             &lt;button class="reset_btn video_screen_mode_switch_btn weui-wa-hotarea" data-v-82497581="" type="button"&gt;
              切换到横屏模式
             &lt;/button&gt;
            &lt;/div&gt;
            &lt;div class="full_screen_opr wx_video_pause_full_mod" data-v-82497581="" style="display: none;"&gt;
             &lt;button class="reset_btn wx_video_pause_full_btn" data-v-82497581="" type="button"&gt;
              继续播放
             &lt;/button&gt;
            &lt;/div&gt;
            &lt;input aria-hidden="true" class="aria_hidden_abs" data-v-82497581="" title="显示工具栏" type="checkbox"/&gt;
            &lt;div class="js_control video_opr video_opr_normal padding_play_bar" data-v-82497581=""&gt;
             &lt;div class="opr_inner" data-v-82497581=""&gt;
              &lt;div class="opr_inner_fl" data-v-82497581=""&gt;
               &lt;div class="js_play_bar_wrapper wrp_play_bar wrp_play_bar_hide_speed-dot" data-v-82497581="" style="display: none;"&gt;
                &lt;div class="js_progress_bar wrp_progress" data-v-82497581="" style="padding-top: 6px; padding-bottom: 0px;"&gt;
                 &lt;div class="progress_bar" data-v-82497581=""&gt;
                  &lt;div class="background_bar" data-v-82497581=""&gt;
                  &lt;/div&gt;
                  &lt;div aria-labelledby="ariaPlayedCurrent" class="js_played_bar played_bar" data-v-82497581="" role="option" style="width: 0%;" title="按住可调"&gt;
                   &lt;span&gt;
                    进度条，百分之0
                   &lt;/span&gt;
                  &lt;/div&gt;
                  &lt;div class="js_buffer_bar buffer_bar" data-v-82497581="" style="width: 0%;"&gt;
                  &lt;/div&gt;
                  &lt;!-- --&gt;
                  &lt;div class="weui-wa-hotarea js_played_speed_cnt wrp_speed_dot" data-v-82497581="" style="left: 0%;"&gt;
                   &lt;i class="speed_dot" data-v-82497581=""&gt;
                   &lt;/i&gt;
                  &lt;/div&gt;
                 &lt;/div&gt;
                &lt;/div&gt;
               &lt;/div&gt;
              &lt;/div&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="js_control video_opr video_opr_sns" data-v-82497581="" style="bottom: 0px; display: none;"&gt;
             &lt;div class="opr_inner" data-v-82497581=""&gt;
              &lt;div class="opr_inner_fl" data-v-82497581=""&gt;
               &lt;div class="js_switch weui-wa-hotarea switch switch_on" data-v-82497581=""&gt;
                &lt;a class="btn_opr" data-v-82497581="" href="javascript:;" role="button"&gt;
                 播放
                &lt;/a&gt;
               &lt;/div&gt;
               &lt;div data-v-82497581="" role="option"&gt;
                &lt;div class="played_time js_now_play_time" data-v-82497581=""&gt;
                 00:00
                &lt;/div&gt;
                &lt;span&gt;
                 /
                &lt;/span&gt;
                &lt;div class="total_time js_total_time" data-v-82497581=""&gt;
                 00:10
                &lt;/div&gt;
               &lt;/div&gt;
               &lt;!-- --&gt;
               &lt;div class="total_time js_total_time" data-v-82497581="" role="option" style="display: none;"&gt;
                00:10
               &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="opr_inner_fr" data-v-82497581=""&gt;
               &lt;!-- --&gt;
               &lt;!-- --&gt;
               &lt;!-- --&gt;
               &lt;div class="weui-wa-hotarea js_full_screen_control screenSize_control full" data-v-82497581="" role="button"&gt;
                &lt;i class="icon_control" data-v-82497581=""&gt;
                 全屏
                &lt;/i&gt;
               &lt;/div&gt;
              &lt;/div&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="js-toast weui-toast weui-toast_text" data-v-82497581="" role="alert" style="display: none;"&gt;
             &lt;p&gt;
             &lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="full_screen_opr video_quick_play_context" data-v-82497581="" role="alert" style="display: none;"&gt;
             &lt;div class="video_quick_play_msg" data-v-82497581=""&gt;
              &lt;i class="icon_video_quick_play" data-v-82497581=""&gt;
              &lt;/i&gt;
              倍速播放中
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="js_sub_setting video_full-screen__footer video_full-screen__footer__sub-setting hide" data-v-82497581=""&gt;
             &lt;div class="video_full-screen__sub-setting video_full-screen__sub-setting__speed js_playback_mode_select" data-v-82497581="" style="display: none;"&gt;
              &lt;a class="video_full-screen__sub-setting__item js_playback_0" data-v-82497581="" href="javascript:;"&gt;
               0.5倍
              &lt;/a&gt;
              &lt;a class="video_full-screen__sub-setting__item js_playback_1" data-v-82497581="" href="javascript:;"&gt;
               0.75倍
              &lt;/a&gt;
              &lt;a class="video_full-screen__sub-setting__item current js_playback_2" data-v-82497581="" href="javascript:;"&gt;
               1.0倍
              &lt;/a&gt;
              &lt;a class="video_full-screen__sub-setting__item js_playback_3" data-v-82497581="" href="javascript:;"&gt;
               1.5倍
              &lt;/a&gt;
              &lt;a class="video_full-screen__sub-setting__item js_playback_4" data-v-82497581="" href="javascript:;"&gt;
               2.0倍
              &lt;/a&gt;
             &lt;/div&gt;
             &lt;div class="video_full-screen__sub-setting video_full-screen__sub-setting__ratio js_play_mode_select" data-v-82497581="" style="display: none;"&gt;
              &lt;a class="video_full-screen__sub-setting__item current js_resolution_0" data-v-82497581="" href="javascript:;"&gt;
               超清
              &lt;/a&gt;
              &lt;a class="video_full-screen__sub-setting__item js_resolution_1" data-v-82497581="" href="javascript:;"&gt;
               流畅
              &lt;/a&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="js_inner inner not_fullscreen" data-v-82497581=""&gt;
             &lt;div class="js_video_poster video_poster" data-v-82497581=""&gt;
              &lt;div class="video_mask" data-v-82497581=""&gt;
              &lt;/div&gt;
              &lt;video class="video_fill" controlslist="nodownload" crossorigin="anonymous" data-v-82497581="" playsinline="isiPhoneShowPlaysinline" poster="http://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblJCriaVJ7lrUSYA0wNriaEQltPfomrqBfHatIv26n6rBwvia2Rw5X8auYo3ag4licmicRPMazbBgj72ecLDm1gFpfibks52Pic9FQ4M3k/0?wx_fmt=jpeg&amp;amp;wxfrom=16" preload="metadata" src="https://mpvideo.qpic.cn/0bc3xicmcaae7uacnoruanvfjowdyg5ajqia.f10102.mp4?dis_k=a0f1451619666989bfa34a5733ed270d&amp;amp;dis_t=1781600565&amp;amp;play_scene=10120&amp;amp;auth_info=X5zuqDYULHyP0dmJezNVOVVjGxQzVH03fE5Bf2UbYnxkTnQMMmtWDSlkQh5AP3Y=&amp;amp;auth_key=12f5ad01cee9ed34632b4c37eca10d4c&amp;amp;vid=wxv_4563361815409115143&amp;amp;format_id=10102&amp;amp;support_redirect=0&amp;amp;mmversion=false" style="display: block; width: 660px; height: 372px;" webkit-playsinline="isiPhoneShowPlaysinline"&gt;
               您的浏览器不支持 video 标签
              &lt;/video&gt;
             &lt;/div&gt;
             &lt;div class="video_poster__info__play" data-v-82497581="" data-v-f4ee5450="" style="display: none;"&gt;
              &lt;i class="" data-v-82497581="" data-v-f4ee5450=""&gt;
              &lt;/i&gt;
             &lt;/div&gt;
             &lt;div class="video_poster__info" data-v-82497581="" data-v-f4ee5450="" style="display: none;"&gt;
              &lt;p style="font-size: 17px;"&gt;
               继续观看
              &lt;/p&gt;
              &lt;p style="font-size: 12px;"&gt;
               京东又一开源神器，长视频更稳了。
              &lt;/p&gt;
             &lt;/div&gt;
             &lt;div class="video_poster__info__mask" data-v-82497581="" data-v-f4ee5450="" style="width: 100%; display: none;"&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="video_profile_area" data-v-82497581="" style="display: none;"&gt;
             &lt;div data-v-82497581=""&gt;
              &lt;button class="reset_btn video_profile_relate_video_btn js_wx_tap_highlight wx_tap_link" data-v-82497581="" data-v-f4ee5450="" style="display: none;"&gt;
               观看更多
               &lt;i class="weui-icon-filled-arrow video_profile_relate_video_btn_arrow"&gt;
               &lt;/i&gt;
              &lt;/button&gt;
             &lt;/div&gt;
             &lt;div data-v-82497581="" role="link" style="width: fit-content; max-width: 100%;" tabindex="0"&gt;
              &lt;div class="weui-wa-hotarea video_profile_desc_wrp" data-v-82497581="" role="option"&gt;
               &lt;div class="icon_appmsg_tag_wrp" data-v-82497581="" style="display: none;"&gt;
                &lt;div class="icon_appmsg_tag" data-v-82497581=""&gt;
                 转载
                &lt;/div&gt;
               &lt;/div&gt;
               &lt;div class="weui-hidden_abs" data-v-82497581=""&gt;
                ,
               &lt;/div&gt;
               &lt;div class="video_profile_desc" data-v-82497581=""&gt;
                京东又一开源神器，长视频更稳了。
               &lt;/div&gt;
               &lt;i class="weui-icon-outlined-arrow video_profile_desc_arrow" data-v-82497581=""&gt;
               &lt;/i&gt;
              &lt;/div&gt;
             &lt;/div&gt;
             &lt;div class="video_profile_wrp weui-flex" data-v-82497581=""&gt;
              &lt;div class="video_profile weui-flex weui-flex__item" data-v-82497581=""&gt;
               &lt;span style='background: url("http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png") center center / cover no-repeat;'&gt;
               &lt;/span&gt;
               &lt;span&gt;
                开源日记
               &lt;/span&gt;
               &lt;button class="reset_btn video_profile_follow_btn weui-wa-hotarea" data-v-82497581="" style="display: none;" type="button"&gt;
                已关注
               &lt;/button&gt;
              &lt;/div&gt;
              &lt;div class="video_sns_context" data-v-82497581="" style="display: none;"&gt;
               &lt;button class="video_sns_btn video_sns_btn_share" data-v-82497581="" style="display: none;" type="button"&gt;
                &lt;span&gt;
                 分享
                &lt;/span&gt;
               &lt;/button&gt;
               &lt;button class="video_sns_btn video_sns_btn_praise" data-v-82497581="" title="" type="button"&gt;
                &lt;span&gt;
                 点赞
                &lt;/span&gt;
               &lt;/button&gt;
               &lt;button class="video_sns_btn video_sns_btn_love" data-v-82497581="" title="" type="button"&gt;
                &lt;span&gt;
                 在看
                &lt;/span&gt;
               &lt;/button&gt;
              &lt;/div&gt;
              &lt;div class="like_comment_wrp" data-v-82497581="" role="alert" style="display: none;"&gt;
               &lt;div class="like_comment_inner" data-v-82497581=""&gt;
                &lt;div class="like_comment_bd" data-v-82497581=""&gt;
                 &lt;div class="like_comment_tips" data-v-82497581=""&gt;
                  &lt;i class="weui-icon-success" data-v-82497581=""&gt;
                  &lt;/i&gt;
                  &lt;i class="icon-success-primary" data-v-82497581=""&gt;
                  &lt;/i&gt;
                  已同步到看一看
                  &lt;a class="like_comment_share_link weui-wa-hotarea_before" data-v-82497581="" href="javascript:;"&gt;
                   写下你的评论
                  &lt;/a&gt;
                 &lt;/div&gt;
                &lt;/div&gt;
               &lt;/div&gt;
              &lt;/div&gt;
             &lt;/div&gt;
            &lt;/div&gt;
           &lt;/div&gt;
          &lt;/div&gt;
          &lt;div data-v-f4ee5450="" style="display: none;"&gt;
           &lt;div class="weui-mask_transparent" data-v-f4ee5450=""&gt;
           &lt;/div&gt;
           &lt;div class="weui-toast" data-v-f4ee5450="" style="top: 45%; position: absolute;"&gt;
            &lt;i class="weui-icon-success-no-circle weui-icon_toast" data-v-f4ee5450=""&gt;
            &lt;/i&gt;
            &lt;p&gt;
            &lt;/p&gt;
           &lt;/div&gt;
          &lt;/div&gt;
          &lt;div class="fullscreen-screenshot__layer" data-v-f4ee5450="" style="background-color: rgb(0, 0, 0); display: none;"&gt;
          &lt;/div&gt;
          &lt;div class="fullscreen-screenshot__layer" data-v-f4ee5450="" style='z-index: -1; background-image: url(""); display: none;'&gt;
          &lt;/div&gt;
         &lt;/div&gt;
        &lt;/div&gt;
       &lt;/div&gt;
      &lt;/div&gt;
      &lt;!-- --&gt;
     &lt;/div&gt;
    &lt;/div&gt;
    &lt;!--E 视频播放器--&gt;
    &lt;!-- S 视频社交--&gt;
    &lt;div class="interact_video" id="bottom_bar" style="display:none;height: 35px;"&gt;
     &lt;div class="inter_opr"&gt;
      &lt;a class="access_original" href="javascript:;" id="video_detail_btn" target="_blank"&gt;
       视频详情
      &lt;/a&gt;
     &lt;/div&gt;
    &lt;/div&gt;
   &lt;/div&gt;
  &lt;/span&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   对白、环境音和背景音乐都是一起产生的，在一个生成过程中就一起产生出来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   口型与台词是一起生成的，并不需后期人工修改。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   在音频设置中，采样率为16000Hz、梅尔频谱bins为128、窗函数长度为96。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这些参数是为了保证音质和画面同步而设置的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIZ4iaqsN1lSqRniaB10j1flFkLCaqqeNbAM91ibxuw7mgSyzB0IojibQdsas4E0AIKTAQhhzyPhshz4emhVR25icXMKgFMHiachTeFc/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    第四个叫「对话式编辑」，针对的是修改成本高的毛病。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   比如你要把第三个镜头里的主人公换上红色的衣服，那么传统的工具就要从头到尾重新制作整个视频，成本就很大了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   JoyAI-Echo 有这样一个叫做Director Agent的功能，官方名称为“导演助理”。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你可以说“把第三个镜头里的主人公换上红色的衣服”，它只会修改这个镜头。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   该功能还处于未发布的阶段，代码以及实际体验都没有对外公布。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   但是从概念上来说，它所要解决的问题是另外一个问题：修改成本很高。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    第五个叫「显存优化方案」，针对的是硬件门槛高的毛病。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   是为了克服硬件要求高这个缺点而设计的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   JoyAI-Echo默认配置要46到50G显存，官方建议使用H100或A100，或者是至少48G以上的GPU，对于一般用户而言这个门槛还是有点高的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不过官方也提供了一个降级方案。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   将默认的241帧改为121帧之后，显存占用就会大大减少。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   该项目还提供了一个ComfyUI集成方案，并且使用了官方节点包ComfyUI_JoyAI_Echo。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   可以支持在48G显存下进行热切换，并且每个镜头都可以添加注释并且实时预览。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKicnFpCiccf2y1lcd4slkoqVWawsb2ZAkD92MiafkUoGvKYoRH5Wyr98iangXd1IDUd9ZSFlcbvAz4mTIlPwqDWa0ZNl8rUdxI6xE/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    看完这些功能，相信各位已经迫不及待了。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果要尝试的话，最简单的方法就是先克隆这个仓库。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;git &lt;/span&gt;&lt;span style="color: #e6c07b;line-height: 26px;"&gt;&lt;span&gt;clone&lt;/span&gt;&lt;/span&gt;&lt;span&gt; https://github.com/jd-opensource/JoyAI-Echo.git&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;conda env create -f environment.yml&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;conda activate &lt;/span&gt;&lt;span style="color: #e6c07b;line-height: 26px;"&gt;&lt;span&gt;echo&lt;/span&gt;&lt;/span&gt;&lt;span&gt;-long&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   下载权重是最大的门槛，需要从 HuggingFace 下载约 46GB 的模型文件。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   还有 gemma-3-12b 文本编码器，大约 24GB。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   在prompts目录下创建一个json格式的提示文件，并且使用python inference.py来产生视频。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目提供了一个叫做Prompt Enhancer的东西，可以将一个简短的故事想法变成有组织的镜头描写。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   包含角色、动作、风格、镜头、背景、音效等各个方面，使生成的结果更加可控。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    到这里缺点也给大家提提。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   现在还不支持I2V（图像到视频），只可以由文字来产生，并且不可以使用图片作为起始帧。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   LTX-2 Community License 只能用于学术研究以及非商业目的，在商业用途中需要与 Lightricks 联系。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   目前只开放了推理代码以及权重，没有开放训练代码。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Director Agent 和 Echo-SR 超分模块标注为待发布，实际体验还没开放。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   JoyAI-Echo 支持本地部署。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   视频素材不用上传云端，所有数据都在本地处理，隐私性更高。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你经常制作长视频，尤其在意人物一致性，它会比较有优势。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   视频、配音和口型同步生成，不需要再额外找配音工具，也不用后期慢慢对口型。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   环境配置完成后就能直接使用，也不用长期支付订阅费用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   当然，它对硬件要求不低，官方推荐约 46～50GB 显存。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这个门槛确实不算低，但对于有相关硬件配置、又经常制作 AI 视频的用户来说，还是很值得尝试的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目基于 LTX-2 Community License 协议开放，感兴趣的同学可以去 GitHub 仓库看看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/jd-opensource/JoyAI-Echo
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然看到这了，欢迎随手点赞、在看、转发，也可以给我个星标⭐，接收最新的文章，我们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1160" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/80DNOCQYGziW-EovDfuKpA</link><pubDate>Tue, 16 Jun 2026 15:08:27 +0800</pubDate></item><item><id>3877547210-2247512916_1</id><title>3 天暴涨 9500 Star  , 又一个 AI 神器火了 。</title><description>3 天 9500 Star，又一个 AI 神器火了。               你有没有遇到过这种情况：          本来只是让 AI 把按钮的颜色改成别的颜色，结果它却创建了三个新文件，抽取了两层接口，并且顺便给你做了一个将来可能会用到的结构。          本来用 10 行代码就可以解决的问题，最后却变成了 100 多行。          今天我刷到一个爆火的项目 Ponytai...</description><guid>https://mp.weixin.qq.com/s/xMWs-XeryQWP4218jA21yQ</guid><enclosure url="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblIPlC93ucc9JgsBtIaMo5EjsvpbTWPavImibf58yiclr1E5V9goHfiahw5Jib0vWnfWWS7xibibw3ibdDkHE56uVHhb0JK4q005fvhxdE/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; padding: 0px 10px; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1158" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.24em; font-size: 13.5px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.24em; font-size: 13.5px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   3 天 9500 Star，又一个 AI 神器火了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJibm1z0CFUQFR5mo154zJashTMqZhIay78xxG59SjFPBppEsYDFoVa5zQqCz5YZ2GMtdcIYyu4JQrKR4vp0DcNjuBGWxYwnJibc/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.24em; font-size: 13.5px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   你有没有遇到过这种情况：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.24em; font-size: 13.5px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   本来只是让 AI 把按钮的颜色改成别的颜色，结果它却创建了三个新文件，抽取了两层接口，并且顺便给你做了一个将来可能会用到的结构。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.24em; font-size: 13.5px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   本来用 10 行代码就可以解决的问题，最后却变成了 100 多行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.24em; font-size: 13.5px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   今天我刷到一个爆火的项目 Ponytail，就是用来解决这个问题的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.24em; font-size: 13.5px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   简单来说就是：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.24em; font-size: 13.5px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    让 AI 不要急于去写代码了，要先想一想是否真的要写那么多代码。首先不写代码，使用现有的方案，只写最少的代码。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.24em; font-size: 13.5px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   假设你跟 AI 说："帮我加个邮箱验证功能。"
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.24em; font-size: 13.5px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   不用 Ponytail ，AI 一般会这样做 ：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.24em; font-size: 13.5px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   先安装一个验证库，写一个自定义hook，封装成组件，导出类型定义，加个错误提示样式……一口气把所有的活都干完了之后。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.24em; font-size: 13.5px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   多了 50 行代码和 2 个依赖。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIcX5SFLFXibztkmsLuHbA2DG6XK3mQG7Hicjejl9fmGGo1OzicBwfgNqb6fm1jASYkcD1GHWfiaXGmwP2ibwzfObAb5YFetyUV2pQU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   就想验证个邮箱，至于要 50 行吗？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   有了 Ponytail之后，AI 会这样做 ：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   浏览器不是自带邮箱验证的功能么 ？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   用
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    &amp;lt;input type="email"&amp;gt;
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   即可，只需要一行HTML代码，并且不需要JavaScript，不需要任何第三方库。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJbZSyfuzn30RWnGzfv7t8h21WOUcltoqxribgCkRCgG7evGMQzP2GArVVawEtFSbfibbvOrYH9X319sPJvecYeW2Mhd9wqz2xpk/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   在同样的需求之下，从原来的 50 行变成了现在的一行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Ponytail 的主要价值就是在开始写代码之前进行一次“是否需要”的审查。*
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   那么这套检测又是怎样进行的呢？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    Ponytail把“不写代码”分成了六项标准来考核。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIAmc8KCxBhBhgkm87fseTo8t21JrHL2vDOISVrwYhlWPW9CqnQ9WULicEQibsSdzPCoYicrepnDu92LEwvBYx8g9JpToFUOH3Hns/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   第一项叫作“YAGNI 检查”，其实就是对 AI 进行“过度设计”的一种方法。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   首先问一下这件事是否存在呢？不需要的话就直接跳过，不要写出任何代码来过渡设计。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   第二条就是“标准库优先”，主要是为了解决“装依赖成瘾”的问题。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   现有条件能解决这个问题吗？在可以使用标准库的时候就不应该再增加新的依赖。比如日期格式化，AI 想要安装 moment.js，但是标准库中已经有 Date 对象了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   第三种就是“平台原生功能”，也就是先用平台自身提供的功能。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   优先用平台自带的功能，不要自己去实现。像邮箱验证这种事情，在 HTML5 的
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    &amp;lt;input type="email"&amp;gt;
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   中就可以解决了，并不需要任何 JavaScript。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   第四条为“已经安装的依赖复用”，防止对功能相同的包进行多次安装。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目里包含的内容有哪些？如果能用到的话就用上它，不要重复安装。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   第五条叫作“一行代码优先”，简单功能不需要有抽象层。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   可以一行解决吗？可以的话就写一行，不可以的话就不搞抽象层了。简单功能不需要interface，wrapper，type export。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   最后一条，也是六条里最实用的一条，叫「最小化兜底」。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果以上方法都无效的话，才需要去写代码——但是要写出“最基本够用”的代码。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   每一步都是一个难关。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    项目作者还做了一组相当严谨的 benchmark 测试。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   五项日常工作、三个模型、三种方式，在每个窗口进行十次运行后取中位数。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   使人感到意外的是：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Claude 3.5 Haiku 裸跑 342 行，Ponytail 21 行，减少了 93.9%，成本降低了 77%。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Claude 3.5 Sonnet 裸跑 287 行，Ponytail 34 行，减少了 88.2%，成本降低了 62%。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Claude 3.5 Opus 裸跑 256 行，Ponytail 51 行，减少了 80.1%，成本降低了 47%。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   从整体上看，代码量减少到了原来的80%-94%，成本下降了47%-77%，速度提升了3-6倍。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   节省token就是节约成本，用 Claude Code 的话，16%的token节省就意味着你可以每个月少花几十刀。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_svg/Q3auHgzwzM7f4wDg49TdgLGc7nSkkuYibd48DaZEJvoMwF6sbv9sZASvtuo1kWT0OVbWSEp3aGGBuIuj0T7zahI1wiaBFlxM8SFe7XSjibO8Niba0bp0ksEKhQ/640?wx_fmt=svg&amp;amp;from=appmsg&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    benchmark数据比较
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    看完这些数据，相信各位已经迫不及待了。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Ponytail 支持的 AI 编程助手包括了主要的工具：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   以Cursor为例来安装Ponytail：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;git clone https://github.com/DietrichGebert/ponytail.git&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;cp ponytail/.cursor/rules/* .cursor/rules/&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   使用ClaudeCode的话，可以用 plugin 安装：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;/plugin marketplace 添加DietrichGebert/ponytail&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;/plugin install ponytail@ponytail&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   安装完成之后就可以直接使用了，不需要进行其他的设置。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   装完之后，多出几个实用命令，大家自己看。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblK2tE8SUolImuB2Picurk0wLkhM49Ku7nNcctOEjicsTQhOGP33CoYqqygFtoicNgTvibavg0C3TPwhVBN6BzkKVTev6os3jRZJu6Q/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    什么时候该用 Ponytail？
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   看到这里，可能很多朋友会纠结，到底要不要装 Ponytail？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   作为一个过来人，我的建议是，分场景。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   场景A：日常开发和个人项目中使用Ponytail行吗？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果需求是快速实现功能而不希望受到太多的工程化限制的话，那么Ponytail就是最好的选择了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   很低的代码膨胀率可以大大减轻维护的工作量。节省下来的时间用来写更多的其它功能。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   场景B：写库，写SDK，团队大项目的时候，慎用Ponytail。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果需求是为别人写SDK或开源库的话，就必须要包含完整的错误处理，类型导出以及边界条件覆盖。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   此时Ponytail的“一劳永逸”就变成了一个坑。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   过去一年，整个行业一直在卷模型能力，比拼谁家的 Claude，GPT，Gemini 更聪明。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   AI 写大一大堆代码后，维护的问题有谁真正想过吗？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   就算模型很强，但每次都会给你塞一整堆冗余的代码，到最后你会发现买单的人还是你自己。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你每天在用 AI 写代码，又受够了那些"勤快过头"的输出，Ponytail 值得装一下。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目基于 MIT 协议开放，感兴趣的同学可以去 GitHub 仓库看看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/DietrichGebert/ponytail
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.24em;font-size: 13.5px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然看到这了，欢迎随手点赞，在看，转发，也可以给我个星标⭐，接收最新的文章，我们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1158" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/xMWs-XeryQWP4218jA21yQ</link><pubDate>Mon, 15 Jun 2026 15:08:49 +0800</pubDate></item><item><id>3877547210-2247512906_1</id><title>Agent 终端管理，终于有人做了。</title><description>一个终端项目，五个月斩获 22000 Star。               连 Ghostty 作者 Mitchell Hashimoto 都转发了,说这又是个基于 libghostty 做出来的东西。          它不是新语言新框架,就是个给 Agent 用的终端。          用一句话概括一下就是：            cmux 本质上就是帮你同时管理多个 agent 会话，让...</description><guid>https://mp.weixin.qq.com/s/mxMc840Zz7FF_8t64C3z3Q</guid><enclosure url="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblKzBgFquxWicEXMRTCxkYnHoEq0YxLsfkeLWOKYek3xu12JDJmFSrzqUiaHvhTibGakxj0VvVBOlN8KmkmkKmMwM592Pxv5FjrjHQ/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; padding: 0px 10px; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1158" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   一个终端项目，五个月斩获 22000 Star。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIpO95Q1NK9GVEaJS7ia6qjCEmyQfJib1lyaHiarDdicrWJmliacA1J96YHDvIx7EDibOEJIhu112yLYLDiaDBcXOOF2zUBvAu772rZYk/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   连 Ghostty 作者 Mitchell Hashimoto 都转发了,说这又是个基于 libghostty 做出来的东西。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它不是新语言新框架,就是个给 Agent 用的终端。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   用一句话概括一下就是：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    cmux 本质上就是帮你同时管理多个 agent 会话，让你一眼看出谁在等你输入，谁在跑什么任务
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span style="visibility: visible;"&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLoiaLgagdKiaicKia3ezCVZciaabpKiaBdjMfTibl8dtGOtR8vozHYUsON2G3PtDzicib1oUOibyCUicmeF9qVPHCCbuLz1WrJ0ticvVnibpbY/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px; text-align: center; color: rgb(136, 136, 136); display: block; font-size: 12px; font-family: PingFangSC-Light; visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    cmux 主界面
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它把每一个AI Agent会话的状态都展示得一清二楚。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   以前使用传统终端同时运行多个Claude Code会话的时候，最让人头疼的就是通知了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   当 macOS 的通知弹出来的时候，只会出现“Claude 正在等你回复”的字样，并不能知道是哪个agent，在哪个项目里被卡住了，又是哪一步被卡住的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   回到终端之后，十几张标签页挤在一起，标题被截断了，要想找到要输入的地方，只能一个个地点过去看。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   cmux 的做法是把标签页改成垂直侧边栏，在每个工作区中都显示完整的状态信息。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKSVOA7p1StV0Ia5UPmDmQkXuYKghuvDjz7G8jgWRpkcZAl8qgaNjJnh0c5N4Wj7xnHAue9VEL4cTbpcziaMibDq3kItJMX3OiaSs/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    垂直标签页侧边栏
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    01 垂直标签页侧边栏，解决的是标签页信息过载的问题。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   传统的终端水平标签页，标题只能显示几个字符，打开很多的时候就会挤在一起，分不清楚哪个是哪个。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   cmux 把标签页从横向变成了纵向，并且把它们放在了左边，在每一个工作区里都显示出了 git branch，PR 编号，当前目录，监听端口以及最新的一条通知信息。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   一目了然地看到每一个agent在做哪个项目，卡在哪个环节上。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 蓝色通知环，解决的是通知定位的问题。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   传统上终端通知系统是没有上下文的，弹出来的时候看不出是哪个agent要你。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   cmux的方式是在一个agent需要输入的时候，这个agent对应的面板四周会有一圈蓝光。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不需要一直盯着通知面板看，只要看到蓝色的灯亮起来，就说明那个窗口已经准备好要等你了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   用快捷键Cmd+Shift+U可以快速定位到最新的未读消息所在的agent上，并且不需要一个一个地去查找。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 OSC 序列检测，解决的是通知兼容性的问题。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这套通知系统不只是给 Claude Code 用的，它通过 OSC 序列检测，能自动捕获终端发出的通知信号。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   只要你的 agent 工具支持 OSC 9/99/777 这类序列，cmux 就能识别，一条
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    cmux hooks setup
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   就能把通知集成进去。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果使用的是Claude Code，Codex，OpenCode，Gemini CLI等主流工具的话，cmux还提供hook自动安装的功能，即插即用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKNYmAA3NMBG40nSkf9YBv9PlRYuzRXedPYhLibv2oQMQphj0Rlk3QibluF8O0B2bls2grTZj9glEPpHiccFZpfBN5jYK26qEo3Rk/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    内置浏览器面板
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    除了通知系统之外，cmux 还有浏览器面板。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这个设计有点特别，你可以在终端旁边分屏打开一个 WebKit 浏览器。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   用以查看agent生成的网页，调试前端界面，让agent自己操作浏览器等。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   更进一步的话，它提供了浏览器自动化API，来源于Vercel的agent-browser项目。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它解决的是agent和Web界面之间的交互问题。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   可以使用CLI命令来获取agent snapshot页面的accessibility tree，点击元素，输入文本，执行JS等。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   例如
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    cmux browser snapshot --interactive
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   可以得到页面结构，
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    cmux browser click --surface surface:3 'e14'
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   可以点击到指定的元素。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   让Agent不再局限于终端上运行，可以直接对浏览器界面进行操作，打通了终端和 Web 之间的隔阂。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果在远程服务器上运行agent的话，浏览器面板的路由就会自动穿透到远程网络中去。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   localhost 地址直接就能用，不用手动配端口转发，省掉了一堆折腾。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblI5HdgtrDJJAp0fc4LYh6Fx05P1IzaJuchrAtdQS9rsKThvu7EAaEEoLGOInIUJH56XicXsYhj5iaS6C1plV6QhavqIfaWiaC7L7s/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    SSH 远程连接
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    cmux 还提供了一个 MCP Server，让 agent 控制 agent。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   cmux-agent-mcp 有 81 个工具，它的设计理念就是用一个orchestrator agent来管理cmux，从而去管理其他的agent。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这套工具解决的是多 agent 协调的问题。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   可以用来spawn新的agent会话，给正在运行中的agent注入提示，读取任意面板的输出。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   也可以一次调用给多个agent分配不同的任务，例如让三个子agent分别负责前端，后端和测试，并且要对它们的输出情况进行监控。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这样就使cmux不只成为“终端”，而成为一个agent orchestration平台。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJ7LzsWIxhB0srIfiaKtIVwH9Q8qpZCJGFhicooELU6CgwbCNpLRhLHDibl1XAZDwfIHVwPALR62qoZib9egXstxWNRNVEaCqvuCKY/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Claude Code Teams 模式
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    看到这，有些人可能想试试。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果使用的是macOS的话，最简单的方法就是Homebrew：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;brew tap manaflow-ai/cmux&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;brew install --cask cmux&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   安装好之后打开应用程序，如果之前你使用过Ghostty的话，cmux就会自动读取配置文件，并且继承你的主题，字体和颜色设置。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   CLI 工具放在了应用包里面，如果要在外面直接使用的话，可以在
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    /usr/local/bin/cmux
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   上创建一个软链接。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   然后运行
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    cmux hooks setup
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   ，将Claude Code或者Codex的通知整合进来之后就可以使用了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    到这里缺点也给大家提提。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   目前只支持 macOS 14.0 以上，Linux 版本还在计划中，Windows 没有官方提及。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   SSH 功能还在不断更新中，tmux 的 detach/attach 机制已经比较完善了，目前 cmux 还不能实现 tmux 那样的功能，比如持久化会话，远程 detach 等。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   该项目使用的是GPL-3.0协议，企业想要使用但是又不希望受到GPL合规限制的话，就需要购买商业授权。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   整体来看，cmux 不是要替代 tmux 或 iTerm2，而是定义了一个新类别：AI Terminal Multiplexer。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它主要的价值就是把“agent 并行管理”这件事情由人工去操作变成终端本身具备的能力。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   经常同时跑 Claude Code 和 Codex CLI 的朋友，推荐试试。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目基于 GPL-3.0 协议开放，感兴趣的同学可以去 GitHub 仓库看看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/manaflow-ai/cmux
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然看到这了，欢迎随手点赞，在看，转发，也可以给我个星标⭐，接收最新的文章，我们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1158" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/mxMc840Zz7FF_8t64C3z3Q</link><pubDate>Sun, 14 Jun 2026 15:08:00 +0800</pubDate></item><item><id>3877547210-2247512895_1</id><title>一个产品经理必备 skill ，上热搜了。</title><description>产品经理用 AI 写文档，早就不是新鲜事了。          我试过用好几个 AI 来写 PRD。我发现真正让人头痛的是，AI 给你的是很多的文字，并不是可以执行的方法论。          AI 写了一个 PRD，它就给你生成几个页面的模板；让你做竞品分析，它就给你列出一串表格。          看起来很完整了，但是用的时候总感觉少了一点东西。          最近我在 GitHub 上刷...</description><guid>https://mp.weixin.qq.com/s/7t3pCljov14VbIDXcsYuBw</guid><enclosure url="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblI0gk4iaVatH6ghulREnp3LsbUbQLcHsoBFDib0nUDKJyzAzHderkrvsq7S4405icPWSf6gULjxRH1CclHZZKG69MH7A90UDJXhJc/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; padding: 0px 10px; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; visibility: visible;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1158" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   产品经理用 AI 写文档，早就不是新鲜事了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   我试过用好几个 AI 来写 PRD。我发现真正让人头痛的是，AI 给你的是很多的文字，并不是可以执行的方法论。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   AI 写了一个 PRD，它就给你生成几个页面的模板；让你做竞品分析，它就给你列出一串表格。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   看起来很完整了，但是用的时候总感觉少了一点东西。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   最近我在 GitHub 上刷到了一个叫 PM Skills 的项目。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   三个月内拿到了 16000 多颗星星。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblK3BAgwcWDAePLLNwG4jGiaW4VoniaCias4Tu9uPhhaBfjxFOsqQrbMqXF104S4bag5DicdC13NvI6QWhlSHyYsNoeH5lIibIPdsOcI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    PM Skills Marketplace 做的事情很简单，就是把产品管理的方法论编码成可以被AI直接执行的工作流。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px; visibility: visible;"&gt;
  &lt;span style="font-family: STHeitiSC-Light; font-size: 22px; color: rgb(14, 136, 235); font-weight: bolder; display: inline-block; padding-left: 10px; border-left-width: 5px; border-left-style: solid; border-left-color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    举个例子，你就明白了
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   遇到一个未知的需求，一般会这样。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;ol class="list-paddingleft-1" style="margin-top: 8px; margin-bottom: 8px; padding-left: 25px; color: black; list-style-type: decimal; visibility: visible;"&gt;
  &lt;li style="visibility: visible;"&gt;
   &lt;section powered-by="werss" style="margin-top: 5px; margin-bottom: 5px; line-height: 26px; text-align: left; color: rgb(1, 1, 1); font-weight: 500; font-size: 15px; visibility: visible;"&gt;
    &lt;span style="visibility: visible;"&gt;
     打开 ChatGPT 或 DeepSeek。
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li style="visibility: visible;"&gt;
   &lt;section powered-by="werss" style="margin-top: 5px; margin-bottom: 5px; line-height: 26px; text-align: left; color: rgb(1, 1, 1); font-weight: 500; font-size: 15px; visibility: visible;"&gt;
    &lt;span style="visibility: visible;"&gt;
     输入 “帮我写一个用户访谈脚本”。
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li style="visibility: visible;"&gt;
   &lt;section powered-by="werss" style="margin-top: 5px; margin-bottom: 5px; line-height: 26px; text-align: left; color: rgb(1, 1, 1); font-weight: 500; font-size: 15px; visibility: visible;"&gt;
    &lt;span style="visibility: visible;"&gt;
     AI 给你一个通用模板。
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li style="visibility: visible;"&gt;
   &lt;section powered-by="werss" style="margin-top: 5px; margin-bottom: 5px; line-height: 26px; text-align: left; color: rgb(1, 1, 1); font-weight: 500; font-size: 15px; visibility: visible;"&gt;
    &lt;span style="visibility: visible;"&gt;
     自己先改一点，还是不清晰的。
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li style="visibility: visible;"&gt;
   &lt;section powered-by="werss" style="margin-top: 5px; margin-bottom: 5px; line-height: 26px; text-align: left; color: rgb(1, 1, 1); font-weight: 500; font-size: 15px; visibility: visible;"&gt;
    &lt;span style="visibility: visible;"&gt;
     再问 “对电商用户怎么改”，AI 又会给出一些建议。
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li style="visibility: visible;"&gt;
   &lt;section powered-by="werss" style="margin-top: 5px; margin-bottom: 5px; line-height: 26px; text-align: left; color: rgb(1, 1, 1); font-weight: 500; font-size: 15px; visibility: visible;"&gt;
    &lt;span style="visibility: visible;"&gt;
     你还要不断地修改，反反复复地进行好几轮。
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
 &lt;/ol&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   而我装完 PM Skills ，直接在 OpenCode 里输入：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px; margin-bottom: 10px; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px; visibility: visible;"&gt;&lt;code style='overflow-x: auto; padding: 15px 16px 16px; color: rgb(171, 178, 191); display: -webkit-box; font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace; font-size: 12px; background: rgb(40, 44, 52); border-radius: 5px; visibility: visible;'&gt;&lt;span style="visibility: visible;"&gt;/interview-script&lt;/span&gt;&lt;span style="visibility: visible;"&gt;&lt;br style="visibility: visible;"/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   马上它就问我：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   本次采访的目的是什么 ？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJoyNVNmO6poxayibW1wA0T1OzQjo5Pdnj8Z5nbNWUfia05TUu4f0Ya7W3sNficd8MkrnnARwS4xwY0wj5CzY5q1fCnE4XicQp7qia8/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   我给一个企业级的OA工作流系统的调研需求。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   一分钟后。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   创建了一个叫 customer-interview-oa-workflow.md 的文件。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   里面记录了一些关于这个需求调研的内容。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblK7L9bmJE3RibfbYNce0y5DwaTOChMmwCWlAQCo1oC8BiaWVm9UtbYGV3DdMY2u1C9wjAKKrmWaISLPBib6QiarDVEPfAGeJXV0nCA/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我用Vs Code 打开并补充一些内容。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJyLic6oqdsNQQjSeiblWibbJe7pe8lZcUO6ib6DWjmvicDxxkfI6KQrUFd0zKJJMxxxUa7OajJ1P15yzMGYc187ftSy7SEn6xbh6Zo/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   接着它根据我的回答来生成一个结构化的访谈脚本，里面包含了JTBD问题、满意度等内容。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKVBuYJ7mhXZQ1qPAQSXFMKb6DIkzCKEGeK0LUsbvzIPu2HlZRFafNZFz9rqL5EfQYJPZma01lywo8aFl3dribaTELeWiaLkf74Y/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   从这个过程来看。很明显。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    已经不需要自己去搭建框架了，AI 会带你完成整个过程。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这就是“给你文字”与“给你结构化的执行路径”的区别。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   整个项目包含 9 个插件、 68 个技能以及 42 个命令，覆盖了产品的全生命周期。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJx6t7kniaCFRSCOy7UalIPwZXGaXll5IDQQbI1TznHJ0DPd1Fcf4SlY3UY6g427XCtXZq1saulSj0zDtbBugXibNWZjXiaruebib4/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   从产品发现、战略规划、执行落地，到市场研究、数据分析、市场进入、营销增长，再到工具包和最新的AI交付，基本覆盖了产品经理工作中会遇到的所有场景。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    它把所有产品的管理方法论都编入了AI 中。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    01 发现产品的方法
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   每个“技能”都有一个对应的方法论或分析框架。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我用了
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    /opportunity-solution-tree
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   ，本来是想让我画出一棵树状图，但它却一步步地引导我来构建Teresa Torres的OST——从结果出发，逆向推导出机会点、分解方案，最后通过实验来验证。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不是给你一个模板让你去填，而是问完一个问题之后再问下一个。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    identify-assumptions-existing
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   也试了，按照价值、可用性、可行性、生存性这四个维度把我的产品中“默认没问题”的假设都揪出来了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   强的一逼。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIVQ3FW3RfYB9AibgGEiaRI85uO7pL4zaWZ28E8d36lww0ry7Jjef0DAJbzJTodnQ9QUwqwnX1Ssyzic1GWvKiapZ8ox7jSkZ5nDvU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 命令与技能之间也有关系
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   那么命令与技能的区别是什么呢？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   技能是独立的方法论，命令就是把多个技能组合起来完成一个过程。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   比如
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    /discover
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   ，它会让你看到整个产品发现的过程：创意产生、假设对应、排序优先、实验设计。不需要你自己来拼接流程了，AI会一步步地向你提问，并且一步步地带你前进。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 产品的战略能力
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   战略相关的内容包括了产品的愿景、价值主张、商业模式和价格策略等。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    /product-strategy
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   会帮你创建出包含九个部分的产品战略画布，并且从愿景一直写到可以防御的部分。而
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    lean-canvas
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   就是把整个Lean Canvas走一遍——我曾经填了很多次Lean Canvas，每次都会想，“这里应该填什么？”这样让它带上就快了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLCnrAsu5Z4X5ia5icdtL8fWMZYIQ2WEEkauVrxS1qbUGReLPicyyDqkway5l79u4NwTPqAGO1T8VcEZmSzeFmRdhNKCQCns1I5hk/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    04 定价策略能力
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    pricing-strategy
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   会帮你做定价模型、竞争分析、支付意愿评估和价格弹性考虑。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   用前面提到的企业的OA系统需求来试试看，它会自动找出所有的竞争对手名单——这一点是没想到到的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJAPDMwwauia5YhqofqrURq9vznta0p7XicUsTGibtwxtnYOD1RKCVY9M7j8yrWCLk9icIwnUfz2GeE1ickswxPVyfibcL4ZMMuPosibM/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   原来需要花上几天时间来整理的东西，现在分分钟就出结果了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    05 产品的执行能力
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   执行层面上最多的有16项，包括PRD、OKR、路线图、Sprint规划、发布说明等。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    create-prd
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   会为你生成一个包含八部分的PRD模板，而
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    outcome-roadmap
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   则把功能列表转化为以成果为导向的路线图。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    pre-mortem
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   最实用的就是在项目刚开始的时候就做一次风险分析，并且把Tigers、Paper Tigers和Elephants分开来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   以前需要开上半天会议才能想到的想法，现在也是很快就拿到结果了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它不是随便给你一个模板让你去填，而是问完一个问题之后再问下一个。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它会向你提问、引导你的思考、帮助你做优先级排序——你才是做决定的人，它只是帮你把方法论走一遍。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    看到这里的人可能会想试一试
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我用 OpenCode 手动复制 Skills 来安装。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;1. 将项目克隆到本地&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;git &lt;/span&gt;&lt;span style="color: #e6c07b;line-height: 26px;"&gt;&lt;span&gt;clone&lt;/span&gt;&lt;/span&gt;&lt;span&gt; https://github.com/phuryn/pm-skills.git&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;2. 把所有的技能都复制到OpenCode文件夹里&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;mkdir -p ~/.opencode/skills&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;cp -r pm-skills/pm-product-discovery/skills/* ~/.opencode/skills/&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;cp -r pm-skills/pm-product-strategy/skills/* ~/.opencode/skills/&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;cp -r pm-skills/pm-execution/skills/* ~/.opencode/skills/&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;其他插件也是如此&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;3. 在 OpenCode 里直接用&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;比如说在产品发现上遇到问题的时候&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;为了提升用户留存率所设计出的一种机会方案树&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    到这里就缺点也给大家提一提了
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Commands 只能在 Claude Code 和 Claude Cowork 中使用，在其他工具里只能用到 Skills。Windows 用户还会遇到不稳的情况。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   另外，该项目比较适合有产品管理方法论基础的人。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果对 Opportunity Solution Tree、Lean Canvas 等概念一无所知的话，在 AI 向你提问时可能会答不上来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   关于方法论的问题，知道的人很多，能够实施的人却很少。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   PM Skills Marketplace 把框架变成了一种流程，把知识变成了能力。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   下次写 PRD 或者做战略规划的时候，可以让他带你转一圈。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   有兴趣的朋友可以安装一下试试看。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/phuryn/pm-skills
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然看到这了，欢迎随手点赞、在看、转发，也可以给我个星标⭐，接收最新的文章，我们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   &lt;br/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1158" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="margin-bottom: 0px;"&gt;
 &lt;span&gt;
  &lt;br/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/7t3pCljov14VbIDXcsYuBw</link><pubDate>Sat, 13 Jun 2026 15:10:35 +0800</pubDate></item><item><id>3877547210-2247512771_1</id><title>画图这件事，我终于不用拖拽了。</title><description>画图这件事，我终于不用拖拽了。                      原创                      开源日记                      开源日记                        开源日记                                                 在小说阅读器读本章                       ...</description><guid>https://mp.weixin.qq.com/s/WLqxs0Wkk2YdklqfU15IKQ</guid><enclosure url="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblIyXRknxvo8YgTCOBiaOehbAghTg45MkG86qwuoTUWN6RAy1KNbuPT7jcgq9nDCXyGIu11BIViau3ice6tTNtxPibEAgRKh24AD80w/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;!DOCTYPE html&gt;
&lt;html class=""&gt;
 &lt;head&gt;
  &lt;meta content="true" name="wechat-enable-text-zoom-em"/&gt;
  &lt;meta content="true" name="wechat-enable-text-size-adjust"/&gt;
  &lt;meta content="text/html; charset=utf-8" http-equiv="Content-Type"/&gt;
  &lt;meta content="IE=edge" http-equiv="X-UA-Compatible"/&gt;
  &lt;meta content="light dark" name="color-scheme"/&gt;
  &lt;meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0,viewport-fit=cover" name="viewport"/&gt;
  &lt;link href="//res.wx.qq.com/a/wx_fed/assets/res/NTI4MWU5.ico" rel="shortcut icon" reportloaderror="" type="image/x-icon"/&gt;
  &lt;link color="#4C4C4C" href="//res.wx.qq.com/a/wx_fed/assets/res/MjliNWVm.svg" rel="mask-icon" reportloaderror=""/&gt;
  &lt;link href="//res.wx.qq.com/a/wx_fed/assets/res/OTE0YTAw.png" rel="apple-touch-icon-precomposed" reportloaderror=""/&gt;
  &lt;meta content="yes" name="apple-mobile-web-app-capable"/&gt;
  &lt;meta content="black" name="apple-mobile-web-app-status-bar-style"/&gt;
  &lt;meta content="telephone=no" name="format-detection"/&gt;
  &lt;meta content="origin-when-cross-origin" name="referrer"/&gt;
  &lt;meta content="strict-origin-when-cross-origin" name="referrer"/&gt;
  &lt;script nonce="1435168589" reportloaderror=""&gt;
   try{var ua=navigator.userAgent;if(!/Android/i.test(ua)&amp;&amp;!/Harmony/i.test(ua)){document.getElementsByTagName('html').item(0).style.webkitTextSizeAdjust=JSON.parse(window.__wxWebEnv.getEnv()).fontScale+'%'}}catch(e){}
  &lt;/script&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   window.logs = { pagetime: {} };
  window.logs.pagetime['html_begin'] = (+new Date());
  window.LANG = "zh_CN";
  &lt;/script&gt;
  &lt;script nonce="1435168589" reportloaderror=""&gt;
   window.__moon_initcallback = function () {
  if (!!window.__initCatch) {
    window.__initCatch({
      idkey: 27611 + 2,
      startKey: 0,
      limit: 128,
      badjsId: 43,
      reportOpt: {
        uin: '',
        biz: "Mzg3NzU0NzIxMA==" || "",
        mid: "2247512771" || "" || "",
        idx: "1" || "" || "",
        sn: "684eb8decbc3379244dd400174bd10dd" || "" || "",
      },
      extInfo: {
        network_rate: 0.01,   
        badjs_rate: 0.1
      }
    });
  }
}
  &lt;/script&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   var WX_BJ_REPORT = window.WX_BJ_REPORT || {};
  (function(_) {
    if (_.BadJs) {
      return;
    }
   
    var BADJS_WIN_ERR = 'BadjsWindowError';
    var extend = function(source, destination) {
      for (var property in destination) {
        source[property] = destination[property]
      }
      return source
    }
    
    _.BadJs = {
      uin: 0,
      mid: "",
      bizid: 5,
      view: "wap",
      _cache: {},
      _info: {},
      _hookCallback: null,
      ignorePath: true,
      throw: function(e, extData) {
        this.onError(e, extData);
        throw e;
      },
     
     
      onError: function(e, extData) {
        try {
         
          if (e.BADJS_EXCUTED == true) {
            return;
          }
          e.BADJS_EXCUTED = true;
          var data = errToData(e);
          data.uin = this.uin;
          data.mid = this.mid;
          data.view = this.view;
          data.bizid = this.bizid;
          data.cmdb_module = 'mmbizwap';
         
          if (!!extData) {
            data = extend(data, extData);
          }
         
          if (data.cid) {
            data.key = "[" + data.cid + "]:" + data.key;
          }
          if (data.key.includes('Failed to fetch dynamically imported module')) {
            data.key = 'Failed to fetch dynamically imported module';
          }
          if (window.biz) {
            data.msg += ` || https://mp.weixin.qq.com/s?__biz=${window.biz}&amp;mid=${window.mid}&amp;idx=${window.idx}&amp;sn=${window.sn}&amp;scene=${window.source} || sec_open=${!!window.__second_open__}`;
          }
          if (data._info) {
            if (Object.prototype.toString.call(data._info) == "[object Object]") {
              data.msg += " || info:" + JSON.stringify(data._info);
            } else if (Object.prototype.toString.call(data._info) == "[object String]") {
              data.msg += " || info:" + data._info;
            } else {
              data.msg += " || info:" + data._info;
            }
          }
          if (typeof this._hookCallback == "function") {
            if (this._hookCallback(data) === false) {
              return
            }
          }

          if (e.error) {
            data.bizid = 20307;
            data.key = e.error.name || data.name;
            this._send(data);
          } else {
            this._send(data);
          }
          return _.BadJs;
        } catch (e) {
          console.error(e);
        }
      },
      winErr: function(event) {
        if (event.error &amp;&amp; event.error.BADJS_EXCUTED) {
          return;
        }
        if (event.type === 'unhandledrejection') {
          if (event.reason instanceof Error) {
            var e = event.reason || {};
            _.BadJs.onError(createError(event.type, e.message || "", e.sourceURL || "", e.line || "", e.column || "", event.reason));
          } else {
            var message = typeof event.reason === 'object' ? JSON.stringify(event.reason) : event.reason;
            _.BadJs.onError(createError(event.type, message, "", "", "", event.reason));
          }
        } else {
          _.BadJs.onError(createError(BADJS_WIN_ERR, event.message, event.filename, event.lineno, event.colno, event.error));
        }
      },
      init: function(uin, mid, view) {
        this.uin = uin || this.uin;
        this.mid = mid || this.mid;
        this.view = view || this.view;
        return _.BadJs;
      },
     
      hook: function(fn) {
        this._hookCallback = fn;
        return _.BadJs;
      },
      _send: function(data) {
       
        if (!data.mid) {
          if (typeof window.PAGE_MID !== 'undefined' &amp;&amp; window.PAGE_MID) {
            data.mid = window.PAGE_MID;
          } else {
            return;
          }
        }
        if (!data.uin) {
          data.uin = window.user_uin || 0;
        }
       
        var flag = [data.mid, data.name, data.key, data.bizid].join("|");
        if (this._cache &amp;&amp; this._cache[flag]) {
          return
        } else {
          this._cache &amp;&amp; (this._cache[flag] = true);
          this._xhr(data);
        }
        return _.BadJs;
      },
      _xhr: function(data) {
       
        var xmlobj;
        if (window.ActiveXObject) {
          try {
            xmlobj = new ActiveXObject("Msxml2.XMLHTTP");
          } catch (e) {
            try {
              xmlobj = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (E) {
              xmlobj = false;
            }
          }
        } else if (window.XMLHttpRequest) {
          xmlobj = new XMLHttpRequest();
        }
        var param = "";
        for (var key in data) {
          if (key &amp;&amp; data[key]) {
            param += [key, "=", encodeURIComponent(data[key]), "&amp;"].join("");
          }
        }
        if (xmlobj &amp;&amp; typeof xmlobj.open == "function") {
          xmlobj.open("POST", "https://badjs.weixinbridge.com/report", true);
          xmlobj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
          xmlobj.onreadystatechange = function(status) {};
          xmlobj.send(param.slice(0, -1));
        } else {
          var img = new Image();
          img.src = "https://badjs.weixinbridge.com/report?" + param;
        }
      },
     
      report: function(name, key, data) {
        this.onError(createError(name, key), data);
        return this;
      },
     
      mark: function(info) {
        this._info = extend(this._info, info);
      },
      nocache: function() {
        this._cache = false;
        return _.BadJs;
      },
      setBizId: function(bizid) {
        this.bizid = bizid;
        return _.BadJs;
      },
    }
    function createError(name, msg, url, line, col, error) {
      return {
        name: name || "",
        message: msg || "",
        file: url || "",
        line: line || "",
        col: col || "",
        stack: (error &amp;&amp; error.stack) || "",
        error: error,
      }
    }
   
    
    function errToData(e) {
      var _stack = parseStack(e);
      return {
        name: e.name,
        key: e.message,
        msg: e.message,
        stack: _stack.info,
        file: _stack.file,
        line: _stack.line,
        col: _stack.col,
        client_version: "",
        _info: e._info
      }
    }
    function parseStack(e) {
      e._info = e._info || "";
      var stack = e.stack || "";
      var _stack = {
        info: stack,
        file: e.file || "",
        line: e.line || "",
        col: e.col || "",
      };
      if (_stack.file == "") {
       
        var stackArr = stack.split(/\bat\b/);
        if (stackArr &amp;&amp; stackArr[1]) {
          var match = /(https?:\/\/[^\n]+)\:(\d+)\:(\d+)/.exec(stackArr[1]);
          if (match) {
           
            if (match[1] &amp;&amp; match[1] != _stack.file) {
              _stack.file &amp;&amp; (e._info += " [file: " + _stack.file + " ]");
              _stack.file = match[1];
            }
            if (match[2] &amp;&amp; match[2] != _stack.line) {
              _stack.line &amp;&amp; (e._info += " [line: " + _stack.line + " ]");
              _stack.line = match[2];
            }
            if (match[3] &amp;&amp; match[3] != _stack.col) {
              _stack.col &amp;&amp; (e._info += " [col: " + _stack.col + " ]");
              _stack.col = match[3];
            }
          }
        }
      }
     
      if (_stack &amp;&amp; _stack.file &amp;&amp; _stack.file.length &gt; 0) {
        _stack.info = _stack.info.replace(new RegExp(_stack.file.split("?")[0], "gi"), "__FILE__")
      }
     
      if (_.BadJs.ignorePath) {
        _stack.info = _stack.info.replace(/http(s)?\:[^:\n]*\//ig, "").replace(/\n/gi, "");
      }
      return _stack;
    }
   
    window.addEventListener &amp;&amp; window.addEventListener('error', _.BadJs.winErr);
    window.addEventListener &amp;&amp; window.addEventListener('unhandledrejection', _.BadJs.winErr);
    return _.BadJs;
  })(WX_BJ_REPORT);
  window.WX_BJ_REPORT = WX_BJ_REPORT;
  
  function __moonf__() {
    if (window.__moonhasinit) return;
    window.__moonhasinit = true;
    window.__moonclientlog = [];
    if (typeof JSON != "object") {
      window.JSON = {
        stringify: function() { return ""; },
        parse: function() { return {}; }
      };
    }
    var moon_init = function() {
      
      (function() {
        var inWx = (/MicroMessenger/i).test(navigator.userAgent);
        var inMp = (/MPAPP/i).test(navigator.userAgent);
        var _idkey = 121261;
        var _startKey;
        var _limit;
        var _badjsId;
        var _reportOpt;
        var _extInfo;
        var MOON_AJAX_NETWORK_OFFSET = 4;
        window.__initCatch = function(opt) {
          _idkey = opt.idkey;
          _startKey = opt.startKey || 0;
          _limit = opt.limit;
          _badjsId = opt.badjsId;
          _reportOpt = opt.reportOpt || "";
          _extInfo = opt.extInfo || {};
          _extInfo.rate = _extInfo.rate || 0.5;
        }
       
        window.__moon_report = function(array, rate_opt) {
          var isAcrossOrigin = false;
          var href = '';
          try {
            href = top.location.href;
          } catch (e) {
            isAcrossOrigin = true;
          }
          var rate = 0.5;
          if (!!_extInfo &amp;&amp; !!_extInfo.rate) {
            rate = _extInfo.rate;
          }
          if (!!rate_opt &amp;&amp; (typeof rate_opt == 'number')) {
            rate = rate_opt;
          }
          if (
            (!(/mp\.weixin\.qq\.com/).test(location.href) &amp;&amp; !(/payapp\.weixin\.qq\.com/).test(location.href)) ||
            Math.random() &gt; rate ||
            !(inWx || inMp) ||
            (top != window &amp;&amp; !isAcrossOrigin &amp;&amp; !(/mp\.weixin\.qq\.com/).test(href))
          ) {
           
          }
          if (isObject(array))
            array = [array];
          if (!isArray(array) || _idkey == '')
            return;
          var data = "";
          var log = [];
          var key = [];
          var val = [];
          var idkey = [];
         
          if (typeof _limit != "number") {
            _limit = Infinity;
          }
          for (var i = 0; i &lt; array.length; i++) {
            var item = array[i] || {};
            if (item.offset &gt; _limit) continue;
            if (typeof item.offset != "number") continue;
            if (item.offset == MOON_AJAX_NETWORK_OFFSET &amp;&amp; !!_extInfo &amp;&amp; !!_extInfo.network_rate &amp;&amp; Math.random() &gt;= _extInfo.network_rate) {
              continue;
            }
           
            var k = _limit == Infinity ? _startKey : (_startKey + item.offset);
            log[i] = (("[moon]" + _idkey + "_" + k + ";") + item.log + ";" + getErrorMessage(item.e || {})) || "";
            key[i] = k;
            val[i] = 1;
          }
          for (var j = 0; j &lt; key.length; j++) {
            idkey[j] = _idkey + "_" + key[j] + "_" + val[j];
            data = data + "&amp;log" + j + "=" + log[j];
          }
          if (idkey.length &gt; 0) {
           
            sendReport("POST", location.protocol + '//mp.weixin.qq.com/mp/jsmonitor?', "idkey=" + idkey.join(";") + "&amp;r=" + Math.random() + "&amp;lc=" + log.length + data);
           
           
            var rate = 1;
            if (_extInfo &amp;&amp; _extInfo.badjs_rate) {
              rate = _extInfo.badjs_rate;
            }
            if (Math.random() &lt; rate) {
              data = data.replace(/uin\:(.)*\|biz\:(.)*\|mid\:(.)*\|idx\:(.)*\|sn\:(.)*\|/, '');
              if(!!_badjsId){
                var _img = new Image();
                var _src = 'https://badjs.weixinbridge.com/badjs?id=' + _badjsId + '&amp;level=4&amp;from=' + encodeURIComponent(location.host) + '&amp;msg=' + encodeURIComponent(data);
                _img.src = _src.slice(0, 1024);
              }
             
              if (typeof WX_BJ_REPORT != "undefined" &amp;&amp; WX_BJ_REPORT.BadJs) {
                for (var i = 0; i &lt; array.length; i++) {
                  var item = array[i] || {};
                  if (item.e) {
                    WX_BJ_REPORT.BadJs.onError(item.e,{_info:item.log});
                  } else {
                    var name = /[^:;]*/.exec(item.log)[0];
                    WX_BJ_REPORT.BadJs.report(name, item.log, { mid: "mmbizwap:Monitor" });
                  }
                }
              }
            } else {
             
              for (var i = 0; i &lt; array.length; i++) {
                var item = array[i] || {};
                if (item.e) {
                  item.e.BADJS_EXCUTED = true;
                }
              }
            }
          }
        }
        function isArray(obj) {
          return Object.prototype.toString.call(obj) === '[object Array]';
        }
        function isObject(obj) {
          return Object.prototype.toString.call(obj) === '[object Object]';
        }
        function getErrorMessage(e) {
          var stack = e.stack + ' ' + e.toString() || "";
          try {
           
            if (!window.testenv_reshost) {
              stack = stack.replace(/http(s)?:\/\/res\.wx\.qq\.com/g, "");
            } else {
              var host = 'http(s)?://' + window.testenv_reshost;
              var reg = new RegExp(host, 'g');
              stack = stack.replace(reg, "");
            }
           
            var reg = /\/([^.]+)\/js\/(\S+?)\.js(\,|:)?/g;
            while (reg.test(stack)) {
             
              stack = stack.replace(reg, function(a, b, c, d, e, f) {
                return c + d
              });
            }
          } catch (e) {
            stack = e.stack ? e.stack : ""
          }
          var ret = [];
          for (o in _reportOpt) {
            if (_reportOpt.hasOwnProperty(o)) {
              ret.push(o + ":" + _reportOpt[o]);
            }
          }
          ret.push("STK:" + stack.replace(/\n/g, ""));
          return ret.join("|");
        }
        function sendReport(type, url, data) {
          if (!/^mp\.weixin\.qq\.com$/.test(location.hostname)) {
            var tmp = [];
            data = data.replace(location.href, (location.origin || "") + (location.pathname || "")).replace("#wechat_redirect", "").replace("#rd", "").split("&amp;");
            for (var i = 0, il = data.length; i &lt; il; i++) {
              var a = data[i].split("=");
              if (!!a[0] &amp;&amp; !!a[1]) {
                tmp.push(a[0] + "=" + encodeURIComponent(a[1]));
              }
            }
            var _img = new window.Image();
            _img.src = (url + tmp.join("&amp;")).substr(0, 1024);
            return;
          }
          var xmlobj;
          if (window.ActiveXObject) {
            try {
              xmlobj = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
              try {
                xmlobj = new ActiveXObject("Microsoft.XMLHTTP");
              } catch (E) {
                xmlobj = false;
              }
            }
          } else if (window.XMLHttpRequest) {
            xmlobj = new XMLHttpRequest();
          }
          if (!xmlobj) return;
         
          xmlobj.open(type, url, true);
          xmlobj.setRequestHeader("cache-control", "no-cache");
          xmlobj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
          xmlobj.setRequestHeader("X-Requested-With", "XMLHttpRequest");
          xmlobj.send(data);
        }

      })();
     
    };
    moon_init();
   
    (!!window.__moon_initcallback) &amp;&amp; (window.__moon_initcallback());
  }
 
 
 
 
  __moonf__();
  
  if (!!window.addEventListener){
    window.addEventListener("load",function(){
      var MOON_SCRIPT_ERROR_KEY_OFFSET = 1;
      var ns = document.querySelectorAll("[reportloaderror]");
      for(var ni=0,nl=ns.length;ni&lt;nl;ni++)
        ns[ni].onerror=function(ev){
          window.__moon_report([{ offset: MOON_SCRIPT_ERROR_KEY_OFFSET, log: "load_script_error:" + ev.target.src, e: new Error('LoadResError') }], 1);
          window.WX_BJ_REPORT.BadJs.report("load_script_error", ev.target.src, { mid: "mmbizwap:Monitor" });
        };
    });
  }
  &lt;/script&gt;
  &lt;meta content="" name="description"&gt;
   &lt;meta content="开源日记" name="author"&gt;
    &lt;meta content="画图这件事，我终于不用拖拽了。" property="og:title"&gt;
     &lt;meta content="https://mp.weixin.qq.com/s/WLqxs0Wkk2YdklqfU15IKQ" property="og:url"&gt;
      &lt;meta content="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblLJGcYwOahVL3DsR85kKkicqaBJ8NNlOic186VqXq1W8zUmYt5NfhHeoLN9rricp0AjuialK2XGHzeISRXYcrn0ibLVyibxGEuIowiaOI/0?wx_fmt=jpeg" property="og:image"&gt;
       &lt;meta content="" property="og:description"&gt;
        &lt;meta content="微信公众平台" property="og:site_name"&gt;
         &lt;meta content="article" property="og:type"&gt;
          &lt;meta content="开源日记" property="og:article:author"&gt;
           &lt;meta content="summary" property="twitter:card"&gt;
            &lt;meta content="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblLJGcYwOahVL3DsR85kKkicqaBJ8NNlOic186VqXq1W8zUmYt5NfhHeoLN9rricp0AjuialK2XGHzeISRXYcrn0ibLVyibxGEuIowiaOI/0?wx_fmt=jpeg" property="twitter:image"&gt;
             &lt;meta content="画图这件事，我终于不用拖拽了。" property="twitter:title"/&gt;
             &lt;meta content="开源日记" property="twitter:creator"/&gt;
             &lt;meta content="微信公众平台" property="twitter:site"/&gt;
             &lt;meta content="" property="twitter:description"/&gt;
             &lt;title&gt;
             &lt;/title&gt;
             &lt;script nonce="1435168589" reportloaderror=""&gt;
              (() =&gt; {
     
      const ua = navigator.userAgent;
      const noMobile = !(/(iPhone|iPad|iPod|iOS)/i.test(ua) || /Windows\sPhone/i.test(ua) || /(Android)/i.test(ua));
      setTimeout(() =&gt; {
        noMobile &amp;&amp; document.title === '' &amp;&amp; (document.title = '微信公众平台');
      }, 1000);

     
      window.addEventListener('securitypolicyviolation', (e) =&gt; {
       
        if (e.effectiveDirective === 'base-uri') {
          (new Image()).src = location.protocol + '//mp.weixin.qq.com/mp/jsmonitor?idkey=523105_1_1&amp;r=' + Math.random();
        }

        const reportData = {
          violatedDirective: e.effectiveDirective,
          blockedURI: e.blockedURI,
          sourceFile: e.sourceFile,
          lineNumber: e.lineNumber,
          columnNumber: e.columnNumber,
          disposition: e.disposition,
          referrer: e.referrer,
          sample: e.sample,
          originalPolicy: e.originalPolicy
        };
        let str = '';
        const keys = Object.keys(reportData);
        for (let i = 0; i &lt; keys.length; i++) {
          const key = keys[i];
          str += key + ': ' + reportData[key] + ' || ';
        }
        str += 'location: ' + location.href;

        window.WX_BJ_REPORT
        &amp;&amp; window.WX_BJ_REPORT.BadJs
        &amp;&amp; window.WX_BJ_REPORT.BadJs.report(
          e.effectiveDirective,
          str,
          {
            mid: 'mmbizwap:csp_report',
            view: 'wap_business'
          }
        );
      });
    })();
             &lt;/script&gt;
             &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
              try {
        if (typeof globalThis === 'undefined') {
          var globalThis = typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : global;
        }
      } catch (error) {
        console.log(error)
      }
     
      try {
        if (typeof queueMicrotask === 'undefined') {
          queueMicrotask = function (cb) {
            Promise.resolve().then(cb);
          };
        }
      } catch (error) {
        console.log(error)
      }
             &lt;/script&gt;
             &lt;script h5only="" nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
              (function(e,t){"object"===typeof exports&amp;&amp;"object"===typeof module?module.exports=t():"function"===typeof define&amp;&amp;define.amd?define([],t):"object"===typeof exports?exports["weEmoji"]=t():e["weEmoji"]=t()})("undefined"!==typeof self?self:this,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!==typeof Symbol&amp;&amp;Symbol.toStringTag&amp;&amp;Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&amp;t&amp;&amp;(e=n(e)),8&amp;t)return e;if(4&amp;t&amp;&amp;"object"===typeof e&amp;&amp;e&amp;&amp;e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&amp;t&amp;&amp;"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&amp;&amp;e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s="5149")}({"02c6":function(e,t,n){var r,o,i=n("2673"),s=n("f8b5"),a=i.process,c=a&amp;&amp;a.versions,u=c&amp;&amp;c.v8;u?(r=u.split("."),o=r[0]+r[1]):s&amp;&amp;(r=s.match(/Edge\/(\d+)/),(!r||r[1]&gt;=74)&amp;&amp;(r=s.match(/Chrome\/(\d+)/),r&amp;&amp;(o=r[1]))),e.exports=o&amp;&amp;+o},"0452":function(e,t,n){var r=n("25e1"),o=n("6dc1").f,i={}.toString,s="object"==typeof window&amp;&amp;window&amp;&amp;Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],a=function(e){try{return o(e)}catch(t){return s.slice()}};e.exports.f=function(e){return s&amp;&amp;"[object Window]"==i.call(e)?a(e):o(r(e))}},"08a5":function(e,t,n){var r=n("c388"),o=n("18e7"),i=n("4a6d"),s=n("cb59");e.exports=function(e,t){for(var n=o(t),a=s.f,c=i.f,u=0;u&lt;n.length;u++){var p=n[u];r(e,p)||a(e,p,c(t,p))}}},"097a":function(e,t,n){"use strict";var r=n("ad7a"),o=n("720c");r({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},"0988":function(e,t,n){"use strict";var r=n("3aa2"),o=n("2673"),i=n("34bc"),s=n("13f0"),a=n("c388"),c=n("3eeb"),u=n("5350"),p=n("b70b"),f=n("da9f"),l=n("c3b1"),h=n("6dc1").f,d=n("4a6d").f,y=n("cb59").f,g=n("2d5c").trim,x="Number",m=o[x],w=m.prototype,_=c(l(w))==x,v=function(e){var t,n,r,o,i,s,a,c,u=p(e,!1);if("string"==typeof u&amp;&amp;u.length&gt;2)if(u=g(u),t=u.charCodeAt(0),43===t||45===t){if(n=u.charCodeAt(2),88===n||120===n)return NaN}else if(48===t){switch(u.charCodeAt(1)){case 66:case 98:r=2,o=49;break;case 79:case 111:r=8,o=55;break;default:return+u}for(i=u.slice(2),s=i.length,a=0;a&lt;s;a++)if(c=i.charCodeAt(a),c&lt;48||c&gt;o)return NaN;return parseInt(i,r)}return+u};if(i(x,!m(" 0o1")||!m("0b1")||m("+0x1"))){for(var b,E=function(e){var t=arguments.length&lt;1?0:e,n=this;return n instanceof E&amp;&amp;(_?f((function(){w.valueOf.call(n)})):c(n)!=x)?u(new m(v(t)),n,E):v(t)},j=r?h(m):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,fromString,range".split(","),k=0;j.length&gt;k;k++)a(m,b=j[k])&amp;&amp;!a(E,b)&amp;&amp;y(E,b,d(m,b));E.prototype=w,w.constructor=E,s(o,x,E)}},"0d66":function(e,t,n){"use strict";var r=n("ad7a"),o=n("dc54"),i=n("d360"),s=n("3823"),a=n("b850"),c=n("25e1"),u=n("2db9"),p=n("ef21"),f=n("4c94"),l=f("slice"),h=p("species"),d=[].slice,y=Math.max;r({target:"Array",proto:!0,forced:!l},{slice:function(e,t){var n,r,p,f=c(this),l=a(f.length),g=s(e,l),x=s(void 0===t?l:t,l);if(i(f)&amp;&amp;(n=f.constructor,"function"!=typeof n||n!==Array&amp;&amp;!i(n.prototype)?o(n)&amp;&amp;(n=n[h],null===n&amp;&amp;(n=void 0)):n=void 0,n===Array||void 0===n))return d.call(f,g,x);for(r=new(void 0===n?Array:n)(y(x-g,0)),p=0;g&lt;x;g++,p++)g in f&amp;&amp;u(r,p,f[g]);return r.length=p,r}})},"120a":function(e,t,n){var r=n("ef21"),o=n("c3b1"),i=n("cb59"),s=r("unscopables"),a=Array.prototype;void 0==a[s]&amp;&amp;i.f(a,s,{configurable:!0,value:o(null)}),e.exports=function(e){a[s][e]=!0}},1283:function(e,t,n){var r=n("3d32");e.exports=r("document","documentElement")},"13f0":function(e,t,n){var r=n("2673"),o=n("8fdb"),i=n("c388"),s=n("79ec"),a=n("bade"),c=n("ee23"),u=c.get,p=c.enforce,f=String(String).split("String");(e.exports=function(e,t,n,a){var c,u=!!a&amp;&amp;!!a.unsafe,l=!!a&amp;&amp;!!a.enumerable,h=!!a&amp;&amp;!!a.noTargetGet;"function"==typeof n&amp;&amp;("string"!=typeof t||i(n,"name")||o(n,"name",t),c=p(n),c.source||(c.source=f.join("string"==typeof t?t:""))),e!==r?(u?!h&amp;&amp;e[t]&amp;&amp;(l=!0):delete e[t],l?e[t]=n:o(e,t,n)):l?e[t]=n:s(t,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&amp;&amp;u(this).source||a(this)}))},1425:function(e,t,n){"use strict";var r=n("da9f");e.exports=function(e,t){var n=[][e];return!!n&amp;&amp;r((function(){n.call(null,t||function(){throw 1},1)}))}},"15f7":function(e,t,n){var r=n("a356"),o=n("3e0d"),i=function(e){return function(t,n){var i,s,a=String(o(t)),c=r(n),u=a.length;return c&lt;0||c&gt;=u?e?"":void 0:(i=a.charCodeAt(c),i&lt;55296||i&gt;56319||c+1===u||(s=a.charCodeAt(c+1))&lt;56320||s&gt;57343?e?a.charAt(c):i:e?a.slice(c,c+2):s-56320+(i-55296&lt;&lt;10)+65536)}};e.exports={codeAt:i(!1),charAt:i(!0)}},"164c":function(e,t,n){var r=n("da9f"),o=n("237c"),i="​᠎";e.exports=function(e){return r((function(){return!!o[e]()||i[e]()!=i||o[e].name!==e}))}},"18e7":function(e,t,n){var r=n("3d32"),o=n("6dc1"),i=n("45ef"),s=n("8325");e.exports=r("Reflect","ownKeys")||function(e){var t=o.f(s(e)),n=i.f;return n?t.concat(n(e)):t}},"1ab8":function(e,t,n){var r=n("3aa2"),o=n("cb59").f,i=Function.prototype,s=i.toString,a=/^\s*function ([^ (]*)/,c="name";r&amp;&amp;!(c in i)&amp;&amp;o(i,c,{configurable:!0,get:function(){try{return s.call(this).match(a)[1]}catch(e){return""}}})},"1ac6":function(e,t,n){"use strict";var r=n("3aa2"),o=n("da9f"),i=n("f4db"),s=n("45ef"),a=n("9397"),c=n("db5b"),u=n("3604"),p=Object.assign,f=Object.defineProperty;e.exports=!p||o((function(){if(r&amp;&amp;1!==p({b:1},p(f({},"a",{enumerable:!0,get:function(){f(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),o="abcdefghijklmnopqrst";return e[n]=7,o.split("").forEach((function(e){t[e]=e})),7!=p({},e)[n]||i(p({},t)).join("")!=o}))?function(e,t){var n=c(e),o=arguments.length,p=1,f=s.f,l=a.f;while(o&gt;p){var h,d=u(arguments[p++]),y=f?i(d).concat(f(d)):i(d),g=y.length,x=0;while(g&gt;x)h=y[x++],r&amp;&amp;!l.call(d,h)||(n[h]=d[h])}return n}:p},"1adc":function(e,t,n){"use strict";var r=n("9e20").forEach,o=n("1425"),i=o("forEach");e.exports=i?[].forEach:function(e){return r(this,e,arguments.length&gt;1?arguments[1]:void 0)}},2193:function(e,t,n){var r=n("ad7a"),o=n("1ac6");r({target:"Object",stat:!0,forced:Object.assign!==o},{assign:o})},"21fa":function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"===typeof window&amp;&amp;(n=window)}e.exports=n},"237c":function(e,t){e.exports="\t\n\v\f\r                　\u2028\u2029\ufeff"},"25e1":function(e,t,n){var r=n("3604"),o=n("3e0d");e.exports=function(e){return r(o(e))}},2673:function(e,t,n){(function(t){var n=function(e){return e&amp;&amp;e.Math==Math&amp;&amp;e};e.exports=n("object"==typeof globalThis&amp;&amp;globalThis)||n("object"==typeof window&amp;&amp;window)||n("object"==typeof self&amp;&amp;self)||n("object"==typeof t&amp;&amp;t)||function(){return this}()||Function("return this")()}).call(this,n("21fa"))},"28a9":function(e,t,n){var r=n("745e"),o=n("3eeb"),i=n("ef21"),s=i("toStringTag"),a="Arguments"==o(function(){return arguments}()),c=function(e,t){try{return e[t]}catch(n){}};e.exports=r?o:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=c(t=Object(e),s))?n:a?o(t):"Object"==(r=o(t))&amp;&amp;"function"==typeof t.callee?"Arguments":r}},"2a74":function(e,t,n){var r=n("ad7a"),o=n("da9f"),i=n("25e1"),s=n("4a6d").f,a=n("3aa2"),c=o((function(){s(1)})),u=!a||c;r({target:"Object",stat:!0,forced:u,sham:!a},{getOwnPropertyDescriptor:function(e,t){return s(i(e),t)}})},"2b64":function(e,t,n){var r=n("fe45"),o=n("e452");(e.exports=function(e,t){return o[e]||(o[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.9.1",mode:r?"pure":"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})},"2c28":function(e,t,n){"use strict";n("097a");var r=n("13f0"),o=n("da9f"),i=n("ef21"),s=n("720c"),a=n("8fdb"),c=i("species"),u=!o((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$&lt;a&gt;")})),p=function(){return"$0"==="a".replace(/./,"$0")}(),f=i("replace"),l=function(){return!!/./[f]&amp;&amp;""===/./[f]("a","$0")}(),h=!o((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));e.exports=function(e,t,n,f){var d=i(e),y=!o((function(){var t={};return t[d]=function(){return 7},7!=""[e](t)})),g=y&amp;&amp;!o((function(){var t=!1,n=/a/;return"split"===e&amp;&amp;(n={},n.constructor={},n.constructor[c]=function(){return n},n.flags="",n[d]=/./[d]),n.exec=function(){return t=!0,null},n[d](""),!t}));if(!y||!g||"replace"===e&amp;&amp;(!u||!p||l)||"split"===e&amp;&amp;!h){var x=/./[d],m=n(d,""[e],(function(e,t,n,r,o){return t.exec===s?y&amp;&amp;!o?{done:!0,value:x.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}}),{REPLACE_KEEPS_$0:p,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:l}),w=m[0],_=m[1];r(String.prototype,e,w),r(RegExp.prototype,d,2==t?function(e,t){return _.call(e,this,t)}:function(e){return _.call(e,this)})}f&amp;&amp;a(RegExp.prototype[d],"sham",!0)}},"2d5c":function(e,t,n){var r=n("3e0d"),o=n("237c"),i="["+o+"]",s=RegExp("^"+i+i+"*"),a=RegExp(i+i+"*$"),c=function(e){return function(t){var n=String(r(t));return 1&amp;e&amp;&amp;(n=n.replace(s,"")),2&amp;e&amp;&amp;(n=n.replace(a,"")),n}};e.exports={start:c(1),end:c(2),trim:c(3)}},"2db9":function(e,t,n){"use strict";var r=n("b70b"),o=n("cb59"),i=n("dbca");e.exports=function(e,t,n){var s=r(t);s in e?o.f(e,s,i(0,n)):e[s]=n}},3306:function(e,t,n){var r=n("ad7a"),o=n("91e8"),i=n("43cd"),s=!i((function(e){Array.from(e)}));r({target:"Array",stat:!0,forced:s},{from:o})},"34bc":function(e,t,n){var r=n("da9f"),o=/#|\.prototype\./,i=function(e,t){var n=a[s(e)];return n==u||n!=c&amp;&amp;("function"==typeof t?r(t):!!t)},s=i.normalize=function(e){return String(e).replace(o,".").toLowerCase()},a=i.data={},c=i.NATIVE="N",u=i.POLYFILL="P";e.exports=i},3604:function(e,t,n){var r=n("da9f"),o=n("3eeb"),i="".split;e.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==o(e)?i.call(e,""):Object(e)}:Object},3823:function(e,t,n){var r=n("a356"),o=Math.max,i=Math.min;e.exports=function(e,t){var n=r(e);return n&lt;0?o(n+t,0):i(n,t)}},"38ea":function(e,t,n){var r=n("ad7a"),o=n("4f6f").values;r({target:"Object",stat:!0},{values:function(e){return o(e)}})},"3aa2":function(e,t,n){var r=n("da9f");e.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},"3d32":function(e,t,n){var r=n("e63e"),o=n("2673"),i=function(e){return"function"==typeof e?e:void 0};e.exports=function(e,t){return arguments.length&lt;2?i(r[e])||i(o[e]):r[e]&amp;&amp;r[e][t]||o[e]&amp;&amp;o[e][t]}},"3e0d":function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},"3e7f":function(e,t,n){var r=n("dc54"),o=n("3eeb"),i=n("ef21"),s=i("match");e.exports=function(e){var t;return r(e)&amp;&amp;(void 0!==(t=e[s])?!!t:"RegExp"==o(e))}},"3ed7":function(e,t,n){var r=n("3aa2"),o=n("2673"),i=n("34bc"),s=n("5350"),a=n("cb59").f,c=n("6dc1").f,u=n("3e7f"),p=n("c6b1"),f=n("ff86"),l=n("13f0"),h=n("da9f"),d=n("ee23").set,y=n("6baa"),g=n("ef21"),x=g("match"),m=o.RegExp,w=m.prototype,_=/a/g,v=/a/g,b=new m(_)!==_,E=f.UNSUPPORTED_Y,j=r&amp;&amp;i("RegExp",!b||E||h((function(){return v[x]=!1,m(_)!=_||m(v)==v||"/a/i"!=m(_,"i")})));if(j){var k=function(e,t){var n,r=this instanceof k,o=u(e),i=void 0===t;if(!r&amp;&amp;o&amp;&amp;e.constructor===k&amp;&amp;i)return e;b?o&amp;&amp;!i&amp;&amp;(e=e.source):e instanceof k&amp;&amp;(i&amp;&amp;(t=p.call(e)),e=e.source),E&amp;&amp;(n=!!t&amp;&amp;t.indexOf("y")&gt;-1,n&amp;&amp;(t=t.replace(/y/g,"")));var a=s(b?new m(e,t):m(e,t),r?this:w,k);return E&amp;&amp;n&amp;&amp;d(a,{sticky:n}),a},S=function(e){e in k||a(k,e,{configurable:!0,get:function(){return m[e]},set:function(t){m[e]=t}})},O=c(m),P=0;while(O.length&gt;P)S(O[P++]);w.constructor=k,k.prototype=w,l(o,"RegExp",k)}y("RegExp")},"3eeb":function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},"3f05":function(e,t,n){"use strict";var r,o,i,s=n("da9f"),a=n("ae5b"),c=n("8fdb"),u=n("c388"),p=n("ef21"),f=n("fe45"),l=p("iterator"),h=!1,d=function(){return this};[].keys&amp;&amp;(i=[].keys(),"next"in i?(o=a(a(i)),o!==Object.prototype&amp;&amp;(r=o)):h=!0);var y=void 0==r||s((function(){var e={};return r[l].call(e)!==e}));y&amp;&amp;(r={}),f&amp;&amp;!y||u(r,l)||c(r,l,d),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:h}},4266:function(e,t,n){var r=n("7d38");e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},"430b":function(e,t,n){"use strict";var r=n("ad7a"),o=n("9e20").find,i=n("120a"),s="find",a=!0;s in[]&amp;&amp;Array(1)[s]((function(){a=!1})),r({target:"Array",proto:!0,forced:a},{find:function(e){return o(this,e,arguments.length&gt;1?arguments[1]:void 0)}}),i(s)},"43cd":function(e,t,n){var r=n("ef21"),o=r("iterator"),i=!1;try{var s=0,a={next:function(){return{done:!!s++}},return:function(){i=!0}};a[o]=function(){return this},Array.from(a,(function(){throw 2}))}catch(c){}e.exports=function(e,t){if(!t&amp;&amp;!i)return!1;var n=!1;try{var r={};r[o]=function(){return{next:function(){return{done:n=!0}}}},e(r)}catch(c){}return n}},"45ef":function(e,t){t.f=Object.getOwnPropertySymbols},"4a6d":function(e,t,n){var r=n("3aa2"),o=n("9397"),i=n("dbca"),s=n("25e1"),a=n("b70b"),c=n("c388"),u=n("608b"),p=Object.getOwnPropertyDescriptor;t.f=r?p:function(e,t){if(e=s(e),t=a(t,!0),u)try{return p(e,t)}catch(n){}if(c(e,t))return i(!o.f.call(e,t),e[t])}},"4c94":function(e,t,n){var r=n("da9f"),o=n("ef21"),i=n("02c6"),s=o("species");e.exports=function(e){return i&gt;=51||!r((function(){var t=[],n=t.constructor={};return n[s]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},"4d0b":function(e,t,n){"use strict";var r=n("ad7a"),o=n("9e20").map,i=n("4c94"),s=i("map");r({target:"Array",proto:!0,forced:!s},{map:function(e){return o(this,e,arguments.length&gt;1?arguments[1]:void 0)}})},"4f6f":function(e,t,n){var r=n("3aa2"),o=n("f4db"),i=n("25e1"),s=n("9397").f,a=function(e){return function(t){var n,a=i(t),c=o(a),u=c.length,p=0,f=[];while(u&gt;p)n=c[p++],r&amp;&amp;!s.call(a,n)||f.push(e?[n,a[n]]:a[n]);return f}};e.exports={entries:a(!0),values:a(!1)}},5125:function(e,t,n){"use strict";var r=n("ad7a"),o=n("da9f"),i=n("d360"),s=n("dc54"),a=n("db5b"),c=n("b850"),u=n("2db9"),p=n("b352"),f=n("4c94"),l=n("ef21"),h=n("02c6"),d=l("isConcatSpreadable"),y=9007199254740991,g="Maximum allowed index exceeded",x=h&gt;=51||!o((function(){var e=[];return e[d]=!1,e.concat()[0]!==e})),m=f("concat"),w=function(e){if(!s(e))return!1;var t=e[d];return void 0!==t?!!t:i(e)},_=!x||!m;r({target:"Array",proto:!0,forced:_},{concat:function(e){var t,n,r,o,i,s=a(this),f=p(s,0),l=0;for(t=-1,r=arguments.length;t&lt;r;t++)if(i=-1===t?s:arguments[t],w(i)){if(o=c(i.length),l+o&gt;y)throw TypeError(g);for(n=0;n&lt;o;n++,l++)n in i&amp;&amp;u(f,l,i[n])}else{if(l&gt;=y)throw TypeError(g);u(f,l++,i)}return f.length=l,f}})},5149:function(e,t,n){"use strict";if(n.r(t),n.d(t,"Icon",(function(){return m})),n.d(t,"Parser",(function(){return L})),n.d(t,"install",(function(){return G})),n.d(t,"decode",(function(){return C})),n.d(t,"split",(function(){return q})),n.d(t,"EmojiData",(function(){return f["EmojiData"]})),n.d(t,"EmojiDataMap",(function(){return f["EmojiDataMap"]})),n.d(t,"EmojiPanelData",(function(){return f["EmojiPanelData"]})),n.d(t,"Panel",(function(){return H})),"undefined"!==typeof window){var r=window.document.currentScript;var i=r&amp;&amp;r.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);i&amp;&amp;(n.p=i[1])}n("b193"),n("53d5"),n("b2c4"),n("2a74"),n("960a"),n("b33c");function s(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&amp;&amp;(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t&lt;arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){s(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}n("38ea"),n("1ab8");var u=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("img",{staticClass:"we-emoji",class:e.className,attrs:{src:e.picBlank,alt:e.alt}})},p=[],f=(n("a690"),n("097a"),n("6115"),n("430b"),n("f601")),l=n("5e96"),h={name:"EmojiIcon",props:{name:{type:String},text:{type:String}},data:function(){return{picBlank:l["a"]}},beforeCreate:function(){var e=this.$options.propsData,t=e.name,n=e.text;t||n||console.error("emoji-icon error: Prop name or text required. Props receive:",JSON.stringify(this.$options.propsData))},computed:{emojiObj:function(){var e=this.text,t=this.name;if(e&amp;&amp;f["EmojiDataMap"][e]&amp;&amp;f["EmojiData"][f["EmojiDataMap"][e].index])return f["EmojiData"][f["EmojiDataMap"][e].index];if(t){var n=t.toLowerCase(),r=function(e){return e&amp;&amp;e.toLowerCase().replace(/\W+/g," ").trim().replace(/\s/g,"-")},o=f["EmojiData"].find((function(e){return r(e.en)===n}));if(o)return o}return(t||e)&amp;&amp;console.error("emoji-icon error: Illegal prop name or text. Props receive:",JSON.stringify(this.$options.propsData)),{}},className:function(){return this.emojiObj.style},alt:function(){return this.text}}},d=h;function y(e,t,n,r,o,i,s,a){var c,u="function"===typeof e?e.options:e;if(t&amp;&amp;(u.render=t,u.staticRenderFns=n,u._compiled=!0),r&amp;&amp;(u.functional=!0),i&amp;&amp;(u._scopeId="data-v-"+i),s?(c=function(e){e=e||this.$vnode&amp;&amp;this.$vnode.ssrContext||this.parent&amp;&amp;this.parent.$vnode&amp;&amp;this.parent.$vnode.ssrContext,e||"undefined"===typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&amp;&amp;o.call(this,e),e&amp;&amp;e._registeredComponents&amp;&amp;e._registeredComponents.add(s)},u._ssrRegister=c):o&amp;&amp;(c=a?function(){o.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:o),c)if(u.functional){u._injectStyles=c;var p=u.render;u.render=function(e,t){return c.call(t),p(e,t)}}else{var f=u.beforeCreate;u.beforeCreate=f?[].concat(f,c):[c]}return{exports:e,options:u}}var g=y(d,u,p,!1,null,null,null),x=g.exports;x.install=function(e){e.component(x.name,x)};var m=x;function w(e,t){(null==t||t&gt;e.length)&amp;&amp;(t=e.length);for(var n=0,r=new Array(t);n&lt;t;n++)r[n]=e[n];return r}function _(e){if(Array.isArray(e))return w(e)}n("d939"),n("7559"),n("a67f"),n("6a19"),n("9904"),n("fe46"),n("3306");function v(e){if("undefined"!==typeof Symbol&amp;&amp;Symbol.iterator in Object(e))return Array.from(e)}n("0d66");function b(e,t){if(e){if("string"===typeof e)return w(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&amp;&amp;e.constructor&amp;&amp;(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?w(e,t):void 0}}function E(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function j(e){return _(e)||v(e)||b(e)||E()}n("4d0b"),n("565a"),n("5125"),n("3ed7"),n("98d0"),n("f2e0"),n("2193"),n("5e03");var k=function(e){var t=e.className,n=e.text,r=e.src;return'&lt;img src="'.concat(l["a"],'" class="we-emoji ').concat(t,'" alt="').concat(n,'" data-src="').concat(r,'" /&gt;')};function S(e){return!(!f["EmojiDataMap"][e]||!f["EmojiData"][f["EmojiDataMap"][e].index])}function O(e,t,n){var r,o=new RegExp(t,"g");while(r=o.exec(e))for(var i=r,s=i[0],a=i.index,c=n.length;c&lt;=s.length;++c){var u=s.slice(0,c);if(S(u))return{0:u,index:a}}return null}function P(e){var t,n=new RegExp(/\[[^[\]]+\]/,"g");while(t=n.exec(e))if(S(t[0]))return t;return null}function A(e){var t=/(\ud83c[\udf00-\udfff])|(\ud83d[\udc00-\ude4f\ude80-\udeff])|[\u2600-\u2B55]/;return P(e)||O(e,/\/([\u4e00-\u9fa5\w]{1,4})/,"/")||O(e,/\/(:[^/]{1,8})/,"/:")||O(e,t,"")}function T(e){return e}function D(e){if(!e)return[];var t=A(e);if(t){var n=t[0],r=t.index,o=e.slice(0,r),i=e.slice(r+n.length),s=S(n)?{text:n,data:f["EmojiData"][f["EmojiDataMap"][n].index]}:n,a=[].concat(j(D(o)),[s],j(D(i)));return a.some((function(e){return e.text}))?a:[a.join("")]}return[e]}var q=function(e,t){var n=T(e,t);return D(n).map((function(e){if("string"===typeof e)return e;var t=Object.assign({},e.data),n=e.data.path;return t.url="".concat("//res.wx.qq.com/t/wx_fed/we-emoji/res/").concat(n.startsWith("./")?n.slice(2):n),delete t.path,c(c({},e),{},{data:t})}))},C=function(e,t){return e?q(e,t).map((function(e){return e.text?k({text:e.text,className:e.data.style,src:e.data.url}):e})).join(""):e},R={name:"EmojiParser",props:{tag:{type:String,default:"span"}},methods:{replace:function(e){var t=this,n=this.$createElement;return e&amp;&amp;e.length?e.map((function(e){var r=e.text;if(!r){var o=function(e){return e&amp;&amp;e.reduce((function(e,t){return Array.isArray(t)?[].concat(j(e),j(t)):[].concat(j(e),[t])}),[])};return c(c({},e),{},{children:o(t.replace(e.children))})}return q(r).map((function(e){return e.text?n(m,{attrs:{text:e.text}}):t._v(e)}))})):e}},render:function(e){return e(this.tag,this.replace(this.$slots.default))},install:function(e){e.component(R.name,R)}},L=R,I=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"emotion_panel"},[n("ul",{staticClass:"emotions",attrs:{slot:"content"},slot:"content"},e._l(e.edata,(function(t,r){return n("li",{key:t.key,staticClass:"emotions_item",on:{click:function(t){return e.select(r)}}},[n("emoji-icon",{attrs:{text:t.cn}})],1)})),0)])},M=[],N=(n("0988"),{name:"EmojiPanel",props:{emojiPanelWidth:{type:Number,default:300},emojiPanelHeight:{type:Number,default:300}},data:function(){return{edata:f["EmojiPanelData"]}},methods:{select:function(e){this.$emit("select",this.edata[e])}}}),B=N,F=y(B,I,M,!1,null,null,null),$=F.exports;$.install=function(e){e.component($.name,$)};var H=$,W=(n("f84d"),{Icon:m,Parser:L,Panel:H}),G=function e(t){e.installed||(e.installed=!0,Object.values(W).forEach((function(e){t.component(e.name,e)})))},U=c(c({},W),{},{install:G,decode:C,split:q,EmojiData:f["EmojiData"],EmojiDataMap:f["EmojiDataMap"],EmojiPanelData:f["EmojiPanelData"]});"undefined"!==typeof window&amp;&amp;window.Vue&amp;&amp;G(window.Vue);var K=U;t["default"]=K},5350:function(e,t,n){var r=n("dc54"),o=n("9a36");e.exports=function(e,t,n){var i,s;return o&amp;&amp;"function"==typeof(i=t.constructor)&amp;&amp;i!==n&amp;&amp;r(s=i.prototype)&amp;&amp;s!==n.prototype&amp;&amp;o(e,s),e}},"53d5":function(e,t,n){"use strict";var r=n("ad7a"),o=n("2673"),i=n("3d32"),s=n("fe45"),a=n("3aa2"),c=n("6736"),u=n("a79f"),p=n("da9f"),f=n("c388"),l=n("d360"),h=n("dc54"),d=n("8325"),y=n("db5b"),g=n("25e1"),x=n("b70b"),m=n("dbca"),w=n("c3b1"),_=n("f4db"),v=n("6dc1"),b=n("0452"),E=n("45ef"),j=n("4a6d"),k=n("cb59"),S=n("9397"),O=n("8fdb"),P=n("13f0"),A=n("2b64"),T=n("9cf3"),D=n("b027"),q=n("a707"),C=n("ef21"),R=n("952b"),L=n("6ad5"),I=n("5ce8"),M=n("ee23"),N=n("9e20").forEach,B=T("hidden"),F="Symbol",$="prototype",H=C("toPrimitive"),W=M.set,G=M.getterFor(F),U=Object[$],K=o.Symbol,Y=i("JSON","stringify"),V=j.f,J=k.f,X=b.f,z=S.f,Q=A("symbols"),Z=A("op-symbols"),ee=A("string-to-symbol-registry"),te=A("symbol-to-string-registry"),ne=A("wks"),re=o.QObject,oe=!re||!re[$]||!re[$].findChild,ie=a&amp;&amp;p((function(){return 7!=w(J({},"a",{get:function(){return J(this,"a",{value:7}).a}})).a}))?function(e,t,n){var r=V(U,t);r&amp;&amp;delete U[t],J(e,t,n),r&amp;&amp;e!==U&amp;&amp;J(U,t,r)}:J,se=function(e,t){var n=Q[e]=w(K[$]);return W(n,{type:F,tag:e,description:t}),a||(n.description=t),n},ae=u?function(e){return"symbol"==typeof e}:function(e){return Object(e)instanceof K},ce=function(e,t,n){e===U&amp;&amp;ce(Z,t,n),d(e);var r=x(t,!0);return d(n),f(Q,r)?(n.enumerable?(f(e,B)&amp;&amp;e[B][r]&amp;&amp;(e[B][r]=!1),n=w(n,{enumerable:m(0,!1)})):(f(e,B)||J(e,B,m(1,{})),e[B][r]=!0),ie(e,r,n)):J(e,r,n)},ue=function(e,t){d(e);var n=g(t),r=_(n).concat(de(n));return N(r,(function(t){a&amp;&amp;!fe.call(n,t)||ce(e,t,n[t])})),e},pe=function(e,t){return void 0===t?w(e):ue(w(e),t)},fe=function(e){var t=x(e,!0),n=z.call(this,t);return!(this===U&amp;&amp;f(Q,t)&amp;&amp;!f(Z,t))&amp;&amp;(!(n||!f(this,t)||!f(Q,t)||f(this,B)&amp;&amp;this[B][t])||n)},le=function(e,t){var n=g(e),r=x(t,!0);if(n!==U||!f(Q,r)||f(Z,r)){var o=V(n,r);return!o||!f(Q,r)||f(n,B)&amp;&amp;n[B][r]||(o.enumerable=!0),o}},he=function(e){var t=X(g(e)),n=[];return N(t,(function(e){f(Q,e)||f(D,e)||n.push(e)})),n},de=function(e){var t=e===U,n=X(t?Z:g(e)),r=[];return N(n,(function(e){!f(Q,e)||t&amp;&amp;!f(U,e)||r.push(Q[e])})),r};if(c||(K=function(){if(this instanceof K)throw TypeError("Symbol is not a constructor");var e=arguments.length&amp;&amp;void 0!==arguments[0]?String(arguments[0]):void 0,t=q(e),n=function(e){this===U&amp;&amp;n.call(Z,e),f(this,B)&amp;&amp;f(this[B],t)&amp;&amp;(this[B][t]=!1),ie(this,t,m(1,e))};return a&amp;&amp;oe&amp;&amp;ie(U,t,{configurable:!0,set:n}),se(t,e)},P(K[$],"toString",(function(){return G(this).tag})),P(K,"withoutSetter",(function(e){return se(q(e),e)})),S.f=fe,k.f=ce,j.f=le,v.f=b.f=he,E.f=de,R.f=function(e){return se(C(e),e)},a&amp;&amp;(J(K[$],"description",{configurable:!0,get:function(){return G(this).description}}),s||P(U,"propertyIsEnumerable",fe,{unsafe:!0}))),r({global:!0,wrap:!0,forced:!c,sham:!c},{Symbol:K}),N(_(ne),(function(e){L(e)})),r({target:F,stat:!0,forced:!c},{for:function(e){var t=String(e);if(f(ee,t))return ee[t];var n=K(t);return ee[t]=n,te[n]=t,n},keyFor:function(e){if(!ae(e))throw TypeError(e+" is not a symbol");if(f(te,e))return te[e]},useSetter:function(){oe=!0},useSimple:function(){oe=!1}}),r({target:"Object",stat:!0,forced:!c,sham:!a},{create:pe,defineProperty:ce,defineProperties:ue,getOwnPropertyDescriptor:le}),r({target:"Object",stat:!0,forced:!c},{getOwnPropertyNames:he,getOwnPropertySymbols:de}),r({target:"Object",stat:!0,forced:p((function(){E.f(1)}))},{getOwnPropertySymbols:function(e){return E.f(y(e))}}),Y){var ye=!c||p((function(){var e=K();return"[null]"!=Y([e])||"{}"!=Y({a:e})||"{}"!=Y(Object(e))}));r({target:"JSON",stat:!0,forced:ye},{stringify:function(e,t,n){var r,o=[e],i=1;while(arguments.length&gt;i)o.push(arguments[i++]);if(r=t,(h(t)||void 0!==e)&amp;&amp;!ae(e))return l(t)||(t=function(e,t){if("function"==typeof r&amp;&amp;(t=r.call(this,e,t)),!ae(t))return t}),o[1]=t,Y.apply(null,o)}})}K[$][H]||O(K[$],H,K[$].valueOf),I(K,F),D[B]=!0},5445:function(e,t){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},"558c":function(e,t,n){var r=n("dc54");e.exports=function(e){if(!r(e)&amp;&amp;null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},"565a":function(e,t,n){"use strict";var r=n("ad7a"),o=n("780e").left,i=n("1425"),s=n("02c6"),a=n("fb71"),c=i("reduce"),u=!a&amp;&amp;s&gt;79&amp;&amp;s&lt;83;r({target:"Array",proto:!0,forced:!c||u},{reduce:function(e){return o(this,e,arguments.length,arguments.length&gt;1?arguments[1]:void 0)}})},"5a20":function(e,t){e.exports={}},"5ce8":function(e,t,n){var r=n("cb59").f,o=n("c388"),i=n("ef21"),s=i("toStringTag");e.exports=function(e,t,n){e&amp;&amp;!o(e=n?e:e.prototype,s)&amp;&amp;r(e,s,{configurable:!0,value:t})}},"5e03":function(e,t,n){"use strict";var r=n("ad7a"),o=n("4a6d").f,i=n("b850"),s=n("a1e0"),a=n("3e0d"),c=n("67ba"),u=n("fe45"),p="".startsWith,f=Math.min,l=c("startsWith"),h=!u&amp;&amp;!l&amp;&amp;!!function(){var e=o(String.prototype,"startsWith");return e&amp;&amp;!e.writable}();r({target:"String",proto:!0,forced:!h&amp;&amp;!l},{startsWith:function(e){var t=String(a(this));s(e);var n=i(f(arguments.length&gt;1?arguments[1]:void 0,t.length)),r=String(e);return p?p.call(t,r,n):t.slice(n,n+r.length)===r}})},"5e96":function(e){e.exports=JSON.parse('{"a":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="}')},"608b":function(e,t,n){var r=n("3aa2"),o=n("da9f"),i=n("ef87");e.exports=!r&amp;&amp;!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},6115:function(e,t,n){"use strict";var r=n("ad7a"),o=n("2d5c").trim,i=n("164c");r({target:"String",proto:!0,forced:i("trim")},{trim:function(){return o(this)}})},"61e6":function(e,t,n){"use strict";var r=n("ad7a"),o=n("e055"),i=n("ae5b"),s=n("9a36"),a=n("5ce8"),c=n("8fdb"),u=n("13f0"),p=n("ef21"),f=n("fe45"),l=n("5a20"),h=n("3f05"),d=h.IteratorPrototype,y=h.BUGGY_SAFARI_ITERATORS,g=p("iterator"),x="keys",m="values",w="entries",_=function(){return this};e.exports=function(e,t,n,p,h,v,b){o(n,t,p);var E,j,k,S=function(e){if(e===h&amp;&amp;D)return D;if(!y&amp;&amp;e in A)return A[e];switch(e){case x:return function(){return new n(this,e)};case m:return function(){return new n(this,e)};case w:return function(){return new n(this,e)}}return function(){return new n(this)}},O=t+" Iterator",P=!1,A=e.prototype,T=A[g]||A["@@iterator"]||h&amp;&amp;A[h],D=!y&amp;&amp;T||S(h),q="Array"==t&amp;&amp;A.entries||T;if(q&amp;&amp;(E=i(q.call(new e)),d!==Object.prototype&amp;&amp;E.next&amp;&amp;(f||i(E)===d||(s?s(E,d):"function"!=typeof E[g]&amp;&amp;c(E,g,_)),a(E,O,!0,!0),f&amp;&amp;(l[O]=_))),h==m&amp;&amp;T&amp;&amp;T.name!==m&amp;&amp;(P=!0,D=function(){return T.call(this)}),f&amp;&amp;!b||A[g]===D||c(A,g,D),l[t]=D,h)if(j={values:S(m),keys:v?D:S(x),entries:S(w)},b)for(k in j)(y||P||!(k in A))&amp;&amp;u(A,k,j[k]);else r({target:t,proto:!0,forced:y||P},j);return j}},6736:function(e,t,n){var r=n("fb71"),o=n("02c6"),i=n("da9f");e.exports=!!Object.getOwnPropertySymbols&amp;&amp;!i((function(){return!Symbol.sham&amp;&amp;(r?38===o:o&gt;37&amp;&amp;o&lt;41)}))},"67ba":function(e,t,n){var r=n("ef21"),o=r("match");e.exports=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[o]=!1,"/./"[e](t)}catch(r){}}return!1}},"6a19":function(e,t,n){"use strict";var r=n("15f7").charAt,o=n("ee23"),i=n("61e6"),s="String Iterator",a=o.set,c=o.getterFor(s);i(String,"String",(function(e){a(this,{type:s,string:String(e),index:0})}),(function(){var e,t=c(this),n=t.string,o=t.index;return o&gt;=n.length?{value:void 0,done:!0}:(e=r(n,o),t.index+=e.length,{value:e,done:!1})}))},"6ad5":function(e,t,n){var r=n("e63e"),o=n("c388"),i=n("952b"),s=n("cb59").f;e.exports=function(e){var t=r.Symbol||(r.Symbol={});o(t,e)||s(t,e,{value:i.f(e)})}},"6baa":function(e,t,n){"use strict";var r=n("3d32"),o=n("cb59"),i=n("ef21"),s=n("3aa2"),a=i("species");e.exports=function(e){var t=r(e),n=o.f;s&amp;&amp;t&amp;&amp;!t[a]&amp;&amp;n(t,a,{configurable:!0,get:function(){return this}})}},"6dc1":function(e,t,n){var r=n("7a92"),o=n("5445"),i=o.concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},"720c":function(e,t,n){"use strict";var r=n("c6b1"),o=n("ff86"),i=RegExp.prototype.exec,s=String.prototype.replace,a=i,c=function(){var e=/a/,t=/b*/g;return i.call(e,"a"),i.call(t,"a"),0!==e.lastIndex||0!==t.lastIndex}(),u=o.UNSUPPORTED_Y||o.BROKEN_CARET,p=void 0!==/()??/.exec("")[1],f=c||p||u;f&amp;&amp;(a=function(e){var t,n,o,a,f=this,l=u&amp;&amp;f.sticky,h=r.call(f),d=f.source,y=0,g=e;return l&amp;&amp;(h=h.replace("y",""),-1===h.indexOf("g")&amp;&amp;(h+="g"),g=String(e).slice(f.lastIndex),f.lastIndex&gt;0&amp;&amp;(!f.multiline||f.multiline&amp;&amp;"\n"!==e[f.lastIndex-1])&amp;&amp;(d="(?: "+d+")",g=" "+g,y++),n=new RegExp("^(?:"+d+")",h)),p&amp;&amp;(n=new RegExp("^"+d+"$(?!\\s)",h)),c&amp;&amp;(t=f.lastIndex),o=i.call(l?n:f,g),l?o?(o.input=o.input.slice(y),o[0]=o[0].slice(y),o.index=f.lastIndex,f.lastIndex+=o[0].length):f.lastIndex=0:c&amp;&amp;o&amp;&amp;(f.lastIndex=f.global?o.index+o[0].length:t),p&amp;&amp;o&amp;&amp;o.length&gt;1&amp;&amp;s.call(o[0],n,(function(){for(a=1;a&lt;arguments.length-2;a++)void 0===arguments[a]&amp;&amp;(o[a]=void 0)})),o}),e.exports=a},"745e":function(e,t,n){var r=n("ef21"),o=r("toStringTag"),i={};i[o]="z",e.exports="[object z]"===String(i)},7559:function(e,t,n){var r=n("745e"),o=n("13f0"),i=n("7c61");r||o(Object.prototype,"toString",i,{unsafe:!0})},"76d3":function(e,t,n){"use strict";var r=n("15f7").charAt;e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},"780e":function(e,t,n){var r=n("7d38"),o=n("db5b"),i=n("3604"),s=n("b850"),a=function(e){return function(t,n,a,c){r(n);var u=o(t),p=i(u),f=s(u.length),l=e?f-1:0,h=e?-1:1;if(a&lt;2)while(1){if(l in p){c=p[l],l+=h;break}if(l+=h,e?l&lt;0:f&lt;=l)throw TypeError("Reduce of empty array with no initial value")}for(;e?l&gt;=0:f&gt;l;l+=h)l in p&amp;&amp;(c=n(c,p[l],l,u));return c}};e.exports={left:a(!1),right:a(!0)}},"79ec":function(e,t,n){var r=n("2673"),o=n("8fdb");e.exports=function(e,t){try{o(r,e,t)}catch(n){r[e]=t}return t}},"7a92":function(e,t,n){var r=n("c388"),o=n("25e1"),i=n("b4c7").indexOf,s=n("b027");e.exports=function(e,t){var n,a=o(e),c=0,u=[];for(n in a)!r(s,n)&amp;&amp;r(a,n)&amp;&amp;u.push(n);while(t.length&gt;c)r(a,n=t[c++])&amp;&amp;(~i(u,n)||u.push(n));return u}},"7c61":function(e,t,n){"use strict";var r=n("745e"),o=n("28a9");e.exports=r?{}.toString:function(){return"[object "+o(this)+"]"}},"7d38":function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},8325:function(e,t,n){var r=n("dc54");e.exports=function(e){if(!r(e))throw TypeError(String(e)+" is not an object");return e}},8871:function(e,t,n){var r=n("da9f");e.exports=!r((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},"8ae9":function(e,t,n){var r=n("3aa2"),o=n("cb59"),i=n("8325"),s=n("f4db");e.exports=r?Object.defineProperties:function(e,t){i(e);var n,r=s(t),a=r.length,c=0;while(a&gt;c)o.f(e,n=r[c++],t[n]);return e}},"8c94":function(e){e.exports=JSON.parse('[{"key":"/::)","old":"/微笑","cn":"[微笑]","tw":"[微笑]","en":"[Smile]","th":"[ยิ้ม]","path":"./assets/Expression/Expression_1@2x.png","style":"we-emoji__Smile"},{"key":"/::~","old":"/撇嘴","cn":"[撇嘴]","tw":"[撇嘴]","en":"[Grimace]","th":"[หน้าบูด]","path":"./assets/Expression/Expression_2@2x.png","style":"we-emoji__Grimace"},{"key":"/::B","old":"/色","cn":"[色]","tw":"[色]","en":"[Drool]","th":"[น้ำลายไหล]","path":"./assets/Expression/Expression_3@2x.png","style":"we-emoji__Drool"},{"key":"/::|","old":"/发呆","cn":"[发呆]","tw":"[發呆]","en":"[Scowl]","th":"[หน้าบึ้ง]","path":"./assets/Expression/Expression_4@2x.png","style":"we-emoji__Scowl"},{"key":"/:8-)","old":"/得意","cn":"[得意]","tw":"[得意]","en":"[CoolGuy]","th":"[สบาย]","path":"./assets/Expression/Expression_5@2x.png","style":"we-emoji__CoolGuy"},{"key":"/::&lt;","old":"/流泪","cn":"[流泪]","tw":"[流淚]","en":"[Sob]","th":"[ร้องไห้โฮ]","path":"./assets/Expression/Expression_6@2x.png","style":"we-emoji__Sob"},{"key":"/::$","old":"/害羞","cn":"[害羞]","tw":"[害羞]","en":"[Shy]","th":"[อาย]","path":"./assets/Expression/Expression_7@2x.png","style":"we-emoji__Shy"},{"key":"/::X","old":"/闭嘴","cn":"[闭嘴]","tw":"[閉嘴]","en":"[Silent]","th":"[ห้ามพูด]","path":"./assets/Expression/Expression_8@2x.png","style":"we-emoji__Silent"},{"key":"/::Z","old":"/睡","cn":"[睡]","tw":"[睡]","en":"[Sleep]","th":"[หลับ]","path":"./assets/Expression/Expression_9@2x.png","style":"we-emoji__Sleep"},{"key":"/::\'(","old":"/大哭","cn":"[大哭]","tw":"[大哭]","en":"[Cry]","th":"[ร้องไห้]","path":"./assets/Expression/Expression_10@2x.png","style":"we-emoji__Cry"},{"key":"/::-|","old":"/尴尬","cn":"[尴尬]","tw":"[尷尬]","en":"[Awkward]","th":"[ลำบากใจ]","path":"./assets/Expression/Expression_11@2x.png","style":"we-emoji__Awkward"},{"key":"/::@","old":"/发怒","cn":"[发怒]","tw":"[發怒]","en":"[Angry]","th":"[โกรธสุด]","path":"./assets/Expression/Expression_12@2x.png","style":"we-emoji__Angry"},{"key":"/::P","old":"/调皮","qq":"[吐舌]","cn":"[调皮]","tw":"[調皮]","en":"[Tongue]","th":"[ขยิบตา]","emoji":"😝","path":"./assets/Expression/Expression_13@2x.png","style":"we-emoji__Tongue"},{"key":"/::D","old":"/呲牙","cn":"[呲牙]","tw":"[呲牙]","en":"[Grin]","th":"[ยิ้มกว้าง]","path":"./assets/Expression/Expression_14@2x.png","style":"we-emoji__Grin"},{"key":"/::O","old":"/惊讶","cn":"[惊讶]","tw":"[驚訝]","en":"[Surprise]","th":"[ประหลาดใจ]","path":"./assets/Expression/Expression_15@2x.png","style":"we-emoji__Surprise"},{"key":"/::(","old":"/难过","cn":"[难过]","tw":"[難過]","en":"[Frown]","th":"[เสียใจ]","path":"./assets/Expression/Expression_16@2x.png","style":"we-emoji__Frown"},{"key":"/::+","old":"/酷","cn":"[酷]","tw":"[酷]","en":"[Ruthless]","th":"[เจ๋ง]","path":"./assets/Expression/Expression_17@2x.png","style":"we-emoji__Ruthless"},{"key":"/:--b","old":"/冷汗","cn":"[囧]","tw":"[囧]","en":"[Blush]","th":"[Blush]","path":"./assets/Expression/Expression_18@2x.png","style":"we-emoji__Blush"},{"key":"/::Q","old":"/抓狂","cn":"[抓狂]","tw":"[抓狂]","en":"[Scream]","th":"[กรีดร้อง]","path":"./assets/Expression/Expression_19@2x.png","style":"we-emoji__Scream"},{"key":"/::T","old":"/吐","cn":"[吐]","tw":"[吐]","en":"[Puke]","th":"[อาเจียน]","path":"./assets/Expression/Expression_20@2x.png","style":"we-emoji__Puke"},{"key":"/:,@P","old":"/偷笑","cn":"[偷笑]","tw":"[偷笑]","en":"[Chuckle]","th":"[หัวเราะหึๆ]","path":"./assets/Expression/Expression_21@2x.png","style":"we-emoji__Chuckle"},{"key":"/:,@-D","old":"/可爱","cn":"[愉快]","tw":"[愉快]","en":"[Joyful]","th":"[พอใจ]","path":"./assets/Expression/Expression_22@2x.png","style":"we-emoji__Joyful"},{"key":"/::d","old":"/白眼","cn":"[白眼]","tw":"[白眼]","en":"[Slight]","th":"[สงสัย]","path":"./assets/Expression/Expression_23@2x.png","style":"we-emoji__Slight"},{"key":"/:,@o","old":"/傲慢","cn":"[傲慢]","tw":"[傲慢]","en":"[Smug]","th":"[หยิ่ง]","path":"./assets/Expression/Expression_24@2x.png","style":"we-emoji__Smug"},{"key":"/::g","old":"/饥饿","cn":"[饥饿]","tw":"[饑餓]","en":"[Hungry]","th":"[หิว]","path":"./assets/Expression/Expression_25@2x.png","style":"we-emoji__Hungry"},{"key":"/:|-)","old":"/困","cn":"[困]","tw":"[累]","en":"[Drowsy]","th":"[ง่วงนอน]","path":"./assets/Expression/Expression_26@2x.png","style":"we-emoji__Drowsy"},{"key":"/::!","old":"/惊恐","cn":"[惊恐]","tw":"[驚恐]","en":"[Panic]","th":"[ตกใจกลัว]","path":"./assets/Expression/Expression_27@2x.png","style":"we-emoji__Panic"},{"key":"/::L","old":"/流汗","cn":"[流汗]","tw":"[流汗]","en":"[Sweat]","th":"[เหงื่อตก]","path":"./assets/Expression/Expression_28@2x.png","style":"we-emoji__Sweat"},{"key":"/::&gt;","old":"/憨笑","cn":"[憨笑]","tw":"[大笑]","en":"[Laugh]","th":"[หัวเราะ]","path":"./assets/Expression/Expression_29@2x.png","style":"we-emoji__Laugh"},{"key":"/::,@","old":"/大兵","cn":"[悠闲]","tw":"[悠閑]","en":"[Commando]","th":"[ทหาร]","path":"./assets/Expression/Expression_30@2x.png","style":"we-emoji__Commando"},{"key":"/:,@f","old":"/奋斗","cn":"[奋斗]","tw":"[奮鬥]","en":"[Determined]","th":"[มุ่งมั่น]","path":"./assets/Expression/Expression_31@2x.png","style":"we-emoji__Determined"},{"key":"/::-S","old":"/咒骂","cn":"[咒骂]","tw":"[咒罵]","en":"[Scold]","th":"[ด่าว่าา]","path":"./assets/Expression/Expression_32@2x.png","style":"we-emoji__Scold"},{"key":"/:?","old":"/疑问","cn":"[疑问]","tw":"[疑問]","en":"[Shocked]","th":"[สับสน]","path":"./assets/Expression/Expression_33@2x.png","style":"we-emoji__Shocked"},{"key":"/:,@x","old":"/嘘","cn":"[嘘]","tw":"[噓]","en":"[Shhh]","th":"[จุ๊ๆ]","path":"./assets/Expression/Expression_34@2x.png","style":"we-emoji__Shhh"},{"key":"/:,@@","old":"/晕","cn":"[晕]","tw":"[暈]","en":"[Dizzy]","th":"[เวียนหัว]","path":"./assets/Expression/Expression_35@2x.png","style":"we-emoji__Dizzy"},{"key":"/::8","old":"/折磨","cn":"[疯了]","tw":"[瘋了]","en":"[Tormented]","th":"[ท้อแท้]","path":"./assets/Expression/Expression_36@2x.png","style":"we-emoji__Tormented"},{"key":"/:,@!","old":"/衰","cn":"[衰]","tw":"[衰]","en":"[Toasted]","th":"[ชั่วร้าย]","path":"./assets/Expression/Expression_37@2x.png","style":"we-emoji__Toasted"},{"key":"/:!!!","old":"/骷髅","cn":"[骷髅]","tw":"[骷髏頭]","en":"[Skull]","th":"[หัวกะโหลก]","path":"./assets/Expression/Expression_38@2x.png","style":"we-emoji__Skull"},{"key":"/:xx","old":"/敲打","cn":"[敲打]","tw":"[敲打]","en":"[Hammer]","th":"[ค้อนทุบ]","path":"./assets/Expression/Expression_39@2x.png","style":"we-emoji__Hammer"},{"key":"/:bye","old":"/再见","cn":"[再见]","tw":"[再見]","en":"[Wave]","th":"[บายๆ]","path":"./assets/Expression/Expression_40@2x.png","style":"we-emoji__Wave"},{"key":"/:wipe","old":"/擦汗","cn":"[擦汗]","tw":"[擦汗]","en":"[Speechless]","th":"[เช็ดเหงื่อ]","path":"./assets/Expression/Expression_41@2x.png","style":"we-emoji__Speechless"},{"key":"/:dig","old":"/抠鼻","cn":"[抠鼻]","tw":"[摳鼻]","en":"[NosePick]","th":"[แคะจมูก]","path":"./assets/Expression/Expression_42@2x.png","style":"we-emoji__NosePick"},{"key":"/:handclap","old":"/鼓掌","cn":"[鼓掌]","tw":"[鼓掌]","en":"[Clap]","th":"[ตบมือ]","path":"./assets/Expression/Expression_43@2x.png","style":"we-emoji__Clap"},{"key":"/:&amp;-(","old":"/糗大了","cn":"[糗大了]","tw":"[羞辱]","en":"[Shame]","th":"[อับอาย]","path":"./assets/Expression/Expression_44@2x.png","style":"we-emoji__Shame"},{"key":"/:B-)","old":"/坏笑","cn":"[坏笑]","tw":"[壞笑]","en":"[Trick]","th":"[กลโกง]","path":"./assets/Expression/Expression_45@2x.png","style":"we-emoji__Trick"},{"key":"/:&lt;@","old":"/左哼哼","cn":"[左哼哼]","tw":"[左哼哼]","en":"[Bah！L]","th":"[เชิดซ้าย]","path":"./assets/Expression/Expression_46@2x.png","style":"we-emoji__BahL"},{"key":"/:@&gt;","old":"/右哼哼","cn":"[右哼哼]","tw":"[右哼哼]","en":"[Bah！R]","th":"[เชิดขวา]","path":"./assets/Expression/Expression_47@2x.png","style":"we-emoji__BahR"},{"key":"/::-O","old":"/哈欠","cn":"[哈欠]","tw":"[哈欠]","en":"[Yawn]","th":"[หาว]","path":"./assets/Expression/Expression_48@2x.png","style":"we-emoji__Yawn"},{"key":"/:&gt;-|","old":"/鄙视","cn":"[鄙视]","tw":"[鄙視]","en":"[Pooh-pooh]","th":"[ดูถูก]","path":"./assets/Expression/Expression_49@2x.png","style":"we-emoji__Pooh-pooh"},{"key":"/:P-(","old":"/委屈","cn":"[委屈]","tw":"[委屈]","en":"[Shrunken]","th":"[ข้องใจ]","path":"./assets/Expression/Expression_50@2x.png","style":"we-emoji__Shrunken"},{"key":"/::\'|","old":"/快哭了","cn":"[快哭了]","tw":"[快哭了]","en":"[TearingUp]","th":"[เกือบร้องไห้]","path":"./assets/Expression/Expression_51@2x.png","style":"we-emoji__TearingUp"},{"key":"/:X-)","old":"/阴险","cn":"[阴险]","tw":"[陰險]","en":"[Sly]","th":"[ขี้โกง]","path":"./assets/Expression/Expression_52@2x.png","style":"we-emoji__Sly"},{"key":"/::*","old":"/亲亲","cn":"[亲亲]","tw":"[親親]","en":"[Kiss]","th":"[จุ๊บ]","path":"./assets/Expression/Expression_53@2x.png","style":"we-emoji__Kiss"},{"key":"/:@x","old":"/吓","cn":"[吓]","tw":"[嚇]","en":"[Wrath]","th":"[ห๊า]","path":"./assets/Expression/Expression_54@2x.png","style":"we-emoji__Wrath"},{"key":"/:8*","old":"/可怜","cn":"[可怜]","tw":"[可憐]","en":"[Whimper]","th":"[น่าสงสาร]","path":"./assets/Expression/Expression_55@2x.png","style":"we-emoji__Whimper"},{"key":"/:pd","old":"/菜刀","cn":"[菜刀]","tw":"[菜刀]","en":"[Cleaver]","th":"[มีด]","path":"./assets/Expression/Expression_56@2x.png","style":"we-emoji__Cleaver"},{"key":"/:&lt;W&gt;","old":"/西瓜","cn":"[西瓜]","tw":"[西瓜]","en":"[Watermelon]","th":"[แตงโม]","path":"./assets/Expression/Expression_57@2x.png","style":"we-emoji__Watermelon"},{"key":"/:beer","old":"/啤酒","cn":"[啤酒]","tw":"[啤酒]","en":"[Beer]","th":"[เบียร์]","path":"./assets/Expression/Expression_58@2x.png","style":"we-emoji__Beer"},{"key":"/:basketb","old":"/篮球","cn":"[篮球]","tw":"[籃球]","en":"[Basketball]","th":"[บาสเกตบอล]","path":"./assets/Expression/Expression_59@2x.png","style":"we-emoji__Basketball"},{"key":"/:oo","old":"/乒乓","cn":"[乒乓]","tw":"[乒乓]","en":"[PingPong]","th":"[ปิงปอง]","path":"./assets/Expression/Expression_60@2x.png","style":"we-emoji__PingPong"},{"key":"/:coffee","old":"/咖啡","cn":"[咖啡]","tw":"[咖啡]","en":"[Coffee]","th":"[กาแฟ]","path":"./assets/Expression/Expression_61@2x.png","style":"we-emoji__Coffee"},{"key":"/:eat","old":"/饭","cn":"[饭]","tw":"[飯]","en":"[Rice]","th":"[ข้าว]","path":"./assets/Expression/Expression_62@2x.png","style":"we-emoji__Rice"},{"key":"/:pig","old":"/猪头","cn":"[猪头]","tw":"[豬頭]","en":"[Pig]","th":"[หมู]","path":"./assets/Expression/Expression_63@2x.png","style":"we-emoji__Pig"},{"key":"/:rose","old":"/玫瑰","cn":"[玫瑰]","tw":"[玫瑰]","en":"[Rose]","th":"[กุหลาบ]","path":"./assets/Expression/Expression_64@2x.png","style":"we-emoji__Rose"},{"key":"/:fade","old":"/凋谢","cn":"[凋谢]","tw":"[枯萎]","en":"[Wilt]","th":"[ร่วงโรย]","path":"./assets/Expression/Expression_65@2x.png","style":"we-emoji__Wilt"},{"key":"/:showlove","old":"/示爱","cn":"[嘴唇]","tw":"[嘴唇]","en":"[Lips]","th":"[ริมฝีปาก]","path":"./assets/Expression/Expression_66@2x.png","style":"we-emoji__Lips"},{"key":"/:heart","old":"/爱心","cn":"[爱心]","tw":"[愛心]","en":"[Heart]","th":"[หัวใจ]","path":"./assets/Expression/Expression_67@2x.png","style":"we-emoji__Heart"},{"key":"/:break","old":"/心碎","cn":"[心碎]","tw":"[心碎]","en":"[BrokenHeart]","th":"[ใจสลาย]","path":"./assets/Expression/Expression_68@2x.png","style":"we-emoji__BrokenHeart"},{"key":"/:cake","old":"/蛋糕","cn":"[蛋糕]","tw":"[蛋糕]","en":"[Cake]","th":"[เค้ก]","path":"./assets/Expression/Expression_69@2x.png","style":"we-emoji__Cake"},{"key":"/:li","old":"/闪电","cn":"[闪电]","tw":"[閃電]","en":"[Lightning]","th":"[ฟ้าผ่า]","path":"./assets/Expression/Expression_70@2x.png","style":"we-emoji__Lightning"},{"key":"/:bome","old":"/炸弹","cn":"[炸弹]","tw":"[炸彈]","en":"[Bomb]","th":"[ระเบิด]","path":"./assets/Expression/Expression_71@2x.png","style":"we-emoji__Bomb"},{"key":"/:kn","old":"/刀","cn":"[刀]","tw":"[刀]","en":"[Dagger]","th":"[ดาบ]","path":"./assets/Expression/Expression_72@2x.png","style":"we-emoji__Dagger"},{"key":"/:footb","old":"/足球","cn":"[足球]","tw":"[足球]","en":"[Soccer]","th":"[ฟุตบอล]","path":"./assets/Expression/Expression_73@2x.png","style":"we-emoji__Soccer"},{"key":"/:ladybug","old":"/瓢虫","cn":"[瓢虫]","tw":"[甲蟲]","en":"[Ladybug]","th":"[เต่าทอง]","path":"./assets/Expression/Expression_74@2x.png","style":"we-emoji__Ladybug"},{"key":"/:shit","old":"/便便","cn":"[便便]","tw":"[便便]","en":"[Poop]","th":"[อุจจาระ]","path":"./assets/Expression/Expression_75@2x.png","style":"we-emoji__Poop"},{"key":"/:moon","old":"/月亮","cn":"[月亮]","tw":"[月亮]","en":"[Moon]","th":"[พระจันทร์]","path":"./assets/Expression/Expression_76@2x.png","style":"we-emoji__Moon"},{"key":"/:sun","old":"/太阳","cn":"[太阳]","tw":"[太陽]","en":"[Sun]","th":"[พระอาทิตย์]","path":"./assets/Expression/Expression_77@2x.png","style":"we-emoji__Sun"},{"key":"/:gift","old":"/礼物","cn":"[礼物]","tw":"[禮物]","en":"[礼物]","th":"[Gift]","emoji":"🎁","path":"./assets/Expression/Expression_78@2x.png","style":"we-emoji__Gift"},{"key":"/:hug","old":"/拥抱","cn":"[拥抱]","tw":"[擁抱]","en":"[Hug]","th":"[กอด]","path":"./assets/Expression/Expression_79@2x.png","style":"we-emoji__Hug"},{"key":"/:strong","old":"/强","cn":"[强]","tw":"[強]","en":"[ThumbsUp]","th":"[ยอดเยี่ยม]","path":"./assets/Expression/Expression_80@2x.png","style":"we-emoji__ThumbsUp"},{"key":"/:weak","old":"/弱","cn":"[弱]","tw":"[弱]","en":"[ThumbsDown]","th":"[ยอดแย่]","path":"./assets/Expression/Expression_81@2x.png","style":"we-emoji__ThumbsDown"},{"key":"/:share","old":"/握手","cn":"[握手]","tw":"[握手]","en":"[Shake]","th":"[จับมือ]","path":"./assets/Expression/Expression_82@2x.png","style":"we-emoji__Shake"},{"key":"/:v","old":"/胜利","cn":"[胜利]","tw":"[勝利]","en":"[Peace]","th":"[สู้ตาย]","path":"./assets/Expression/Expression_83@2x.png","style":"we-emoji__Peace"},{"key":"/:@)","old":"/抱拳","cn":"[抱拳]","tw":"[抱拳]","en":"[Fight]","th":"[คารวะ]","path":"./assets/Expression/Expression_84@2x.png","style":"we-emoji__Fight"},{"key":"/:jj","old":"/勾引","cn":"[勾引]","tw":"[勾引]","en":"[Beckon]","th":"[เข้ามา]","path":"./assets/Expression/Expression_85@2x.png","style":"we-emoji__Beckon"},{"key":"/:@@","old":"/拳头","cn":"[拳头]","tw":"[拳頭]","en":"[Fist]","th":"[กำหมัด]","path":"./assets/Expression/Expression_86@2x.png","style":"we-emoji__Fist"},{"key":"/:bad","old":"/差劲","cn":"[差劲]","tw":"[差勁]","en":"[Pinky]","th":"[ดีกัน]","path":"./assets/Expression/Expression_87@2x.png","style":"we-emoji__Pinky"},{"key":"/:lvu","old":"/爱你","cn":"[爱你]","tw":"[愛你]","en":"[RockOn]","th":"[ฉันรักคุณ]","path":"./assets/Expression/Expression_88@2x.png","style":"we-emoji__RockOn"},{"key":"/:no","old":"/NO","cn":"[NO]","tw":"[NO]","en":"[Nuh-uh]","th":"[ไม่]","path":"./assets/Expression/Expression_89@2x.png","style":"we-emoji__Nuh-uh"},{"key":"/:ok","old":"/OK","cn":"[OK]","tw":"[OK]","en":"[OK]","th":"[ตกลง]","path":"./assets/Expression/Expression_90@2x.png","style":"we-emoji__OK"},{"key":"/:love","old":"/爱情","cn":"[爱情]","tw":"[愛情]","en":"[InLove]","th":"[รักกัน]","path":"./assets/Expression/Expression_91@2x.png","style":"we-emoji__InLove"},{"key":"/:&lt;L&gt;","old":"/飞吻","cn":"[飞吻]","tw":"[飛吻]","en":"[Blowkiss]","th":"[มีรัก]","path":"./assets/Expression/Expression_92@2x.png","style":"we-emoji__Blowkiss"},{"key":"/:jump","old":"/跳跳","cn":"[跳跳]","tw":"[跳跳]","en":"[Waddle]","th":"[กระโดด]","path":"./assets/Expression/Expression_93@2x.png","style":"we-emoji__Waddle"},{"key":"/:shake","old":"/发抖","cn":"[发抖]","tw":"[發抖]","en":"[Tremble]","th":"[เขย่า]","path":"./assets/Expression/Expression_94@2x.png","style":"we-emoji__Tremble"},{"key":"/:&lt;O&gt;","old":"/怄火","cn":"[怄火]","tw":"[噴火]","en":"[Aaagh!]","th":"[อ้ากส์!]","path":"./assets/Expression/Expression_95@2x.png","style":"we-emoji__Aaagh"},{"key":"/:circle","old":"/转圈","cn":"[转圈]","tw":"[轉圈]","en":"[Twirl]","th":"[หมุนตัว]","path":"./assets/Expression/Expression_96@2x.png","style":"we-emoji__Twirl"},{"key":"/:kotow","old":"/磕头","cn":"[磕头]","tw":"[磕頭]","en":"[Kotow]","th":"[คำนับ]","path":"./assets/Expression/Expression_97@2x.png","style":"we-emoji__Kotow"},{"key":"/:turn","old":"/回头","cn":"[回头]","tw":"[回頭]","en":"[Dramatic]","th":"[เหลียวหลัง]","path":"./assets/Expression/Expression_98@2x.png","style":"we-emoji__Dramatic"},{"key":"/:skip","old":"/跳绳","cn":"[跳绳]","tw":"[跳繩]","en":"[JumpRope]","th":"[กระโดด]","path":"./assets/Expression/Expression_99@2x.png","style":"we-emoji__JumpRope"},{"key":"/:oY","old":"/挥手","cn":"[投降]","tw":"[投降]","en":"[Surrender]","th":"[ยอมแพ้]","path":"./assets/Expression/Expression_100@2x.png","style":"we-emoji__Surrender"},{"key":"/:#-0","old":"/激动","cn":"[激动]","tw":"[激動]","en":"[Hooray]","th":"[ไชโย]","path":"./assets/Expression/Expression_101@2x.png","style":"we-emoji__Hooray"},{"key":"/:hiphot","old":"/街舞","cn":"[乱舞]","tw":"[亂舞]","en":"[Meditate]","th":"[เย้เย้]","path":"./assets/Expression/Expression_102@2x.png","style":"we-emoji__Meditate"},{"key":"/:kiss","old":"/献吻","cn":"[献吻]","tw":"[獻吻]","en":"[Smooch]","th":"[จูบ]","path":"./assets/Expression/Expression_103@2x.png","style":"we-emoji__Smooch"},{"key":"/:&lt;&amp;","old":"/左太极","cn":"[左太极]","tw":"[左太極]","en":"[TaiChi L]","th":"[หญิงต่อสู้]","path":"./assets/Expression/Expression_104@2x.png","style":"we-emoji__TaiChiL"},{"key":"/:&amp;\\"","old":"/右太极","cn":"[右太极]","tw":"[右太極]","en":"[TaiChi R]","th":"[ชายต่อสู้]","path":"./assets/Expression/Expression_105@2x.png","style":"we-emoji__TaiChiR"},{"key":"[Smirk]","cn":"[奸笑]","qq":"[奸笑]","en":"[Smirk]","tw":"[奸笑]","th":"[Smirk]","path":"./assets/newemoji/2_02.png","style":"we-emoji__Smirk"},{"key":"[Hey]","cn":"[嘿哈]","qq":"[嘿哈]","en":"[Hey]","tw":"[吼嘿]","th":"[Hey]","path":"./assets/newemoji/2_04.png","style":"we-emoji__Hey"},{"key":"[Facepalm]","cn":"[捂脸]","qq":"[捂脸]","en":"[Facepalm]","tw":"[掩面]","th":"[Facepalm]","path":"./assets/newemoji/2_05.png","style":"we-emoji__Facepalm"},{"key":"[Smart]","cn":"[机智]","qq":"[机智]","en":"[Smart]","tw":"[機智]","th":"[Smart]","path":"./assets/newemoji/2_06.png","style":"we-emoji__Smart"},{"key":"[Tea]","cn":"[茶]","qq":"[茶]","en":"[Tea]","tw":"[茶]","th":"[Tea]","path":"./assets/newemoji/2_07.png","style":"we-emoji__Tea"},{"key":"[Packet]","cn":"[红包]","qq":"[红包]","en":"[Packet]","tw":"[Packet]","th":"[Packet]","path":"./assets/newemoji/2_09.png","style":"we-emoji__Packet"},{"key":"[Candle]","cn":"[蜡烛]","qq":"[蜡烛]","en":"[Candle]","tw":"[蠟燭]","th":"[Candle]","path":"./assets/newemoji/2_10.png","style":"we-emoji__Candle"},{"key":"[Yeah!]","cn":"[耶]","qq":"[耶]","en":"[Yeah!]","tw":"[歐耶]","th":"[Yeah!]","path":"./assets/newemoji/2_11.png","style":"we-emoji__Yeah"},{"key":"[Concerned]","cn":"[皱眉]","qq":"[皱眉]","en":"[Concerned]","tw":"[皺眉]","th":"[Concerned]","path":"./assets/newemoji/2_12.png","style":"we-emoji__Concerned"},{"key":"[Salute]","cn":"[抱拳]","qq":"[抱拳]","en":"[Salute]","tw":"[抱拳]","th":"[Salute]","path":"./assets/newemoji/smiley_83b.png","style":"we-emoji__Salute"},{"key":"[Chick]","cn":"[鸡]","qq":"[鸡]","en":"[Chick]","tw":"[小雞]","th":"[Chick]","path":"./assets/newemoji/2_14.png","style":"we-emoji__Chick"},{"key":"[Blessing]","cn":"[福]","qq":"[福]","en":"[Blessing]","tw":"[福]","th":"[Blessing]","path":"./assets/newemoji/2_15.png","style":"we-emoji__Blessing"},{"key":"[Bye]","cn":"[再见]","qq":"[再见]","en":"[Bye]","tw":"[再見]","th":"[Bye]","path":"./assets/newemoji/smiley_39b.png","style":"we-emoji__Bye"},{"key":"[Rich]","cn":"[發]","qq":"[發]","en":"[Rich]","tw":"[發]","th":"[Rich]","path":"./assets/newemoji/2_16.png","style":"we-emoji__Rich"},{"key":"[Pup]","cn":"[小狗]","qq":"[小狗]","en":"[Pup]","tw":"[小狗]","th":"[Pup]","path":"./assets/newemoji/2_17.png","style":"we-emoji__Pup"},{"key":"[Onlooker]","cn":"[吃瓜]","qq":"[吃瓜]","en":"[Onlooker]","tw":"[吃西瓜]","th":"[Onlooker]","path":"./assets/newemoji/Watermelon.png","style":"we-emoji__Onlooker"},{"key":"[GoForIt]","cn":"[加油]","qq":"[加油]","en":"[GoForIt]","tw":"[加油]","th":"[GoForIt]","path":"./assets/newemoji/Addoil.png","style":"we-emoji__GoForIt"},{"key":"[Sweats]","cn":"[汗]","qq":"[汗]","en":"[Sweats]","tw":"[汗]","th":"[Sweats]","path":"./assets/newemoji/Sweat.png","style":"we-emoji__Sweats"},{"key":"[OMG]","cn":"[天啊]","qq":"[天啊]","en":"[OMG]","tw":"[天啊]","th":"[OMG]","path":"./assets/newemoji/Shocked.png","style":"we-emoji__OMG"},{"key":"[Emm]","cn":"[Emm]","qq":"[Emm]","en":"[Emm]","tw":"[一言難盡]","th":"[Emm]","path":"./assets/newemoji/Cold.png","style":"we-emoji__Emm"},{"key":"[Respect]","cn":"[社会社会]","qq":"[社会社会]","en":"[Respect]","tw":"[失敬失敬]","th":"[Respect]","path":"./assets/newemoji/Social.png","style":"we-emoji__Respect"},{"key":"[Doge]","cn":"[旺柴]","qq":"[旺柴]","en":"[Doge]","tw":"[旺柴]","th":"[Doge]","path":"./assets/newemoji/Yellowdog.png","style":"we-emoji__Doge"},{"key":"[NoProb]","cn":"[好的]","qq":"[好的]","en":"[NoProb]","tw":"[好的]","th":"[NoProb]","path":"./assets/newemoji/NoProb.png","style":"we-emoji__NoProb"},{"key":"[MyBad]","cn":"[打脸]","qq":"[打脸]","en":"[MyBad]","tw":"[打臉]","th":"[MyBad]","path":"./assets/newemoji/Slap.png","style":"we-emoji__MyBad"},{"key":"[Wow]","cn":"[哇]","qq":"[哇]","en":"[Wow]","tw":"[哇]","th":"[Wow]","path":"./assets/newemoji/Wow.png","style":"we-emoji__Wow"},{"key":"[KeepFighting]","cn":"[加油加油]","qq":"[加油加油]","en":"[KeepFighting]","tw":"[加油！]","th":"[KeepFighting]","path":"./assets/newemoji/KeepFighting.png","style":"we-emoji__KeepFighting"},{"key":"[Boring]","cn":"[翻白眼]","qq":"[翻白眼]","en":"[Boring]","tw":"[翻白眼]","th":"[Boring]","path":"./assets/newemoji/Boring.png","style":"we-emoji__Boring"},{"key":"[666]","cn":"[666]","qq":"[666]","en":"[Awesome]","tw":"[666]","th":"[Awesome]","path":"./assets/newemoji/666.png","style":"we-emoji__Awesome"},{"key":"[LetMeSee]","cn":"[让我看看]","qq":"[让我看看]","en":"[LetMeSee]","tw":"[讓我看看]","th":"[LetMeSee]","path":"./assets/newemoji/LetMeSee.png","style":"we-emoji__LetMeSee"},{"key":"[Sigh]","cn":"[叹气]","qq":"[叹气]","en":"[Sigh]","tw":"[嘆息]","th":"[Sigh]","path":"./assets/newemoji/Sigh.png","style":"we-emoji__Sigh"},{"key":"[Hurt]","cn":"[苦涩]","qq":"[苦涩]","en":"[Hurt]","tw":"[難受]","th":"[Hurt]","path":"./assets/newemoji/Hurt.png","style":"we-emoji__Hurt"},{"key":"[Broken]","cn":"[裂开]","qq":"[裂开]","en":"[Broken]","tw":"[崩潰]","th":"[Broken]","path":"./assets/newemoji/Broken.png","style":"we-emoji__Broken"},{"key":"[Flushed]","cn":"[脸红]","qq":"[脸红]","en":"[Flushed]","tw":"[臉紅]","th":"[Flushed]","emoji":"😳","path":"./assets/newemoji/Flushed.png","style":"we-emoji__Flushed"},{"key":"[Happy]","cn":"[笑脸]","qq":"[笑脸]","en":"[Happy]","tw":"[笑臉]","th":"[Happy]","emoji":"😄","path":"./assets/newemoji/Happy.png","style":"we-emoji__Happy"},{"key":"[Lol]","cn":"[破涕为笑]","qq":"[破涕为笑]","en":"[Lol]","tw":"[破涕為笑]","th":"[Lol]","emoji":"😂","path":"./assets/newemoji/Lol.png","style":"we-emoji__Lol"},{"key":"[Fireworks]","cn":"[烟花]","qq":"[烟花]","en":"[Fireworks]","tw":"[煙花]","th":"[Fireworks]","path":"./assets/newemoji/Fireworks.png","style":"we-emoji__Fireworks"},{"key":"[Firecracker]","cn":"[爆竹]","qq":"[爆竹]","en":"[Firecracker]","tw":"[爆竹]","th":"[Firecracker]","path":"./assets/newemoji/Firecracker.png","style":"we-emoji__Firecracker"},{"key":"[Party]","cn":"[庆祝]","qq":"[庆祝]","en":"[Party]","tw":"[慶祝]","th":"[Party]","emoji":"🎉","path":"./assets/newemoji/Party.png","style":"we-emoji__Party"},{"key":"[Terror]","cn":"[恐惧]","qq":"[恐惧]","en":"[Terror]","tw":"[恐懼]","th":"[Terror]","emoji":"😱","path":"./assets/newemoji/Terror.png","style":"we-emoji__Terror"},{"key":"[Duh]","cn":"[无语]","qq":"[无语]","en":"[Duh]","tw":"[無語]","th":"[Duh]","emoji":"😒","path":"./assets/newemoji/Duh.png","style":"we-emoji__Duh"},{"key":"[LetDown]","cn":"[失望]","qq":"[失望]","en":"[Let Down]","tw":"[失望]","th":"[Let Down]","emoji":"😔","path":"./assets/newemoji/LetDown.png","style":"we-emoji__LetDown"},{"key":"[Sick]","cn":"[生病]","qq":"[生病]","en":"[Sick]","tw":"[生病]","th":"[Sick]","emoji":"😷","path":"./assets/newemoji/Sick.png","style":"we-emoji__Sick"},{"key":"[Worship]","cn":"[合十]","qq":"[合十]","en":"[Worship]","tw":"[合十]","th":"[Worship]","emoji":"🙏","path":"./assets/newemoji/Worship.png","style":"we-emoji__Worship"}]')},"8fce":function(e,t,n){var r=n("3eeb"),o=n("720c");e.exports=function(e,t){var n=e.exec;if("function"===typeof n){var i=n.call(e,t);if("object"!==typeof i)throw TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==r(e))throw TypeError("RegExp#exec called on incompatible receiver");return o.call(e,t)}},"8fdb":function(e,t,n){var r=n("3aa2"),o=n("cb59"),i=n("dbca");e.exports=r?function(e,t,n){return o.f(e,t,i(1,n))}:function(e,t,n){return e[t]=n,e}},"90d9":function(e,t,n){n("b193"),n("53d5"),n("b2c4"),n("2a74"),n("960a"),n("b33c");var r=n("c942");function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&amp;&amp;(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t&lt;arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}e.exports=i,e.exports["default"]=e.exports,e.exports.__esModule=!0},"91e8":function(e,t,n){"use strict";var r=n("4266"),o=n("db5b"),i=n("a682"),s=n("f3d1"),a=n("b850"),c=n("2db9"),u=n("b2dc");e.exports=function(e){var t,n,p,f,l,h,d=o(e),y="function"==typeof this?this:Array,g=arguments.length,x=g&gt;1?arguments[1]:void 0,m=void 0!==x,w=u(d),_=0;if(m&amp;&amp;(x=r(x,g&gt;2?arguments[2]:void 0,2)),void 0==w||y==Array&amp;&amp;s(w))for(t=a(d.length),n=new y(t);t&gt;_;_++)h=m?x(d[_],_):d[_],c(n,_,h);else for(f=w.call(d),l=f.next,n=new y;!(p=l.call(f)).done;_++)h=m?i(f,x,[p.value,_],!0):p.value,c(n,_,h);return n.length=_,n}},9397:function(e,t,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&amp;&amp;!r.call({1:2},1);t.f=i?function(e){var t=o(this,e);return!!t&amp;&amp;t.enumerable}:r},"952b":function(e,t,n){var r=n("ef21");t.f=r},"960a":function(e,t,n){var r=n("2673"),o=n("cfd8"),i=n("1adc"),s=n("8fdb");for(var a in o){var c=r[a],u=c&amp;&amp;c.prototype;if(u&amp;&amp;u.forEach!==i)try{s(u,"forEach",i)}catch(p){u.forEach=i}}},"98d0":function(e,t,n){"use strict";var r=n("13f0"),o=n("8325"),i=n("da9f"),s=n("c6b1"),a="toString",c=RegExp.prototype,u=c[a],p=i((function(){return"/a/b"!=u.call({source:"a",flags:"b"})})),f=u.name!=a;(p||f)&amp;&amp;r(RegExp.prototype,a,(function(){var e=o(this),t=String(e.source),n=e.flags,r=String(void 0===n&amp;&amp;e instanceof RegExp&amp;&amp;!("flags"in c)?s.call(e):n);return"/"+t+"/"+r}),{unsafe:!0})},9904:function(e,t,n){"use strict";var r=n("25e1"),o=n("120a"),i=n("5a20"),s=n("ee23"),a=n("61e6"),c="Array Iterator",u=s.set,p=s.getterFor(c);e.exports=a(Array,"Array",(function(e,t){u(this,{type:c,target:r(e),index:0,kind:t})}),(function(){var e=p(this),t=e.target,n=e.kind,r=e.index++;return!t||r&gt;=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}}),"values"),i.Arguments=i.Array,o("keys"),o("values"),o("entries")},"9a36":function(e,t,n){var r=n("8325"),o=n("558c");e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,e.call(n,[]),t=n instanceof Array}catch(i){}return function(n,i){return r(n),o(i),t?e.call(n,i):n.__proto__=i,n}}():void 0)},"9cf3":function(e,t,n){var r=n("2b64"),o=n("a707"),i=r("keys");e.exports=function(e){return i[e]||(i[e]=o(e))}},"9e20":function(e,t,n){var r=n("4266"),o=n("3604"),i=n("db5b"),s=n("b850"),a=n("b352"),c=[].push,u=function(e){var t=1==e,n=2==e,u=3==e,p=4==e,f=6==e,l=7==e,h=5==e||f;return function(d,y,g,x){for(var m,w,_=i(d),v=o(_),b=r(y,g,3),E=s(v.length),j=0,k=x||a,S=t?k(d,E):n||l?k(d,0):void 0;E&gt;j;j++)if((h||j in v)&amp;&amp;(m=v[j],w=b(m,j,_),e))if(t)S[j]=w;else if(w)switch(e){case 3:return!0;case 5:return m;case 6:return j;case 2:c.call(S,m)}else switch(e){case 4:return!1;case 7:c.call(S,m)}return f?-1:u||p?p:S}};e.exports={forEach:u(0),map:u(1),filter:u(2),some:u(3),every:u(4),find:u(5),findIndex:u(6),filterOut:u(7)}},a1e0:function(e,t,n){var r=n("3e7f");e.exports=function(e){if(r(e))throw TypeError("The method doesn't accept regular expressions");return e}},a356:function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e&gt;0?r:n)(e)}},a42d:function(e,t,n){var r=n("db5b"),o=Math.floor,i="".replace,s=/\$([$&amp;'`]|\d{1,2}|&lt;[^&gt;]*&gt;)/g,a=/\$([$&amp;'`]|\d{1,2})/g;e.exports=function(e,t,n,c,u,p){var f=n+e.length,l=c.length,h=a;return void 0!==u&amp;&amp;(u=r(u),h=s),i.call(p,h,(function(r,i){var s;switch(i.charAt(0)){case"$":return"$";case"&amp;":return e;case"`":return t.slice(0,n);case"'":return t.slice(f);case"&lt;":s=u[i.slice(1,-1)];break;default:var a=+i;if(0===a)return r;if(a&gt;l){var p=o(a/10);return 0===p?r:p&lt;=l?void 0===c[p-1]?i.charAt(1):c[p-1]+i.charAt(1):r}s=c[a-1]}return void 0===s?"":s}))}},a67f:function(e,t,n){var r=n("6ad5");r("iterator")},a682:function(e,t,n){var r=n("8325"),o=n("e425");e.exports=function(e,t,n,i){try{return i?t(r(n)[0],n[1]):t(n)}catch(s){throw o(e),s}}},a690:function(e,t,n){"use strict";var r=n("2c28"),o=n("8325"),i=n("b850"),s=n("a356"),a=n("3e0d"),c=n("76d3"),u=n("a42d"),p=n("8fce"),f=Math.max,l=Math.min,h=function(e){return void 0===e?e:String(e)};r("replace",2,(function(e,t,n,r){var d=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,y=r.REPLACE_KEEPS_$0,g=d?"$":"$0";return[function(n,r){var o=a(this),i=void 0==n?void 0:n[e];return void 0!==i?i.call(n,o,r):t.call(String(o),n,r)},function(e,r){if(!d&amp;&amp;y||"string"===typeof r&amp;&amp;-1===r.indexOf(g)){var a=n(t,e,this,r);if(a.done)return a.value}var x=o(e),m=String(this),w="function"===typeof r;w||(r=String(r));var _=x.global;if(_){var v=x.unicode;x.lastIndex=0}var b=[];while(1){var E=p(x,m);if(null===E)break;if(b.push(E),!_)break;var j=String(E[0]);""===j&amp;&amp;(x.lastIndex=c(m,i(x.lastIndex),v))}for(var k="",S=0,O=0;O&lt;b.length;O++){E=b[O];for(var P=String(E[0]),A=f(l(s(E.index),m.length),0),T=[],D=1;D&lt;E.length;D++)T.push(h(E[D]));var q=E.groups;if(w){var C=[P].concat(T,A,m);void 0!==q&amp;&amp;C.push(q);var R=String(r.apply(void 0,C))}else R=u(P,m,A,T,q,r);A&gt;=S&amp;&amp;(k+=m.slice(S,A)+R,S=A+P.length)}return k+m.slice(S)}]}))},a707:function(e,t){var n=0,r=Math.random();e.exports=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++n+r).toString(36)}},a79f:function(e,t,n){var r=n("6736");e.exports=r&amp;&amp;!Symbol.sham&amp;&amp;"symbol"==typeof Symbol.iterator},ad7a:function(e,t,n){var r=n("2673"),o=n("4a6d").f,i=n("8fdb"),s=n("13f0"),a=n("79ec"),c=n("08a5"),u=n("34bc");e.exports=function(e,t){var n,p,f,l,h,d,y=e.target,g=e.global,x=e.stat;if(p=g?r:x?r[y]||a(y,{}):(r[y]||{}).prototype,p)for(f in t){if(h=t[f],e.noTargetGet?(d=o(p,f),l=d&amp;&amp;d.value):l=p[f],n=u(g?f:y+(x?".":"#")+f,e.forced),!n&amp;&amp;void 0!==l){if(typeof h===typeof l)continue;c(h,l)}(e.sham||l&amp;&amp;l.sham)&amp;&amp;i(h,"sham",!0),s(p,f,h,e)}}},ae5b:function(e,t,n){var r=n("c388"),o=n("db5b"),i=n("9cf3"),s=n("8871"),a=i("IE_PROTO"),c=Object.prototype;e.exports=s?Object.getPrototypeOf:function(e){return e=o(e),r(e,a)?e[a]:"function"==typeof e.constructor&amp;&amp;e instanceof e.constructor?e.constructor.prototype:e instanceof Object?c:null}},b027:function(e,t){e.exports={}},b193:function(e,t,n){var r=n("ad7a"),o=n("db5b"),i=n("f4db"),s=n("da9f"),a=s((function(){i(1)}));r({target:"Object",stat:!0,forced:a},{keys:function(e){return i(o(e))}})},b2c4:function(e,t,n){"use strict";var r=n("ad7a"),o=n("9e20").filter,i=n("4c94"),s=i("filter");r({target:"Array",proto:!0,forced:!s},{filter:function(e){return o(this,e,arguments.length&gt;1?arguments[1]:void 0)}})},b2dc:function(e,t,n){var r=n("28a9"),o=n("5a20"),i=n("ef21"),s=i("iterator");e.exports=function(e){if(void 0!=e)return e[s]||e["@@iterator"]||o[r(e)]}},b33c:function(e,t,n){var r=n("ad7a"),o=n("3aa2"),i=n("18e7"),s=n("25e1"),a=n("4a6d"),c=n("2db9");r({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(e){var t,n,r=s(e),o=a.f,u=i(r),p={},f=0;while(u.length&gt;f)n=o(r,t=u[f++]),void 0!==n&amp;&amp;c(p,t,n);return p}})},b352:function(e,t,n){var r=n("dc54"),o=n("d360"),i=n("ef21"),s=i("species");e.exports=function(e,t){var n;return o(e)&amp;&amp;(n=e.constructor,"function"!=typeof n||n!==Array&amp;&amp;!o(n.prototype)?r(n)&amp;&amp;(n=n[s],null===n&amp;&amp;(n=void 0)):n=void 0),new(void 0===n?Array:n)(0===t?0:t)}},b4c7:function(e,t,n){var r=n("25e1"),o=n("b850"),i=n("3823"),s=function(e){return function(t,n,s){var a,c=r(t),u=o(c.length),p=i(s,u);if(e&amp;&amp;n!=n){while(u&gt;p)if(a=c[p++],a!=a)return!0}else for(;u&gt;p;p++)if((e||p in c)&amp;&amp;c[p]===n)return e||p||0;return!e&amp;&amp;-1}};e.exports={includes:s(!0),indexOf:s(!1)}},b70b:function(e,t,n){var r=n("dc54");e.exports=function(e,t){if(!r(e))return e;var n,o;if(t&amp;&amp;"function"==typeof(n=e.toString)&amp;&amp;!r(o=n.call(e)))return o;if("function"==typeof(n=e.valueOf)&amp;&amp;!r(o=n.call(e)))return o;if(!t&amp;&amp;"function"==typeof(n=e.toString)&amp;&amp;!r(o=n.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},b850:function(e,t,n){var r=n("a356"),o=Math.min;e.exports=function(e){return e&gt;0?o(r(e),9007199254740991):0}},bade:function(e,t,n){var r=n("e452"),o=Function.toString;"function"!=typeof r.inspectSource&amp;&amp;(r.inspectSource=function(e){return o.call(e)}),e.exports=r.inspectSource},c1fd:function(e){e.exports=JSON.parse('["/::)","/::~","/::B","/::|","/:8-)","/::&lt;","/::$","/::X","/::Z","/::\'(","/::-|","/::@","/::P","/::D","/::O","/::(","[Blush]","/::Q","/::T","/:,@P","/:,@-D","/::d","/:,@o","/:|-)","/::!","/::&gt;","/::,@","/::-S","/:?","/:,@x","/:,@@","/:,@!","/:!!!","/:xx","[Bye]","/:wipe","/:dig","/:handclap","/:B-)","/:@&gt;","/:&gt;-|","/:P-(","/::\'|","/:X-)","/::*","/:8*","[Happy]","[Sick]","[Flushed]","[Lol]","[Terror]","[LetDown]","[Duh]","[Hey]","[Facepalm]","[Smirk]","[Smart]","[Concerned]","[Yeah!]","[Onlooker]","[GoForIt]","[Sweats]","[OMG]","[Emm]","[Respect]","[Doge]","[NoProb]","[MyBad]","[Wow]","[Boring]","[666]","[LetMeSee]","[Sigh]","[Hurt]","[Broken]","/:showlove","/:heart","/:break","/:hug","/:strong","/:weak","/:share","/:v","[Salute]","/:jj","/:@@","/:ok","[Worship]","/:beer","/:coffee","/:cake","/:rose","/:fade","/:pd","/:bome","/:shit","/:moon","/:sun","[Party]","[Gift]","[Packet]","[Rich]","[Blessing]","[Fireworks]","[Firecracker]","/:pig","/:jump","/:shake","/:circle"]')},c388:function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},c3b1:function(e,t,n){var r,o=n("8325"),i=n("8ae9"),s=n("5445"),a=n("b027"),c=n("1283"),u=n("ef87"),p=n("9cf3"),f="&gt;",l="&lt;",h="prototype",d="script",y=p("IE_PROTO"),g=function(){},x=function(e){return l+d+f+e+l+"/"+d+f},m=function(e){e.write(x("")),e.close();var t=e.parentWindow.Object;return e=null,t},w=function(){var e,t=u("iframe"),n="java"+d+":";return t.style.display="none",c.appendChild(t),t.src=String(n),e=t.contentWindow.document,e.open(),e.write(x("document.F=Object")),e.close(),e.F},_=function(){try{r=document.domain&amp;&amp;new ActiveXObject("htmlfile")}catch(t){}_=r?m(r):w();var e=s.length;while(e--)delete _[h][s[e]];return _()};a[y]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(g[h]=o(e),n=new g,g[h]=null,n[y]=e):n=_(),void 0===t?n:i(n,t)}},c6b1:function(e,t,n){"use strict";var r=n("8325");e.exports=function(){var e=r(this),t="";return e.global&amp;&amp;(t+="g"),e.ignoreCase&amp;&amp;(t+="i"),e.multiline&amp;&amp;(t+="m"),e.dotAll&amp;&amp;(t+="s"),e.unicode&amp;&amp;(t+="u"),e.sticky&amp;&amp;(t+="y"),t}},c724:function(e,t,n){var r=n("2673"),o=n("bade"),i=r.WeakMap;e.exports="function"===typeof i&amp;&amp;/native code/.test(o(i))},c942:function(e,t){function n(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}e.exports=n,e.exports["default"]=e.exports,e.exports.__esModule=!0},cb59:function(e,t,n){var r=n("3aa2"),o=n("608b"),i=n("8325"),s=n("b70b"),a=Object.defineProperty;t.f=r?a:function(e,t,n){if(i(e),t=s(t,!0),i(n),o)try{return a(e,t,n)}catch(r){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&amp;&amp;(e[t]=n.value),e}},cfd8:function(e,t){e.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},d360:function(e,t,n){var r=n("3eeb");e.exports=Array.isArray||function(e){return"Array"==r(e)}},d939:function(e,t,n){"use strict";var r=n("ad7a"),o=n("3aa2"),i=n("2673"),s=n("c388"),a=n("dc54"),c=n("cb59").f,u=n("08a5"),p=i.Symbol;if(o&amp;&amp;"function"==typeof p&amp;&amp;(!("description"in p.prototype)||void 0!==p().description)){var f={},l=function(){var e=arguments.length&lt;1||void 0===arguments[0]?void 0:String(arguments[0]),t=this instanceof l?new p(e):void 0===e?p():p(e);return""===e&amp;&amp;(f[t]=!0),t};u(l,p);var h=l.prototype=p.prototype;h.constructor=l;var d=h.toString,y="Symbol(test)"==String(p("test")),g=/^Symbol\((.*)\)[^)]+$/;c(h,"description",{configurable:!0,get:function(){var e=a(this)?this.valueOf():this,t=d.call(e);if(s(f,e))return"";var n=y?t.slice(7,-1):t.replace(g,"$1");return""===n?void 0:n}}),r({global:!0,forced:!0},{Symbol:l})}},da9f:function(e,t){e.exports=function(e){try{return!!e()}catch(t){return!0}}},db5b:function(e,t,n){var r=n("3e0d");e.exports=function(e){return Object(r(e))}},dbca:function(e,t){e.exports=function(e,t){return{enumerable:!(1&amp;e),configurable:!(2&amp;e),writable:!(4&amp;e),value:t}}},dc54:function(e,t){e.exports=function(e){return"object"===typeof e?null!==e:"function"===typeof e}},e055:function(e,t,n){"use strict";var r=n("3f05").IteratorPrototype,o=n("c3b1"),i=n("dbca"),s=n("5ce8"),a=n("5a20"),c=function(){return this};e.exports=function(e,t,n){var u=t+" Iterator";return e.prototype=o(r,{next:i(1,n)}),s(e,u,!1,!0),a[u]=c,e}},e425:function(e,t,n){var r=n("8325");e.exports=function(e){var t=e["return"];if(void 0!==t)return r(t.call(e)).value}},e452:function(e,t,n){var r=n("2673"),o=n("79ec"),i="__core-js_shared__",s=r[i]||o(i,{});e.exports=s},e63e:function(e,t,n){var r=n("2673");e.exports=r},ee23:function(e,t,n){var r,o,i,s=n("c724"),a=n("2673"),c=n("dc54"),u=n("8fdb"),p=n("c388"),f=n("e452"),l=n("9cf3"),h=n("b027"),d=a.WeakMap,y=function(e){return i(e)?o(e):r(e,{})},g=function(e){return function(t){var n;if(!c(t)||(n=o(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}};if(s){var x=f.state||(f.state=new d),m=x.get,w=x.has,_=x.set;r=function(e,t){return t.facade=e,_.call(x,e,t),t},o=function(e){return m.call(x,e)||{}},i=function(e){return w.call(x,e)}}else{var v=l("state");h[v]=!0,r=function(e,t){return t.facade=e,u(e,v,t),t},o=function(e){return p(e,v)?e[v]:{}},i=function(e){return p(e,v)}}e.exports={set:r,get:o,has:i,enforce:y,getterFor:g}},ef21:function(e,t,n){var r=n("2673"),o=n("2b64"),i=n("c388"),s=n("a707"),a=n("6736"),c=n("a79f"),u=o("wks"),p=r.Symbol,f=c?p:p&amp;&amp;p.withoutSetter||s;e.exports=function(e){return i(u,e)&amp;&amp;(a||"string"==typeof u[e])||(a&amp;&amp;i(p,e)?u[e]=p[e]:u[e]=f("Symbol."+e)),u[e]}},ef87:function(e,t,n){var r=n("2673"),o=n("dc54"),i=r.document,s=o(i)&amp;&amp;o(i.createElement);e.exports=function(e){return s?i.createElement(e):{}}},f2e0:function(e,t,n){"use strict";var r=n("ad7a"),o=n("3604"),i=n("25e1"),s=n("1425"),a=[].join,c=o!=Object,u=s("join",",");r({target:"Array",proto:!0,forced:c||!u},{join:function(e){return a.call(i(this),void 0===e?",":e)}})},f3d1:function(e,t,n){var r=n("ef21"),o=n("5a20"),i=r("iterator"),s=Array.prototype;e.exports=function(e){return void 0!==e&amp;&amp;(o.Array===e||s[i]===e)}},f4db:function(e,t,n){var r=n("7a92"),o=n("5445");e.exports=Object.keys||function(e){return r(e,o)}},f601:function(e,t,n){var r=n("90d9").default;n("4d0b"),n("565a");var o=n("8c94"),i=n("c1fd"),s=["key","old","cn","qq","en","tw","th","emoji"],a=o.map((function(e){return r({},e)})),c=a.reduce((function(e,t,n){var o=r({},e);return s.forEach((function(e){t[e]&amp;&amp;!o[t[e]]&amp;&amp;(o[t[e]]={index:n})})),o}),{}),u=i.map((function(e){return a[c[e].index]}));t.EmojiData=a,t.EmojiPanelData=u,t.EmojiDataMap=c,e.exports={EmojiData:a,EmojiPanelData:u,EmojiDataMap:c}},f84d:function(e,t,n){},f8b5:function(e,t,n){var r=n("3d32");e.exports=r("navigator","userAgent")||""},fb71:function(e,t,n){var r=n("3eeb"),o=n("2673");e.exports="process"==r(o.process)},fe45:function(e,t){e.exports=!1},fe46:function(e,t,n){var r=n("2673"),o=n("cfd8"),i=n("9904"),s=n("8fdb"),a=n("ef21"),c=a("iterator"),u=a("toStringTag"),p=i.values;for(var f in o){var l=r[f],h=l&amp;&amp;l.prototype;if(h){if(h[c]!==p)try{s(h,c,p)}catch(y){h[c]=p}if(h[u]||s(h,u,f),o[f])for(var d in i)if(h[d]!==i[d])try{s(h,d,i[d])}catch(y){h[d]=i[d]}}}},ff86:function(e,t,n){"use strict";var r=n("da9f");function o(e,t){return RegExp(e,t)}t.UNSUPPORTED_Y=r((function(){var e=o("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),t.BROKEN_CARET=r((function(){var e=o("^r","gy");return e.lastIndex=2,null!=e.exec("str")}))}})["default"]}));
             &lt;/script&gt;
             &lt;script h5only="" nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
              !function(t,e){"object"==typeof exports&amp;&amp;"object"==typeof module?module.exports=e():"function"==typeof define&amp;&amp;define.amd?define("Darkmode",[],e):"object"==typeof exports?exports.Darkmode=e():t.Darkmode=e()}(self,()=&gt;(()=&gt;{var t={31(t){"use strict";t.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},40(t,e,r){var n=r(31),o={};for(var a in n)n.hasOwnProperty(a)&amp;&amp;(o[n[a]]=a);var i=t.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var l in i)if(i.hasOwnProperty(l)){if(!("channels"in i[l]))throw new Error("missing channels property: "+l);if(!("labels"in i[l]))throw new Error("missing channel labels property: "+l);if(i[l].labels.length!==i[l].channels)throw new Error("channel and label counts mismatch: "+l);var u=i[l].channels,s=i[l].labels;delete i[l].channels,delete i[l].labels,Object.defineProperty(i[l],"channels",{value:u}),Object.defineProperty(i[l],"labels",{value:s})}function c(t,e){return Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2)+Math.pow(t[2]-e[2],2)}i.rgb.hsl=function(t){var e,r,n=t[0]/255,o=t[1]/255,a=t[2]/255,i=Math.min(n,o,a),l=Math.max(n,o,a),u=l-i;return l===i?e=0:n===l?e=(o-a)/u:o===l?e=2+(a-n)/u:a===l&amp;&amp;(e=4+(n-o)/u),(e=Math.min(60*e,360))&lt;0&amp;&amp;(e+=360),r=(i+l)/2,[e,100*(l===i?0:r&lt;=.5?u/(l+i):u/(2-l-i)),100*r]},i.rgb.hsv=function(t){var e,r,n,o,a,i=t[0]/255,l=t[1]/255,u=t[2]/255,s=Math.max(i,l,u),c=s-Math.min(i,l,u),h=function(t){return(s-t)/6/c+.5};return 0===c?o=a=0:(a=c/s,e=h(i),r=h(l),n=h(u),i===s?o=n-r:l===s?o=1/3+e-n:u===s&amp;&amp;(o=2/3+r-e),o&lt;0?o+=1:o&gt;1&amp;&amp;(o-=1)),[360*o,100*a,100*s]},i.rgb.hwb=function(t){var e=t[0],r=t[1],n=t[2];return[i.rgb.hsl(t)[0],1/255*Math.min(e,Math.min(r,n))*100,100*(n=1-1/255*Math.max(e,Math.max(r,n)))]},i.rgb.cmyk=function(t){var e,r=t[0]/255,n=t[1]/255,o=t[2]/255;return[100*((1-r-(e=Math.min(1-r,1-n,1-o)))/(1-e)||0),100*((1-n-e)/(1-e)||0),100*((1-o-e)/(1-e)||0),100*e]},i.rgb.keyword=function(t){var e=o[t];if(e)return e;var r,a=1/0;for(var i in n)if(n.hasOwnProperty(i)){var l=c(t,n[i]);l&lt;a&amp;&amp;(a=l,r=i)}return r},i.keyword.rgb=function(t){return n[t]},i.rgb.xyz=function(t){var e=t[0]/255,r=t[1]/255,n=t[2]/255;return[100*(.4124*(e=e&gt;.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(r=r&gt;.04045?Math.pow((r+.055)/1.055,2.4):r/12.92)+.1805*(n=n&gt;.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)),100*(.2126*e+.7152*r+.0722*n),100*(.0193*e+.1192*r+.9505*n)]},i.rgb.lab=function(t){var e=i.rgb.xyz(t),r=e[0],n=e[1],o=e[2];return n/=100,o/=108.883,r=(r/=95.047)&gt;.008856?Math.pow(r,1/3):7.787*r+16/116,[116*(n=n&gt;.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(r-n),200*(n-(o=o&gt;.008856?Math.pow(o,1/3):7.787*o+16/116))]},i.hsl.rgb=function(t){var e,r,n,o,a,i=t[0]/360,l=t[1]/100,u=t[2]/100;if(0===l)return[a=255*u,a,a];e=2*u-(r=u&lt;.5?u*(1+l):u+l-u*l),o=[0,0,0];for(var s=0;s&lt;3;s++)(n=i+1/3*-(s-1))&lt;0&amp;&amp;n++,n&gt;1&amp;&amp;n--,a=6*n&lt;1?e+6*(r-e)*n:2*n&lt;1?r:3*n&lt;2?e+(r-e)*(2/3-n)*6:e,o[s]=255*a;return o},i.hsl.hsv=function(t){var e=t[0],r=t[1]/100,n=t[2]/100,o=r,a=Math.max(n,.01);return r*=(n*=2)&lt;=1?n:2-n,o*=a&lt;=1?a:2-a,[e,100*(0===n?2*o/(a+o):2*r/(n+r)),(n+r)/2*100]},i.hsv.rgb=function(t){var e=t[0]/60,r=t[1]/100,n=t[2]/100,o=Math.floor(e)%6,a=e-Math.floor(e),i=255*n*(1-r),l=255*n*(1-r*a),u=255*n*(1-r*(1-a));switch(n*=255,o){case 0:return[n,u,i];case 1:return[l,n,i];case 2:return[i,n,u];case 3:return[i,l,n];case 4:return[u,i,n];case 5:return[n,i,l]}},i.hsv.hsl=function(t){var e,r,n,o=t[0],a=t[1]/100,i=t[2]/100,l=Math.max(i,.01);return n=(2-a)*i,r=a*l,[o,100*(r=(r/=(e=(2-a)*l)&lt;=1?e:2-e)||0),100*(n/=2)]},i.hwb.rgb=function(t){var e,r,n,o,a,i,l,u=t[0]/360,s=t[1]/100,c=t[2]/100,h=s+c;switch(h&gt;1&amp;&amp;(s/=h,c/=h),n=6*u-(e=Math.floor(6*u)),1&amp;e&amp;&amp;(n=1-n),o=s+n*((r=1-c)-s),e){default:case 6:case 0:a=r,i=o,l=s;break;case 1:a=o,i=r,l=s;break;case 2:a=s,i=r,l=o;break;case 3:a=s,i=o,l=r;break;case 4:a=o,i=s,l=r;break;case 5:a=r,i=s,l=o}return[255*a,255*i,255*l]},i.cmyk.rgb=function(t){var e=t[0]/100,r=t[1]/100,n=t[2]/100,o=t[3]/100;return[255*(1-Math.min(1,e*(1-o)+o)),255*(1-Math.min(1,r*(1-o)+o)),255*(1-Math.min(1,n*(1-o)+o))]},i.xyz.rgb=function(t){var e,r,n,o=t[0]/100,a=t[1]/100,i=t[2]/100;return r=-.9689*o+1.8758*a+.0415*i,n=.0557*o+-.204*a+1.057*i,e=(e=3.2406*o+-1.5372*a+-.4986*i)&gt;.0031308?1.055*Math.pow(e,1/2.4)-.055:12.92*e,r=r&gt;.0031308?1.055*Math.pow(r,1/2.4)-.055:12.92*r,n=n&gt;.0031308?1.055*Math.pow(n,1/2.4)-.055:12.92*n,[255*(e=Math.min(Math.max(0,e),1)),255*(r=Math.min(Math.max(0,r),1)),255*(n=Math.min(Math.max(0,n),1))]},i.xyz.lab=function(t){var e=t[0],r=t[1],n=t[2];return r/=100,n/=108.883,e=(e/=95.047)&gt;.008856?Math.pow(e,1/3):7.787*e+16/116,[116*(r=r&gt;.008856?Math.pow(r,1/3):7.787*r+16/116)-16,500*(e-r),200*(r-(n=n&gt;.008856?Math.pow(n,1/3):7.787*n+16/116))]},i.lab.xyz=function(t){var e,r,n,o=t[0];e=t[1]/500+(r=(o+16)/116),n=r-t[2]/200;var a=Math.pow(r,3),i=Math.pow(e,3),l=Math.pow(n,3);return r=a&gt;.008856?a:(r-16/116)/7.787,e=i&gt;.008856?i:(e-16/116)/7.787,n=l&gt;.008856?l:(n-16/116)/7.787,[e*=95.047,r*=100,n*=108.883]},i.lab.lch=function(t){var e,r=t[0],n=t[1],o=t[2];return(e=360*Math.atan2(o,n)/2/Math.PI)&lt;0&amp;&amp;(e+=360),[r,Math.sqrt(n*n+o*o),e]},i.lch.lab=function(t){var e,r=t[0],n=t[1];return e=t[2]/360*2*Math.PI,[r,n*Math.cos(e),n*Math.sin(e)]},i.rgb.ansi16=function(t){var e=t[0],r=t[1],n=t[2],o=1 in arguments?arguments[1]:i.rgb.hsv(t)[2];if(0===(o=Math.round(o/50)))return 30;var a=30+(Math.round(n/255)&lt;&lt;2|Math.round(r/255)&lt;&lt;1|Math.round(e/255));return 2===o&amp;&amp;(a+=60),a},i.hsv.ansi16=function(t){return i.rgb.ansi16(i.hsv.rgb(t),t[2])},i.rgb.ansi256=function(t){var e=t[0],r=t[1],n=t[2];return e===r&amp;&amp;r===n?e&lt;8?16:e&gt;248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(n/255*5)},i.ansi16.rgb=function(t){var e=t%10;if(0===e||7===e)return t&gt;50&amp;&amp;(e+=3.5),[e=e/10.5*255,e,e];var r=.5*(1+~~(t&gt;50));return[(1&amp;e)*r*255,(e&gt;&gt;1&amp;1)*r*255,(e&gt;&gt;2&amp;1)*r*255]},i.ansi256.rgb=function(t){if(t&gt;=232){var e=10*(t-232)+8;return[e,e,e]}var r;return t-=16,[Math.floor(t/36)/5*255,Math.floor((r=t%36)/6)/5*255,r%6/5*255]},i.rgb.hex=function(t){var e=(((255&amp;Math.round(t[0]))&lt;&lt;16)+((255&amp;Math.round(t[1]))&lt;&lt;8)+(255&amp;Math.round(t[2]))).toString(16).toUpperCase();return"000000".substring(e.length)+e},i.hex.rgb=function(t){var e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];var r=e[0];3===e[0].length&amp;&amp;(r=r.split("").map(function(t){return t+t}).join(""));var n=parseInt(r,16);return[n&gt;&gt;16&amp;255,n&gt;&gt;8&amp;255,255&amp;n]},i.rgb.hcg=function(t){var e,r=t[0]/255,n=t[1]/255,o=t[2]/255,a=Math.max(Math.max(r,n),o),i=Math.min(Math.min(r,n),o),l=a-i;return e=l&lt;=0?0:a===r?(n-o)/l%6:a===n?2+(o-r)/l:4+(r-n)/l+4,e/=6,[360*(e%=1),100*l,100*(l&lt;1?i/(1-l):0)]},i.hsl.hcg=function(t){var e,r=t[1]/100,n=t[2]/100,o=0;return(e=n&lt;.5?2*r*n:2*r*(1-n))&lt;1&amp;&amp;(o=(n-.5*e)/(1-e)),[t[0],100*e,100*o]},i.hsv.hcg=function(t){var e=t[1]/100,r=t[2]/100,n=e*r,o=0;return n&lt;1&amp;&amp;(o=(r-n)/(1-n)),[t[0],100*n,100*o]},i.hcg.rgb=function(t){var e=t[0]/360,r=t[1]/100,n=t[2]/100;if(0===r)return[255*n,255*n,255*n];var o,a=[0,0,0],i=e%1*6,l=i%1,u=1-l;switch(Math.floor(i)){case 0:a[0]=1,a[1]=l,a[2]=0;break;case 1:a[0]=u,a[1]=1,a[2]=0;break;case 2:a[0]=0,a[1]=1,a[2]=l;break;case 3:a[0]=0,a[1]=u,a[2]=1;break;case 4:a[0]=l,a[1]=0,a[2]=1;break;default:a[0]=1,a[1]=0,a[2]=u}return o=(1-r)*n,[255*(r*a[0]+o),255*(r*a[1]+o),255*(r*a[2]+o)]},i.hcg.hsv=function(t){var e=t[1]/100,r=e+t[2]/100*(1-e),n=0;return r&gt;0&amp;&amp;(n=e/r),[t[0],100*n,100*r]},i.hcg.hsl=function(t){var e=t[1]/100,r=t[2]/100*(1-e)+.5*e,n=0;return r&gt;0&amp;&amp;r&lt;.5?n=e/(2*r):r&gt;=.5&amp;&amp;r&lt;1&amp;&amp;(n=e/(2*(1-r))),[t[0],100*n,100*r]},i.hcg.hwb=function(t){var e=t[1]/100,r=e+t[2]/100*(1-e);return[t[0],100*(r-e),100*(1-r)]},i.hwb.hcg=function(t){var e=t[1]/100,r=1-t[2]/100,n=r-e,o=0;return n&lt;1&amp;&amp;(o=(r-n)/(1-n)),[t[0],100*n,100*o]},i.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]},i.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]},i.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]},i.gray.hsl=i.gray.hsv=function(t){return[0,0,t[0]]},i.gray.hwb=function(t){return[0,100,t[0]]},i.gray.cmyk=function(t){return[0,0,0,t[0]]},i.gray.lab=function(t){return[t[0],0,0]},i.gray.hex=function(t){var e=255&amp;Math.round(t[0]/100*255),r=((e&lt;&lt;16)+(e&lt;&lt;8)+e).toString(16).toUpperCase();return"000000".substring(r.length)+r},i.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}},156(t){"use strict";t.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},195(t){t.exports=function(t){return!(!t||"string"==typeof t)&amp;&amp;(t instanceof Array||Array.isArray(t)||t.length&gt;=0&amp;&amp;(t.splice instanceof Function||Object.getOwnPropertyDescriptor(t,t.length-1)&amp;&amp;"String"!==t.constructor.name))}},507(t,e,r){var n=r(40);function o(t,e){return function(r){return e(t(r))}}function a(t,e){for(var r=[e[t].parent,t],a=n[e[t].parent][t],i=e[t].parent;e[i].parent;)r.unshift(e[i].parent),a=o(n[e[i].parent][i],a),i=e[i].parent;return a.conversion=r,a}t.exports=function(t){for(var e=function(t){var e=function(){for(var t={},e=Object.keys(n),r=e.length,o=0;o&lt;r;o++)t[e[o]]={distance:-1,parent:null};return t}(),r=[t];for(e[t].distance=0;r.length;)for(var o=r.pop(),a=Object.keys(n[o]),i=a.length,l=0;l&lt;i;l++){var u=a[l],s=e[u];-1===s.distance&amp;&amp;(s.distance=e[o].distance+1,s.parent=o,r.unshift(u))}return e}(t),r={},o=Object.keys(e),i=o.length,l=0;l&lt;i;l++){var u=o[l];null!==e[u].parent&amp;&amp;(r[u]=a(u,e))}return r}},520(t,e,r){"use strict";var n=r(854),o=r(734),a=[].slice,i=["keyword","gray","hex"],l={};Object.keys(o).forEach(function(t){l[a.call(o[t].labels).sort().join("")]=t});var u={};function s(t,e){if(!(this instanceof s))return new s(t,e);if(e&amp;&amp;e in i&amp;&amp;(e=null),e&amp;&amp;!(e in o))throw new Error("Unknown model: "+e);var r,c;if(null==t)this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(t instanceof s)this.model=t.model,this.color=t.color.slice(),this.valpha=t.valpha;else if("string"==typeof t){var h=n.get(t);if(null===h)throw new Error("Unable to parse color from string: "+t);this.model=h.model,c=o[this.model].channels,this.color=h.value.slice(0,c),this.valpha="number"==typeof h.value[c]?h.value[c]:1}else if(t.length){this.model=e||"rgb",c=o[this.model].channels;var g=a.call(t,0,c);this.color=f(g,c),this.valpha="number"==typeof t[c]?t[c]:1}else if("number"==typeof t)t&amp;=16777215,this.model="rgb",this.color=[t&gt;&gt;16&amp;255,t&gt;&gt;8&amp;255,255&amp;t],this.valpha=1;else{this.valpha=1;var d=Object.keys(t);"alpha"in t&amp;&amp;(d.splice(d.indexOf("alpha"),1),this.valpha="number"==typeof t.alpha?t.alpha:0);var b=d.sort().join("");if(!(b in l))throw new Error("Unable to parse color from object: "+JSON.stringify(t));this.model=l[b];var y=o[this.model].labels,p=[];for(r=0;r&lt;y.length;r++)p.push(t[y[r]]);this.color=f(p)}if(u[this.model])for(c=o[this.model].channels,r=0;r&lt;c;r++){var m=u[this.model][r];m&amp;&amp;(this.color[r]=m(this.color[r]))}this.valpha=Math.max(0,Math.min(1,this.valpha)),Object.freeze&amp;&amp;Object.freeze(this)}function c(t,e,r){return(t=Array.isArray(t)?t:[t]).forEach(function(t){(u[t]||(u[t]=[]))[e]=r}),t=t[0],function(n){var o;return arguments.length?(r&amp;&amp;(n=r(n)),(o=this[t]()).color[e]=n,o):(o=this[t]().color[e],r&amp;&amp;(o=r(o)),o)}}function h(t){return function(e){return Math.max(0,Math.min(t,e))}}function f(t,e){for(var r=0;r&lt;e;r++)"number"!=typeof t[r]&amp;&amp;(t[r]=0);return t}s.prototype={toString:function(){return this.string()},toJSON:function(){return this[this.model]()},string:function(t){var e=this.model in n.to?this:this.rgb(),r=1===(e=e.round("number"==typeof t?t:1)).valpha?e.color:e.color.concat(this.valpha);return n.to[e.model](r)},percentString:function(t){var e=this.rgb().round("number"==typeof t?t:1),r=1===e.valpha?e.color:e.color.concat(this.valpha);return n.to.rgb.percent(r)},array:function(){return 1===this.valpha?this.color.slice():this.color.concat(this.valpha)},object:function(){for(var t={},e=o[this.model].channels,r=o[this.model].labels,n=0;n&lt;e;n++)t[r[n]]=this.color[n];return 1!==this.valpha&amp;&amp;(t.alpha=this.valpha),t},unitArray:function(){var t=this.rgb().color;return t[0]/=255,t[1]/=255,t[2]/=255,1!==this.valpha&amp;&amp;t.push(this.valpha),t},unitObject:function(){var t=this.rgb().object();return t.r/=255,t.g/=255,t.b/=255,1!==this.valpha&amp;&amp;(t.alpha=this.valpha),t},round:function(t){return t=Math.max(t||0,0),new s(this.color.map(function(t){return function(e){return function(t,e){return Number(t.toFixed(e))}(e,t)}}(t)).concat(this.valpha),this.model)},alpha:function(t){return arguments.length?new s(this.color.concat(Math.max(0,Math.min(1,t))),this.model):this.valpha},red:c("rgb",0,h(255)),green:c("rgb",1,h(255)),blue:c("rgb",2,h(255)),hue:c(["hsl","hsv","hsl","hwb","hcg"],0,function(t){return(t%360+360)%360}),saturationl:c("hsl",1,h(100)),lightness:c("hsl",2,h(100)),saturationv:c("hsv",1,h(100)),value:c("hsv",2,h(100)),chroma:c("hcg",1,h(100)),gray:c("hcg",2,h(100)),white:c("hwb",1,h(100)),wblack:c("hwb",2,h(100)),cyan:c("cmyk",0,h(100)),magenta:c("cmyk",1,h(100)),yellow:c("cmyk",2,h(100)),black:c("cmyk",3,h(100)),x:c("xyz",0,h(100)),y:c("xyz",1,h(100)),z:c("xyz",2,h(100)),l:c("lab",0,h(100)),a:c("lab",1),b:c("lab",2),keyword:function(t){return arguments.length?new s(t):o[this.model].keyword(this.color)},hex:function(t){return arguments.length?new s(t):n.to.hex(this.rgb().round().color)},rgbNumber:function(){var t=this.rgb().color;return(255&amp;t[0])&lt;&lt;16|(255&amp;t[1])&lt;&lt;8|255&amp;t[2]},luminosity:function(){for(var t=this.rgb().color,e=[],r=0;r&lt;t.length;r++){var n=t[r]/255;e[r]=n&lt;=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4)}return.2126*e[0]+.7152*e[1]+.0722*e[2]},contrast:function(t){var e=this.luminosity(),r=t.luminosity();return e&gt;r?(e+.05)/(r+.05):(r+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e&gt;=7.1?"AAA":e&gt;=4.5?"AA":""},isDark:function(){var t=this.rgb().color;return(299*t[0]+587*t[1]+114*t[2])/1e3&lt;128},isLight:function(){return!this.isDark()},negate:function(){for(var t=this.rgb(),e=0;e&lt;3;e++)t.color[e]=255-t.color[e];return t},lighten:function(t){var e=this.hsl();return e.color[2]+=e.color[2]*t,e},darken:function(t){var e=this.hsl();return e.color[2]-=e.color[2]*t,e},saturate:function(t){var e=this.hsl();return e.color[1]+=e.color[1]*t,e},desaturate:function(t){var e=this.hsl();return e.color[1]-=e.color[1]*t,e},whiten:function(t){var e=this.hwb();return e.color[1]+=e.color[1]*t,e},blacken:function(t){var e=this.hwb();return e.color[2]+=e.color[2]*t,e},grayscale:function(){var t=this.rgb().color,e=.3*t[0]+.59*t[1]+.11*t[2];return s.rgb(e,e,e)},fade:function(t){return this.alpha(this.valpha-this.valpha*t)},opaquer:function(t){return this.alpha(this.valpha+this.valpha*t)},rotate:function(t){var e=this.hsl(),r=e.color[0];return r=(r=(r+t)%360)&lt;0?360+r:r,e.color[0]=r,e},mix:function(t,e){if(!t||!t.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof t);var r=t.rgb(),n=this.rgb(),o=void 0===e?.5:e,a=2*o-1,i=r.alpha()-n.alpha(),l=((a*i===-1?a:(a+i)/(1+a*i))+1)/2,u=1-l;return s.rgb(l*r.red()+u*n.red(),l*r.green()+u*n.green(),l*r.blue()+u*n.blue(),r.alpha()*o+n.alpha()*(1-o))}},Object.keys(o).forEach(function(t){if(-1===i.indexOf(t)){var e=o[t].channels;s.prototype[t]=function(){if(this.model===t)return new s(this);if(arguments.length)return new s(arguments,t);var r,n="number"==typeof arguments[e]?e:this.valpha;return new s((r=o[this.model][t].raw(this.color),Array.isArray(r)?r:[r]).concat(n),t)},s[t]=function(r){return"number"==typeof r&amp;&amp;(r=f(a.call(arguments),e)),new s(r,t)}}}),t.exports=s},734(t,e,r){var n=r(40),o=r(507),a={};Object.keys(n).forEach(function(t){a[t]={},Object.defineProperty(a[t],"channels",{value:n[t].channels}),Object.defineProperty(a[t],"labels",{value:n[t].labels});var e=o(t);Object.keys(e).forEach(function(r){var n=e[r];a[t][r]=function(t){var e=function(e){if(null==e)return e;arguments.length&gt;1&amp;&amp;(e=Array.prototype.slice.call(arguments));var r=t(e);if("object"==typeof r)for(var n=r.length,o=0;o&lt;n;o++)r[o]=Math.round(r[o]);return r};return"conversion"in t&amp;&amp;(e.conversion=t.conversion),e}(n),a[t][r].raw=function(t){var e=function(e){return null==e?e:(arguments.length&gt;1&amp;&amp;(e=Array.prototype.slice.call(arguments)),t(e))};return"conversion"in t&amp;&amp;(e.conversion=t.conversion),e}(n)})}),t.exports=a},854(t,e,r){var n=r(156),o=r(872),a=Object.hasOwnProperty,i=Object.create(null);for(var l in n)a.call(n,l)&amp;&amp;(i[n[l]]=l);var u=t.exports={to:{},get:{}};function s(t,e,r){return Math.min(Math.max(e,t),r)}function c(t){var e=Math.round(t).toString(16).toUpperCase();return e.length&lt;2?"0"+e:e}u.get=function(t){var e,r;switch(t.substring(0,3).toLowerCase()){case"hsl":e=u.get.hsl(t),r="hsl";break;case"hwb":e=u.get.hwb(t),r="hwb";break;default:e=u.get.rgb(t),r="rgb"}return e?{model:r,value:e}:null},u.get.rgb=function(t){if(!t)return null;var e,r,o,i=[0,0,0,1];if(e=t.match(/^#([a-f0-9]{6})([a-f0-9]{2})?$/i)){for(o=e[2],e=e[1],r=0;r&lt;3;r++){var l=2*r;i[r]=parseInt(e.slice(l,l+2),16)}o&amp;&amp;(i[3]=parseInt(o,16)/255)}else if(e=t.match(/^#([a-f0-9]{3,4})$/i)){for(o=(e=e[1])[3],r=0;r&lt;3;r++)i[r]=parseInt(e[r]+e[r],16);o&amp;&amp;(i[3]=parseInt(o+o,16)/255)}else if(e=t.match(/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)){for(r=0;r&lt;3;r++)i[r]=parseInt(e[r+1],0);e[4]&amp;&amp;(e[5]?i[3]=.01*parseFloat(e[4]):i[3]=parseFloat(e[4]))}else{if(!(e=t.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)))return(e=t.match(/^(\w+)$/))?"transparent"===e[1]?[0,0,0,0]:a.call(n,e[1])?((i=n[e[1]])[3]=1,i):null:null;for(r=0;r&lt;3;r++)i[r]=Math.round(2.55*parseFloat(e[r+1]));e[4]&amp;&amp;(e[5]?i[3]=.01*parseFloat(e[4]):i[3]=parseFloat(e[4]))}for(r=0;r&lt;3;r++)i[r]=s(i[r],0,255);return i[3]=s(i[3],0,1),i},u.get.hsl=function(t){if(!t)return null;var e=t.match(/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(e){var r=parseFloat(e[4]);return[(parseFloat(e[1])%360+360)%360,s(parseFloat(e[2]),0,100),s(parseFloat(e[3]),0,100),s(isNaN(r)?1:r,0,1)]}return null},u.get.hwb=function(t){if(!t)return null;var e=t.match(/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(e){var r=parseFloat(e[4]);return[(parseFloat(e[1])%360+360)%360,s(parseFloat(e[2]),0,100),s(parseFloat(e[3]),0,100),s(isNaN(r)?1:r,0,1)]}return null},u.to.hex=function(){var t=o(arguments);return"#"+c(t[0])+c(t[1])+c(t[2])+(t[3]&lt;1?c(Math.round(255*t[3])):"")},u.to.rgb=function(){var t=o(arguments);return t.length&lt;4||1===t[3]?"rgb("+Math.round(t[0])+", "+Math.round(t[1])+", "+Math.round(t[2])+")":"rgba("+Math.round(t[0])+", "+Math.round(t[1])+", "+Math.round(t[2])+", "+t[3]+")"},u.to.rgb.percent=function(){var t=o(arguments),e=Math.round(t[0]/255*100),r=Math.round(t[1]/255*100),n=Math.round(t[2]/255*100);return t.length&lt;4||1===t[3]?"rgb("+e+"%, "+r+"%, "+n+"%)":"rgba("+e+"%, "+r+"%, "+n+"%, "+t[3]+")"},u.to.hsl=function(){var t=o(arguments);return t.length&lt;4||1===t[3]?"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)":"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+t[3]+")"},u.to.hwb=function(){var t=o(arguments),e="";return t.length&gt;=4&amp;&amp;1!==t[3]&amp;&amp;(e=", "+t[3]),"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+e+")"},u.to.keyword=function(t){return i[t.slice(0,3)]}},872(t,e,r){"use strict";var n=r(195),o=Array.prototype.concat,a=Array.prototype.slice,i=t.exports=function(t){for(var e=[],r=0,i=t.length;r&lt;i;r++){var l=t[r];n(l)?e=o.call(e,a.call(l)):e.push(l)}return e};i.wrap=function(t){return function(){return t(i(arguments))}}}},e={};function r(n){var o=e[n];if(void 0!==o)return o.exports;var a=e[n]={exports:{}};return t[n](a,a.exports,r),a.exports}r.n=t=&gt;{var e=t&amp;&amp;t.__esModule?()=&gt;t.default:()=&gt;t;return r.d(e,{a:e}),e},r.d=(t,e)=&gt;{for(var n in e)r.o(e,n)&amp;&amp;!r.o(t,n)&amp;&amp;Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=&gt;Object.prototype.hasOwnProperty.call(t,e),r.r=t=&gt;{"undefined"!=typeof Symbol&amp;&amp;Symbol.toStringTag&amp;&amp;Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};return(()=&gt;{"use strict";r.r(n),r.d(n,{convertBg:()=&gt;Be,extend:()=&gt;De,getContrast:()=&gt;Ae,init:()=&gt;Ee,run:()=&gt;Pe,updateStyle:()=&gt;Te});var t={};r.r(t),r.d(t,{color:()=&gt;Yt,colorBurn:()=&gt;Ht,colorDodge:()=&gt;zt,darken:()=&gt;Vt,difference:()=&gt;Qt,exclusion:()=&gt;Gt,hardLight:()=&gt;Jt,hue:()=&gt;Wt,lighten:()=&gt;Kt,luminosity:()=&gt;Zt,multiply:()=&gt;qt,normal:()=&gt;It,overlay:()=&gt;$t,saturation:()=&gt;Xt,screen:()=&gt;Rt,softLight:()=&gt;Ut});var e="(prefers-color-scheme: dark)",o="js_darkmode__",a=new RegExp("".concat(o,"\\d+")),i="data_color_scheme_dark",l="".concat(1*new Date).concat(Math.round(10*Math.random())),u="data-darkmode-color-".concat(l),s="data-darkmode-bgcolor-".concat(l),c="data-darkmode-original-color-".concat(l),h="data-darkmode-original-bgcolor-".concat(l),f="data-darkmode-bgimage-".concat(l),g="data-darkmode-complementary-bgimagecolor-".concat(l),d="|",b=.05,y=window.getInnerHeight&amp;&amp;window.getInnerHeight()||window.innerHeight||document.documentElement.clientHeight,p={BG_COLOR:["background-color","background-image","background"],TEXT_SHADOW:["text-shadow"],TEXT_COLOR:["-webkit-text-stroke","-webkit-text-stroke-color","text-decoration","text-decoration-color","text-emphasis-color","color","-webkit-text-fill-color"],BORDER_COLOR:["border-image","-webkit-border-image","border","border-top","border-right","border-bottom","border-left","border-color","border-top-color","border-right-color","border-bottom-color","border-left-color","border-block-color","border-block-start-color","border-block-end-color","border-inline-color","border-inline-start-color","border-inline-end-color","outline","outline-color","box-shadow","column-rule","column-rule-color"]},m=Object.keys(p).map(function(t){return p[t].join("|")}).join("|").split("|"),v=["TABLE","TR","TD","TH"],w=/ !important$/,k=/&lt;\$#_SEMICOLON_#\$&gt;/g,x=/\brgba?\([^)]+\)/i,M=/\brgba?\([^)]+\)/gi;const C={hasInit:!1,begin:null,showFirstPage:null,error:null,mode:"",whitelist:{tagName:["MPCPS","IFRAME"],attribute:[]},needJudgeFirstPage:!0,delayBgJudge:!1,container:null,cssSelectorsPrefix:"",defaultLightTextColor:"#191919",defaultLightBgColor:"#fff",defaultDarkTextColor:"#a3a3a3",defaultDarkBgColor:"#191919",set:function(t,e,r){var n=e[r];switch(t){case"boolean":"boolean"==typeof n&amp;&amp;(this[r]=n);break;case"string":"string"==typeof n&amp;&amp;""!==n&amp;&amp;(this[r]=n);break;case"function":"function"==typeof n&amp;&amp;(this[r]=n);break;case"dom":n instanceof HTMLElement&amp;&amp;(this[r]=n)}}};function S(t,e,r){return(e=E(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function _(t){return _="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&amp;&amp;"function"==typeof Symbol&amp;&amp;t.constructor===Symbol&amp;&amp;t!==Symbol.prototype?"symbol":typeof t},_(t)}function O(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function j(t,e){for(var r=0;r&lt;e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&amp;&amp;(n.writable=!0),Object.defineProperty(t,E(n.key),n)}}function P(t,e,r){return e&amp;&amp;j(t.prototype,e),r&amp;&amp;j(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t}function E(t){var e=function(t){if("object"!=_(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=_(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==_(e)?e:e+""}var B=[],T=[],A=function(){return P(function t(){O(this,t)},[{key:"loopTimes",get:function(){return ve.loopTimes}},{key:"isDarkmode",get:function(){return Ce.isDarkmode}},{key:"addCss",value:function(t,e){(arguments.length&gt;2&amp;&amp;void 0!==arguments[2]&amp;&amp;!arguments[2]?T:B).push(xe.genCss(t,e.map(function(t){var e=t.key,r=t.value;return xe.genCssKV(e,r)}).join("")))}}])}(),D=function(){return P(function t(){O(this,t),S(this,"_plugins",[]),S(this,"length",0),S(this,"loopTimes",0),S(this,"firstPageStyle",""),S(this,"otherPageStyle",""),S(this,"firstPageStyleNoMQ",""),S(this,"otherPageStyleNoMQ","")},[{key:"extend",value:function(t){this._plugins.push(new(t(A))),this.length++}},{key:"emit",value:function(t){for(var e=arguments.length,r=new Array(e&gt;1?e-1:0),n=1;n&lt;e;n++)r[n-1]=arguments[n];this._plugins.forEach(function(e){"function"==typeof e[t]&amp;&amp;e[t].apply(e,r)})}},{key:"addCss",value:function(t){t?(this.firstPageStyle+=B.join(""),this.firstPageStyleNoMQ+=T.join("")):(this.otherPageStyle+=B.join(""),this.otherPageStyleNoMQ+=T.join(""))}},{key:"resetCss",value:function(){B=[],T=[]}}])}();function F(t){return F="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&amp;&amp;"function"==typeof Symbol&amp;&amp;t.constructor===Symbol&amp;&amp;t!==Symbol.prototype?"symbol":typeof t},F(t)}function N(t,e){for(var r=0;r&lt;e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&amp;&amp;(n.writable=!0),Object.defineProperty(t,I(n.key),n)}}function L(t,e,r){return(e=I(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function I(t){var e=function(t){if("object"!=F(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=F(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==F(e)?e:e+""}var q=function(){return function(t,e){return e&amp;&amp;N(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}(function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),L(this,"_queue",[]),L(this,"_idx",0),this._prefix=e},[{key:"length",get:function(){return this._queue.length}},{key:"push",value:function(t){var e="".concat(this._prefix).concat(this._idx++);t.classList.add(e),this._queue.push({el:t,className:e,updated:!C.delayBgJudge})}},{key:"forEach",value:function(t){var e=[];for(this._queue.forEach(function(r,n){r.updated&amp;&amp;(e.unshift(n),F(t)&amp;&amp;t(r.el))});e.length;)this._queue.splice(e.shift(),1)}},{key:"update",value:function(t){this._queue.forEach(function(e){e.updated||Array.prototype.some.call(t,function(t){return!(1!==t.nodeType||!t.classList.contains(e.className)||(e.el=t,e.updated=!0,0))})})}}])}();function R(t){return R="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&amp;&amp;"function"==typeof Symbol&amp;&amp;t.constructor===Symbol&amp;&amp;t!==Symbol.prototype?"symbol":typeof t},R(t)}function $(t,e){for(var r=0;r&lt;e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&amp;&amp;(n.writable=!0),Object.defineProperty(t,K(n.key),n)}}function V(t,e,r){return(e=K(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function K(t){var e=function(t){if("object"!=R(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=R(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==R(e)?e:e+""}var z=function(){return function(t,e){return e&amp;&amp;$(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}(function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),V(this,"_stack",[]),V(this,"_idx",0),this._prefix=e,this.classNameReg=new RegExp("".concat(this._prefix,"\\d+"))},[{key:"push",value:function(t,e,r){var n="".concat(this._prefix).concat(this._idx++);t.classList.add(n),this._stack.unshift({elOld:t,el:t,className:n,cssKV:e,updated:!C.delayBgJudge,cb:r})}},{key:"contains",value:function(t,e){var r=t.getBoundingClientRect(),n=[];for(this._stack.forEach(function(t,e){if(t.updated){t.rect||(t.rect=t.el.getBoundingClientRect());var o=t.rect;r.top&gt;=o.bottom||r.bottom&lt;=o.top||r.left&gt;=o.right||r.right&lt;=o.left||n.unshift(e)}});n.length;){var o=n.shift(),a=this._stack.splice(o,1)[0];"function"==typeof e&amp;&amp;e(a)}}},{key:"update",value:function(t){this._stack.forEach(function(e){e.updated||Array.prototype.some.call(t,function(t){return!(1!==t.nodeType||!t.classList.contains(e.className)||(e.el=t,e.updated=!0,0))})})}}])}();function H(t){return H="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&amp;&amp;"function"==typeof Symbol&amp;&amp;t.constructor===Symbol&amp;&amp;t!==Symbol.prototype?"symbol":typeof t},H(t)}function J(t,e){(null==e||e&gt;t.length)&amp;&amp;(e=t.length);for(var r=0,n=Array(e);r&lt;e;r++)n[r]=t[r];return n}function U(t,e){for(var r=0;r&lt;e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&amp;&amp;(n.writable=!0),Object.defineProperty(t,G(n.key),n)}}function Q(t,e,r){return(e=G(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function G(t){var e=function(t){if("object"!=H(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=H(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==H(e)?e:e+""}var W=function(){return function(t,e){return e&amp;&amp;U(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}(function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),Q(this,"_firstPageStyle",""),Q(this,"_otherPageStyle",""),Q(this,"_watcher",{}),Q(this,"isFinish",!1)},[{key:"genCssKV",value:function(t,e){var r,n;return null===(r=(n=this._watcher)[t])||void 0===r||r.call(n),"".concat(t,": ").concat(e," !important;")}},{key:"genCss",value:function(t,e){return"".concat("dark"===C.mode?"html.".concat(i," "):"").concat(C.cssSelectorsPrefix&amp;&amp;"".concat(C.cssSelectorsPrefix," "),".").concat(t,"{").concat(e,"}")}},{key:"addCss",value:function(t){var e=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]&amp;&amp;arguments[1];this[e?"_firstPageStyle":"_otherPageStyle"]+=t,ve.addCss(e)}},{key:"writeStyle",value:function(){var t=arguments.length&gt;0&amp;&amp;void 0!==arguments[0]&amp;&amp;arguments[0];!t&amp;&amp;Ce.isDarkmode&amp;&amp;(this.isFinish=!0);var r=(Ce.isDarkmode?[{target:this,key:["_firstPageStyle","_otherPageStyle"],needMediaQuery:!0}]:[]).concat([{target:ve,key:["firstPageStyle","otherPageStyle"],needMediaQuery:!0},{target:ve,key:["firstPageStyleNoMQ","otherPageStyleNoMQ"],needMediaQuery:!1}]).map(function(r){var n=r.target,o=function(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&amp;&amp;t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a,i,l=[],u=!0,s=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&amp;&amp;(l.push(n.value),l.length!==e);u=!0);}catch(t){s=!0,o=t}finally{try{if(!u&amp;&amp;null!=r.return&amp;&amp;(i=r.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(t,e)||function(t,e){if(t){if("string"==typeof t)return J(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&amp;&amp;t.constructor&amp;&amp;(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?J(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(r.key,2),a=o[0],i=o[1],l=r.needMediaQuery,u="";t?u=a:(n[i]=n[a]+n[i],n[a]="",u=i);var s=n[u];return s?(n[u]="","dark"!==C.mode&amp;&amp;l?"@media ".concat(e," {").concat(s,"}"):s):""}).join("");r&amp;&amp;document.head.insertAdjacentHTML("beforeend",'&lt;style type="text/css"&gt;'.concat(r,"&lt;/style&gt;"))}},{key:"watch",value:function(t,e){this._watcher[t]=e}},{key:"unwatch",value:function(t){delete this._watcher[t]}}])}();function X(t){return X="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&amp;&amp;"function"==typeof Symbol&amp;&amp;t.constructor===Symbol&amp;&amp;t!==Symbol.prototype?"symbol":typeof t},X(t)}function Y(t,e){for(var r=0;r&lt;e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&amp;&amp;(n.writable=!0),Object.defineProperty(t,tt(n.key),n)}}function Z(t,e,r){return(e=tt(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function tt(t){var e=function(t){if("object"!=X(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=X(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==X(e)?e:e+""}function et(t,e){(null==e||e&gt;t.length)&amp;&amp;(e=t.length);for(var r=0,n=Array(e);r&lt;e;r++)n[r]=t[r];return n}function rt(t){var e;return(e=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]&amp;&amp;arguments[1]?[]:[t]).concat.apply(e,function(t){return function(t){if(Array.isArray(t))return et(t)}(t)||function(t){if("undefined"!=typeof Symbol&amp;&amp;null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return et(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&amp;&amp;t.constructor&amp;&amp;(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?et(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(t.querySelectorAll("*")))}var nt={"ue-table-interlace-color-single":"#fcfcfc","ue-table-interlace-color-double":"#f7faff"},ot=function(){return function(t,e){return e&amp;&amp;Y(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}(function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),Z(this,"_els",[]),Z(this,"_firstPageEls",[]),Z(this,"_delayEls",[]),Z(this,"showFirstPage",!1)},[{key:"length",get:function(){return this._els.length}},{key:"set",value:function(){var t=arguments.length&gt;0&amp;&amp;void 0!==arguments[0]?arguments[0]:[];this._els=t}},{key:"get",value:function(){var t=[];return this._els.length?(t=this._els,Ce.isDarkmode&amp;&amp;(this._els=[])):this._delayEls.length?(t=this._delayEls,this._delayEls=[]):C.container&amp;&amp;(t=C.container.querySelectorAll("*")),t}},{key:"delay",value:function(){var t=this;Array.prototype.forEach.call(this._els,function(e){return t._delayEls.push(e)}),this._els=[]}},{key:"hasDelay",value:function(){return!this._els.length&amp;&amp;(this._delayEls.length&gt;0||null!==C.container)}},{key:"addFirstPageNode",value:function(t){this._firstPageEls.push(t)}},{key:"showFirstPageNodes",value:function(){this._firstPageEls.forEach(function(t){return!t.style.visibility&amp;&amp;(t.style.visibility="visible")}),this.showFirstPage=!0}},{key:"emptyFirstPageNodes",value:function(){this._firstPageEls=[]}}])}(),at=r(520),it=r.n(at),lt=r(156),ut=r.n(lt);function st(t,e,r){return{r:255*r(t.r/255,e.r/255),g:255*r(t.g/255,e.g/255),b:255*r(t.b/255,e.b/255)}}function ct(t,e){return e}function ht(t,e){return t*e}function ft(t,e){return t+e-t*e}function gt(t,e){return mt(e,t)}function dt(t,e){return Math.min(t,e)}function bt(t,e){return Math.min(Math.max(t,e),1)}function yt(t,e){return 0===t?0:1===e?1:Math.min(1,t/(1-e))}function pt(t,e){return 1===t?1:0===e?0:1-Math.min(1,(1-t)/e)}function mt(t,e){return e&lt;=.5?ht(t,2*e):ft(t,2*e-1)}function vt(t,e){return e&lt;=.5?t-(1-2*e)*t*(1-t):t+(2*e-1)*((t&lt;=.25?((16*t-12)*t+4)*t:Math.sqrt(t))-t)}function wt(t,e){return Math.abs(t-e)}function kt(t,e){return t+e-2*t*e}function xt(t,e,r){return Math.min(Math.max(t||0,e),r)}function Mt(t){return{r:xt(t.r,0,255),g:xt(t.g,0,255),b:xt(t.b,0,255),a:xt(t.a,0,1)}}function Ct(t){return{r:255*t.r,g:255*t.g,b:255*t.b,a:t.a}}function St(t){return{r:t.r/255,g:t.g/255,b:t.b/255,a:t.a}}function _t(t,e){void 0===e&amp;&amp;(e=0);var r=Math.pow(10,e);return{r:Math.round(t.r*r)/r,g:Math.round(t.g*r)/r,b:Math.round(t.b*r)/r,a:t.a}}function Ot(t,e,r,n,o,a){return(1-e/r)*n+e/r*Math.round((1-t)*o+t*a)}function jt(t,e,r,n,o){void 0===o&amp;&amp;(o={unitInput:!1,unitOutput:!1,roundOutput:!0}),o.unitInput&amp;&amp;(t=Ct(t),e=Ct(e)),t=Mt(t);var a=(e=Mt(e)).a+t.a-e.a*t.a,i=r(t,e,n),l=Mt({r:Ot(t.a,e.a,a,t.r,e.r,i.r),g:Ot(t.a,e.a,a,t.g,e.g,i.g),b:Ot(t.a,e.a,a,t.b,e.b,i.b),a});return l=o.unitOutput?St(l):o.roundOutput?_t(l):function(t){return _t(t,9)}(l),l}function Pt(t,e,r){return Ct(r(St(t),St(e)))}function Et(t){return.3*t.r+.59*t.g+.11*t.b}function Bt(t,e){var r=e-Et(t);return function(t){var e=Et(t),r=t.r,n=t.g,o=t.b,a=Math.min(r,n,o),i=Math.max(r,n,o);function l(t){return e+(t-e)*e/(e-a)}function u(t){return e+(t-e)*(1-e)/(i-e)}return a&lt;0&amp;&amp;(r=l(r),n=l(n),o=l(o)),i&gt;1&amp;&amp;(r=u(r),n=u(n),o=u(o)),{r,g:n,b:o}}({r:t.r+r,g:t.g+r,b:t.b+r})}function Tt(t){return Math.max(t.r,t.g,t.b)-Math.min(t.r,t.g,t.b)}function At(t,e){var r=["r","g","b"].sort(function(e,r){return t[e]-t[r]}),n=r[0],o=r[1],a=r[2],i={r:t.r,g:t.g,b:t.b};return i[a]&gt;i[n]?(i[o]=(i[o]-i[n])*e/(i[a]-i[n]),i[a]=e):i[o]=i[a]=0,i[n]=0,i}function Dt(t,e){return Bt(At(e,Tt(t)),Et(t))}function Ft(t,e){return Bt(At(t,Tt(e)),Et(t))}function Nt(t,e){return Bt(e,Et(t))}function Lt(t,e){return Bt(t,Et(e))}function It(t,e){return jt(t,e,st,ct)}function qt(t,e){return jt(t,e,st,ht)}function Rt(t,e){return jt(t,e,st,ft)}function $t(t,e){return jt(t,e,st,gt)}function Vt(t,e){return jt(t,e,st,dt)}function Kt(t,e){return jt(t,e,st,bt)}function zt(t,e){return jt(t,e,st,yt)}function Ht(t,e){return jt(t,e,st,pt)}function Jt(t,e){return jt(t,e,st,mt)}function Ut(t,e){return jt(t,e,st,vt)}function Qt(t,e){return jt(t,e,st,wt)}function Gt(t,e){return jt(t,e,st,kt)}function Wt(t,e){return jt(t,e,Pt,Dt)}function Xt(t,e){return jt(t,e,Pt,Ft)}function Yt(t,e){return jt(t,e,Pt,Nt)}function Zt(t,e){return jt(t,e,Pt,Lt)}ut().windowtext=[0,0,0],ut().transparent=[255,255,255,0];var te=new RegExp(Object.keys(ut()).map(function(t){return"\\b".concat(t,"\\b")}).join("|"),"ig"),ee=function(t){var e=t.object();return e.a=e.alpha||1,delete e.alpha,e},re=function(t){return t.alpha=t.a,delete t.a,ne(t)},ne=function(t){var e=null;try{e=t instanceof it()?t:it()(t)}catch(e){console.log("ignore the invalid color: `".concat(t,"`"))}return e},oe=function(t,e){return t.replace(w,"").replace(te,function(t){if(!e&amp;&amp;"transparent"===t)return t;var r=ut()[t.toLowerCase()];return"".concat(r.length&gt;3?"rgba":"rgb","(").concat(r.toString(),")")})},ae=function(t){var e=oe(t);return x.test(e)?e:""},ie=function(e){var r=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]?arguments[1]:"mix";if("[object Array]"!==Object.prototype.toString.call(e)||e.length&lt;1)return null;if(1===e.length)return e[0];for(var n=ne(e.shift()),o=ne(e.shift());o;){if(!n&amp;&amp;o)n=o;else if(n||o)n&amp;&amp;o&amp;&amp;(n="mix"===r?n.mix(o,o.alpha()):re(t[r](ee(n),ee(o))));else{if(0===e.length)break;n=ne(e.shift())}if(0===e.length)break;o=ne(e.shift())}return n||null},le=function(t){return(299*t[0]+587*t[1]+114*t[2])/1e3},ue=function(t,e){var r=t/le(e),n=Math.min(255,e[0]*r),o=Math.min(255,e[1]*r),a=Math.min(255,e[2]*r);return 0===o||255===n||255===a?o=(1e3*t-299*n-114*a)/587:0===n?n=(1e3*t-587*o-114*a)/299:0!==a&amp;&amp;255!==o||(a=(1e3*t-299*n-587*o)/114),it().rgb(n,o,a)};function se(t){return se="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&amp;&amp;"function"==typeof Symbol&amp;&amp;t.constructor===Symbol&amp;&amp;t!==Symbol.prototype?"symbol":typeof t},se(t)}function ce(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&amp;&amp;t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a,i,l=[],u=!0,s=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&amp;&amp;(l.push(n.value),l.length!==e);u=!0);}catch(t){s=!0,o=t}finally{try{if(!u&amp;&amp;null!=r.return&amp;&amp;(i=r.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(t,e)||fe(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function he(t){return function(t){if(Array.isArray(t))return ge(t)}(t)||function(t){if("undefined"!=typeof Symbol&amp;&amp;null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||fe(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function fe(t,e){if(t){if("string"==typeof t)return ge(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&amp;&amp;t.constructor&amp;&amp;(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?ge(t,e):void 0}}function ge(t,e){(null==e||e&gt;t.length)&amp;&amp;(e=t.length);for(var r=0,n=Array(e);r&lt;e;r++)n[r]=t[r];return n}function de(t,e){for(var r=0;r&lt;e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&amp;&amp;(n.writable=!0),Object.defineProperty(t,ye(n.key),n)}}function be(t,e,r){return(e=ye(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function ye(t){var e=function(t){if("object"!=se(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=se(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==se(e)?e:e+""}var pe=function(t,e){var r=/^background/.test(t),n=/^(-webkit-)?border-image/.test(t);return(r||n)&amp;&amp;/url\([^)]*\)/i.test(e)},me=function(){return function(t,e){return e&amp;&amp;de(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}(function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),be(this,"_idx",0),be(this,"_defaultDarkTextColorRgb",null),be(this,"_defaultDarkBgColorRgb",null),be(this,"_defaultDarkBgColorHSL",null),be(this,"_defaultDarkTextColorBrightness",null),be(this,"_defaultDarkBgColorBrightness",null),be(this,"_defaultDarkBgColorHslBrightness",null),be(this,"_maxLimitOffsetBrightness",null),be(this,"isDarkmode",!1)},[{key:"_adjustBrightness",value:function(t,e,r,n,o){var a,i=t.alpha(),l="";if(r.isBgColor){if(i&gt;=b&amp;&amp;(e[f]&amp;&amp;delete e[f],e[g])){if(e[g]===t.toString()||this.getContrast(e[g],t.toString())&lt;1.1)return{newColor:o?t.toString():"",extStyle:l};rt(e).forEach(function(t){delete t[g]})}if(a=this._adjustBackgroundBrightness(t),!r.hasInlineColor){var h=e[c]||C.defaultLightTextColor,d=ne(h);if(d){var y=this._adjustBrightness(d,e,{isTextColor:!0,parentElementBgColorStr:a||t},n,o);l+=xe.genCssKV("color",y.newColor||d),rt(e).forEach(function(t){t[u]=y.newColor||d,t[c]=d})}}}else if(r.isTextColor||r.isBorderColor){var p=r.parentElementBgColorStr||r.isTextColor&amp;&amp;e[s]||C.defaultDarkBgColor,m=ne(p);if(m&amp;&amp;!e[f]){a=this._adjustTextBrightness(t,m);var v="";n?v="ByUpdateStyle":o&amp;&amp;(v="ByReset"),ve.emit("afterConvertTextColor".concat(v),e,{fontColor:a,bgColor:m})}}else r.isTextShadow&amp;&amp;(e[f]||(a=this._adjustBackgroundBrightness(t)));return{newColor:a&amp;&amp;t.toString()!==a.toString()&amp;&amp;a.alpha(i).rgb(),extStyle:l}}},{key:"_adjustTextBrightness",value:function(t,e){var r=e.rgb().array(),n=e.alpha(),o=le(r)*n+this._defaultDarkBgColorBrightness*(1-n),a=t.rgb().array(),i=t.hsl().array(),l=t.alpha(),u=le(a),s=Math.abs(o-u);if(u&gt;=250)return t;if(s&gt;this._maxLimitOffsetBrightness&amp;&amp;o&lt;=this._defaultDarkBgColorBrightness+2)return ue(this._maxLimitOffsetBrightness+o,a).alpha(l);if(s&gt;=65)return t;if(o&gt;=100){if(i[2]&gt;50){i[2]=90-i[2];var c=it().hsl.apply(it(),he(i)).alpha(l);return this._adjustTextBrightness(c,e)}return ue(Math.min(this._maxLimitOffsetBrightness,o-65),a).alpha(l)}if(i[2]&lt;=40){i[2]=90-i[2];var h=it().hsl.apply(it(),he(i)).alpha(l);return this._adjustTextBrightness(h,e)}return ue(Math.min(this._maxLimitOffsetBrightness,o+65),a).alpha(l)}},{key:"_adjustBackgroundBrightness",value:function(t){var e=t.rgb().array(),r=t.hsl().array(),n=t.alpha(),o=le(e),a=t;return 0===r[1]&amp;&amp;r[2]&gt;40||o&gt;250?a=it().hsl(0,0,Math.min(100,100+this._defaultDarkBgColorHslBrightness-r[2])):o&gt;190?a=ue(190,e).alpha(n):r[2]&lt;22&amp;&amp;(r[2]=22,a=it().hsl.apply(it(),he(r))),a.alpha(n).rgb()}},{key:"_updateBgWithGradient",value:function(t,e,r,n,o,a,i){var l=ie([e[s]||C.defaultDarkBgColor,t],"normal"),u=(e[h]||C.defaultLightBgColor).split(d).concat(t.toString()).join(d);rt(e).forEach(function(t){t[s]=l,t[h]=u});var c=n.slice(-1)[0];if("color"===c[0]){var f=this._adjustBrightness(ne(oe(c[1])),e,{isBgColor:!1,isTextShadow:!1,isTextColor:!0,isBorderColor:!1,hasInlineColor:o},a,i);if(f.newColor)return xe.genCss(r,xe.genCssKV("color",f.newColor))}return""}},{key:"_try",value:function(t){try{return t()}catch(t){console.log("An error occurred when running the dark mode conversion algorithm\n",t),"function"==typeof C.error&amp;&amp;C.error(t)}}},{key:"init",value:function(){this._defaultDarkTextColorRgb=ne(C.defaultDarkTextColor).rgb().array(),this._defaultDarkBgColorRgb=ne(C.defaultDarkBgColor).rgb().array(),this._defaultDarkBgColorHSL=ne(C.defaultDarkBgColor).hsl().array(),this._defaultDarkTextColorBrightness=le(this._defaultDarkTextColorRgb),this._defaultDarkBgColorBrightness=le(this._defaultDarkBgColorRgb),this._defaultDarkBgColorHslBrightness=this._defaultDarkBgColorHSL[2],this._maxLimitOffsetBrightness=this._defaultDarkTextColorBrightness-this._defaultDarkBgColorBrightness}},{key:"convert",value:function(t,e,r,n){var i=this;ve.resetCss();var l="";r?l="ByUpdateStyle":n&amp;&amp;(l="ByReset"),ve.emit("beforeConvertNode".concat(l),t);var y="",S="";if(this.isDarkmode||r||n){var _=t.nodeName;if(C.whitelist.tagName.indexOf(_)&gt;-1)return"";if(C.whitelist.attribute.some(function(e){return t.hasAttribute(e)}))return"";var O=t.style;e||(e=(O.cssText&amp;&amp;O.cssText.replace(/("[^;]*);([^;]*")|('[^;]*);([^;]*')/g,"$1$3".concat("&lt;$#_SEMICOLON_#$&gt;","$2$4")).split(";")||[]).map(function(t){var e=t.indexOf(":");return[t.slice(0,e).toLowerCase(),t.slice(e+1).replace(k,";")].map(function(t){return(t||"").replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")})}));var j=!1,P=!1,E=!1,B=null,T=null;e=e.filter(function(t){var e=ce(t,2),r=e[0],n=e[1];return"color"===r?j=!0:/background/i.test(r)&amp;&amp;(P=!0,"background-position"===r?B=n:"background-size"===r&amp;&amp;(T=n)),(/background/i.test(r)||/^(-webkit-)?border-image/.test(r))&amp;&amp;/url\([^)]*\)/i.test(n)&amp;&amp;(E=!0),m.indexOf(r)&gt;-1}).sort(function(t,e){var r=ce(t,1)[0],n=ce(e,1)[0];return"color"===r||"background-image"===r&amp;&amp;"background-color"===n||0===n.indexOf("-webkit-text")?1:-1}),v.indexOf(_)&gt;-1&amp;&amp;!P&amp;&amp;this._try(function(){var r=function(t){var e=null;return Array.prototype.some.call(t.classList,function(t){return!!nt[t]&amp;&amp;(e=nt[t],!0)}),e}(t);if(r||(r=t.getAttribute("bgcolor")),r){var n=ne(r);n&amp;&amp;(e.unshift(["background-color",n.toString()]),P=!0)}}),"FONT"!==_||j||this._try(function(){var r=t.getAttribute("color");if(r){var n=ne(r);n&amp;&amp;(e.push(["color",n.toString()]),j=!0)}});var A="",D="",F=0;e.some(function(t,e){var r=ce(t,2),n=r[0],o=r[1];return i._try(function(){if(0!==n.indexOf("-webkit-text"))return F=e,!0;switch(n){case"-webkit-text-fill-color":A=ae(o);break;case"-webkit-text-stroke":var t=o.split(" ");2===t.length&amp;&amp;(D=ae(t[1]));break;case"-webkit-text-stroke-color":D=ae(o)}return!1})}),A&amp;&amp;(j?e[e.length-1]=["-webkit-text-fill-color",A]:(e.push(["-webkit-text-fill-color",A]),j=!0)),F&amp;&amp;(e.splice(0,F),D&amp;&amp;e.unshift(["-webkit-text-stroke-color",D]));var N="",L="";if((r||n)&amp;&amp;t.className&amp;&amp;"string"==typeof t.className){var I=t.className.match(a);I&amp;&amp;(N=I[0]),(I=t.className.match(ke.classNameReg))&amp;&amp;(L=I[0])}var q="",R=n;R&amp;&amp;xe.watch("color",function(){R=!1,xe.unwatch("color")}),e.forEach(function(o){var a=ce(o,2),l=a[0],m=a[1];return i._try(function(){var o,a=m,v=!1,k=p.BG_COLOR.indexOf(l)&gt;-1,_=p.TEXT_SHADOW.indexOf(l)&gt;-1,A=p.TEXT_COLOR.indexOf(l),D=p.BORDER_COLOR.indexOf(l)&gt;-1,F=/gradient/.test(m),N=[],I="";if(m=oe(m,F),x.test(m)){if(F){for(var $=M.exec(m);$;)N.push($[0]),$=M.exec(m);o=ie(N)}var V=0;m=m.replace(M,function(e){F&amp;&amp;(e=o,v=!0);var a=ne(e);if((null==a?void 0:a.alpha())&gt;=b){var l=i._adjustBrightness(a,t,{isBgColor:k,isTextShadow:_,isTextColor:A&gt;-1,isBorderColor:D,hasInlineColor:j},r,n),g=!E&amp;&amp;l.newColor;if(I+=l.extStyle,k||A&gt;=5){var y=g?g.toString():e;0===V&amp;&amp;rt(t).forEach(function(t){k?(t[s]=y,t[h]=(t[h]||C.defaultLightBgColor).split(d).concat(e).join(d)):(t[u]=y,t[c]=e);var r=ne(y);k&amp;&amp;(null==r?void 0:r.alpha())&gt;=b&amp;&amp;t[f]&amp;&amp;delete t[f]})}return g&amp;&amp;(v=!0),V++,g||e}return e}).replace(/\s?!\s?important/gi,"")}if(I&amp;&amp;(q+=I),!(t instanceof SVGElement)&amp;&amp;pe(l,m)){v=!0;var K=ie((t[h]||C.defaultLightBgColor).split(d),"normal").toString();if(m=m.replace(/^(.*?)url\(([^)]*)\)(.*)$/i,function(e){var r=e,o="";return t[f]||rt(t).forEach(function(t){t[f]=!0}),/^background/.test(l)?(o=xe.genCssKV(l,K?"".concat(r,",linear-gradient(").concat(K,", ").concat(K,")"):r),B&amp;&amp;(q+=xe.genCssKV("background-position",B),o+=xe.genCssKV("background-position",K?"".concat(B,",top left"):B)),T&amp;&amp;(q+=xe.genCssKV("background-size",T),o+=xe.genCssKV("background-size",K?"".concat(T,",100%"):T)),n||(L?(S+=xe.genCss(L,o),rt(t).forEach(function(t){t[g]=K||r})):ke.push(t,o,function(t){var e=[t.elOld];t.el!==t.elOld&amp;&amp;e.push(t.el),e.forEach(function(t){rt(t).forEach(function(t){t[g]=K||r})})}))):!K||P||n||(o=xe.genCssKV("background-image","linear-gradient(".concat(K,", ").concat(K,")")),L?S+=xe.genCss(L,o):ke.push(t,o)),r}),!j){var z=t[c]||C.defaultLightTextColor;q+=xe.genCssKV("color",z),rt(t).forEach(function(t){t[u]=z})}}(v||n)&amp;&amp;(!r&amp;&amp;!n&amp;&amp;w.test(a)&amp;&amp;(O[l]=a.replace(w,"")),F?n||(L?(S+=xe.genCss(L,xe.genCssKV(l,m)),/^background/.test(l)&amp;&amp;!/url\([^)]*\)/i.test(m)&amp;&amp;(y+=i._updateBgWithGradient(o,t,L,e,j,r,n))):ke.push(t,xe.genCssKV(l,m),function(a){/^background/.test(l)&amp;&amp;!/url\([^)]*\)/i.test(m)&amp;&amp;(y+=i._updateBgWithGradient(o,t,a.className,e,j,r,n))})):("color"===l&amp;&amp;(R=!1,xe.unwatch("color")),v?q+=xe.genCssKV(l,m):t instanceof SVGElement&amp;&amp;pe(l,m)||(q+=xe.genCssKV(l,t.style[l]))))})}),R&amp;&amp;(q+=xe.genCssKV("color",t.style.color||t[u]||C.defaultDarkTextColor),xe.unwatch("color")),q&amp;&amp;(N||(N="".concat(o).concat(this._idx++),t.classList.add(N)),y+=q?xe.genCss(N,q):""),y+=S,r||!function(t){return t.textContent.replace(/\s/g,"").length&gt;0}(t)||n||(C.delayBgJudge?we.push(t):ke.contains(t,function(t){y+=xe.genCss(t.className,t.cssKV),"function"==typeof t.cb&amp;&amp;t.cb(t)}))}return ve.emit("afterConvertNode".concat(l),t),y}},{key:"getContrast",value:function(t,e){var r=ne(t),n=ne(e);return r&amp;&amp;n?r.contrast(n):0}}])}(),ve=new D,we=new q("".concat(o,"text__")),ke=new z("".concat(o,"bg__")),xe=new W,Me=new ot,Ce=new me;function Se(t,e){(null==e||e&gt;t.length)&amp;&amp;(e=t.length);for(var r=0,n=Array(e);r&lt;e;r++)n[r]=t[r];return n}var _e=new RegExp("".concat(o,"[^ ]+"),"g"),Oe=null,je=function(t){var e=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]?arguments[1]:{type:"dom"};if(e.force&amp;&amp;(xe.isFinish=!1),!xe.isFinish)try{Ce.isDarkmode=C.mode?"dark"===C.mode:t.matches,"dom"===e.type?(Ce.isDarkmode&amp;&amp;"function"==typeof C.begin&amp;&amp;C.begin(Me.hasDelay()),Array.prototype.forEach.call(Me.get(),function(t){if(Ce.isDarkmode&amp;&amp;t.className&amp;&amp;"string"==typeof t.className&amp;&amp;(t.className=t.className.replace(_e,"")),Ce.isDarkmode||ve.length)if(C.needJudgeFirstPage){var e=t.getBoundingClientRect(),r=e.top,n=e.bottom;r&lt;=0&amp;&amp;n&lt;=0?xe.addCss(Ce.convert(t)):r&gt;0&amp;&amp;r&lt;y||n&gt;0&amp;&amp;n&lt;y?(Me.addFirstPageNode(t),xe.addCss(Ce.convert(t),!0)):(C.needJudgeFirstPage=!1,xe.writeStyle(!0),Me.showFirstPageNodes(),"function"==typeof C.showFirstPage&amp;&amp;C.showFirstPage(),xe.addCss(Ce.convert(t)))}else xe.addCss(Ce.convert(t))}),ve.loopTimes++):"bg"===e.type&amp;&amp;Ce.isDarkmode&amp;&amp;we.forEach(function(t){return ke.contains(t,function(t){xe.addCss(xe.genCss(t.className,t.cssKV)),"function"==typeof t.cb&amp;&amp;t.cb(t);var e=[t.elOld];t.elOld!==t.el&amp;&amp;e.push(t.el),e.forEach(function(t){var e,r,n,o,a,i,l=[[u,null!==(e=t[u])&amp;&amp;void 0!==e?e:null],[s,null!==(r=t[s])&amp;&amp;void 0!==r?r:null],[c,null!==(n=t[c])&amp;&amp;void 0!==n?n:null],[h,null!==(o=t[h])&amp;&amp;void 0!==o?o:null],[f,null!==(a=t[f])&amp;&amp;void 0!==a?a:null],[g,null!==(i=t[g])&amp;&amp;void 0!==i?i:null]],d=rt(t,!0);d.forEach(function(t){l.forEach(function(e){var r=function(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&amp;&amp;t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a,i,l=[],u=!0,s=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&amp;&amp;(l.push(n.value),l.length!==e);u=!0);}catch(t){s=!0,o=t}finally{try{if(!u&amp;&amp;null!=r.return&amp;&amp;(i=r.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(t,e)||function(t,e){if(t){if("string"==typeof t)return Se(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&amp;&amp;t.constructor&amp;&amp;(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Se(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(e,2),n=r[0],o=r[1];null===o?delete t[n]:t[n]=o})}),d.forEach(function(t){xe.addCss(Ce.convert(t,void 0,!1,!0))})})})}),(C.needJudgeFirstPage||!C.needJudgeFirstPage&amp;&amp;!Me.showFirstPage)&amp;&amp;"function"==typeof C.showFirstPage&amp;&amp;C.showFirstPage(),xe.writeStyle(),Me.emptyFirstPageNodes(),Ce.isDarkmode||(C.needJudgeFirstPage=!1,C.delayBgJudge=!1,null===C.container&amp;&amp;"dom"===e.type&amp;&amp;Me.length&amp;&amp;Me.delay())}catch(t){console.log("An error occurred when running the dark mode conversion algorithm\n",t),"function"==typeof C.error&amp;&amp;C.error(t)}};function Pe(t,e){Ee(e),Me.set(t),je(Oe,{force:!0,type:"dom"})}function Ee(){var t=arguments.length&gt;0&amp;&amp;void 0!==arguments[0]?arguments[0]:{};if(!C.hasInit){C.hasInit=!0;var r=C.whitelist.tagName,n=C.whitelist.attribute;t.whitelist&amp;&amp;(t.whitelist.tagName instanceof Array&amp;&amp;t.whitelist.tagName.forEach(function(t){t=t.toUpperCase(),-1===r.indexOf(t)&amp;&amp;r.push(t)}),t.whitelist.attribute instanceof Array&amp;&amp;t.whitelist.attribute.forEach(function(t){-1===n.indexOf(t)&amp;&amp;n.push(t)})),["dark","light"].indexOf(t.mode)&gt;-1&amp;&amp;(C.set("string",t,"mode"),"dark"===t.mode&amp;&amp;document.getElementsByTagName("html")[0].classList.add(i)),C.set("function",t,"begin"),C.set("function",t,"showFirstPage"),C.set("function",t,"error"),C.set("boolean",t,"needJudgeFirstPage"),C.set("boolean",t,"delayBgJudge"),C.set("dom",t,"container"),C.set("string",t,"cssSelectorsPrefix"),C.set("string",t,"defaultLightTextColor"),C.set("string",t,"defaultLightBgColor"),C.set("string",t,"defaultDarkTextColor"),C.set("string",t,"defaultDarkBgColor"),Ce.init(),!C.mode&amp;&amp;null===Oe&amp;&amp;window.matchMedia&amp;&amp;(Oe=window.matchMedia(e)).addListener(je)}}function Be(t){Me.set(t),null!==C.container&amp;&amp;(ke.update(t),we.update(t)),je(Oe,{force:!0,type:"bg"})}function Te(t,e){xe.isFinish&amp;&amp;(xe.addCss(Ce.convert(t,e?Object.keys(e).map(function(t){return[t,e[t]]}):void 0,!0),!1),xe.writeStyle())}function Ae(t,e){return Ce.getContrast(t,e)}function De(t){t.forEach(function(t){return ve.extend(t)})}})(),n})());
             &lt;/script&gt;
             &lt;script h5only="" nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
              !function(t,e){"object"==typeof exports&amp;&amp;"undefined"!=typeof module?module.exports=e():"function"==typeof define&amp;&amp;define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Vue=e()}(this,(function(){"use strict";var t=Object.freeze({}),e=Array.isArray;function n(t){return null==t}function r(t){return null!=t}function o(t){return!0===t}function i(t){return"string"==typeof t||"number"==typeof t||"symbol"==typeof t||"boolean"==typeof t}function a(t){return"function"==typeof t}function s(t){return null!==t&amp;&amp;"object"==typeof t}var c=Object.prototype.toString;function u(t){return"[object Object]"===c.call(t)}function f(t){var e=parseFloat(String(t));return e&gt;=0&amp;&amp;Math.floor(e)===e&amp;&amp;isFinite(t)}function l(t){return r(t)&amp;&amp;"function"==typeof t.then&amp;&amp;"function"==typeof t.catch}function d(t){return null==t?"":Array.isArray(t)||u(t)&amp;&amp;t.toString===c?JSON.stringify(t,p,2):String(t)}function p(t,e){return e&amp;&amp;e.__v_isRef?e.value:e}function v(t){var e=parseFloat(t);return isNaN(e)?t:e}function h(t,e){for(var n=Object.create(null),r=t.split(","),o=0;o&lt;r.length;o++)n[r[o]]=!0;return e?function(t){return n[t.toLowerCase()]}:function(t){return n[t]}}var m=h("key,ref,slot,slot-scope,is");function _(t,e){var n=t.length;if(n){if(e===t[n-1])return void(t.length=n-1);var r=t.indexOf(e);if(r&gt;-1)return t.splice(r,1)}}var y=Object.prototype.hasOwnProperty;function g(t,e){return y.call(t,e)}function b(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var w=/-(\w)/g,$=b((function(t){return t.replace(w,(function(t,e){return e?e.toUpperCase():""}))})),C=b((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),x=/\B([A-Z])/g,O=b((function(t){return t.replace(x,"-$1").toLowerCase()}));var k=Function.prototype.bind?function(t,e){return t.bind(e)}:function(t,e){function n(n){var r=arguments.length;return r?r&gt;1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n};function S(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function j(t,e){for(var n in e)t[n]=e[n];return t}function T(t){for(var e={},n=0;n&lt;t.length;n++)t[n]&amp;&amp;j(e,t[n]);return e}function A(t,e,n){}var E=function(t,e,n){return!1},P=function(t){return t};function I(t,e){if(t===e)return!0;var n=s(t),r=s(e);if(!n||!r)return!n&amp;&amp;!r&amp;&amp;String(t)===String(e);try{var o=Array.isArray(t),i=Array.isArray(e);if(o&amp;&amp;i)return t.length===e.length&amp;&amp;t.every((function(t,n){return I(t,e[n])}));if(t instanceof Date&amp;&amp;e instanceof Date)return t.getTime()===e.getTime();if(o||i)return!1;var a=Object.keys(t),c=Object.keys(e);return a.length===c.length&amp;&amp;a.every((function(n){return I(t[n],e[n])}))}catch(t){return!1}}function D(t,e){for(var n=0;n&lt;t.length;n++)if(I(t[n],e))return n;return-1}function N(t){var e=!1;return function(){e||(e=!0,t.apply(this,arguments))}}function M(t,e){return t===e?0===t&amp;&amp;1/t!=1/e:t==t||e==e}var L="data-server-rendered",R=["component","directive","filter"],F=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeDestroy","destroyed","activated","deactivated","errorCaptured","serverPrefetch","renderTracked","renderTriggered"],U={optionMergeStrategies:Object.create(null),silent:!1,productionTip:!1,devtools:!1,performance:!1,errorHandler:null,warnHandler:null,ignoredElements:[],keyCodes:Object.create(null),isReservedTag:E,isReservedAttr:E,isUnknownElement:E,getTagNamespace:A,parsePlatformTagName:P,mustUseProp:E,async:!0,_lifecycleHooks:F};function V(t){var e=(t+"").charCodeAt(0);return 36===e||95===e}function B(t,e,n,r){Object.defineProperty(t,e,{value:n,enumerable:!!r,writable:!0,configurable:!0})}var z=new RegExp("[^".concat(/a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD/.source,".$_\\d]"));var H="__proto__"in{},W="undefined"!=typeof window,K=W&amp;&amp;window.navigator.userAgent.toLowerCase(),q=K&amp;&amp;/msie|trident/.test(K),G=K&amp;&amp;K.indexOf("msie 9.0")&gt;0,Z=K&amp;&amp;K.indexOf("edge/")&gt;0;K&amp;&amp;K.indexOf("android");var J=K&amp;&amp;/iphone|ipad|ipod|ios/.test(K);K&amp;&amp;/chrome\/\d+/.test(K),K&amp;&amp;/phantomjs/.test(K);var X,Q=K&amp;&amp;K.match(/firefox\/(\d+)/),Y={}.watch,tt=!1;if(W)try{var et={};Object.defineProperty(et,"passive",{get:function(){tt=!0}}),window.addEventListener("test-passive",null,et)}catch(t){}var nt=function(){return void 0===X&amp;&amp;(X=!W&amp;&amp;"undefined"!=typeof global&amp;&amp;(global.process&amp;&amp;"server"===global.process.env.VUE_ENV)),X},rt=W&amp;&amp;window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function ot(t){return"function"==typeof t&amp;&amp;/native code/.test(t.toString())}var it,at="undefined"!=typeof Symbol&amp;&amp;ot(Symbol)&amp;&amp;"undefined"!=typeof Reflect&amp;&amp;ot(Reflect.ownKeys);it="undefined"!=typeof Set&amp;&amp;ot(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var st=null;function ct(t){void 0===t&amp;&amp;(t=null),t||st&amp;&amp;st._scope.off(),st=t,t&amp;&amp;t._scope.on()}var ut=function(){function t(t,e,n,r,o,i,a,s){this.tag=t,this.data=e,this.children=n,this.text=r,this.elm=o,this.ns=void 0,this.context=i,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=e&amp;&amp;e.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1}return Object.defineProperty(t.prototype,"child",{get:function(){return this.componentInstance},enumerable:!1,configurable:!0}),t}(),ft=function(t){void 0===t&amp;&amp;(t="");var e=new ut;return e.text=t,e.isComment=!0,e};function lt(t){return new ut(void 0,void 0,void 0,String(t))}function dt(t){var e=new ut(t.tag,t.data,t.children&amp;&amp;t.children.slice(),t.text,t.elm,t.context,t.componentOptions,t.asyncFactory);return e.ns=t.ns,e.isStatic=t.isStatic,e.key=t.key,e.isComment=t.isComment,e.fnContext=t.fnContext,e.fnOptions=t.fnOptions,e.fnScopeId=t.fnScopeId,e.asyncMeta=t.asyncMeta,e.isCloned=!0,e}"function"==typeof SuppressedError&amp;&amp;SuppressedError;var pt=0,vt=[],ht=function(){for(var t=0;t&lt;vt.length;t++){var e=vt[t];e.subs=e.subs.filter((function(t){return t})),e._pending=!1}vt.length=0},mt=function(){function t(){this._pending=!1,this.id=pt++,this.subs=[]}return t.prototype.addSub=function(t){this.subs.push(t)},t.prototype.removeSub=function(t){this.subs[this.subs.indexOf(t)]=null,this._pending||(this._pending=!0,vt.push(this))},t.prototype.depend=function(e){t.target&amp;&amp;t.target.addDep(this)},t.prototype.notify=function(t){for(var e=this.subs.filter((function(t){return t})),n=0,r=e.length;n&lt;r;n++){e[n].update()}},t}();mt.target=null;var _t=[];function yt(t){_t.push(t),mt.target=t}function gt(){_t.pop(),mt.target=_t[_t.length-1]}var bt=Array.prototype,wt=Object.create(bt);["push","pop","shift","unshift","splice","sort","reverse"].forEach((function(t){var e=bt[t];B(wt,t,(function(){for(var n=[],r=0;r&lt;arguments.length;r++)n[r]=arguments[r];var o,i=e.apply(this,n),a=this.__ob__;switch(t){case"push":case"unshift":o=n;break;case"splice":o=n.slice(2)}return o&amp;&amp;a.observeArray(o),a.dep.notify(),i}))}));var $t=Object.getOwnPropertyNames(wt),Ct={},xt=!0;function Ot(t){xt=t}var kt={notify:A,depend:A,addSub:A,removeSub:A},St=function(){function t(t,n,r){if(void 0===n&amp;&amp;(n=!1),void 0===r&amp;&amp;(r=!1),this.value=t,this.shallow=n,this.mock=r,this.dep=r?kt:new mt,this.vmCount=0,B(t,"__ob__",this),e(t)){if(!r)if(H)t.__proto__=wt;else for(var o=0,i=$t.length;o&lt;i;o++){B(t,s=$t[o],wt[s])}n||this.observeArray(t)}else{var a=Object.keys(t);for(o=0;o&lt;a.length;o++){var s;Tt(t,s=a[o],Ct,void 0,n,r)}}}return t.prototype.observeArray=function(t){for(var e=0,n=t.length;e&lt;n;e++)jt(t[e],!1,this.mock)},t}();function jt(t,n,r){return t&amp;&amp;g(t,"__ob__")&amp;&amp;t.__ob__ instanceof St?t.__ob__:!xt||!r&amp;&amp;nt()||!e(t)&amp;&amp;!u(t)||!Object.isExtensible(t)||t.__v_skip||Ft(t)||t instanceof ut?void 0:new St(t,n,r)}function Tt(t,n,r,o,i,a,s){void 0===s&amp;&amp;(s=!1);var c=new mt,u=Object.getOwnPropertyDescriptor(t,n);if(!u||!1!==u.configurable){var f=u&amp;&amp;u.get,l=u&amp;&amp;u.set;f&amp;&amp;!l||r!==Ct&amp;&amp;2!==arguments.length||(r=t[n]);var d=i?r&amp;&amp;r.__ob__:jt(r,!1,a);return Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:function(){var n=f?f.call(t):r;return mt.target&amp;&amp;(c.depend(),d&amp;&amp;(d.dep.depend(),e(n)&amp;&amp;Pt(n))),Ft(n)&amp;&amp;!i?n.value:n},set:function(e){var n=f?f.call(t):r;if(M(n,e)){if(l)l.call(t,e);else{if(f)return;if(!i&amp;&amp;Ft(n)&amp;&amp;!Ft(e))return void(n.value=e);r=e}d=i?e&amp;&amp;e.__ob__:jt(e,!1,a),c.notify()}}}),c}}function At(t,n,r){if(!Lt(t)){var o=t.__ob__;return e(t)&amp;&amp;f(n)?(t.length=Math.max(t.length,n),t.splice(n,1,r),o&amp;&amp;!o.shallow&amp;&amp;o.mock&amp;&amp;jt(r,!1,!0),r):n in t&amp;&amp;!(n in Object.prototype)?(t[n]=r,r):t._isVue||o&amp;&amp;o.vmCount?r:o?(Tt(o.value,n,r,void 0,o.shallow,o.mock),o.dep.notify(),r):(t[n]=r,r)}}function Et(t,n){if(e(t)&amp;&amp;f(n))t.splice(n,1);else{var r=t.__ob__;t._isVue||r&amp;&amp;r.vmCount||Lt(t)||g(t,n)&amp;&amp;(delete t[n],r&amp;&amp;r.dep.notify())}}function Pt(t){for(var n=void 0,r=0,o=t.length;r&lt;o;r++)(n=t[r])&amp;&amp;n.__ob__&amp;&amp;n.__ob__.dep.depend(),e(n)&amp;&amp;Pt(n)}function It(t){return Dt(t,!0),B(t,"__v_isShallow",!0),t}function Dt(t,e){Lt(t)||jt(t,e,nt())}function Nt(t){return Lt(t)?Nt(t.__v_raw):!(!t||!t.__ob__)}function Mt(t){return!(!t||!t.__v_isShallow)}function Lt(t){return!(!t||!t.__v_isReadonly)}var Rt="__v_isRef";function Ft(t){return!(!t||!0!==t.__v_isRef)}function Ut(t,e){if(Ft(t))return t;var n={};return B(n,Rt,!0),B(n,"__v_isShallow",e),B(n,"dep",Tt(n,"value",t,null,e,nt())),n}function Vt(t,e,n){Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:function(){var t=e[n];if(Ft(t))return t.value;var r=t&amp;&amp;t.__ob__;return r&amp;&amp;r.dep.depend(),t},set:function(t){var r=e[n];Ft(r)&amp;&amp;!Ft(t)?r.value=t:e[n]=t}})}function Bt(t,e,n){var r=t[e];if(Ft(r))return r;var o={get value(){var r=t[e];return void 0===r?n:r},set value(n){t[e]=n}};return B(o,Rt,!0),o}var zt="__v_rawToReadonly",Ht="__v_rawToShallowReadonly";function Wt(t){return Kt(t,!1)}function Kt(t,e){if(!u(t))return t;if(Lt(t))return t;var n=e?Ht:zt,r=t[n];if(r)return r;var o=Object.create(Object.getPrototypeOf(t));B(t,n,o),B(o,"__v_isReadonly",!0),B(o,"__v_raw",t),Ft(t)&amp;&amp;B(o,Rt,!0),(e||Mt(t))&amp;&amp;B(o,"__v_isShallow",!0);for(var i=Object.keys(t),a=0;a&lt;i.length;a++)qt(o,t,i[a],e);return o}function qt(t,e,n,r){Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:function(){var t=e[n];return r||!u(t)?t:Wt(t)},set:function(){}})}var Gt="watcher",Zt="".concat(Gt," callback"),Jt="".concat(Gt," getter"),Xt="".concat(Gt," cleanup");function Qt(t,e){return ee(t,null,{flush:"post"})}var Yt,te={};function ee(n,r,o){var i=void 0===o?t:o,s=i.immediate,c=i.deep,u=i.flush,f=void 0===u?"pre":u;i.onTrack,i.onTrigger;var l,d,p=st,v=function(t,e,n){void 0===n&amp;&amp;(n=null);var r=qe(t,null,n,p,e);return c&amp;&amp;r&amp;&amp;r.__ob__&amp;&amp;r.__ob__.dep.depend(),r},h=!1,m=!1;if(Ft(n)?(l=function(){return n.value},h=Mt(n)):Nt(n)?(l=function(){return n.__ob__.dep.depend(),n},c=!0):e(n)?(m=!0,h=n.some((function(t){return Nt(t)||Mt(t)})),l=function(){return n.map((function(t){return Ft(t)?t.value:Nt(t)?(t.__ob__.dep.depend(),Cn(t)):a(t)?v(t,Jt):void 0}))}):l=a(n)?r?function(){return v(n,Jt)}:function(){if(!p||!p._isDestroyed)return d&amp;&amp;d(),v(n,Gt,[y])}:A,r&amp;&amp;c){var _=l;l=function(){return Cn(_())}}var y=function(t){d=g.onStop=function(){v(t,Xt)}};if(nt())return y=A,r?s&amp;&amp;v(r,Zt,[l(),m?[]:void 0,y]):l(),A;var g=new Sn(st,l,A,{lazy:!0});g.noRecurse=!r;var b=m?[]:te;return g.run=function(){if(g.active)if(r){var t=g.get();(c||h||(m?t.some((function(t,e){return M(t,b[e])})):M(t,b)))&amp;&amp;(d&amp;&amp;d(),v(r,Zt,[t,b===te?void 0:b,y]),b=t)}else g.get()},"sync"===f?g.update=g.run:"post"===f?(g.post=!0,g.update=function(){return Zn(g)}):g.update=function(){if(p&amp;&amp;p===st&amp;&amp;!p._isMounted){var t=p._preWatchers||(p._preWatchers=[]);t.indexOf(g)&lt;0&amp;&amp;t.push(g)}else Zn(g)},r?s?g.run():b=g.get():"post"===f&amp;&amp;p?p.$once("hook:mounted",(function(){return g.get()})):g.get(),function(){g.teardown()}}var ne=function(){function t(t){void 0===t&amp;&amp;(t=!1),this.detached=t,this.active=!0,this.effects=[],this.cleanups=[],this.parent=Yt,!t&amp;&amp;Yt&amp;&amp;(this.index=(Yt.scopes||(Yt.scopes=[])).push(this)-1)}return t.prototype.run=function(t){if(this.active){var e=Yt;try{return Yt=this,t()}finally{Yt=e}}},t.prototype.on=function(){Yt=this},t.prototype.off=function(){Yt=this.parent},t.prototype.stop=function(t){if(this.active){var e=void 0,n=void 0;for(e=0,n=this.effects.length;e&lt;n;e++)this.effects[e].teardown();for(e=0,n=this.cleanups.length;e&lt;n;e++)this.cleanups[e]();if(this.scopes)for(e=0,n=this.scopes.length;e&lt;n;e++)this.scopes[e].stop(!0);if(!this.detached&amp;&amp;this.parent&amp;&amp;!t){var r=this.parent.scopes.pop();r&amp;&amp;r!==this&amp;&amp;(this.parent.scopes[this.index]=r,r.index=this.index)}this.parent=void 0,this.active=!1}},t}();function re(){return Yt}function oe(t){var e=t._provided,n=t.$parent&amp;&amp;t.$parent._provided;return n===e?t._provided=Object.create(n):e}var ie=b((function(t){var e="&amp;"===t.charAt(0),n="~"===(t=e?t.slice(1):t).charAt(0),r="!"===(t=n?t.slice(1):t).charAt(0);return{name:t=r?t.slice(1):t,once:n,capture:r,passive:e}}));function ae(t,n){function r(){var t=r.fns;if(!e(t))return qe(t,null,arguments,n,"v-on handler");for(var o=t.slice(),i=0;i&lt;o.length;i++)qe(o[i],null,arguments,n,"v-on handler")}return r.fns=t,r}function se(t,e,r,i,a,s){var c,u,f,l;for(c in t)u=t[c],f=e[c],l=ie(c),n(u)||(n(f)?(n(u.fns)&amp;&amp;(u=t[c]=ae(u,s)),o(l.once)&amp;&amp;(u=t[c]=a(l.name,u,l.capture)),r(l.name,u,l.capture,l.passive,l.params)):u!==f&amp;&amp;(f.fns=u,t[c]=f));for(c in e)n(t[c])&amp;&amp;i((l=ie(c)).name,e[c],l.capture)}function ce(t,e,i){var a;t instanceof ut&amp;&amp;(t=t.data.hook||(t.data.hook={}));var s=t[e];function c(){i.apply(this,arguments),_(a.fns,c)}n(s)?a=ae([c]):r(s.fns)&amp;&amp;o(s.merged)?(a=s).fns.push(c):a=ae([s,c]),a.merged=!0,t[e]=a}function ue(t,e,n,o,i){if(r(e)){if(g(e,n))return t[n]=e[n],i||delete e[n],!0;if(g(e,o))return t[n]=e[o],i||delete e[o],!0}return!1}function fe(t){return i(t)?[lt(t)]:e(t)?de(t):void 0}function le(t){return r(t)&amp;&amp;r(t.text)&amp;&amp;!1===t.isComment}function de(t,a){var s,c,u,f,l=[];for(s=0;s&lt;t.length;s++)n(c=t[s])||"boolean"==typeof c||(f=l[u=l.length-1],e(c)?c.length&gt;0&amp;&amp;(le((c=de(c,"".concat(a||"","_").concat(s)))[0])&amp;&amp;le(f)&amp;&amp;(l[u]=lt(f.text+c[0].text),c.shift()),l.push.apply(l,c)):i(c)?le(f)?l[u]=lt(f.text+c):""!==c&amp;&amp;l.push(lt(c)):le(c)&amp;&amp;le(f)?l[u]=lt(f.text+c.text):(o(t._isVList)&amp;&amp;r(c.tag)&amp;&amp;n(c.key)&amp;&amp;r(a)&amp;&amp;(c.key="__vlist".concat(a,"_").concat(s,"__")),l.push(c)));return l}function pe(t,n){var o,i,a,c,u=null;if(e(t)||"string"==typeof t)for(u=new Array(t.length),o=0,i=t.length;o&lt;i;o++)u[o]=n(t[o],o);else if("number"==typeof t)for(u=new Array(t),o=0;o&lt;t;o++)u[o]=n(o+1,o);else if(s(t))if(at&amp;&amp;t[Symbol.iterator]){u=[];for(var f=t[Symbol.iterator](),l=f.next();!l.done;)u.push(n(l.value,u.length)),l=f.next()}else for(a=Object.keys(t),u=new Array(a.length),o=0,i=a.length;o&lt;i;o++)c=a[o],u[o]=n(t[c],c,o);return r(u)||(u=[]),u._isVList=!0,u}function ve(t,e,n,r){var o,i=this.$scopedSlots[t];i?(n=n||{},r&amp;&amp;(n=j(j({},r),n)),o=i(n)||(a(e)?e():e)):o=this.$slots[t]||(a(e)?e():e);var s=n&amp;&amp;n.slot;return s?this.$createElement("template",{slot:s},o):o}function he(t){return pr(this.$options,"filters",t)||P}function me(t,n){return e(t)?-1===t.indexOf(n):t!==n}function _e(t,e,n,r,o){var i=U.keyCodes[e]||n;return o&amp;&amp;r&amp;&amp;!U.keyCodes[e]?me(o,r):i?me(i,t):r?O(r)!==e:void 0===t}function ye(t,n,r,o,i){if(r)if(s(r)){e(r)&amp;&amp;(r=T(r));var a=void 0,c=function(e){if("class"===e||"style"===e||m(e))a=t;else{var s=t.attrs&amp;&amp;t.attrs.type;a=o||U.mustUseProp(n,s,e)?t.domProps||(t.domProps={}):t.attrs||(t.attrs={})}var c=$(e),u=O(e);c in a||u in a||(a[e]=r[e],i&amp;&amp;((t.on||(t.on={}))["update:".concat(e)]=function(t){r[e]=t}))};for(var u in r)c(u)}else;return t}function ge(t,e){var n=this._staticTrees||(this._staticTrees=[]),r=n[t];return r&amp;&amp;!e||we(r=n[t]=this.$options.staticRenderFns[t].call(this._renderProxy,this._c,this),"__static__".concat(t),!1),r}function be(t,e,n){return we(t,"__once__".concat(e).concat(n?"_".concat(n):""),!0),t}function we(t,n,r){if(e(t))for(var o=0;o&lt;t.length;o++)t[o]&amp;&amp;"string"!=typeof t[o]&amp;&amp;$e(t[o],"".concat(n,"_").concat(o),r);else $e(t,n,r)}function $e(t,e,n){t.isStatic=!0,t.key=e,t.isOnce=n}function Ce(t,e){if(e)if(u(e)){var n=t.on=t.on?j({},t.on):{};for(var r in e){var o=n[r],i=e[r];n[r]=o?[].concat(o,i):i}}else;return t}function xe(t,n,r,o){n=n||{$stable:!r};for(var i=0;i&lt;t.length;i++){var a=t[i];e(a)?xe(a,n,r):a&amp;&amp;(a.proxy&amp;&amp;(a.fn.proxy=!0),n[a.key]=a.fn)}return o&amp;&amp;(n.$key=o),n}function Oe(t,e){for(var n=0;n&lt;e.length;n+=2){var r=e[n];"string"==typeof r&amp;&amp;r&amp;&amp;(t[e[n]]=e[n+1])}return t}function ke(t,e){return"string"==typeof t?e+t:t}function Se(t){t._o=be,t._n=v,t._s=d,t._l=pe,t._t=ve,t._q=I,t._i=D,t._m=ge,t._f=he,t._k=_e,t._b=ye,t._v=lt,t._e=ft,t._u=xe,t._g=Ce,t._d=Oe,t._p=ke}function je(t,e){if(!t||!t.length)return{};for(var n={},r=0,o=t.length;r&lt;o;r++){var i=t[r],a=i.data;if(a&amp;&amp;a.attrs&amp;&amp;a.attrs.slot&amp;&amp;delete a.attrs.slot,i.context!==e&amp;&amp;i.fnContext!==e||!a||null==a.slot)(n.default||(n.default=[])).push(i);else{var s=a.slot,c=n[s]||(n[s]=[]);"template"===i.tag?c.push.apply(c,i.children||[]):c.push(i)}}for(var u in n)n[u].every(Te)&amp;&amp;delete n[u];return n}function Te(t){return t.isComment&amp;&amp;!t.asyncFactory||" "===t.text}function Ae(t){return t.isComment&amp;&amp;t.asyncFactory}function Ee(e,n,r,o){var i,a=Object.keys(r).length&gt;0,s=n?!!n.$stable:!a,c=n&amp;&amp;n.$key;if(n){if(n._normalized)return n._normalized;if(s&amp;&amp;o&amp;&amp;o!==t&amp;&amp;c===o.$key&amp;&amp;!a&amp;&amp;!o.$hasNormal)return o;for(var u in i={},n)n[u]&amp;&amp;"$"!==u[0]&amp;&amp;(i[u]=Pe(e,r,u,n[u]))}else i={};for(var f in r)f in i||(i[f]=Ie(r,f));return n&amp;&amp;Object.isExtensible(n)&amp;&amp;(n._normalized=i),B(i,"$stable",s),B(i,"$key",c),B(i,"$hasNormal",a),i}function Pe(t,n,r,o){var i=function(){var n=st;ct(t);var r=arguments.length?o.apply(null,arguments):o({}),i=(r=r&amp;&amp;"object"==typeof r&amp;&amp;!e(r)?[r]:fe(r))&amp;&amp;r[0];return ct(n),r&amp;&amp;(!i||1===r.length&amp;&amp;i.isComment&amp;&amp;!Ae(i))?void 0:r};return o.proxy&amp;&amp;Object.defineProperty(n,r,{get:i,enumerable:!0,configurable:!0}),i}function Ie(t,e){return function(){return t[e]}}function De(e){return{get attrs(){if(!e._attrsProxy){var n=e._attrsProxy={};B(n,"_v_attr_proxy",!0),Ne(n,e.$attrs,t,e,"$attrs")}return e._attrsProxy},get listeners(){e._listenersProxy||Ne(e._listenersProxy={},e.$listeners,t,e,"$listeners");return e._listenersProxy},get slots(){return function(t){t._slotsProxy||Le(t._slotsProxy={},t.$scopedSlots);return t._slotsProxy}(e)},emit:k(e.$emit,e),expose:function(t){t&amp;&amp;Object.keys(t).forEach((function(n){return Vt(e,t,n)}))}}}function Ne(t,e,n,r,o){var i=!1;for(var a in e)a in t?e[a]!==n[a]&amp;&amp;(i=!0):(i=!0,Me(t,a,r,o));for(var a in t)a in e||(i=!0,delete t[a]);return i}function Me(t,e,n,r){Object.defineProperty(t,e,{enumerable:!0,configurable:!0,get:function(){return n[r][e]}})}function Le(t,e){for(var n in e)t[n]=e[n];for(var n in t)n in e||delete t[n]}function Re(){var t=st;return t._setupContext||(t._setupContext=De(t))}var Fe=null;function Ue(t,e){return(t.__esModule||at&amp;&amp;"Module"===t[Symbol.toStringTag])&amp;&amp;(t=t.default),s(t)?e.extend(t):t}function Ve(t){if(e(t))for(var n=0;n&lt;t.length;n++){var o=t[n];if(r(o)&amp;&amp;(r(o.componentOptions)||Ae(o)))return o}}var Be=1,ze=2;function He(t,n,c,u,f,l){return(e(c)||i(c))&amp;&amp;(f=u,u=c,c=void 0),o(l)&amp;&amp;(f=ze),function(t,n,o,i,c){if(r(o)&amp;&amp;r(o.__ob__))return ft();r(o)&amp;&amp;r(o.is)&amp;&amp;(n=o.is);if(!n)return ft();e(i)&amp;&amp;a(i[0])&amp;&amp;((o=o||{}).scopedSlots={default:i[0]},i.length=0);c===ze?i=fe(i):c===Be&amp;&amp;(i=function(t){for(var n=0;n&lt;t.length;n++)if(e(t[n]))return Array.prototype.concat.apply([],t);return t}(i));var u,f;if("string"==typeof n){var l=void 0;f=t.$vnode&amp;&amp;t.$vnode.ns||U.getTagNamespace(n),u=U.isReservedTag(n)?new ut(U.parsePlatformTagName(n),o,i,void 0,void 0,t):o&amp;&amp;o.pre||!r(l=pr(t.$options,"components",n))?new ut(n,o,i,void 0,void 0,t):rr(l,o,t,i,n)}else u=rr(n,o,t,i);return e(u)?u:r(u)?(r(f)&amp;&amp;We(u,f),r(o)&amp;&amp;function(t){s(t.style)&amp;&amp;Cn(t.style);s(t.class)&amp;&amp;Cn(t.class)}(o),u):ft()}(t,n,c,u,f)}function We(t,e,i){if(t.ns=e,"foreignObject"===t.tag&amp;&amp;(e=void 0,i=!0),r(t.children))for(var a=0,s=t.children.length;a&lt;s;a++){var c=t.children[a];r(c.tag)&amp;&amp;(n(c.ns)||o(i)&amp;&amp;"svg"!==c.tag)&amp;&amp;We(c,e,i)}}function Ke(t,e,n){yt();try{if(e)for(var r=e;r=r.$parent;){var o=r.$options.errorCaptured;if(o)for(var i=0;i&lt;o.length;i++)try{if(!1===o[i].call(r,t,e,n))return}catch(t){Ge(t,r,"errorCaptured hook")}}Ge(t,e,n)}finally{gt()}}function qe(t,e,n,r,o){var i;try{(i=n?t.apply(e,n):t.call(e))&amp;&amp;!i._isVue&amp;&amp;l(i)&amp;&amp;!i._handled&amp;&amp;(i.catch((function(t){return Ke(t,r,o+" (Promise/async)")})),i._handled=!0)}catch(t){Ke(t,r,o)}return i}function Ge(t,e,n){if(U.errorHandler)try{return U.errorHandler.call(null,t,e,n)}catch(e){e!==t&amp;&amp;Ze(e)}Ze(t)}function Ze(t,e,n){if(!W||"undefined"==typeof console)throw t;console.error(t)}var Je,Xe=!1,Qe=[],Ye=!1;function tn(){Ye=!1;var t=Qe.slice(0);Qe.length=0;for(var e=0;e&lt;t.length;e++)t[e]()}if("undefined"!=typeof Promise&amp;&amp;ot(Promise)){var en=Promise.resolve();Je=function(){en.then(tn),J&amp;&amp;setTimeout(A)},Xe=!0}else if(q||"undefined"==typeof MutationObserver||!ot(MutationObserver)&amp;&amp;"[object MutationObserverConstructor]"!==MutationObserver.toString())Je="undefined"!=typeof setImmediate&amp;&amp;ot(setImmediate)?function(){setImmediate(tn)}:function(){setTimeout(tn,0)};else{var nn=1,rn=new MutationObserver(tn),on=document.createTextNode(String(nn));rn.observe(on,{characterData:!0}),Je=function(){nn=(nn+1)%2,on.data=String(nn)},Xe=!0}function an(t,e){var n;if(Qe.push((function(){if(t)try{t.call(e)}catch(t){Ke(t,e,"nextTick")}else n&amp;&amp;n(e)})),Ye||(Ye=!0,Je()),!t&amp;&amp;"undefined"!=typeof Promise)return new Promise((function(t){n=t}))}function sn(t){return function(e,n){if(void 0===n&amp;&amp;(n=st),n)return function(t,e,n){var r=t.$options;r[e]=ur(r[e],n)}(n,t,e)}}var cn=sn("beforeMount"),un=sn("mounted"),fn=sn("beforeUpdate"),ln=sn("updated"),dn=sn("beforeDestroy"),pn=sn("destroyed"),vn=sn("activated"),hn=sn("deactivated"),mn=sn("serverPrefetch"),_n=sn("renderTracked"),yn=sn("renderTriggered"),gn=sn("errorCaptured");var bn="2.7.16";var wn=Object.freeze({__proto__:null,version:bn,defineComponent:function(t){return t},ref:function(t){return Ut(t,!1)},shallowRef:function(t){return Ut(t,!0)},isRef:Ft,toRef:Bt,toRefs:function(t){var n=e(t)?new Array(t.length):{};for(var r in t)n[r]=Bt(t,r);return n},unref:function(t){return Ft(t)?t.value:t},proxyRefs:function(t){if(Nt(t))return t;for(var e={},n=Object.keys(t),r=0;r&lt;n.length;r++)Vt(e,t,n[r]);return e},customRef:function(t){var e=new mt,n=t((function(){e.depend()}),(function(){e.notify()})),r=n.get,o=n.set,i={get value(){return r()},set value(t){o(t)}};return B(i,Rt,!0),i},triggerRef:function(t){t.dep&amp;&amp;t.dep.notify()},reactive:function(t){return Dt(t,!1),t},isReactive:Nt,isReadonly:Lt,isShallow:Mt,isProxy:function(t){return Nt(t)||Lt(t)},shallowReactive:It,markRaw:function(t){return Object.isExtensible(t)&amp;&amp;B(t,"__v_skip",!0),t},toRaw:function t(e){var n=e&amp;&amp;e.__v_raw;return n?t(n):e},readonly:Wt,shallowReadonly:function(t){return Kt(t,!0)},computed:function(t,e){var n,r,o=a(t);o?(n=t,r=A):(n=t.get,r=t.set);var i=nt()?null:new Sn(st,n,A,{lazy:!0}),s={effect:i,get value(){return i?(i.dirty&amp;&amp;i.evaluate(),mt.target&amp;&amp;i.depend(),i.value):n()},set value(t){r(t)}};return B(s,Rt,!0),B(s,"__v_isReadonly",o),s},watch:function(t,e,n){return ee(t,e,n)},watchEffect:function(t,e){return ee(t,null,e)},watchPostEffect:Qt,watchSyncEffect:function(t,e){return ee(t,null,{flush:"sync"})},EffectScope:ne,effectScope:function(t){return new ne(t)},onScopeDispose:function(t){Yt&amp;&amp;Yt.cleanups.push(t)},getCurrentScope:re,provide:function(t,e){st&amp;&amp;(oe(st)[t]=e)},inject:function(t,e,n){void 0===n&amp;&amp;(n=!1);var r=st;if(r){var o=r.$parent&amp;&amp;r.$parent._provided;if(o&amp;&amp;t in o)return o[t];if(arguments.length&gt;1)return n&amp;&amp;a(e)?e.call(r):e}},h:function(t,e,n){return He(st,t,e,n,2,!0)},getCurrentInstance:function(){return st&amp;&amp;{proxy:st}},useSlots:function(){return Re().slots},useAttrs:function(){return Re().attrs},useListeners:function(){return Re().listeners},mergeDefaults:function(t,n){var r=e(t)?t.reduce((function(t,e){return t[e]={},t}),{}):t;for(var o in n){var i=r[o];i?e(i)||a(i)?r[o]={type:i,default:n[o]}:i.default=n[o]:null===i&amp;&amp;(r[o]={default:n[o]})}return r},nextTick:an,set:At,del:Et,useCssModule:function(e){return t},useCssVars:function(t){if(W){var e=st;e&amp;&amp;Qt((function(){var n=e.$el,r=t(e,e._setupProxy);if(n&amp;&amp;1===n.nodeType){var o=n.style;for(var i in r)o.setProperty("--".concat(i),r[i])}}))}},defineAsyncComponent:function(t){a(t)&amp;&amp;(t={loader:t});var e=t.loader,n=t.loadingComponent,r=t.errorComponent,o=t.delay,i=void 0===o?200:o,s=t.timeout;t.suspensible;var c=t.onError,u=null,f=0,l=function(){var t;return u||(t=u=e().catch((function(t){if(t=t instanceof Error?t:new Error(String(t)),c)return new Promise((function(e,n){c(t,(function(){return e((f++,u=null,l()))}),(function(){return n(t)}),f+1)}));throw t})).then((function(e){return t!==u&amp;&amp;u?u:(e&amp;&amp;(e.__esModule||"Module"===e[Symbol.toStringTag])&amp;&amp;(e=e.default),e)})))};return function(){return{component:l(),delay:i,timeout:s,error:r,loading:n}}},onBeforeMount:cn,onMounted:un,onBeforeUpdate:fn,onUpdated:ln,onBeforeUnmount:dn,onUnmounted:pn,onActivated:vn,onDeactivated:hn,onServerPrefetch:mn,onRenderTracked:_n,onRenderTriggered:yn,onErrorCaptured:function(t,e){void 0===e&amp;&amp;(e=st),gn(t,e)}}),$n=new it;function Cn(t){return xn(t,$n),$n.clear(),t}function xn(t,n){var r,o,i=e(t);if(!(!i&amp;&amp;!s(t)||t.__v_skip||Object.isFrozen(t)||t instanceof ut)){if(t.__ob__){var a=t.__ob__.dep.id;if(n.has(a))return;n.add(a)}if(i)for(r=t.length;r--;)xn(t[r],n);else if(Ft(t))xn(t.value,n);else for(r=(o=Object.keys(t)).length;r--;)xn(t[o[r]],n)}}var On,kn=0,Sn=function(){function t(t,e,n,r,o){var i,s;i=this,void 0===(s=Yt&amp;&amp;!Yt._vm?Yt:t?t._scope:void 0)&amp;&amp;(s=Yt),s&amp;&amp;s.active&amp;&amp;s.effects.push(i),(this.vm=t)&amp;&amp;o&amp;&amp;(t._watcher=this),r?(this.deep=!!r.deep,this.user=!!r.user,this.lazy=!!r.lazy,this.sync=!!r.sync,this.before=r.before):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++kn,this.active=!0,this.post=!1,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new it,this.newDepIds=new it,this.expression="",a(e)?this.getter=e:(this.getter=function(t){if(!z.test(t)){var e=t.split(".");return function(t){for(var n=0;n&lt;e.length;n++){if(!t)return;t=t[e[n]]}return t}}}(e),this.getter||(this.getter=A)),this.value=this.lazy?void 0:this.get()}return t.prototype.get=function(){var t;yt(this);var e=this.vm;try{t=this.getter.call(e,e)}catch(t){if(!this.user)throw t;Ke(t,e,'getter for watcher "'.concat(this.expression,'"'))}finally{this.deep&amp;&amp;Cn(t),gt(),this.cleanupDeps()}return t},t.prototype.addDep=function(t){var e=t.id;this.newDepIds.has(e)||(this.newDepIds.add(e),this.newDeps.push(t),this.depIds.has(e)||t.addSub(this))},t.prototype.cleanupDeps=function(){for(var t=this.deps.length;t--;){var e=this.deps[t];this.newDepIds.has(e.id)||e.removeSub(this)}var n=this.depIds;this.depIds=this.newDepIds,this.newDepIds=n,this.newDepIds.clear(),n=this.deps,this.deps=this.newDeps,this.newDeps=n,this.newDeps.length=0},t.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():Zn(this)},t.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||s(t)||this.deep){var e=this.value;if(this.value=t,this.user){var n='callback for watcher "'.concat(this.expression,'"');qe(this.cb,this.vm,[t,e],this.vm,n)}else this.cb.call(this.vm,t,e)}}},t.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},t.prototype.depend=function(){for(var t=this.deps.length;t--;)this.deps[t].depend()},t.prototype.teardown=function(){if(this.vm&amp;&amp;!this.vm._isBeingDestroyed&amp;&amp;_(this.vm._scope.effects,this),this.active){for(var t=this.deps.length;t--;)this.deps[t].removeSub(this);this.active=!1,this.onStop&amp;&amp;this.onStop()}},t}();function jn(t,e){On.$on(t,e)}function Tn(t,e){On.$off(t,e)}function An(t,e){var n=On;return function r(){null!==e.apply(null,arguments)&amp;&amp;n.$off(t,r)}}function En(t,e,n){On=t,se(e,n||{},jn,Tn,An,t),On=void 0}var Pn=null;function In(t){var e=Pn;return Pn=t,function(){Pn=e}}function Dn(t){for(;t&amp;&amp;(t=t.$parent);)if(t._inactive)return!0;return!1}function Nn(t,e){if(e){if(t._directInactive=!1,Dn(t))return}else if(t._directInactive)return;if(t._inactive||null===t._inactive){t._inactive=!1;for(var n=0;n&lt;t.$children.length;n++)Nn(t.$children[n]);Ln(t,"activated")}}function Mn(t,e){if(!(e&amp;&amp;(t._directInactive=!0,Dn(t))||t._inactive)){t._inactive=!0;for(var n=0;n&lt;t.$children.length;n++)Mn(t.$children[n]);Ln(t,"deactivated")}}function Ln(t,e,n,r){void 0===r&amp;&amp;(r=!0),yt();var o=st,i=re();r&amp;&amp;ct(t);var a=t.$options[e],s="".concat(e," hook");if(a)for(var c=0,u=a.length;c&lt;u;c++)qe(a[c],t,n||null,t,s);t._hasHookEvent&amp;&amp;t.$emit("hook:"+e),r&amp;&amp;(ct(o),i&amp;&amp;i.on()),gt()}var Rn=[],Fn=[],Un={},Vn=!1,Bn=!1,zn=0;var Hn=0,Wn=Date.now;if(W&amp;&amp;!q){var Kn=window.performance;Kn&amp;&amp;"function"==typeof Kn.now&amp;&amp;Wn()&gt;document.createEvent("Event").timeStamp&amp;&amp;(Wn=function(){return Kn.now()})}var qn=function(t,e){if(t.post){if(!e.post)return 1}else if(e.post)return-1;return t.id-e.id};function Gn(){var t,e;for(Hn=Wn(),Bn=!0,Rn.sort(qn),zn=0;zn&lt;Rn.length;zn++)(t=Rn[zn]).before&amp;&amp;t.before(),e=t.id,Un[e]=null,t.run();var n=Fn.slice(),r=Rn.slice();zn=Rn.length=Fn.length=0,Un={},Vn=Bn=!1,function(t){for(var e=0;e&lt;t.length;e++)t[e]._inactive=!0,Nn(t[e],!0)}(n),function(t){var e=t.length;for(;e--;){var n=t[e],r=n.vm;r&amp;&amp;r._watcher===n&amp;&amp;r._isMounted&amp;&amp;!r._isDestroyed&amp;&amp;Ln(r,"updated")}}(r),ht(),rt&amp;&amp;U.devtools&amp;&amp;rt.emit("flush")}function Zn(t){var e=t.id;if(null==Un[e]&amp;&amp;(t!==mt.target||!t.noRecurse)){if(Un[e]=!0,Bn){for(var n=Rn.length-1;n&gt;zn&amp;&amp;Rn[n].id&gt;t.id;)n--;Rn.splice(n+1,0,t)}else Rn.push(t);Vn||(Vn=!0,an(Gn))}}function Jn(t,e){if(t){for(var n=Object.create(null),r=at?Reflect.ownKeys(t):Object.keys(t),o=0;o&lt;r.length;o++){var i=r[o];if("__ob__"!==i){var s=t[i].from;if(s in e._provided)n[i]=e._provided[s];else if("default"in t[i]){var c=t[i].default;n[i]=a(c)?c.call(e):c}}}return n}}function Xn(n,r,i,a,s){var c,u=this,f=s.options;g(a,"_uid")?(c=Object.create(a))._original=a:(c=a,a=a._original);var l=o(f._compiled),d=!l;this.data=n,this.props=r,this.children=i,this.parent=a,this.listeners=n.on||t,this.injections=Jn(f.inject,a),this.slots=function(){return u.$slots||Ee(a,n.scopedSlots,u.$slots=je(i,a)),u.$slots},Object.defineProperty(this,"scopedSlots",{enumerable:!0,get:function(){return Ee(a,n.scopedSlots,this.slots())}}),l&amp;&amp;(this.$options=f,this.$slots=this.slots(),this.$scopedSlots=Ee(a,n.scopedSlots,this.$slots)),f._scopeId?this._c=function(t,n,r,o){var i=He(c,t,n,r,o,d);return i&amp;&amp;!e(i)&amp;&amp;(i.fnScopeId=f._scopeId,i.fnContext=a),i}:this._c=function(t,e,n,r){return He(c,t,e,n,r,d)}}function Qn(t,e,n,r,o){var i=dt(t);return i.fnContext=n,i.fnOptions=r,e.slot&amp;&amp;((i.data||(i.data={})).slot=e.slot),i}function Yn(t,e){for(var n in e)t[$(n)]=e[n]}function tr(t){return t.name||t.__name||t._componentTag}Se(Xn.prototype);var er={init:function(t,e){if(t.componentInstance&amp;&amp;!t.componentInstance._isDestroyed&amp;&amp;t.data.keepAlive){var n=t;er.prepatch(n,n)}else{(t.componentInstance=function(t,e){var n={_isComponent:!0,_parentVnode:t,parent:e},o=t.data.inlineTemplate;r(o)&amp;&amp;(n.render=o.render,n.staticRenderFns=o.staticRenderFns);return new t.componentOptions.Ctor(n)}(t,Pn)).$mount(e?t.elm:void 0,e)}},prepatch:function(e,n){var r=n.componentOptions;!function(e,n,r,o,i){var a=o.data.scopedSlots,s=e.$scopedSlots,c=!!(a&amp;&amp;!a.$stable||s!==t&amp;&amp;!s.$stable||a&amp;&amp;e.$scopedSlots.$key!==a.$key||!a&amp;&amp;e.$scopedSlots.$key),u=!!(i||e.$options._renderChildren||c),f=e.$vnode;e.$options._parentVnode=o,e.$vnode=o,e._vnode&amp;&amp;(e._vnode.parent=o),e.$options._renderChildren=i;var l=o.data.attrs||t;e._attrsProxy&amp;&amp;Ne(e._attrsProxy,l,f.data&amp;&amp;f.data.attrs||t,e,"$attrs")&amp;&amp;(u=!0),e.$attrs=l,r=r||t;var d=e.$options._parentListeners;if(e._listenersProxy&amp;&amp;Ne(e._listenersProxy,r,d||t,e,"$listeners"),e.$listeners=e.$options._parentListeners=r,En(e,r,d),n&amp;&amp;e.$options.props){Ot(!1);for(var p=e._props,v=e.$options._propKeys||[],h=0;h&lt;v.length;h++){var m=v[h],_=e.$options.props;p[m]=vr(m,_,n,e)}Ot(!0),e.$options.propsData=n}u&amp;&amp;(e.$slots=je(i,o.context),e.$forceUpdate())}(n.componentInstance=e.componentInstance,r.propsData,r.listeners,n,r.children)},insert:function(t){var e,n=t.context,r=t.componentInstance;r._isMounted||(r._isMounted=!0,Ln(r,"mounted")),t.data.keepAlive&amp;&amp;(n._isMounted?((e=r)._inactive=!1,Fn.push(e)):Nn(r,!0))},destroy:function(t){var e=t.componentInstance;e._isDestroyed||(t.data.keepAlive?Mn(e,!0):e.$destroy())}},nr=Object.keys(er);function rr(i,a,c,u,f){if(!n(i)){var d=c.$options._base;if(s(i)&amp;&amp;(i=d.extend(i)),"function"==typeof i){var p;if(n(i.cid)&amp;&amp;(i=function(t,e){if(o(t.error)&amp;&amp;r(t.errorComp))return t.errorComp;if(r(t.resolved))return t.resolved;var i=Fe;if(i&amp;&amp;r(t.owners)&amp;&amp;-1===t.owners.indexOf(i)&amp;&amp;t.owners.push(i),o(t.loading)&amp;&amp;r(t.loadingComp))return t.loadingComp;if(i&amp;&amp;!r(t.owners)){var a=t.owners=[i],c=!0,u=null,f=null;i.$on("hook:destroyed",(function(){return _(a,i)}));var d=function(t){for(var e=0,n=a.length;e&lt;n;e++)a[e].$forceUpdate();t&amp;&amp;(a.length=0,null!==u&amp;&amp;(clearTimeout(u),u=null),null!==f&amp;&amp;(clearTimeout(f),f=null))},p=N((function(n){t.resolved=Ue(n,e),c?a.length=0:d(!0)})),v=N((function(e){r(t.errorComp)&amp;&amp;(t.error=!0,d(!0))})),h=t(p,v);return s(h)&amp;&amp;(l(h)?n(t.resolved)&amp;&amp;h.then(p,v):l(h.component)&amp;&amp;(h.component.then(p,v),r(h.error)&amp;&amp;(t.errorComp=Ue(h.error,e)),r(h.loading)&amp;&amp;(t.loadingComp=Ue(h.loading,e),0===h.delay?t.loading=!0:u=setTimeout((function(){u=null,n(t.resolved)&amp;&amp;n(t.error)&amp;&amp;(t.loading=!0,d(!1))}),h.delay||200)),r(h.timeout)&amp;&amp;(f=setTimeout((function(){f=null,n(t.resolved)&amp;&amp;v(null)}),h.timeout)))),c=!1,t.loading?t.loadingComp:t.resolved}}(p=i,d),void 0===i))return function(t,e,n,r,o){var i=ft();return i.asyncFactory=t,i.asyncMeta={data:e,context:n,children:r,tag:o},i}(p,a,c,u,f);a=a||{},jr(i),r(a.model)&amp;&amp;function(t,n){var o=t.model&amp;&amp;t.model.prop||"value",i=t.model&amp;&amp;t.model.event||"input";(n.attrs||(n.attrs={}))[o]=n.model.value;var a=n.on||(n.on={}),s=a[i],c=n.model.callback;r(s)?(e(s)?-1===s.indexOf(c):s!==c)&amp;&amp;(a[i]=[c].concat(s)):a[i]=c}(i.options,a);var v=function(t,e,o){var i=e.options.props;if(!n(i)){var a={},s=t.attrs,c=t.props;if(r(s)||r(c))for(var u in i){var f=O(u);ue(a,c,u,f,!0)||ue(a,s,u,f,!1)}return a}}(a,i);if(o(i.options.functional))return function(n,o,i,a,s){var c=n.options,u={},f=c.props;if(r(f))for(var l in f)u[l]=vr(l,f,o||t);else r(i.attrs)&amp;&amp;Yn(u,i.attrs),r(i.props)&amp;&amp;Yn(u,i.props);var d=new Xn(i,u,s,a,n),p=c.render.call(null,d._c,d);if(p instanceof ut)return Qn(p,i,d.parent,c);if(e(p)){for(var v=fe(p)||[],h=new Array(v.length),m=0;m&lt;v.length;m++)h[m]=Qn(v[m],i,d.parent,c);return h}}(i,v,a,c,u);var h=a.on;if(a.on=a.nativeOn,o(i.options.abstract)){var m=a.slot;a={},m&amp;&amp;(a.slot=m)}!function(t){for(var e=t.hook||(t.hook={}),n=0;n&lt;nr.length;n++){var r=nr[n],o=e[r],i=er[r];o===i||o&amp;&amp;o._merged||(e[r]=o?or(i,o):i)}}(a);var y=tr(i.options)||f;return new ut("vue-component-".concat(i.cid).concat(y?"-".concat(y):""),a,void 0,void 0,void 0,c,{Ctor:i,propsData:v,listeners:h,tag:f,children:u},p)}}}function or(t,e){var n=function(n,r){t(n,r),e(n,r)};return n._merged=!0,n}var ir=A,ar=U.optionMergeStrategies;function sr(t,e,n){if(void 0===n&amp;&amp;(n=!0),!e)return t;for(var r,o,i,a=at?Reflect.ownKeys(e):Object.keys(e),s=0;s&lt;a.length;s++)"__ob__"!==(r=a[s])&amp;&amp;(o=t[r],i=e[r],n&amp;&amp;g(t,r)?o!==i&amp;&amp;u(o)&amp;&amp;u(i)&amp;&amp;sr(o,i):At(t,r,i));return t}function cr(t,e,n){return n?function(){var r=a(e)?e.call(n,n):e,o=a(t)?t.call(n,n):t;return r?sr(r,o):o}:e?t?function(){return sr(a(e)?e.call(this,this):e,a(t)?t.call(this,this):t)}:e:t}function ur(t,n){var r=n?t?t.concat(n):e(n)?n:[n]:t;return r?function(t){for(var e=[],n=0;n&lt;t.length;n++)-1===e.indexOf(t[n])&amp;&amp;e.push(t[n]);return e}(r):r}function fr(t,e,n,r){var o=Object.create(t||null);return e?j(o,e):o}ar.data=function(t,e,n){return n?cr(t,e,n):e&amp;&amp;"function"!=typeof e?t:cr(t,e)},F.forEach((function(t){ar[t]=ur})),R.forEach((function(t){ar[t+"s"]=fr})),ar.watch=function(t,n,r,o){if(t===Y&amp;&amp;(t=void 0),n===Y&amp;&amp;(n=void 0),!n)return Object.create(t||null);if(!t)return n;var i={};for(var a in j(i,t),n){var s=i[a],c=n[a];s&amp;&amp;!e(s)&amp;&amp;(s=[s]),i[a]=s?s.concat(c):e(c)?c:[c]}return i},ar.props=ar.methods=ar.inject=ar.computed=function(t,e,n,r){if(!t)return e;var o=Object.create(null);return j(o,t),e&amp;&amp;j(o,e),o},ar.provide=function(t,e){return t?function(){var n=Object.create(null);return sr(n,a(t)?t.call(this):t),e&amp;&amp;sr(n,a(e)?e.call(this):e,!1),n}:e};var lr=function(t,e){return void 0===e?t:e};function dr(t,n,r){if(a(n)&amp;&amp;(n=n.options),function(t,n){var r=t.props;if(r){var o,i,a={};if(e(r))for(o=r.length;o--;)"string"==typeof(i=r[o])&amp;&amp;(a[$(i)]={type:null});else if(u(r))for(var s in r)i=r[s],a[$(s)]=u(i)?i:{type:i};t.props=a}}(n),function(t,n){var r=t.inject;if(r){var o=t.inject={};if(e(r))for(var i=0;i&lt;r.length;i++)o[r[i]]={from:r[i]};else if(u(r))for(var a in r){var s=r[a];o[a]=u(s)?j({from:a},s):{from:s}}}}(n),function(t){var e=t.directives;if(e)for(var n in e){var r=e[n];a(r)&amp;&amp;(e[n]={bind:r,update:r})}}(n),!n._base&amp;&amp;(n.extends&amp;&amp;(t=dr(t,n.extends,r)),n.mixins))for(var o=0,i=n.mixins.length;o&lt;i;o++)t=dr(t,n.mixins[o],r);var s,c={};for(s in t)f(s);for(s in n)g(t,s)||f(s);function f(e){var o=ar[e]||lr;c[e]=o(t[e],n[e],r,e)}return c}function pr(t,e,n,r){if("string"==typeof n){var o=t[e];if(g(o,n))return o[n];var i=$(n);if(g(o,i))return o[i];var a=C(i);return g(o,a)?o[a]:o[n]||o[i]||o[a]}}function vr(t,e,n,r){var o=e[t],i=!g(n,t),s=n[t],c=yr(Boolean,o.type);if(c&gt;-1)if(i&amp;&amp;!g(o,"default"))s=!1;else if(""===s||s===O(t)){var u=yr(String,o.type);(u&lt;0||c&lt;u)&amp;&amp;(s=!0)}if(void 0===s){s=function(t,e,n){if(!g(e,"default"))return;var r=e.default;if(t&amp;&amp;t.$options.propsData&amp;&amp;void 0===t.$options.propsData[n]&amp;&amp;void 0!==t._props[n])return t._props[n];return a(r)&amp;&amp;"Function"!==mr(e.type)?r.call(t):r}(r,o,t);var f=xt;Ot(!0),jt(s),Ot(f)}return s}var hr=/^\s*function (\w+)/;function mr(t){var e=t&amp;&amp;t.toString().match(hr);return e?e[1]:""}function _r(t,e){return mr(t)===mr(e)}function yr(t,n){if(!e(n))return _r(n,t)?0:-1;for(var r=0,o=n.length;r&lt;o;r++)if(_r(n[r],t))return r;return-1}var gr={enumerable:!0,configurable:!0,get:A,set:A};function br(t,e,n){gr.get=function(){return this[e][n]},gr.set=function(t){this[e][n]=t},Object.defineProperty(t,n,gr)}function wr(t){var n=t.$options;if(n.props&amp;&amp;function(t,e){var n=t.$options.propsData||{},r=t._props=It({}),o=t.$options._propKeys=[],i=!t.$parent;i||Ot(!1);var a=function(i){o.push(i);var a=vr(i,e,n,t);Tt(r,i,a,void 0,!0),i in t||br(t,"_props",i)};for(var s in e)a(s);Ot(!0)}(t,n.props),function(t){var e=t.$options,n=e.setup;if(n){var r=t._setupContext=De(t);ct(t),yt();var o=qe(n,null,[t._props||It({}),r],t,"setup");if(gt(),ct(),a(o))e.render=o;else if(s(o))if(t._setupState=o,o.__sfc){var i=t._setupProxy={};for(var c in o)"__sfc"!==c&amp;&amp;Vt(i,o,c)}else for(var c in o)V(c)||Vt(t,o,c)}}(t),n.methods&amp;&amp;function(t,e){for(var n in t.$options.props,e)t[n]="function"!=typeof e[n]?A:k(e[n],t)}(t,n.methods),n.data)!function(t){var e=t.$options.data;e=t._data=a(e)?function(t,e){yt();try{return t.call(e,e)}catch(t){return Ke(t,e,"data()"),{}}finally{gt()}}(e,t):e||{},u(e)||(e={});var n=Object.keys(e),r=t.$options.props;t.$options.methods;var o=n.length;for(;o--;){var i=n[o];r&amp;&amp;g(r,i)||V(i)||br(t,"_data",i)}var s=jt(e);s&amp;&amp;s.vmCount++}(t);else{var r=jt(t._data={});r&amp;&amp;r.vmCount++}n.computed&amp;&amp;function(t,e){var n=t._computedWatchers=Object.create(null),r=nt();for(var o in e){var i=e[o],s=a(i)?i:i.get;r||(n[o]=new Sn(t,s||A,A,$r)),o in t||Cr(t,o,i)}}(t,n.computed),n.watch&amp;&amp;n.watch!==Y&amp;&amp;function(t,n){for(var r in n){var o=n[r];if(e(o))for(var i=0;i&lt;o.length;i++)kr(t,r,o[i]);else kr(t,r,o)}}(t,n.watch)}var $r={lazy:!0};function Cr(t,e,n){var r=!nt();a(n)?(gr.get=r?xr(e):Or(n),gr.set=A):(gr.get=n.get?r&amp;&amp;!1!==n.cache?xr(e):Or(n.get):A,gr.set=n.set||A),Object.defineProperty(t,e,gr)}function xr(t){return function(){var e=this._computedWatchers&amp;&amp;this._computedWatchers[t];if(e)return e.dirty&amp;&amp;e.evaluate(),mt.target&amp;&amp;e.depend(),e.value}}function Or(t){return function(){return t.call(this,this)}}function kr(t,e,n,r){return u(n)&amp;&amp;(r=n,n=n.handler),"string"==typeof n&amp;&amp;(n=t[n]),t.$watch(e,n,r)}var Sr=0;function jr(t){var e=t.options;if(t.super){var n=jr(t.super);if(n!==t.superOptions){t.superOptions=n;var r=function(t){var e,n=t.options,r=t.sealedOptions;for(var o in n)n[o]!==r[o]&amp;&amp;(e||(e={}),e[o]=n[o]);return e}(t);r&amp;&amp;j(t.extendOptions,r),(e=t.options=dr(n,t.extendOptions)).name&amp;&amp;(e.components[e.name]=t)}}return e}function Tr(t){this._init(t)}function Ar(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var n=this,r=n.cid,o=t._Ctor||(t._Ctor={});if(o[r])return o[r];var i=tr(t)||tr(n.options),a=function(t){this._init(t)};return(a.prototype=Object.create(n.prototype)).constructor=a,a.cid=e++,a.options=dr(n.options,t),a.super=n,a.options.props&amp;&amp;function(t){var e=t.options.props;for(var n in e)br(t.prototype,"_props",n)}(a),a.options.computed&amp;&amp;function(t){var e=t.options.computed;for(var n in e)Cr(t.prototype,n,e[n])}(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,R.forEach((function(t){a[t]=n[t]})),i&amp;&amp;(a.options.components[i]=a),a.superOptions=n.options,a.extendOptions=t,a.sealedOptions=j({},a.options),o[r]=a,a}}function Er(t){return t&amp;&amp;(tr(t.Ctor.options)||t.tag)}function Pr(t,n){return e(t)?t.indexOf(n)&gt;-1:"string"==typeof t?t.split(",").indexOf(n)&gt;-1:(r=t,"[object RegExp]"===c.call(r)&amp;&amp;t.test(n));var r}function Ir(t,e){var n=t.cache,r=t.keys,o=t._vnode,i=t.$vnode;for(var a in n){var s=n[a];if(s){var c=s.name;c&amp;&amp;!e(c)&amp;&amp;Dr(n,a,r,o)}}i.componentOptions.children=void 0}function Dr(t,e,n,r){var o=t[e];!o||r&amp;&amp;o.tag===r.tag||o.componentInstance.$destroy(),t[e]=null,_(n,e)}!function(e){e.prototype._init=function(e){var n=this;n._uid=Sr++,n._isVue=!0,n.__v_skip=!0,n._scope=new ne(!0),n._scope.parent=void 0,n._scope._vm=!0,e&amp;&amp;e._isComponent?function(t,e){var n=t.$options=Object.create(t.constructor.options),r=e._parentVnode;n.parent=e.parent,n._parentVnode=r;var o=r.componentOptions;n.propsData=o.propsData,n._parentListeners=o.listeners,n._renderChildren=o.children,n._componentTag=o.tag,e.render&amp;&amp;(n.render=e.render,n.staticRenderFns=e.staticRenderFns)}(n,e):n.$options=dr(jr(n.constructor),e||{},n),n._renderProxy=n,n._self=n,function(t){var e=t.$options,n=e.parent;if(n&amp;&amp;!e.abstract){for(;n.$options.abstract&amp;&amp;n.$parent;)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._provided=n?n._provided:Object.create(null),t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}(n),function(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&amp;&amp;En(t,e)}(n),function(e){e._vnode=null,e._staticTrees=null;var n=e.$options,r=e.$vnode=n._parentVnode,o=r&amp;&amp;r.context;e.$slots=je(n._renderChildren,o),e.$scopedSlots=r?Ee(e.$parent,r.data.scopedSlots,e.$slots):t,e._c=function(t,n,r,o){return He(e,t,n,r,o,!1)},e.$createElement=function(t,n,r,o){return He(e,t,n,r,o,!0)};var i=r&amp;&amp;r.data;Tt(e,"$attrs",i&amp;&amp;i.attrs||t,null,!0),Tt(e,"$listeners",n._parentListeners||t,null,!0)}(n),Ln(n,"beforeCreate",void 0,!1),function(t){var e=Jn(t.$options.inject,t);e&amp;&amp;(Ot(!1),Object.keys(e).forEach((function(n){Tt(t,n,e[n])})),Ot(!0))}(n),wr(n),function(t){var e=t.$options.provide;if(e){var n=a(e)?e.call(t):e;if(!s(n))return;for(var r=oe(t),o=at?Reflect.ownKeys(n):Object.keys(n),i=0;i&lt;o.length;i++){var c=o[i];Object.defineProperty(r,c,Object.getOwnPropertyDescriptor(n,c))}}}(n),Ln(n,"created"),n.$options.el&amp;&amp;n.$mount(n.$options.el)}}(Tr),function(t){var e={get:function(){return this._data}},n={get:function(){return this._props}};Object.defineProperty(t.prototype,"$data",e),Object.defineProperty(t.prototype,"$props",n),t.prototype.$set=At,t.prototype.$delete=Et,t.prototype.$watch=function(t,e,n){var r=this;if(u(e))return kr(r,t,e,n);(n=n||{}).user=!0;var o=new Sn(r,t,e,n);if(n.immediate){var i='callback for immediate watcher "'.concat(o.expression,'"');yt(),qe(e,r,[o.value],r,i),gt()}return function(){o.teardown()}}}(Tr),function(t){var n=/^hook:/;t.prototype.$on=function(t,r){var o=this;if(e(t))for(var i=0,a=t.length;i&lt;a;i++)o.$on(t[i],r);else(o._events[t]||(o._events[t]=[])).push(r),n.test(t)&amp;&amp;(o._hasHookEvent=!0);return o},t.prototype.$once=function(t,e){var n=this;function r(){n.$off(t,r),e.apply(n,arguments)}return r.fn=e,n.$on(t,r),n},t.prototype.$off=function(t,n){var r=this;if(!arguments.length)return r._events=Object.create(null),r;if(e(t)){for(var o=0,i=t.length;o&lt;i;o++)r.$off(t[o],n);return r}var a,s=r._events[t];if(!s)return r;if(!n)return r._events[t]=null,r;for(var c=s.length;c--;)if((a=s[c])===n||a.fn===n){s.splice(c,1);break}return r},t.prototype.$emit=function(t){var e=this,n=e._events[t];if(n){n=n.length&gt;1?S(n):n;for(var r=S(arguments,1),o='event handler for "'.concat(t,'"'),i=0,a=n.length;i&lt;a;i++)qe(n[i],e,r,e,o)}return e}}(Tr),function(t){t.prototype._update=function(t,e){var n=this,r=n.$el,o=n._vnode,i=In(n);n._vnode=t,n.$el=o?n.__patch__(o,t):n.__patch__(n.$el,t,e,!1),i(),r&amp;&amp;(r.__vue__=null),n.$el&amp;&amp;(n.$el.__vue__=n);for(var a=n;a&amp;&amp;a.$vnode&amp;&amp;a.$parent&amp;&amp;a.$vnode===a.$parent._vnode;)a.$parent.$el=a.$el,a=a.$parent},t.prototype.$forceUpdate=function(){this._watcher&amp;&amp;this._watcher.update()},t.prototype.$destroy=function(){var t=this;if(!t._isBeingDestroyed){Ln(t,"beforeDestroy"),t._isBeingDestroyed=!0;var e=t.$parent;!e||e._isBeingDestroyed||t.$options.abstract||_(e.$children,t),t._scope.stop(),t._data.__ob__&amp;&amp;t._data.__ob__.vmCount--,t._isDestroyed=!0,t.__patch__(t._vnode,null),Ln(t,"destroyed"),t.$off(),t.$el&amp;&amp;(t.$el.__vue__=null),t.$vnode&amp;&amp;(t.$vnode.parent=null)}}}(Tr),function(t){Se(t.prototype),t.prototype.$nextTick=function(t){return an(t,this)},t.prototype._render=function(){var t=this,n=t.$options,r=n.render,o=n._parentVnode;o&amp;&amp;t._isMounted&amp;&amp;(t.$scopedSlots=Ee(t.$parent,o.data.scopedSlots,t.$slots,t.$scopedSlots),t._slotsProxy&amp;&amp;Le(t._slotsProxy,t.$scopedSlots)),t.$vnode=o;var i,a=st,s=Fe;try{ct(t),Fe=t,i=r.call(t._renderProxy,t.$createElement)}catch(e){Ke(e,t,"render"),i=t._vnode}finally{Fe=s,ct(a)}return e(i)&amp;&amp;1===i.length&amp;&amp;(i=i[0]),i instanceof ut||(i=ft()),i.parent=o,i}}(Tr);var Nr=[String,RegExp,Array],Mr={KeepAlive:{name:"keep-alive",abstract:!0,props:{include:Nr,exclude:Nr,max:[String,Number]},methods:{cacheVNode:function(){var t=this,e=t.cache,n=t.keys,r=t.vnodeToCache,o=t.keyToCache;if(r){var i=r.tag,a=r.componentInstance,s=r.componentOptions;e[o]={name:Er(s),tag:i,componentInstance:a},n.push(o),this.max&amp;&amp;n.length&gt;parseInt(this.max)&amp;&amp;Dr(e,n[0],n,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var t in this.cache)Dr(this.cache,t,this.keys)},mounted:function(){var t=this;this.cacheVNode(),this.$watch("include",(function(e){Ir(t,(function(t){return Pr(e,t)}))})),this.$watch("exclude",(function(e){Ir(t,(function(t){return!Pr(e,t)}))}))},updated:function(){this.cacheVNode()},render:function(){var t=this.$slots.default,e=Ve(t),n=e&amp;&amp;e.componentOptions;if(n){var r=Er(n),o=this.include,i=this.exclude;if(o&amp;&amp;(!r||!Pr(o,r))||i&amp;&amp;r&amp;&amp;Pr(i,r))return e;var a=this.cache,s=this.keys,c=null==e.key?n.Ctor.cid+(n.tag?"::".concat(n.tag):""):e.key;a[c]?(e.componentInstance=a[c].componentInstance,_(s,c),s.push(c)):(this.vnodeToCache=e,this.keyToCache=c),e.data.keepAlive=!0}return e||t&amp;&amp;t[0]}}};!function(t){var e={get:function(){return U}};Object.defineProperty(t,"config",e),t.util={warn:ir,extend:j,mergeOptions:dr,defineReactive:Tt},t.set=At,t.delete=Et,t.nextTick=an,t.observable=function(t){return jt(t),t},t.options=Object.create(null),R.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,j(t.options.components,Mr),function(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)&gt;-1)return this;var n=S(arguments,1);return n.unshift(this),a(t.install)?t.install.apply(t,n):a(t)&amp;&amp;t.apply(null,n),e.push(t),this}}(t),function(t){t.mixin=function(t){return this.options=dr(this.options,t),this}}(t),Ar(t),function(t){R.forEach((function(e){t[e]=function(t,n){return n?("component"===e&amp;&amp;u(n)&amp;&amp;(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&amp;&amp;a(n)&amp;&amp;(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}}))}(t)}(Tr),Object.defineProperty(Tr.prototype,"$isServer",{get:nt}),Object.defineProperty(Tr.prototype,"$ssrContext",{get:function(){return this.$vnode&amp;&amp;this.$vnode.ssrContext}}),Object.defineProperty(Tr,"FunctionalRenderContext",{value:Xn}),Tr.version=bn;var Lr=h("style,class"),Rr=h("input,textarea,option,select,progress"),Fr=h("contenteditable,draggable,spellcheck"),Ur=h("events,caret,typing,plaintext-only"),Vr=function(t,e){return Kr(e)||"false"===e?"false":"contenteditable"===t&amp;&amp;Ur(e)?e:"true"},Br=h("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),zr="http://www.w3.org/1999/xlink",Hr=function(t){return":"===t.charAt(5)&amp;&amp;"xlink"===t.slice(0,5)},Wr=function(t){return Hr(t)?t.slice(6,t.length):""},Kr=function(t){return null==t||!1===t};function qr(t){for(var e=t.data,n=t,o=t;r(o.componentInstance);)(o=o.componentInstance._vnode)&amp;&amp;o.data&amp;&amp;(e=Gr(o.data,e));for(;r(n=n.parent);)n&amp;&amp;n.data&amp;&amp;(e=Gr(e,n.data));return function(t,e){if(r(t)||r(e))return Zr(t,Jr(e));return""}(e.staticClass,e.class)}function Gr(t,e){return{staticClass:Zr(t.staticClass,e.staticClass),class:r(t.class)?[t.class,e.class]:e.class}}function Zr(t,e){return t?e?t+" "+e:t:e||""}function Jr(t){return Array.isArray(t)?function(t){for(var e,n="",o=0,i=t.length;o&lt;i;o++)r(e=Jr(t[o]))&amp;&amp;""!==e&amp;&amp;(n&amp;&amp;(n+=" "),n+=e);return n}(t):s(t)?function(t){var e="";for(var n in t)t[n]&amp;&amp;(e&amp;&amp;(e+=" "),e+=n);return e}(t):"string"==typeof t?t:""}var Xr={svg:"http://www.w3.org/2000/svg",math:"http://www.w3.org/1998/Math/MathML"},Qr=h("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,menuitem,summary,content,element,shadow,template,blockquote,iframe,tfoot"),Yr=h("svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,foreignobject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view",!0),to=function(t){return Qr(t)||Yr(t)};var eo=Object.create(null);var no=h("text,number,password,search,email,tel,url");var ro=Object.freeze({__proto__:null,createElement:function(t,e){var n=document.createElement(t);return"select"!==t||e.data&amp;&amp;e.data.attrs&amp;&amp;void 0!==e.data.attrs.multiple&amp;&amp;n.setAttribute("multiple","multiple"),n},createElementNS:function(t,e){return document.createElementNS(Xr[t],e)},createTextNode:function(t){return document.createTextNode(t)},createComment:function(t){return document.createComment(t)},insertBefore:function(t,e,n){t.insertBefore(e,n)},removeChild:function(t,e){t.removeChild(e)},appendChild:function(t,e){t.appendChild(e)},parentNode:function(t){return t.parentNode},nextSibling:function(t){return t.nextSibling},tagName:function(t){return t.tagName},setTextContent:function(t,e){t.textContent=e},setStyleScope:function(t,e){t.setAttribute(e,"")}}),oo={create:function(t,e){io(e)},update:function(t,e){t.data.ref!==e.data.ref&amp;&amp;(io(t,!0),io(e))},destroy:function(t){io(t,!0)}};function io(t,n){var o=t.data.ref;if(r(o)){var i=t.context,s=t.componentInstance||t.elm,c=n?null:s,u=n?void 0:s;if(a(o))qe(o,i,[c],i,"template ref function");else{var f=t.data.refInFor,l="string"==typeof o||"number"==typeof o,d=Ft(o),p=i.$refs;if(l||d)if(f){var v=l?p[o]:o.value;n?e(v)&amp;&amp;_(v,s):e(v)?v.includes(s)||v.push(s):l?(p[o]=[s],ao(i,o,p[o])):o.value=[s]}else if(l){if(n&amp;&amp;p[o]!==s)return;p[o]=u,ao(i,o,c)}else if(d){if(n&amp;&amp;o.value!==s)return;o.value=c}}}}function ao(t,e,n){var r=t._setupState;r&amp;&amp;g(r,e)&amp;&amp;(Ft(r[e])?r[e].value=n:r[e]=n)}var so=new ut("",{},[]),co=["create","activate","update","remove","destroy"];function uo(t,e){return t.key===e.key&amp;&amp;t.asyncFactory===e.asyncFactory&amp;&amp;(t.tag===e.tag&amp;&amp;t.isComment===e.isComment&amp;&amp;r(t.data)===r(e.data)&amp;&amp;function(t,e){if("input"!==t.tag)return!0;var n,o=r(n=t.data)&amp;&amp;r(n=n.attrs)&amp;&amp;n.type,i=r(n=e.data)&amp;&amp;r(n=n.attrs)&amp;&amp;n.type;return o===i||no(o)&amp;&amp;no(i)}(t,e)||o(t.isAsyncPlaceholder)&amp;&amp;n(e.asyncFactory.error))}function fo(t,e,n){var o,i,a={};for(o=e;o&lt;=n;++o)r(i=t[o].key)&amp;&amp;(a[i]=o);return a}var lo={create:po,update:po,destroy:function(t){po(t,so)}};function po(t,e){(t.data.directives||e.data.directives)&amp;&amp;function(t,e){var n,r,o,i=t===so,a=e===so,s=ho(t.data.directives,t.context),c=ho(e.data.directives,e.context),u=[],f=[];for(n in c)r=s[n],o=c[n],r?(o.oldValue=r.value,o.oldArg=r.arg,_o(o,"update",e,t),o.def&amp;&amp;o.def.componentUpdated&amp;&amp;f.push(o)):(_o(o,"bind",e,t),o.def&amp;&amp;o.def.inserted&amp;&amp;u.push(o));if(u.length){var l=function(){for(var n=0;n&lt;u.length;n++)_o(u[n],"inserted",e,t)};i?ce(e,"insert",l):l()}f.length&amp;&amp;ce(e,"postpatch",(function(){for(var n=0;n&lt;f.length;n++)_o(f[n],"componentUpdated",e,t)}));if(!i)for(n in s)c[n]||_o(s[n],"unbind",t,t,a)}(t,e)}var vo=Object.create(null);function ho(t,e){var n,r,o=Object.create(null);if(!t)return o;for(n=0;n&lt;t.length;n++){if((r=t[n]).modifiers||(r.modifiers=vo),o[mo(r)]=r,e._setupState&amp;&amp;e._setupState.__sfc){var i=r.def||pr(e,"_setupState","v-"+r.name);r.def="function"==typeof i?{bind:i,update:i}:i}r.def=r.def||pr(e.$options,"directives",r.name)}return o}function mo(t){return t.rawName||"".concat(t.name,".").concat(Object.keys(t.modifiers||{}).join("."))}function _o(t,e,n,r,o){var i=t.def&amp;&amp;t.def[e];if(i)try{i(n.elm,t,n,r,o)}catch(r){Ke(r,n.context,"directive ".concat(t.name," ").concat(e," hook"))}}var yo=[oo,lo];function go(t,e){var i=e.componentOptions;if(!(r(i)&amp;&amp;!1===i.Ctor.options.inheritAttrs||n(t.data.attrs)&amp;&amp;n(e.data.attrs))){var a,s,c=e.elm,u=t.data.attrs||{},f=e.data.attrs||{};for(a in(r(f.__ob__)||o(f._v_attr_proxy))&amp;&amp;(f=e.data.attrs=j({},f)),f)s=f[a],u[a]!==s&amp;&amp;bo(c,a,s,e.data.pre);for(a in(q||Z)&amp;&amp;f.value!==u.value&amp;&amp;bo(c,"value",f.value),u)n(f[a])&amp;&amp;(Hr(a)?c.removeAttributeNS(zr,Wr(a)):Fr(a)||c.removeAttribute(a))}}function bo(t,e,n,r){r||t.tagName.indexOf("-")&gt;-1?wo(t,e,n):Br(e)?Kr(n)?t.removeAttribute(e):(n="allowfullscreen"===e&amp;&amp;"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):Fr(e)?t.setAttribute(e,Vr(e,n)):Hr(e)?Kr(n)?t.removeAttributeNS(zr,Wr(e)):t.setAttributeNS(zr,e,n):wo(t,e,n)}function wo(t,e,n){if(Kr(n))t.removeAttribute(e);else{if(q&amp;&amp;!G&amp;&amp;"TEXTAREA"===t.tagName&amp;&amp;"placeholder"===e&amp;&amp;""!==n&amp;&amp;!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var $o={create:go,update:go};function Co(t,e){var o=e.elm,i=e.data,a=t.data;if(!(n(i.staticClass)&amp;&amp;n(i.class)&amp;&amp;(n(a)||n(a.staticClass)&amp;&amp;n(a.class)))){var s=qr(e),c=o._transitionClasses;r(c)&amp;&amp;(s=Zr(s,Jr(c))),s!==o._prevClass&amp;&amp;(o.setAttribute("class",s),o._prevClass=s)}}var xo,Oo={create:Co,update:Co},ko="__r",So="__c";function jo(t,e,n){var r=xo;return function o(){null!==e.apply(null,arguments)&amp;&amp;Eo(t,o,n,r)}}var To=Xe&amp;&amp;!(Q&amp;&amp;Number(Q[1])&lt;=53);function Ao(t,e,n,r){if(To){var o=Hn,i=e;e=i._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp&gt;=o||t.timeStamp&lt;=0||t.target.ownerDocument!==document)return i.apply(this,arguments)}}xo.addEventListener(t,e,tt?{capture:n,passive:r}:n)}function Eo(t,e,n,r){(r||xo).removeEventListener(t,e._wrapper||e,n)}function Po(t,e){if(!n(t.data.on)||!n(e.data.on)){var o=e.data.on||{},i=t.data.on||{};xo=e.elm||t.elm,function(t){if(r(t[ko])){var e=q?"change":"input";t[e]=[].concat(t[ko],t[e]||[]),delete t[ko]}r(t[So])&amp;&amp;(t.change=[].concat(t[So],t.change||[]),delete t[So])}(o),se(o,i,Ao,Eo,jo,e.context),xo=void 0}}var Io,Do={create:Po,update:Po,destroy:function(t){return Po(t,so)}};function No(t,e){if(!n(t.data.domProps)||!n(e.data.domProps)){var i,a,s=e.elm,c=t.data.domProps||{},u=e.data.domProps||{};for(i in(r(u.__ob__)||o(u._v_attr_proxy))&amp;&amp;(u=e.data.domProps=j({},u)),c)i in u||(s[i]="");for(i in u){if(a=u[i],"textContent"===i||"innerHTML"===i){if(e.children&amp;&amp;(e.children.length=0),a===c[i])continue;1===s.childNodes.length&amp;&amp;s.removeChild(s.childNodes[0])}if("value"===i&amp;&amp;"PROGRESS"!==s.tagName){s._value=a;var f=n(a)?"":String(a);Mo(s,f)&amp;&amp;(s.value=f)}else if("innerHTML"===i&amp;&amp;Yr(s.tagName)&amp;&amp;n(s.innerHTML)){(Io=Io||document.createElement("div")).innerHTML="&lt;svg&gt;".concat(a,"&lt;/svg&gt;");for(var l=Io.firstChild;s.firstChild;)s.removeChild(s.firstChild);for(;l.firstChild;)s.appendChild(l.firstChild)}else if(a!==c[i])try{s[i]=a}catch(t){}}}}function Mo(t,e){return!t.composing&amp;&amp;("OPTION"===t.tagName||function(t,e){var n=!0;try{n=document.activeElement!==t}catch(t){}return n&amp;&amp;t.value!==e}(t,e)||function(t,e){var n=t.value,o=t._vModifiers;if(r(o)){if(o.number)return v(n)!==v(e);if(o.trim)return n.trim()!==e.trim()}return n!==e}(t,e))}var Lo={create:No,update:No},Ro=b((function(t){var e={},n=/:(.+)/;return t.split(/;(?![^(]*\))/g).forEach((function(t){if(t){var r=t.split(n);r.length&gt;1&amp;&amp;(e[r[0].trim()]=r[1].trim())}})),e}));function Fo(t){var e=Uo(t.style);return t.staticStyle?j(t.staticStyle,e):e}function Uo(t){return Array.isArray(t)?T(t):"string"==typeof t?Ro(t):t}var Vo,Bo=/^--/,zo=/\s*!important$/,Ho=function(t,e,n){if(Bo.test(e))t.style.setProperty(e,n);else if(zo.test(n))t.style.setProperty(O(e),n.replace(zo,""),"important");else{var r=Ko(e);if(Array.isArray(n))for(var o=0,i=n.length;o&lt;i;o++)t.style[r]=n[o];else t.style[r]=n}},Wo=["Webkit","Moz","ms"],Ko=b((function(t){if(Vo=Vo||document.createElement("div").style,"filter"!==(t=$(t))&amp;&amp;t in Vo)return t;for(var e=t.charAt(0).toUpperCase()+t.slice(1),n=0;n&lt;Wo.length;n++){var r=Wo[n]+e;if(r in Vo)return r}}));function qo(t,e){var o=e.data,i=t.data;if(!(n(o.staticStyle)&amp;&amp;n(o.style)&amp;&amp;n(i.staticStyle)&amp;&amp;n(i.style))){var a,s,c=e.elm,u=i.staticStyle,f=i.normalizedStyle||i.style||{},l=u||f,d=Uo(e.data.style)||{};e.data.normalizedStyle=r(d.__ob__)?j({},d):d;var p=function(t,e){var n,r={};if(e)for(var o=t;o.componentInstance;)(o=o.componentInstance._vnode)&amp;&amp;o.data&amp;&amp;(n=Fo(o.data))&amp;&amp;j(r,n);(n=Fo(t.data))&amp;&amp;j(r,n);for(var i=t;i=i.parent;)i.data&amp;&amp;(n=Fo(i.data))&amp;&amp;j(r,n);return r}(e,!0);for(s in l)n(p[s])&amp;&amp;Ho(c,s,"");for(s in p)a=p[s],Ho(c,s,null==a?"":a)}}var Go={create:qo,update:qo},Zo=/\s+/;function Jo(t,e){if(e&amp;&amp;(e=e.trim()))if(t.classList)e.indexOf(" ")&gt;-1?e.split(Zo).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var n=" ".concat(t.getAttribute("class")||""," ");n.indexOf(" "+e+" ")&lt;0&amp;&amp;t.setAttribute("class",(n+e).trim())}}function Xo(t,e){if(e&amp;&amp;(e=e.trim()))if(t.classList)e.indexOf(" ")&gt;-1?e.split(Zo).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var n=" ".concat(t.getAttribute("class")||""," "),r=" "+e+" ";n.indexOf(r)&gt;=0;)n=n.replace(r," ");(n=n.trim())?t.setAttribute("class",n):t.removeAttribute("class")}}function Qo(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&amp;&amp;j(e,Yo(t.name||"v")),j(e,t),e}return"string"==typeof t?Yo(t):void 0}}var Yo=b((function(t){return{enterClass:"".concat(t,"-enter"),enterToClass:"".concat(t,"-enter-to"),enterActiveClass:"".concat(t,"-enter-active"),leaveClass:"".concat(t,"-leave"),leaveToClass:"".concat(t,"-leave-to"),leaveActiveClass:"".concat(t,"-leave-active")}})),ti=W&amp;&amp;!G,ei="transition",ni="animation",ri="transition",oi="transitionend",ii="animation",ai="animationend";ti&amp;&amp;(void 0===window.ontransitionend&amp;&amp;void 0!==window.onwebkittransitionend&amp;&amp;(ri="WebkitTransition",oi="webkitTransitionEnd"),void 0===window.onanimationend&amp;&amp;void 0!==window.onwebkitanimationend&amp;&amp;(ii="WebkitAnimation",ai="webkitAnimationEnd"));var si=W?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function ci(t){si((function(){si(t)}))}function ui(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)&lt;0&amp;&amp;(n.push(e),Jo(t,e))}function fi(t,e){t._transitionClasses&amp;&amp;_(t._transitionClasses,e),Xo(t,e)}function li(t,e,n){var r=pi(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var s=o===ei?oi:ai,c=0,u=function(){t.removeEventListener(s,f),n()},f=function(e){e.target===t&amp;&amp;++c&gt;=a&amp;&amp;u()};setTimeout((function(){c&lt;a&amp;&amp;u()}),i+1),t.addEventListener(s,f)}var di=/\b(transform|all)(,|$)/;function pi(t,e){var n,r=window.getComputedStyle(t),o=(r[ri+"Delay"]||"").split(", "),i=(r[ri+"Duration"]||"").split(", "),a=vi(o,i),s=(r[ii+"Delay"]||"").split(", "),c=(r[ii+"Duration"]||"").split(", "),u=vi(s,c),f=0,l=0;return e===ei?a&gt;0&amp;&amp;(n=ei,f=a,l=i.length):e===ni?u&gt;0&amp;&amp;(n=ni,f=u,l=c.length):l=(n=(f=Math.max(a,u))&gt;0?a&gt;u?ei:ni:null)?n===ei?i.length:c.length:0,{type:n,timeout:f,propCount:l,hasTransform:n===ei&amp;&amp;di.test(r[ri+"Property"])}}function vi(t,e){for(;t.length&lt;e.length;)t=t.concat(t);return Math.max.apply(null,e.map((function(e,n){return hi(e)+hi(t[n])})))}function hi(t){return 1e3*Number(t.slice(0,-1).replace(",","."))}function mi(t,e){var o=t.elm;r(o._leaveCb)&amp;&amp;(o._leaveCb.cancelled=!0,o._leaveCb());var i=Qo(t.data.transition);if(!n(i)&amp;&amp;!r(o._enterCb)&amp;&amp;1===o.nodeType){for(var c=i.css,u=i.type,f=i.enterClass,l=i.enterToClass,d=i.enterActiveClass,p=i.appearClass,h=i.appearToClass,m=i.appearActiveClass,_=i.beforeEnter,y=i.enter,g=i.afterEnter,b=i.enterCancelled,w=i.beforeAppear,$=i.appear,C=i.afterAppear,x=i.appearCancelled,O=i.duration,k=Pn,S=Pn.$vnode;S&amp;&amp;S.parent;)k=S.context,S=S.parent;var j=!k._isMounted||!t.isRootInsert;if(!j||$||""===$){var T=j&amp;&amp;p?p:f,A=j&amp;&amp;m?m:d,E=j&amp;&amp;h?h:l,P=j&amp;&amp;w||_,I=j&amp;&amp;a($)?$:y,D=j&amp;&amp;C||g,M=j&amp;&amp;x||b,L=v(s(O)?O.enter:O),R=!1!==c&amp;&amp;!G,F=gi(I),U=o._enterCb=N((function(){R&amp;&amp;(fi(o,E),fi(o,A)),U.cancelled?(R&amp;&amp;fi(o,T),M&amp;&amp;M(o)):D&amp;&amp;D(o),o._enterCb=null}));t.data.show||ce(t,"insert",(function(){var e=o.parentNode,n=e&amp;&amp;e._pending&amp;&amp;e._pending[t.key];n&amp;&amp;n.tag===t.tag&amp;&amp;n.elm._leaveCb&amp;&amp;n.elm._leaveCb(),I&amp;&amp;I(o,U)})),P&amp;&amp;P(o),R&amp;&amp;(ui(o,T),ui(o,A),ci((function(){fi(o,T),U.cancelled||(ui(o,E),F||(yi(L)?setTimeout(U,L):li(o,u,U)))}))),t.data.show&amp;&amp;(e&amp;&amp;e(),I&amp;&amp;I(o,U)),R||F||U()}}}function _i(t,e){var o=t.elm;r(o._enterCb)&amp;&amp;(o._enterCb.cancelled=!0,o._enterCb());var i=Qo(t.data.transition);if(n(i)||1!==o.nodeType)return e();if(!r(o._leaveCb)){var a=i.css,c=i.type,u=i.leaveClass,f=i.leaveToClass,l=i.leaveActiveClass,d=i.beforeLeave,p=i.leave,h=i.afterLeave,m=i.leaveCancelled,_=i.delayLeave,y=i.duration,g=!1!==a&amp;&amp;!G,b=gi(p),w=v(s(y)?y.leave:y),$=o._leaveCb=N((function(){o.parentNode&amp;&amp;o.parentNode._pending&amp;&amp;(o.parentNode._pending[t.key]=null),g&amp;&amp;(fi(o,f),fi(o,l)),$.cancelled?(g&amp;&amp;fi(o,u),m&amp;&amp;m(o)):(e(),h&amp;&amp;h(o)),o._leaveCb=null}));_?_(C):C()}function C(){$.cancelled||(!t.data.show&amp;&amp;o.parentNode&amp;&amp;((o.parentNode._pending||(o.parentNode._pending={}))[t.key]=t),d&amp;&amp;d(o),g&amp;&amp;(ui(o,u),ui(o,l),ci((function(){fi(o,u),$.cancelled||(ui(o,f),b||(yi(w)?setTimeout($,w):li(o,c,$)))}))),p&amp;&amp;p(o,$),g||b||$())}}function yi(t){return"number"==typeof t&amp;&amp;!isNaN(t)}function gi(t){if(n(t))return!1;var e=t.fns;return r(e)?gi(Array.isArray(e)?e[0]:e):(t._length||t.length)&gt;1}function bi(t,e){!0!==e.data.show&amp;&amp;mi(e)}var wi=function(t){var a,s,c={},u=t.modules,f=t.nodeOps;for(a=0;a&lt;co.length;++a)for(c[co[a]]=[],s=0;s&lt;u.length;++s)r(u[s][co[a]])&amp;&amp;c[co[a]].push(u[s][co[a]]);function l(t){var e=f.parentNode(t);r(e)&amp;&amp;f.removeChild(e,t)}function d(t,e,n,i,a,s,u){if(r(t.elm)&amp;&amp;r(s)&amp;&amp;(t=s[u]=dt(t)),t.isRootInsert=!a,!function(t,e,n,i){var a=t.data;if(r(a)){var s=r(t.componentInstance)&amp;&amp;a.keepAlive;if(r(a=a.hook)&amp;&amp;r(a=a.init)&amp;&amp;a(t,!1),r(t.componentInstance))return p(t,e),v(n,t.elm,i),o(s)&amp;&amp;function(t,e,n,o){var i,a=t;for(;a.componentInstance;)if(r(i=(a=a.componentInstance._vnode).data)&amp;&amp;r(i=i.transition)){for(i=0;i&lt;c.activate.length;++i)c.activate[i](so,a);e.push(a);break}v(n,t.elm,o)}(t,e,n,i),!0}}(t,e,n,i)){var l=t.data,d=t.children,h=t.tag;r(h)?(t.elm=t.ns?f.createElementNS(t.ns,h):f.createElement(h,t),g(t),m(t,d,e),r(l)&amp;&amp;y(t,e),v(n,t.elm,i)):o(t.isComment)?(t.elm=f.createComment(t.text),v(n,t.elm,i)):(t.elm=f.createTextNode(t.text),v(n,t.elm,i))}}function p(t,e){r(t.data.pendingInsert)&amp;&amp;(e.push.apply(e,t.data.pendingInsert),t.data.pendingInsert=null),t.elm=t.componentInstance.$el,_(t)?(y(t,e),g(t)):(io(t),e.push(t))}function v(t,e,n){r(t)&amp;&amp;(r(n)?f.parentNode(n)===t&amp;&amp;f.insertBefore(t,e,n):f.appendChild(t,e))}function m(t,n,r){if(e(n))for(var o=0;o&lt;n.length;++o)d(n[o],r,t.elm,null,!0,n,o);else i(t.text)&amp;&amp;f.appendChild(t.elm,f.createTextNode(String(t.text)))}function _(t){for(;t.componentInstance;)t=t.componentInstance._vnode;return r(t.tag)}function y(t,e){for(var n=0;n&lt;c.create.length;++n)c.create[n](so,t);r(a=t.data.hook)&amp;&amp;(r(a.create)&amp;&amp;a.create(so,t),r(a.insert)&amp;&amp;e.push(t))}function g(t){var e;if(r(e=t.fnScopeId))f.setStyleScope(t.elm,e);else for(var n=t;n;)r(e=n.context)&amp;&amp;r(e=e.$options._scopeId)&amp;&amp;f.setStyleScope(t.elm,e),n=n.parent;r(e=Pn)&amp;&amp;e!==t.context&amp;&amp;e!==t.fnContext&amp;&amp;r(e=e.$options._scopeId)&amp;&amp;f.setStyleScope(t.elm,e)}function b(t,e,n,r,o,i){for(;r&lt;=o;++r)d(n[r],i,t,e,!1,n,r)}function w(t){var e,n,o=t.data;if(r(o))for(r(e=o.hook)&amp;&amp;r(e=e.destroy)&amp;&amp;e(t),e=0;e&lt;c.destroy.length;++e)c.destroy[e](t);if(r(e=t.children))for(n=0;n&lt;t.children.length;++n)w(t.children[n])}function $(t,e,n){for(;e&lt;=n;++e){var o=t[e];r(o)&amp;&amp;(r(o.tag)?(C(o),w(o)):l(o.elm))}}function C(t,e){if(r(e)||r(t.data)){var n,o=c.remove.length+1;for(r(e)?e.listeners+=o:e=function(t,e){function n(){0==--n.listeners&amp;&amp;l(t)}return n.listeners=e,n}(t.elm,o),r(n=t.componentInstance)&amp;&amp;r(n=n._vnode)&amp;&amp;r(n.data)&amp;&amp;C(n,e),n=0;n&lt;c.remove.length;++n)c.remove[n](t,e);r(n=t.data.hook)&amp;&amp;r(n=n.remove)?n(t,e):e()}else l(t.elm)}function x(t,e,n,o){for(var i=n;i&lt;o;i++){var a=e[i];if(r(a)&amp;&amp;uo(t,a))return i}}function O(t,e,i,a,s,u){if(t!==e){r(e.elm)&amp;&amp;r(a)&amp;&amp;(e=a[s]=dt(e));var l=e.elm=t.elm;if(o(t.isAsyncPlaceholder))r(e.asyncFactory.resolved)?j(t.elm,e,i):e.isAsyncPlaceholder=!0;else if(o(e.isStatic)&amp;&amp;o(t.isStatic)&amp;&amp;e.key===t.key&amp;&amp;(o(e.isCloned)||o(e.isOnce)))e.componentInstance=t.componentInstance;else{var p,v=e.data;r(v)&amp;&amp;r(p=v.hook)&amp;&amp;r(p=p.prepatch)&amp;&amp;p(t,e);var h=t.children,m=e.children;if(r(v)&amp;&amp;_(e)){for(p=0;p&lt;c.update.length;++p)c.update[p](t,e);r(p=v.hook)&amp;&amp;r(p=p.update)&amp;&amp;p(t,e)}n(e.text)?r(h)&amp;&amp;r(m)?h!==m&amp;&amp;function(t,e,o,i,a){for(var s,c,u,l=0,p=0,v=e.length-1,h=e[0],m=e[v],_=o.length-1,y=o[0],g=o[_],w=!a;l&lt;=v&amp;&amp;p&lt;=_;)n(h)?h=e[++l]:n(m)?m=e[--v]:uo(h,y)?(O(h,y,i,o,p),h=e[++l],y=o[++p]):uo(m,g)?(O(m,g,i,o,_),m=e[--v],g=o[--_]):uo(h,g)?(O(h,g,i,o,_),w&amp;&amp;f.insertBefore(t,h.elm,f.nextSibling(m.elm)),h=e[++l],g=o[--_]):uo(m,y)?(O(m,y,i,o,p),w&amp;&amp;f.insertBefore(t,m.elm,h.elm),m=e[--v],y=o[++p]):(n(s)&amp;&amp;(s=fo(e,l,v)),n(c=r(y.key)?s[y.key]:x(y,e,l,v))?d(y,i,t,h.elm,!1,o,p):uo(u=e[c],y)?(O(u,y,i,o,p),e[c]=void 0,w&amp;&amp;f.insertBefore(t,u.elm,h.elm)):d(y,i,t,h.elm,!1,o,p),y=o[++p]);l&gt;v?b(t,n(o[_+1])?null:o[_+1].elm,o,p,_,i):p&gt;_&amp;&amp;$(e,l,v)}(l,h,m,i,u):r(m)?(r(t.text)&amp;&amp;f.setTextContent(l,""),b(l,null,m,0,m.length-1,i)):r(h)?$(h,0,h.length-1):r(t.text)&amp;&amp;f.setTextContent(l,""):t.text!==e.text&amp;&amp;f.setTextContent(l,e.text),r(v)&amp;&amp;r(p=v.hook)&amp;&amp;r(p=p.postpatch)&amp;&amp;p(t,e)}}}function k(t,e,n){if(o(n)&amp;&amp;r(t.parent))t.parent.data.pendingInsert=e;else for(var i=0;i&lt;e.length;++i)e[i].data.hook.insert(e[i])}var S=h("attrs,class,staticClass,staticStyle,key");function j(t,e,n,i){var a,s=e.tag,c=e.data,u=e.children;if(i=i||c&amp;&amp;c.pre,e.elm=t,o(e.isComment)&amp;&amp;r(e.asyncFactory))return e.isAsyncPlaceholder=!0,!0;if(r(c)&amp;&amp;(r(a=c.hook)&amp;&amp;r(a=a.init)&amp;&amp;a(e,!0),r(a=e.componentInstance)))return p(e,n),!0;if(r(s)){if(r(u))if(t.hasChildNodes())if(r(a=c)&amp;&amp;r(a=a.domProps)&amp;&amp;r(a=a.innerHTML)){if(a!==t.innerHTML)return!1}else{for(var f=!0,l=t.firstChild,d=0;d&lt;u.length;d++){if(!l||!j(l,u[d],n,i)){f=!1;break}l=l.nextSibling}if(!f||l)return!1}else m(e,u,n);if(r(c)){var v=!1;for(var h in c)if(!S(h)){v=!0,y(e,n);break}!v&amp;&amp;c.class&amp;&amp;Cn(c.class)}}else t.data!==e.text&amp;&amp;(t.data=e.text);return!0}return function(t,e,i,a){if(!n(e)){var s,u=!1,l=[];if(n(t))u=!0,d(e,l);else{var p=r(t.nodeType);if(!p&amp;&amp;uo(t,e))O(t,e,l,null,null,a);else{if(p){if(1===t.nodeType&amp;&amp;t.hasAttribute(L)&amp;&amp;(t.removeAttribute(L),i=!0),o(i)&amp;&amp;j(t,e,l))return k(e,l,!0),t;s=t,t=new ut(f.tagName(s).toLowerCase(),{},[],void 0,s)}var v=t.elm,h=f.parentNode(v);if(d(e,l,v._leaveCb?null:h,f.nextSibling(v)),r(e.parent))for(var m=e.parent,y=_(e);m;){for(var g=0;g&lt;c.destroy.length;++g)c.destroy[g](m);if(m.elm=e.elm,y){for(var b=0;b&lt;c.create.length;++b)c.create[b](so,m);var C=m.data.hook.insert;if(C.merged)for(var x=C.fns.slice(1),S=0;S&lt;x.length;S++)x[S]()}else io(m);m=m.parent}r(h)?$([t],0,0):r(t.tag)&amp;&amp;w(t)}}return k(e,l,u),e.elm}r(t)&amp;&amp;w(t)}}({nodeOps:ro,modules:[$o,Oo,Do,Lo,Go,W?{create:bi,activate:bi,remove:function(t,e){!0!==t.data.show?_i(t,e):e()}}:{}].concat(yo)});G&amp;&amp;document.addEventListener("selectionchange",(function(){var t=document.activeElement;t&amp;&amp;t.vmodel&amp;&amp;Ti(t,"input")}));var $i={inserted:function(t,e,n,r){"select"===n.tag?(r.elm&amp;&amp;!r.elm._vOptions?ce(n,"postpatch",(function(){$i.componentUpdated(t,e,n)})):Ci(t,e,n.context),t._vOptions=[].map.call(t.options,ki)):("textarea"===n.tag||no(t.type))&amp;&amp;(t._vModifiers=e.modifiers,e.modifiers.lazy||(t.addEventListener("compositionstart",Si),t.addEventListener("compositionend",ji),t.addEventListener("change",ji),G&amp;&amp;(t.vmodel=!0)))},componentUpdated:function(t,e,n){if("select"===n.tag){Ci(t,e,n.context);var r=t._vOptions,o=t._vOptions=[].map.call(t.options,ki);if(o.some((function(t,e){return!I(t,r[e])})))(t.multiple?e.value.some((function(t){return Oi(t,o)})):e.value!==e.oldValue&amp;&amp;Oi(e.value,o))&amp;&amp;Ti(t,"change")}}};function Ci(t,e,n){xi(t,e),(q||Z)&amp;&amp;setTimeout((function(){xi(t,e)}),0)}function xi(t,e,n){var r=e.value,o=t.multiple;if(!o||Array.isArray(r)){for(var i,a,s=0,c=t.options.length;s&lt;c;s++)if(a=t.options[s],o)i=D(r,ki(a))&gt;-1,a.selected!==i&amp;&amp;(a.selected=i);else if(I(ki(a),r))return void(t.selectedIndex!==s&amp;&amp;(t.selectedIndex=s));o||(t.selectedIndex=-1)}}function Oi(t,e){return e.every((function(e){return!I(e,t)}))}function ki(t){return"_value"in t?t._value:t.value}function Si(t){t.target.composing=!0}function ji(t){t.target.composing&amp;&amp;(t.target.composing=!1,Ti(t.target,"input"))}function Ti(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function Ai(t){return!t.componentInstance||t.data&amp;&amp;t.data.transition?t:Ai(t.componentInstance._vnode)}var Ei={bind:function(t,e,n){var r=e.value,o=(n=Ai(n)).data&amp;&amp;n.data.transition,i=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&amp;&amp;o?(n.data.show=!0,mi(n,(function(){t.style.display=i}))):t.style.display=r?i:"none"},update:function(t,e,n){var r=e.value;!r!=!e.oldValue&amp;&amp;((n=Ai(n)).data&amp;&amp;n.data.transition?(n.data.show=!0,r?mi(n,(function(){t.style.display=t.__vOriginalDisplay})):_i(n,(function(){t.style.display="none"}))):t.style.display=r?t.__vOriginalDisplay:"none")},unbind:function(t,e,n,r,o){o||(t.style.display=t.__vOriginalDisplay)}},Pi={model:$i,show:Ei},Ii={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Di(t){var e=t&amp;&amp;t.componentOptions;return e&amp;&amp;e.Ctor.options.abstract?Di(Ve(e.children)):t}function Ni(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var o=n._parentListeners;for(var r in o)e[$(r)]=o[r];return e}function Mi(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}var Li=function(t){return t.tag||Ae(t)},Ri=function(t){return"show"===t.name},Fi={name:"transition",props:Ii,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&amp;&amp;(n=n.filter(Li)).length){var r=this.mode,o=n[0];if(function(t){for(;t=t.parent;)if(t.data.transition)return!0}(this.$vnode))return o;var a=Di(o);if(!a)return o;if(this._leaving)return Mi(t,o);var s="__transition-".concat(this._uid,"-");a.key=null==a.key?a.isComment?s+"comment":s+a.tag:i(a.key)?0===String(a.key).indexOf(s)?a.key:s+a.key:a.key;var c=(a.data||(a.data={})).transition=Ni(this),u=this._vnode,f=Di(u);if(a.data.directives&amp;&amp;a.data.directives.some(Ri)&amp;&amp;(a.data.show=!0),f&amp;&amp;f.data&amp;&amp;!function(t,e){return e.key===t.key&amp;&amp;e.tag===t.tag}(a,f)&amp;&amp;!Ae(f)&amp;&amp;(!f.componentInstance||!f.componentInstance._vnode.isComment)){var l=f.data.transition=j({},c);if("out-in"===r)return this._leaving=!0,ce(l,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),Mi(t,o);if("in-out"===r){if(Ae(a))return u;var d,p=function(){d()};ce(c,"afterEnter",p),ce(c,"enterCancelled",p),ce(l,"delayLeave",(function(t){d=t}))}}return o}}},Ui=j({tag:String,moveClass:String},Ii);delete Ui.mode;var Vi={props:Ui,beforeMount:function(){var t=this,e=this._update;this._update=function(n,r){var o=In(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,o(),e.call(t,n,r)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=Ni(this),s=0;s&lt;o.length;s++){(f=o[s]).tag&amp;&amp;null!=f.key&amp;&amp;0!==String(f.key).indexOf("__vlist")&amp;&amp;(i.push(f),n[f.key]=f,(f.data||(f.data={})).transition=a)}if(r){var c=[],u=[];for(s=0;s&lt;r.length;s++){var f;(f=r[s]).data.transition=a,f.data.pos=f.elm.getBoundingClientRect(),n[f.key]?c.push(f):u.push(f)}this.kept=t(e,null,c),this.removed=u}return t(e,null,i)},updated:function(){var t=this.prevChildren,e=this.moveClass||(this.name||"v")+"-move";t.length&amp;&amp;this.hasMove(t[0].elm,e)&amp;&amp;(t.forEach(Bi),t.forEach(zi),t.forEach(Hi),this._reflow=document.body.offsetHeight,t.forEach((function(t){if(t.data.moved){var n=t.elm,r=n.style;ui(n,e),r.transform=r.WebkitTransform=r.transitionDuration="",n.addEventListener(oi,n._moveCb=function t(r){r&amp;&amp;r.target!==n||r&amp;&amp;!/transform$/.test(r.propertyName)||(n.removeEventListener(oi,t),n._moveCb=null,fi(n,e))})}})))},methods:{hasMove:function(t,e){if(!ti)return!1;if(this._hasMove)return this._hasMove;var n=t.cloneNode();t._transitionClasses&amp;&amp;t._transitionClasses.forEach((function(t){Xo(n,t)})),Jo(n,e),n.style.display="none",this.$el.appendChild(n);var r=pi(n);return this.$el.removeChild(n),this._hasMove=r.hasTransform}}};function Bi(t){t.elm._moveCb&amp;&amp;t.elm._moveCb(),t.elm._enterCb&amp;&amp;t.elm._enterCb()}function zi(t){t.data.newPos=t.elm.getBoundingClientRect()}function Hi(t){var e=t.data.pos,n=t.data.newPos,r=e.left-n.left,o=e.top-n.top;if(r||o){t.data.moved=!0;var i=t.elm.style;i.transform=i.WebkitTransform="translate(".concat(r,"px,").concat(o,"px)"),i.transitionDuration="0s"}}var Wi={Transition:Fi,TransitionGroup:Vi};return Tr.config.mustUseProp=function(t,e,n){return"value"===n&amp;&amp;Rr(t)&amp;&amp;"button"!==e||"selected"===n&amp;&amp;"option"===t||"checked"===n&amp;&amp;"input"===t||"muted"===n&amp;&amp;"video"===t},Tr.config.isReservedTag=to,Tr.config.isReservedAttr=Lr,Tr.config.getTagNamespace=function(t){return Yr(t)?"svg":"math"===t?"math":void 0},Tr.config.isUnknownElement=function(t){if(!W)return!0;if(to(t))return!1;if(t=t.toLowerCase(),null!=eo[t])return eo[t];var e=document.createElement(t);return t.indexOf("-")&gt;-1?eo[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:eo[t]=/HTMLUnknownElement/.test(e.toString())},j(Tr.options.directives,Pi),j(Tr.options.components,Wi),Tr.prototype.__patch__=W?wi:A,Tr.prototype.$mount=function(t,e){return function(t,e,n){var r;t.$el=e,t.$options.render||(t.$options.render=ft),Ln(t,"beforeMount"),r=function(){t._update(t._render(),n)},new Sn(t,r,A,{before:function(){t._isMounted&amp;&amp;!t._isDestroyed&amp;&amp;Ln(t,"beforeUpdate")}},!0),n=!1;var o=t._preWatchers;if(o)for(var i=0;i&lt;o.length;i++)o[i].run();return null==t.$vnode&amp;&amp;(t._isMounted=!0,Ln(t,"mounted")),t}(this,t=t&amp;&amp;W?function(t){if("string"==typeof t){return document.querySelector(t)||document.createElement("div")}return t}(t):void 0,e)},W&amp;&amp;setTimeout((function(){U.devtools&amp;&amp;rt&amp;&amp;rt.emit("init",Tr)}),0),j(Tr,wn),Tr}));
             &lt;/script&gt;
             &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
              (function () {
  'use strict';

  var MutationObserver = window.WebKitMutationObserver || window.MutationObserver || window.MozMutationObserver;
  var isHttp = location.href.indexOf('http://') === 0;
  var isDangerSrc = function isDangerSrc(src) {
    if (src) {
      var host = src.match(/http(?:s)?:\/\/([^\/]+?)(\/|$)/);
      if (host &amp;&amp; !/qq\.com(\:8080)?$/.test(host[1]) &amp;&amp; !/weishi\.com$/.test(host[1])) {
        return true;
      }
    }
    return false;
  };
  if (location.href.indexOf('safe=0') === -1 &amp;&amp; isHttp &amp;&amp; typeof MutationObserver === 'function' &amp;&amp; location.host === 'mp.weixin.qq.com') {
    window.__observer_data = {
      count: 0,
      exec_time: 0,
      list: []
    };
    window.__observer = new MutationObserver(function (mutations) {
      window.__observer_data.count++;
      var begin = new Date(),
        deleteNodes = [];
      mutations.forEach(function (mutation) {
        var nodes = mutation.addedNodes;
        for (var i = 0; i &lt; nodes.length; i++) {
          var node = nodes[i];
          if (node.tagName === 'SCRIPT') {
            var scriptSrc = node.src;
            if (isDangerSrc(scriptSrc)) {
              window.__observer_data.list.push(scriptSrc);
              deleteNodes.push(node);
            }
            if (!scriptSrc &amp;&amp; window.__nonce_str &amp;&amp; node.getAttribute('nonce') != window.__nonce_str) {
              window.__observer_data.list.push('inlinescript_without_nonce');
              deleteNodes.push(node);
            }
          }
        }
      });
      for (var i = 0; i &lt; deleteNodes.length; i++) {
        var node = deleteNodes[i];
        node.parentNode &amp;&amp; node.parentNode.removeChild(node);
      }
      window.__observer_data.exec_time += new Date() - begin;
    });
    window.__observer.observe(document, {
      subtree: true,
      childList: true
    });
  }
  function init() {
    if (location.href.indexOf('safe=0') === -1 &amp;&amp; Math.random() &lt; 0.01 &amp;&amp; isHttp &amp;&amp; HTMLScriptElement.prototype.__lookupSetter__ &amp;&amp; typeof Object.defineProperty !== 'undefined') {
      window.__danger_src = {
        xmlhttprequest: [],
        script_src: [],
        script_setAttribute: []
      };
      var t = '$' + Math.random();
      var s = 'Setter__';
      HTMLScriptElement.prototype.__old_method_script_src = HTMLScriptElement.prototype['__lookup' + s]('src');
      HTMLScriptElement.prototype['__define' + s]('src', function (url) {
        if (url &amp;&amp; isDangerSrc(url)) {
          window.__danger_src.script_src.push(url);
        }
        this.__old_method_script_src(url);
      });
      var nativeSetAttribute = '__setAttribute' + t;
      Object.defineProperty(Element.prototype, nativeSetAttribute, {
        value: Element.prototype.setAttribute,
        enumerable: false
      });
      Element.prototype.setAttribute = function (name, url) {
        if (this.tagName === 'SCRIPT' &amp;&amp; name === 'src' &amp;&amp; isDangerSrc(url)) {
          window.__danger_src.script_setAttribute.push(url);
        }
        this[nativeSetAttribute](name, url);
      };
    }
  }

  
  init();

})();
             &lt;/script&gt;
             &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
              var __INLINE_SCRIPT__ = (function () {
  'use strict';

  function _typeof(obj) {
    "@babel/helpers - typeof";

    return _typeof = "function" == typeof Symbol &amp;&amp; "symbol" == typeof Symbol.iterator ? function (obj) {
      return typeof obj;
    } : function (obj) {
      return obj &amp;&amp; "function" == typeof Symbol &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj;
    }, _typeof(obj);
  }

  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
    try {
      var info = gen[key](arg);
      var value = info.value;
    } catch (error) {
      reject(error);
      return;
    }
    if (info.done) {
      resolve(value);
    } else {
      Promise.resolve(value).then(_next, _throw);
    }
  }
  function _asyncToGenerator(fn) {
    return function () {
      var self = this,
        args = arguments;
      return new Promise(function (resolve, reject) {
        var gen = fn.apply(self, args);
        function _next(value) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
        }
        function _throw(err) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
        }
        _next(undefined);
      });
    };
  }

  function _regeneratorRuntime() {  _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  
  var doc = {};
  var isAcrossOrigin = false;
  var notFoundedMPPageAction = [];
  var __moon_report = window.__moon_report || function () {};
  var MOON_JSAPI_KEY_OFFSET = 8;
  try {
    doc = top.window.document;
  } catch (e) {
    isAcrossOrigin = true;
  }
  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }
  function ready(onBridgeReady) {
    var bridgeReady = function bridgeReady() {
      try {
        if (onBridgeReady) {
          window.onBridgeReadyTime = window.onBridgeReadyTime || Date.now();
          onBridgeReady();
        }
      } catch (e) {
        __moon_report([{
          offset: MOON_JSAPI_KEY_OFFSET,
          log: 'ready',
          e: e
        }]);
        throw e;
      }
      window.jsapiReadyTime = Date.now();
    };
    if (!isAcrossOrigin &amp;&amp; (typeof top.window.WeixinJSBridge === 'undefined' || !top.window.WeixinJSBridge.invoke)) {
      if (doc.addEventListener) {
        doc.addEventListener('WeixinJSBridgeReady', bridgeReady, false);
      } else if (doc.attachEvent) {
        doc.attachEvent('WeixinJSBridgeReady', bridgeReady);
        doc.attachEvent('onWeixinJSBridgeReady', bridgeReady);
      }
    } else {
      bridgeReady();
    }
  }
  var invokeNotWaitA8key = ['notifyPageInfo', 'updatePageAuth'
  ];
  var checkNotFoundedInvoke = function checkNotFoundedInvoke(methodName, args) {
    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; notFoundedMPPageAction.includes(args === null || args === void 0 ? void 0 : args.action)) {
      return true;
    }
    return false;
  };
  function invoke(_x, _x2, _x3) {
    return _invoke.apply(this, arguments);
  }
  function _invoke() {
    _invoke = _asyncToGenerator( _regeneratorRuntime().mark(function _callee(methodName, args, callback) {
      return _regeneratorRuntime().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__ &amp;&amp; !invokeNotWaitA8key.includes(methodName))) {
              _context.next = 3;
              break;
            }
            _context.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                alert('请在微信中打开此链接');
                return false;
              }
              if (checkNotFoundedInvoke(methodName, args)) {
                setTimeout(function () {
                  if (callback) {
                    callback.apply(window, [{
                      err_msg: "".concat(methodName, ":fail"),
                      err_desc: 'action isn\'t supported'
                    }]);
                  }
                }, 0);
              } else {
                top.window.WeixinJSBridge.invoke(methodName, args, function () {
                  try {
                    for (var _len2 = arguments.length, rets = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
                      rets[_key2] = arguments[_key2];
                    }
                    var ret = rets[0];
                    var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
                    if (['handleMPPageAction', 'handleVideoAction', 'handleHaokanAction'].indexOf(methodName) !== -1) {
                      var action = (args === null || args === void 0 ? void 0 : args.action) || '';
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName, ", action-&gt;").concat(action).concat(errMsg));
                    } else {
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName).concat(errMsg));
                    }
                    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; ((ret === null || ret === void 0 ? void 0 : ret.err_desc) === 'action isn\'t supported' || (ret === null || ret === void 0 ? void 0 : ret.err_msg) === 'handleMPPageAction:fail action is not supported')) {
                      notFoundedMPPageAction.push(args === null || args === void 0 ? void 0 : args.action);
                    }
                    if (callback) {
                      callback.apply(window, rets);
                    }
                  } catch (e) {
                    __moon_report([{
                      offset: MOON_JSAPI_KEY_OFFSET,
                      log: "invoke;methodName:".concat(methodName),
                      e: e
                    }]);
                    throw e;
                  }
                });
              }
            });
          case 4:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return _invoke.apply(this, arguments);
  }
  function call(_x4) {
    return _call.apply(this, arguments);
  }
  function _call() {
    _call = _asyncToGenerator( _regeneratorRuntime().mark(function _callee2(methodName) {
      return _regeneratorRuntime().wrap(function _callee2$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__)) {
              _context2.next = 3;
              break;
            }
            _context2.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                return false;
              }
              try {
                top.window.WeixinJSBridge.call(methodName);
              } catch (e) {
                __moon_report([{
                  offset: MOON_JSAPI_KEY_OFFSET,
                  log: "call;methodName:".concat(methodName),
                  e: e
                }]);
                throw e;
              }
            });
          case 4:
          case "end":
            return _context2.stop();
        }
      }, _callee2);
    }));
    return _call.apply(this, arguments);
  }
  function on(eventName, callback) {
    ready(function () {
      if (isAcrossOrigin) return false;
      if (_typeof(top.window.WeixinJSBridge) !== 'object' || !top.window.WeixinJSBridge.on) {
        return false;
      }
      if (!window.JSAPIEventCallbackMap[eventName]) {
        window.JSAPIEventCallbackMap[eventName] = [];
      }
      window.JSAPIEventCallbackMap[eventName].push(callback);
      if (window.JSAPIEventCallbackMap[eventName].length &gt; 1) {
        return false;
      }
      top.window.WeixinJSBridge.on(eventName, function () {
        try {
          for (var _len = arguments.length, rets = new Array(_len), _key = 0; _key &lt; _len; _key++) {
            rets[_key] = arguments[_key];
          }
          var ret = rets[0];
          var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
          console.info('[system]', "[jsapi] event-&gt;".concat(eventName).concat(errMsg));
          if (window.JSAPIEventCallbackMap[eventName] &amp;&amp; window.JSAPIEventCallbackMap[eventName].length) {
            var result;
            for (var i = 0; i &lt; window.JSAPIEventCallbackMap[eventName].length; i++) {
              result = window.JSAPIEventCallbackMap[eventName][i].apply(window, rets);
            }
            return result;
          }
        } catch (e) {
          __moon_report([{
            offset: MOON_JSAPI_KEY_OFFSET,
            log: "on;eventName:".concat(eventName),
            e: e
          }]);
          throw e;
        }
      });
    });
  }
  function remove(eventName, callback) {
    ready(function () {
      if (!window.JSAPIEventCallbackMap[eventName]) {
        return false;
      }
      var result = false;
      for (var i = window.JSAPIEventCallbackMap[eventName].length - 1; i &gt;= 0; i--) {
        if (window.JSAPIEventCallbackMap[eventName][i] === callback) {
          window.JSAPIEventCallbackMap[eventName].splice(i, 1);
          result = true;
        }
      }
      return result;
    });
  }
  var JSAPI = {
    ready: ready,
    invoke: invoke,
    call: call,
    on: on,
    remove: remove
  };

  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" &amp;&amp; o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike &amp;&amp; o &amp;&amp; typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i &gt;= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion &amp;&amp; it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
  function _arrayLikeToArray(arr, len) { if (len == null || len &gt; arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i]; return arr2; }
  function reportFCP(renderTime, fastLoad) {
    setTimeout(function () {
      var searchParams = new URLSearchParams(window.location.search);
      var search_click_id = searchParams.get('search_click_id');
      if (!search_click_id) return;
      var searchId = search_click_id ? search_click_id.split('-')[0] : '';
      var clickTime = search_click_id ? search_click_id.split('-')[1] : renderTime;
      var logData = {
        actionType: 35,
        scene: 0,
        sessionId: '',
        subSessionId: '',
        searchId: searchId,
        offset: 0,
        isHomePage: 0,
        requestId: '',
        timeStampsInMs: 0,
        netType: '',
        isSuccess: 0,
        query: '',
        tabId: '',
        bizType: 0,
        h5Version: 0,
        isPreload: 0,
        isHttp: 0,
        url: '',
        userAgent: '',
        isPrefetch: 0,
        isRealShow: 1,
        extInfo: encodeURIComponent(JSON.stringify({
          render_time: renderTime,
          cost_time: renderTime - clickTime,
          search_click_id: search_click_id,
          fast_load: fastLoad
        }))
      };
      JSAPI.invoke('kvReport', {
        id: 14904,
        value: Object.values(logData).join(',')
      }, function (res) {
        console.log("111111 kv report res", res, logData);
      });
    }, 1000);
  }
  if (!window.__second_open__) {
    var observer = new PerformanceObserver(function (entryList) {
      var _iterator = _createForOfIteratorHelper(entryList.getEntries()),
        _step;
      try {
        for (_iterator.s(); !(_step = _iterator.n()).done;) {
          var entry = _step.value;
          if (entry.name === 'first-contentful-paint') {
            reportFCP(Date.now(), false);
          }
        }
      } catch (err) {
        _iterator.e(err);
      } finally {
        _iterator.f();
      }
    });
    observer.observe({
      entryTypes: ['paint']
    });
  }

  return reportFCP;

})();
             &lt;/script&gt;
             &lt;script nonce="1435168589" reportloaderror="" type="module"&gt;
              import.meta.url;import("_").catch(()=&gt;1);async function* g(){};window.__vite_is_modern_browser=true;
             &lt;/script&gt;
             &lt;script nonce="1435168589" reportloaderror="" type="module"&gt;
              !function(){if(window.__vite_is_modern_browser)return;console.warn("vite: loading legacy chunks, syntax error above and the same error below should be ignored");var e=document.getElementById("vite-legacy-polyfill"),n=document.createElement("script");n.src=e.src,n.onload=function(){System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))},document.body.appendChild(n)}();
             &lt;/script&gt;
             &lt;script crossorigin="" nonce="1435168589" reportloaderror="" src="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/appmsg.mqdcxtigedf38b88.js" type="module"&gt;
             &lt;/script&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/modulepreload-polyfill.mqdcxtig4abee2a4.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/log.mqdcxtig806e87c6.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/private_share.mqdcxtig300ac5b4.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/event_bus.mqdcxtig52ad61d1.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/event.mqdcxtig90256d59.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/comm_utils.mqdcxtig34b2808f.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/page_utils.mqdcxtig8fcb73bf.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/render_utils.mqdcxtig044e9751.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/appmsgext.mqdcxtig7caff8f9.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/pay_report_utils.mqdcxtig39f20cd9.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/_plugin-vue2_normalizer-9c6b8b3d.mqdcxtigf46dd4c3.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/rec_report_key.mqdcxtigf13e137b.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/i18n.mqdcxtigcc49bfd6.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/page_utils.mqdcxtig8fb8fb16.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/mobile_click.mqdcxtig1fb84ae6.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/_plugin-vue2_normalizer.mqdcxtigfc2fb13f.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/reward_ls.mqdcxtigc9677caf.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/a_config.mqdcxtigcb1b5260.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/wapsdk.mqdcxtig227ade44.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/localstorage.mqdcxtig55c8ebfe.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/class.mqdcxtigd1a660bd.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/tap_highlight.mqdcxtig9a9d59d6.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/handle_change_inter_identity.mqdcxtig86a46e0f.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/page_cls_ctrl.mqdcxtig83d165c6.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/a.mqdcxtig95e52499.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/detect_cover_state.mqdcxtig92b3fe5f.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/lib.mqdcxtig333bfa86.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/body_first_observer.mqdcxtiga7d0eac4.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/get_page_read_pos.mqdcxtig74fbe8b8.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/global_setting.mqdcxtig453c39ef.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/page_pos.mqdcxtig20e4d493.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/base64.mqdcxtig18dbe4cd.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/_commonjsHelpers.mqdcxtig26303f2a.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/indexdb.mqdcxtig2497f2f2.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/Popover.mqdcxtig025657a7.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/weapp_common.mqdcxtig62259ab3.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/Identity.mqdcxtigb476aa76.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/pag.mqdcxtig0f1371ff.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/ThanksBtn.mqdcxtig5b6b6385.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/StreamFriendsList.mqdcxtig9e674cc4.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/event.mqdcxtig041e7e63.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/popup_report.mqdcxtig3db94655.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/advance.mqdcxtig63916993.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/Loading.mqdcxtig6951fa19.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/ContextMenu.mqdcxtig77e03246.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/keyboard.mqdcxtig8bcd8cd0.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/img_base64.mqdcxtig8f16201d.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/tmpl.mqdcxtig1af565c1.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/createClass-b41bf598.mqdcxtig0b3bba8e.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/index.umd.min-fbb4886a.mqdcxtig571cc73c.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/LazyImage.mqdcxtig227a108f.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/CommentList.mqdcxtigef0bb372.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/safe_area_insets.mqdcxtigb5a654db.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/md5.mqdcxtig33b4096d.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/underline_action.mqdcxtig6d9e25f2.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/html.mqdcxtig17b711fc.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/play_voice.mqdcxtigd490b1db.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/watermark.mqdcxtig930787c1.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/Drawer.mqdcxtige3f831c0.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/CmtImgPreview.mqdcxtig1b3d6eac.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/client_share_excerpts.mqdcxtig5963981f.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/StreamFriends.mqdcxtigb85c35b8.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/teleport.esm.mqdcxtigd60569be.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/textOverflow.mqdcxtig9d5cfb76.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/wxwork_hidden.mqdcxtig707e7b86.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/client_share_img_token.mqdcxtigd7c83045.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/client_share_tour.mqdcxtig59bcef9a.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/ext_loading.mqdcxtigd0715786.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/report.mqdcxtig5a5ec184.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/utils.mqdcxtig8c63b3cc.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/RelatedInfo-5c891767.mqdcxtigc18217e4.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/keep_read.mqdcxtig75afe753.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/topic.mqdcxtig73fe4630.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/review_image.mqdcxtigbe74c0de.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/utils.mqdcxtig4280d44e.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/redpacketcover.mqdcxtiga2e571a5.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/set_article_read.mqdcxtig7fa3c581.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/gongyi.mqdcxtig0695f94f.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/reward_close_tip.mqdcxtige0ddbdde.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/dayjs.min.mqdcxtig620ec626.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/appmsg_comment.mqdcxtig05601356.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/_baseGetTag.mqdcxtig5cbb2345.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/article_bottom_bar.mqdcxtig9a6dd22f.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/reward_list_dialog.mqdcxtigef844672.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/channel_product_utils.mqdcxtigfa80074e.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/product_search.mqdcxtig81f17cc5.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/added_info.mqdcxtige9c4d010.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/index.mqdcxtig05d8c1c0.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/vue_plugin.mqdcxtige8e91cf8.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/cover_next.mqdcxtiga1139aa2.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/bottom.mqdcxtig20878073.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/CommentComplaint.mqdcxtig2648c3b6.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/background_color.mqdcxtig2044c90e.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/sec_performance.mqdcxtig6a2eef6d.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/article_bottom_bar.mqdcxtig3c8c6222.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/set_star.mqdcxtig7b75dc65.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/report_img.mqdcxtigf388aa09.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/cgi.mqdcxtig766e468b.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/pick_location_item.mqdcxtig4acf8447.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/pre_loading.mqdcxtig2cd70afd.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/channels.mqdcxtig05031724.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/vote.mqdcxtigcc312a2c.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/intersection-observer.mqdcxtige16580c9.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/lottery.mqdcxtig4edf735d.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/object-73371513.mqdcxtigaf6c26e7.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/_commonjsHelpers-10dfc225.mqdcxtig8600c1d6.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/bind_element.mqdcxtig4ecd9f2b.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/bind_element.mqdcxtig513d38ff.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/bind_element.mqdcxtig0a94cfc6.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/set_custom_ele.mqdcxtigf33ecf43.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/index.mqdcxtiga22a9dc0.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/get_query.mqdcxtigbde2d197.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/set_fullscreen_webview.mqdcxtigea13804e.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/sec_perf_report.mqdcxtig65a0f765.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/preview_reload.mqdcxtig21ba9480.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/tap_highlight.mqdcxtig21feed59.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/handle_change_inter_identity.mqdcxtig14eec1a5.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/keyboard.mqdcxtigdb34422c.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/wxwork_hidden.mqdcxtig3b5cfcfa.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/keep_read.mqdcxtig9d142f2e.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/gongyi.mqdcxtig8c152f31.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/reward_close_tip.mqdcxtig2cdd5698.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/appmsg_comment.mqdcxtig7357c658.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/article_bottom_bar.mqdcxtig975174c5.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/reward_list_dialog.mqdcxtig19e14573.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/channel_product_utils.mqdcxtig199e90e4.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/product_search.mqdcxtigc441ed3f.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/added_info.mqdcxtigd5070eb5.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/index.mqdcxtig779cd8f2.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/cover_next.mqdcxtigdab73f47.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/sec_performance.mqdcxtigae94a0fa.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/qqmail_tpl_vite_entry.mqdcxtig72c96cd4.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/tencent_portfolio_light.mqdcxtigd950225f.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;style&gt;
              .cooldown_tips {
        margin: 30px auto;
        margin-top: 0;
        display: flex;
        align-items: center;
        padding: 10px;
        font-size: 14px;
        background-color: #f6f7f9;
        border-radius: 6px;
      }
      .cooldown_tips_icon {
        display: block;
        width: 18px;
        height: 18px;
        margin-right: 8px;
      }
             &lt;/style&gt;
            &lt;/meta&gt;
           &lt;/meta&gt;
          &lt;/meta&gt;
         &lt;/meta&gt;
        &lt;/meta&gt;
       &lt;/meta&gt;
      &lt;/meta&gt;
     &lt;/meta&gt;
    &lt;/meta&gt;
   &lt;/meta&gt;
  &lt;/meta&gt;
 &lt;/head&gt;
 &lt;body class="zh_CN wx_wap_page wx_wap_desktop_fontsize_2 mm_appmsg comment_feature discuss_tab appmsg_skin_default appmsg_style_default" id="activity-detail"&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   var biz = "Mzg3NzU0NzIxMA==" || "";
  var sn = "684eb8decbc3379244dd400174bd10dd" || "" || "";
  var mid = "2247512771" || "" || "";
  var idx = "1" || "" || "";
  window.__allowLoadResFromMp = true;
  &lt;/script&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   (() =&gt; {
    try {
      window.__canAsyncImport = window.__pageLoadReady = new Promise(res =&gt; {
        if (window.__second_open__ || document.readyState === 'complete') {
          res();
        } else {
          window.addEventListener('load', res);
          setTimeout(res, 5000);
        }
      });
    } catch(err) {
      console.error(err);
      window.__canAsyncImport = window.__pageLoadReady = Promise.resolve();
    }
  })();
  &lt;/script&gt;
  &lt;script nonce="1435168589" reportloaderror=""&gt;
   var page_begintime = (+new Date());
var is_rumor = "";
var norumor = "";
var refutationType = '' * 1;
if (!!(is_rumor * 1) &amp;&amp; !(norumor*1) &amp;&amp; !!biz &amp;&amp; !!mid) {
  if (!document.referrer || document.referrer.indexOf("mp.weixin.qq.com/mp/rumor") == -1){
    if (refutationType === 1) {
      location.href = "http://mp.weixin.qq.com/mp/show_refutation?__biz=" + biz + "&amp;mid=" + mid + "&amp;idx=" + idx + "&amp;sn=" + sn + "#wechat_redirect";
    } else {
      location.href = "http://mp.weixin.qq.com/mp/rumor?action=info&amp;__biz=" + biz + "&amp;mid=" + mid + "&amp;idx=" + idx + "&amp;sn=" + sn + "#wechat_redirect";
    }
  }
}
  &lt;/script&gt;
  &lt;script h5only="" nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   (function() {
    try {
      window.cgiDataNew = {
                  base_resp: {
                           ret: '0' * 1,
                                      errmsg: 'ok',
                                      wxtoken: '777' * 1,
                                      cookie_count: '0' * 1,
                                                              sessionid: 'svr_ce921cc4f6b',
                                                          },
                          user_name: 'gh_b2bc148c1cf8',
                          nick_name: '开源日记',
                          round_head_img: 'http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png',
                          title: '画图这件事，我终于不用拖拽了。',
                          desc: '',
                          content_noencode: '\x3csection\x3e\x3cspan leaf=\x22\x22\x3e\x3cbr  /\x3e\x3c/span\x3e\x3c/section\x3e\x3csection data-tool=\x22MD编辑器\x22 data-website=\x22https://www.tooltt.com\x22 style=\x22font-size: 16px;color: black;padding: 0 10px;line-height: 1.6;word-spacing: 0px;letter-spacing: 0px;word-break: break-word;word-wrap: break-word;text-align: left;margin-top: -10px;font-family: PingFangSC-Light;\x22 data-pm-slice=\x220 0 []\x22\x3e\x3csection class=\x22mp_profile_iframe_wrp\x22\x3e\x3cmp-common-profile class=\x22custom_select_card mp_profile_iframe mp_common_widget\x22 data-pluginname=\x22mpprofile\x22 data-nickname=\x22开源日记\x22 data-from=\x220\x22 data-headimg=\x22http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png\x22 data-signature=\x22分享优质开源项目 , 探索AI生产力。\x22 data-id=\x22Mzg3NzU0NzIxMA==\x22 data-service_type=\x221\x22 data-verify_status=\x220\x22\x3e\x3c/mp-common-profile\x3e\x3c/section\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e\x3cbr  /\x3e\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e画架构图这件事，我折腾了好多年。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e从 Visio 到 draw.io，从 ProcessOn 到 Excalidraw，工具换了好多次，但是核心问题一直没有解决：改图太麻烦。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e改一个节点的位置，整个图的连线都要重新调整，半个小时就没有了。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e团队合作的时候更加头疼，图表文件传来传去，版本控制很难做到，谁改了什么都不知道。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e直到发现了D2这个项目之后，才发现原来画图也可以像写代码一样。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e只需要用文本来描述“有什么”以及“谁连谁”，布局、对齐、样式等全部由引擎自动完成。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e这个项目在 GitHub 上已经有 24300 Star，核心定位就是把文本转换成图表。\x3c/span\x3e\x3c/p\x3e\x3cfigure data-tool=\x22mdnice编辑器\x22 style=\x22margin: 0;margin-top: 10px;margin-bottom: 10px;\x22\x3e\x3cspan leaf=\x22\x22\x3e\x3cimg class=\x22rich_pages wxw-img\x22 data-aistatus=\x221\x22 data-imgfileid=\x22100029113\x22 data-ratio=\x220.4\x22 data-type=\x22gif\x22 data-w=\x221080\x22 style=\x22max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 10px auto;width: 100%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;\x22 data-src=\x22https://mmbiz.qpic.cn/sz_mmbiz_gif/VDCUoW3UiblK4aPAlVGHCm37uWuMvmXjQrC8HEPuGyhMSBe7pibd8RhEia9YQ4eLjkpib74joOiaUPSHjTjw8XCibuQ7FKMNaVaicyXbib6eMMIWPlk/640?wx_fmt=gif\x26amp;from=appmsg\x22  /\x3e\x3c/span\x3e\x3c/figure\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e用声明式的语法来描述结构，它会帮你自动生成SVG或者PNG，不需要你手动去定位。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e布局引擎会自动处理元素的位置，修改代码就是修改图片。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3eD2 的语法设计得非常克制，不需要学习很多复杂的命令。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e基本 15 分钟就可以学会。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e我打开 https://play.d2lang.com 体验了一把。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e准备让他画出一个简单的服务架构图。\x3c/span\x3e\x3c/p\x3e\x3cfigure data-tool=\x22mdnice编辑器\x22 style=\x22margin: 0;margin-top: 10px;margin-bottom: 10px;\x22\x3e\x3cspan leaf=\x22\x22\x3e\x3cimg class=\x22rich_pages wxw-img\x22 data-aistatus=\x221\x22 data-imgfileid=\x22100029110\x22 data-ratio=\x220.7916666666666666\x22 data-type=\x22png\x22 data-w=\x221080\x22 style=\x22max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 10px auto;width: 100%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;\x22 data-src=\x22https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblK7bbN9YGPekAcje2W08WG3uBsWxLSPhwiaiah2MPwP3ssIxICiceLMoqdZr3IyEutZVNhJiaQ8gdgGfwyugNFQYOlrrsV53fxtCyk/640?wx_fmt=png\x26amp;from=appmsg\x22  /\x3e\x3c/span\x3e\x3c/figure\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3eD2 会自动生成一个结构化的架构图，节点为矩形，箭头为连线。\x3c/span\x3e\x3c/p\x3e\x3cfigure data-tool=\x22mdnice编辑器\x22 style=\x22margin: 0;margin-top: 10px;margin-bottom: 10px;\x22\x3e\x3cspan leaf=\x22\x22\x3e\x3cimg class=\x22rich_pages wxw-img\x22 data-aistatus=\x221\x22 data-imgfileid=\x22100029109\x22 data-ratio=\x220.7222222222222222\x22 data-type=\x22png\x22 data-w=\x221080\x22 style=\x22max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 10px auto;width: 100%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;\x22 data-src=\x22https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLERYjBoXfdicSbiamAJXMoNmtoac3COKVXQlKGpJl0wIwicMGVSLEUc5vFjVKJ1urJk9ib0Smx2Eia4BVOcnuTUuzHDhMC4vrRdo18/640?wx_fmt=png\x26amp;from=appmsg\x22  /\x3e\x3c/span\x3e\x3c/figure\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e我又找了一个例子，最前面加一行\x26nbsp;\x3c/span\x3e\x3ccode style=\x22font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;\x22\x3e\x3cspan leaf=\x22\x22\x3edirection: up\x3c/span\x3e\x3c/code\x3e\x3cspan leaf=\x22\x22\x3e\x26nbsp;整个图形的箭头方向都反过来了。\x3c/span\x3e\x3c/p\x3e\x3cfigure data-tool=\x22mdnice编辑器\x22 style=\x22margin: 0;margin-top: 10px;margin-bottom: 10px;\x22\x3e\x3cspan leaf=\x22\x22\x3e\x3cimg class=\x22rich_pages wxw-img\x22 data-ratio=\x220.35462962962962963\x22 data-type=\x22png\x22 data-w=\x221080\x22 style=\x22max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 10px auto;width: 100%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;\x22 data-imgfileid=\x22100029111\x22 data-aistatus=\x221\x22 data-src=\x22https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJqicRazIlMO5gZykKTeEY2djrV6PBywmPmg2H6sjIYYz5xQjYYqwk3VlPeiaU3d4ePwhmr8KkRvkvl2a55ACUW4ADt0rEkUBupY/640?wx_fmt=png\x26amp;from=appmsg\x22  /\x3e\x3c/span\x3e\x3c/figure\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e体验下来的感受：\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e你不需要管组件放在哪里，只管它们之间有什么关系，修改结构的时候就修改代码。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e布局会自动调整，不会出现“改一处地方整张图片都乱了”的情况。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e你只管描述图长什么样，至于节点怎么摆、线怎么连，则交给底层布局引擎来处理。\x3c/span\x3e\x3c/p\x3e\x3ch2 data-tool=\x22mdnice编辑器\x22 style=\x22margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;\x22\x3e\x3cspan style=\x22font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;\x22\x3e\x3cspan leaf=\x22\x22\x3e这样的布局引擎，D2 内置了三种。\x3c/span\x3e\x3c/span\x3e\x3c/h2\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cstrong style=\x22font-weight: border;color: #0e88eb;\x22\x3e\x3cspan leaf=\x22\x22\x3e01 dagre 分层布局，这是默认的布局方式，适用于大部分情况。\x3c/span\x3e\x3c/strong\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e这是默认引擎，适用于大部分情况，使用的是Graphviz DOT算法，效果稳定可靠。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cstrong style=\x22font-weight: border;color: #0e88eb;\x22\x3e\x3cspan leaf=\x22\x22\x3e02 ELK 节点链接布局，适用于有方向的复杂网络拓扑图。\x3c/span\x3e\x3c/strong\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e更适合有方向的节点链接图，端口连接优化做的很好，可以适用于复杂的网络拓扑。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cstrong style=\x22font-weight: border;color: #0e88eb;\x22\x3e\x3cspan leaf=\x22\x22\x3e03 TALA付费引擎，针对软件架构图进行优化，效果最好。\x3c/span\x3e\x3c/strong\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e专门针对软件架构图进行优化，多种算法组合在一起使用，效果最好但是要单独购买。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e如果你对默认的效果不满意的话，可以换一个引擎试一试，不同的引擎得到的结果差别很大。\x3c/span\x3e\x3c/p\x3e\x3cfigure data-tool=\x22mdnice编辑器\x22 style=\x22margin: 0;margin-top: 10px;margin-bottom: 10px;\x22\x3e\x3cspan leaf=\x22\x22\x3e\x3cimg class=\x22rich_pages wxw-img\x22 data-aistatus=\x221\x22 data-imgfileid=\x22100029112\x22 data-ratio=\x221.1898148148148149\x22 data-type=\x22png\x22 data-w=\x221080\x22 style=\x22max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 10px auto;width: 100%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;\x22 data-src=\x22https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKv0DI30ynV7sRcV3T37mzS1pVKM4w1EObRNhzwCjsmGoDWmzgV9XkX9pYR6NF94FmsBwibuw8Jts4sCPkdUuFGHRzSyEQY49Do/640?wx_fmt=png\x26amp;from=appmsg\x22  /\x3e\x3c/span\x3e\x3c/figure\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e布局决定着图的结构骨架，而视觉表现力则依靠形状、样式来实现。\x3c/span\x3e\x3c/p\x3e\x3ch2 data-tool=\x22mdnice编辑器\x22 style=\x22margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;\x22\x3e\x3cspan style=\x22font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;\x22\x3e\x3cspan leaf=\x22\x22\x3e形状库也是专门为现代架构设计的，这点我很喜欢。\x3c/span\x3e\x3c/span\x3e\x3c/h2\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cstrong style=\x22font-weight: border;color: #0e88eb;\x22\x3e\x3cspan leaf=\x22\x22\x3e基础形状齐全，矩形圆形菱形圆柱体云形状都有，覆盖常见场景。\x3c/span\x3e\x3c/strong\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e数据库用圆柱体，云服务用云形状，微服务用六边形——一行代码声明类型就可以，不需要手工绘制。\x3c/span\x3e\x3c/p\x3e\x3cfigure data-tool=\x22mdnice编辑器\x22 style=\x22margin: 0;margin-top: 10px;margin-bottom: 10px;\x22\x3e\x3cspan leaf=\x22\x22\x3e\x3cimg class=\x22rich_pages wxw-img\x22 data-ratio=\x220.6259259259259259\x22 data-type=\x22png\x22 data-w=\x221080\x22 style=\x22max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 10px auto;width: 100%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;\x22 data-imgfileid=\x22100029116\x22 data-aistatus=\x221\x22 data-src=\x22https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJVmiafEMN5IZogBNc4dQEkBqgLWlMbpCgF9Gghic4vMSFCJjCfcia1kO34gGOSU3jLCPdEW9x3YVPwkjHzlIib0NdVeZQFuYmjiaDo/640?wx_fmt=png\x26amp;from=appmsg\x22  /\x3e\x3c/span\x3e\x3c/figure\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cstrong style=\x22font-weight: border;color: #0e88eb;\x22\x3e\x3cspan leaf=\x22\x22\x3e专业的形状很多，可以支持SQL表格时序图、LaTeX公式嵌入、图表展示等，非常实用。\x3c/span\x3e\x3c/strong\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e甚至可以直接把SQL表格、时序图、LaTeX公式嵌入到图表中，在文档中需要配数据结构的地方就更加方便了。\x3c/span\x3e\x3c/p\x3e\x3cfigure data-tool=\x22mdnice编辑器\x22 style=\x22margin: 0;margin-top: 10px;margin-bottom: 10px;\x22\x3e\x3cspan leaf=\x22\x22\x3e\x3cimg class=\x22rich_pages wxw-img\x22 data-aistatus=\x221\x22 data-imgfileid=\x22100029114\x22 data-ratio=\x220.5222222222222223\x22 data-type=\x22png\x22 data-w=\x221080\x22 style=\x22max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 10px auto;width: 100%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;\x22 data-src=\x22https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJ38UtY8Mqxhb6b2rLlKB8lPeiawApkaJShUrzBuiapNib9Vdx7fFYYEPJHPiaWo2JjbfY2mCcm1fPcAiboCEjb4RHhbEzusppPnFyo/640?wx_fmt=png\x26amp;from=appmsg\x22  /\x3e\x3c/span\x3e\x3c/figure\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e这些形状不需要你手动绘制出来，只用设置好类型就可以了。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e样式系统配置的方式也很简单。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e填充色、边框、虚线、阴影都用属性声明的方式，官方还提供了一套专业的设计师制作的主题，直接使用即可。\x3c/span\x3e\x3c/p\x3e\x3cfigure data-tool=\x22mdnice编辑器\x22 style=\x22margin: 0;margin-top: 10px;margin-bottom: 10px;\x22\x3e\x3cspan leaf=\x22\x22\x3e\x3cimg class=\x22rich_pages wxw-img\x22 data-ratio=\x220.8314814814814815\x22 data-type=\x22png\x22 data-w=\x221080\x22 style=\x22max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 10px auto;width: 100%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;\x22 data-imgfileid=\x22100029115\x22 data-aistatus=\x221\x22 data-src=\x22https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKJqhM0jNW7sMjVK1ZZmxISYpSiaJicMheVBJjkslBWJ82obfPx24BiaDAE54mfk7FLrnOQUcIALq9N99xznBibnEmWDoKGqPyEKUk/640?wx_fmt=png\x26amp;from=appmsg\x22  /\x3e\x3c/span\x3e\x3c/figure\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e还有手绘风格的 Sketch 模式，出来的图有随手画的感觉，很适合做演示用。\x3c/span\x3e\x3c/p\x3e\x3cfigure data-tool=\x22mdnice编辑器\x22 style=\x22margin: 0;margin-top: 10px;margin-bottom: 10px;\x22\x3e\x3cspan leaf=\x22\x22\x3e\x3cimg class=\x22rich_pages wxw-img\x22 data-aistatus=\x221\x22 data-imgfileid=\x22100029117\x22 data-ratio=\x220.723726977248104\x22 data-type=\x22png\x22 data-w=\x22923\x22 style=\x22max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 10px auto;width: 100%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;\x22 data-src=\x22https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJW5HgUHzS7aNZ0o9NGjibFpcK6UFBWnP6FUtCSljhZRF4Ex9AHvWCN97F8HjY2bian4ECOKQ3hQ3IxL6dHGSVteynia3SOw9R6RM/640?wx_fmt=png\x26amp;from=appmsg\x22  /\x3e\x3c/span\x3e\x3c/figure\x3e\x3ch2 data-tool=\x22mdnice编辑器\x22 style=\x22margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;\x22\x3e\x3cspan style=\x22font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;\x22\x3e\x3cspan leaf=\x22\x22\x3e看到这里，应该有不少朋友会想试一试。\x3c/span\x3e\x3c/span\x3e\x3c/h2\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e我给大家介绍两种打开方式。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e最简单的。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e直接打开官方 https://play.d2lang.com，在浏览器中就可以玩了。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e还有喜欢命令行也可以。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e用下面的一行命令就能搞定，无需复杂配置：\x3c/span\x3e\x3c/p\x3e\x3cpre data-tool=\x22mdnice编辑器\x22 style=\x22margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;\x22\x3e\x3ccode style=\x22overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;\x22\x3e\x3cspan leaf=\x22\x22\x3ecurl -fsSL https://d2lang.com/install.sh | sh -s\x3c/span\x3e\x3cspan leaf=\x22\x22\x3e\x3cbr  /\x3e\x3c/span\x3e\x3c/code\x3e\x3c/pre\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e装完之后创建一个\x26nbsp;\x3c/span\x3e\x3ccode style=\x22font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;\x22\x3e\x3cspan leaf=\x22\x22\x3ehello.d2\x3c/span\x3e\x3c/code\x3e\x3cspan leaf=\x22\x22\x3e\x26nbsp;文件，并写上几行代码，之后使用\x26nbsp;\x3c/span\x3e\x3ccode style=\x22font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;\x22\x3e\x3cspan leaf=\x22\x22\x3ed2 --watch\x3c/span\x3e\x3c/code\x3e\x3cspan leaf=\x22\x22\x3e\x26nbsp;可以实现实时预览。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e支持实时预览。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e代码改了，浏览器里的图会自动刷新，调试很方便。\x3c/span\x3e\x3c/p\x3e\x3ch2 data-tool=\x22mdnice编辑器\x22 style=\x22margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;\x22\x3e\x3cspan style=\x22font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;\x22\x3e\x3cspan leaf=\x22\x22\x3e到这里缺点也给大家提出来。\x3c/span\x3e\x3c/span\x3e\x3c/h2\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e自动布局是D2最大的优点之一，但是也意味着放弃了像素级别的位置控制。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e对于需要精细排版的地方，它并不是最好的工具。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e另外，在大图中，随着节点、层级的增多，编译的时间也会相应增加。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e但是如果你只想要画软件架构图或者系统流程图的话，D2 的体验已经很好了，可以试一试。\x3c/span\x3e\x3c/p\x3e\x3ch2 data-tool=\x22mdnice编辑器\x22 style=\x22margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;\x22\x3e\x3cspan style=\x22font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;\x22\x3e\x3cspan leaf=\x22\x22\x3e写在最后\x3c/span\x3e\x3c/span\x3e\x3c/h2\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e我觉得，D2 最大的价值不只是\x22画图更快\x22。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e而把架构图也纳入到了版本管理的闭环当中。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e改了代码就知道改了什么，团队协作不再靠\x22图-v2-最终版-final.png\x22来沟通。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e如果你也经常在改图和传图之间消耗耐心，不妨花 15 分钟试试声明式绘图，也许会打开一个新思路。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e开源地址：https://github.com/terrastruct/d2\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e既然看到这了，欢迎随手点赞、在看、转发，也可以给我个星标⭐，接收最新的文章，我们下期见！\x3c/span\x3e\x3c/p\x3e\x3csection class=\x22mp_profile_iframe_wrp\x22\x3e\x3cmp-common-profile class=\x22custom_select_card mp_profile_iframe mp_common_widget\x22 data-pluginname=\x22mpprofile\x22 data-nickname=\x22开源日记\x22 data-from=\x220\x22 data-headimg=\x22http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png\x22 data-signature=\x22分享优质开源项目 , 探索AI生产力。\x22 data-id=\x22Mzg3NzU0NzIxMA==\x22 data-service_type=\x221\x22 data-verify_status=\x220\x22\x3e\x3c/mp-common-profile\x3e\x3c/section\x3e\x3c/section\x3e\x3cp style=\x22display: none;\x22\x3e\x3cmp-style-type data-value=\x223\x22\x3e\x3c/mp-style-type\x3e\x3c/p\x3e',
                          create_time: '2026-06-12 15:10',
                          cdn_url: 'https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblLJGcYwOahVL3DsR85kKkicqaBJ8NNlOic186VqXq1W8zUmYt5NfhHeoLN9rricp0AjuialK2XGHzeISRXYcrn0ibLVyibxGEuIowiaOI/0?wx_fmt=jpeg',
                          link: 'https://mp.weixin.qq.com/s/WLqxs0Wkk2YdklqfU15IKQ',
                          source_url: '',
                          can_share: '0' * 1,
                          alias: '',
                                  type: '9' * 1,
                          author: '开源日记',
                          is_limit_user: '0' * 1,
                                  show_cover_pic: '0' * 1,
                        advertisement_info: [
                  ],
                                  ori_create_time: '1781248239' * 1,
                          user_uin: '0',
                                  total_item_num: '1' * 1,
                                          is_async: '1' * 1,
                          comment_id: '4557630321659428865',
                                  img_format: 'jpeg',
                          svr_time: '1781521305' * 1,
                          copyright_info: {
                           copyright_stat: '1' * 1,
                                                                                                                                                                          ori_article_type: '',
                                                                                                                                                                                                                                      is_cartoon_copyright: '0' * 1,
                                  },
                          can_reward: '0' * 1,
                          signature: '分享优质开源项目 , 探索AI生产力。',
                                                                                          in_mm: '0' * 1,
                          app_id: 'wx145b5b1fb309352f',
                                                  show_comment: '0' * 1,
                          can_use_page: '0' * 1,
                                                  hd_head_img: 'http://wx.qlogo.cn/mmhead/iahdQicCC5VBTkicysbQccT1ic6swx2OJ6WhlNEPhoZF3pb2NQVDkwJbLT1iadha8M2ZSskQ93NsKYRw/0',
                          del_reason_id: '0' * 1,
                                                          srcid: '',
                          is_wxg_stuff_uin: '0' * 1,
                                          need_report_cost: '0' * 1,
                                  bizuin: 'Mzg3NzU0NzIxMA==',
                          mid: '2247512771' * 1,
                          idx: '1' * 1,
                          sn: '684eb8decbc3379244dd400174bd10dd',
                                          use_tx_video_player: '0' * 1,
                                          is_only_read: '1' * 1,
                                  req_id: '1519RoYZu7uusVDWayhElpEQ',
                                  use_outer_link: '0' * 1,
                          ban_scene: '0' * 1,
                          csp_nonce_str: '1435168589' * 1,
                                  msg_daily_idx: '1' * 1,
                          ori_head_img_url: 'http://wx.qlogo.cn/mmhead/iahdQicCC5VBTkicysbQccT1ic6swx2OJ6WhlNEPhoZF3pb2NQVDkwJbLT1iadha8M2ZSskQ93NsKYRw/132',
                                  filter_time: '1781248203' * 1,
                          appmsg_fe_filter: 'contenteditable',
                                                          is_login: '0' * 1,
                                                                          item_show_type: '0' * 1,
                voice_in_appmsg: [
                  ],
                  video_page_info: {
                                                                                                                                                                                                                                                 mp_video_trans_info: [
                          ],
                                                                                                                                                                                      drama_video_info: {
                                                                                                               },
                                      drama_info: {
                                                                                                                                                                                                               },
                                                                                  },
                                  malicious_title_reason_id: '0' * 1,
                                picture_page_info_list: [
                    {
                          cdn_url: 'https://mmbiz.qpic.cn/sz_mmbiz_gif/VDCUoW3UiblK4aPAlVGHCm37uWuMvmXjQrC8HEPuGyhMSBe7pibd8RhEia9YQ4eLjkpib74joOiaUPSHjTjw8XCibuQ7FKMNaVaicyXbib6eMMIWPlk/640?wx_fmt=gif\x26amp;amp;from=appmsg',
                                      width: '1080' * 1,
                                      height: '432' * 1,
                                                poi_info: [
                          ],
            wxa_info: [
                          ],
                                    bind_ad_info: [
                          ],
            cps_ad_info: [
                          ],
                                                            spot_product_info: [
                          ],
                                  },
                    {
                          cdn_url: 'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblK7bbN9YGPekAcje2W08WG3uBsWxLSPhwiaiah2MPwP3ssIxICiceLMoqdZr3IyEutZVNhJiaQ8gdgGfwyugNFQYOlrrsV53fxtCyk/640?wx_fmt=png\x26amp;amp;from=appmsg',
                                      width: '1080' * 1,
                                      height: '855' * 1,
                                                poi_info: [
                          ],
            wxa_info: [
                          ],
                                    bind_ad_info: [
                          ],
            cps_ad_info: [
                          ],
                                      show_watermark: true,
                                      bottom_right_brightness: '0.062268235' * 1,
                                      watermark_info: {
                                   cdn_url: 'http://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblL5z8rm3icErkqAulteC8yvR6jsqBayMWCaqiblqwkfNg8pEBPjIUARUtPnyAXLNHGbeJibZ2ibAibAOraGuydnHA0Meq15G00nA1cA/0?wx_fmt=png',
                                                  is_uploader: true,
                              },
                        spot_product_info: [
                          ],
                                  },
                    {
                          cdn_url: 'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLERYjBoXfdicSbiamAJXMoNmtoac3COKVXQlKGpJl0wIwicMGVSLEUc5vFjVKJ1urJk9ib0Smx2Eia4BVOcnuTUuzHDhMC4vrRdo18/640?wx_fmt=png\x26amp;amp;from=appmsg',
                                      width: '1080' * 1,
                                      height: '780' * 1,
                                                poi_info: [
                          ],
            wxa_info: [
                          ],
                                    bind_ad_info: [
                          ],
            cps_ad_info: [
                          ],
                                      show_watermark: true,
                                      bottom_right_brightness: '0.062268235' * 1,
                                      watermark_info: {
                                   cdn_url: 'http://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIoVpJGgcM4Vtlt57e51Txib3rTiaQEic8119GX9GbC2F3pYVAyCXYiaaUq0kq6LzNH8Bbv4PGg1mX9dXa1eU0CkVyG1CiaotuacuBQ/0?wx_fmt=png',
                                                  is_uploader: true,
                              },
                        spot_product_info: [
                          ],
                                  },
                    {
                          cdn_url: 'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJqicRazIlMO5gZykKTeEY2djrV6PBywmPmg2H6sjIYYz5xQjYYqwk3VlPeiaU3d4ePwhmr8KkRvkvl2a55ACUW4ADt0rEkUBupY/640?wx_fmt=png\x26amp;amp;from=appmsg',
                                      width: '1080' * 1,
                                      height: '383' * 1,
                                                poi_info: [
                          ],
            wxa_info: [
                          ],
                                    bind_ad_info: [
                          ],
            cps_ad_info: [
                          ],
                                      show_watermark: true,
                                      bottom_right_brightness: '0.15510099' * 1,
                                      watermark_info: {
                                   cdn_url: 'http://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJ0ELLgOmFpFicbFCN0evBB7gsmhRGjxYYd41O5KRo0CZia3RXryjIuOjIvyehA9WtlSMEgc7LAkgXhy3ibHYptic9jiaY7HjeQmJCw/0?wx_fmt=png',
                                                  is_uploader: true,
                              },
                        spot_product_info: [
                          ],
                                  },
                    {
                          cdn_url: 'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKv0DI30ynV7sRcV3T37mzS1pVKM4w1EObRNhzwCjsmGoDWmzgV9XkX9pYR6NF94FmsBwibuw8Jts4sCPkdUuFGHRzSyEQY49Do/640?wx_fmt=png\x26amp;amp;from=appmsg',
                                      width: '1080' * 1,
                                      height: '1285' * 1,
                                                poi_info: [
                          ],
            wxa_info: [
                          ],
                                    bind_ad_info: [
                          ],
            cps_ad_info: [
                          ],
                                      show_watermark: true,
                                      bottom_right_brightness: '0.16314103' * 1,
                                      watermark_info: {
                                   cdn_url: 'http://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblI98b5tT4yaKPtJqLibiazzpSlgj7t15LaB7c2BcK729kms5psPgGTTzUzn3el2vtchMHw77Fqq7k13uXIhAB6Y7UpKODz4apBw8/0?wx_fmt=png',
                                                  is_uploader: true,
                              },
                        spot_product_info: [
                          ],
                                  },
                    {
                          cdn_url: 'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJVmiafEMN5IZogBNc4dQEkBqgLWlMbpCgF9Gghic4vMSFCJjCfcia1kO34gGOSU3jLCPdEW9x3YVPwkjHzlIib0NdVeZQFuYmjiaDo/640?wx_fmt=png\x26amp;amp;from=appmsg',
                                      width: '1080' * 1,
                                      height: '676' * 1,
                                                poi_info: [
                          ],
            wxa_info: [
                          ],
                                    bind_ad_info: [
                          ],
            cps_ad_info: [
                          ],
                                      show_watermark: true,
                                      bottom_right_brightness: '0.56182373' * 1,
                                      watermark_info: {
                                   cdn_url: 'http://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJGkT74P3JYxDEplUatmxk9S2zC4GTQh69I9WmmJuraGzrSriaib5hW0tyk1YeqRN7a1xjc7v1LicvIjjLHm3LZnX0Xvx4ibhFYU9w/0?wx_fmt=png',
                                                  is_uploader: true,
                              },
                        spot_product_info: [
                          ],
                                  },
                    {
                          cdn_url: 'https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJ38UtY8Mqxhb6b2rLlKB8lPeiawApkaJShUrzBuiapNib9Vdx7fFYYEPJHPiaWo2JjbfY2mCcm1fPcAiboCEjb4RHhbEzusppPnFyo/640?wx_fmt=png\x26amp;amp;from=appmsg',
                                      width: '1080' * 1,
                                      height: '564' * 1,
                                                poi_info: [
                          ],
            wxa_info: [
                          ],
                                    bind_ad_info: [
                          ],
            cps_ad_info: [
                          ],
                                      show_watermark: true,
                                      bottom_right_brightness: '0.090647385' * 1,
                                      watermark_info: {
                                   cdn_url: 'http://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKJIkB0jM7nv4eeqEUmNM8hib27XFJkK9YsWyV3AtmIw5v4wvjHg3remfpXqrnB8jpDkIKJsDmZDichh68Z9blxYhen0KrNJlTVA/0?wx_fmt=png',
                                                  is_uploader: true,
                              },
                        spot_product_info: [
                          ],
                                  },
                    {
                          cdn_url: 'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKJqhM0jNW7sMjVK1ZZmxISYpSiaJicMheVBJjkslBWJ82obfPx24BiaDAE54mfk7FLrnOQUcIALq9N99xznBibnEmWDoKGqPyEKUk/640?wx_fmt=png\x26amp;amp;from=appmsg',
                                      width: '1080' * 1,
                                      height: '898' * 1,
                                                poi_info: [
                          ],
            wxa_info: [
                          ],
                                    bind_ad_info: [
                          ],
            cps_ad_info: [
                          ],
                                      show_watermark: true,
                                      bottom_right_brightness: '0.92136574' * 1,
                                      watermark_info: {
                                   cdn_url: 'http://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIpEHNMQP9hMXiciaib8MKCbibQGetfxSxCGGmSTAjicJm3NSqckBjsbcBENfxxmNDXVnLic3dG9GOiaCE4EQ4dZia0dnts12xxe32WsyY/0?wx_fmt=png',
                                                  is_uploader: true,
                              },
                        spot_product_info: [
                          ],
                                  },
                    {
                          cdn_url: 'https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJW5HgUHzS7aNZ0o9NGjibFpcK6UFBWnP6FUtCSljhZRF4Ex9AHvWCN97F8HjY2bian4ECOKQ3hQ3IxL6dHGSVteynia3SOw9R6RM/640?wx_fmt=png\x26amp;amp;from=appmsg',
                                      width: '923' * 1,
                                      height: '668' * 1,
                                                poi_info: [
                          ],
            wxa_info: [
                          ],
                                    bind_ad_info: [
                          ],
            cps_ad_info: [
                          ],
                                      show_watermark: true,
                                      bottom_right_brightness: '1' * 1,
                                      watermark_info: {
                                   cdn_url: 'http://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLs5v6GIhElkwMbUVRHhZEGaU5xpgQaa7icDMaDApESPJFuibpGg8oibmqNIQFB9h9AvsuPQwZ0nvPL8icDTQD5XVvyMBibmSZm7SY4/0?wx_fmt=png',
                                                  is_uploader: true,
                              },
                        spot_product_info: [
                          ],
                                  },
                  ],
                                                  show_msg_voice: '0' * 1,
                                                        locationlist: [
                  ],
        hotspotinfolist: [
                  ],
                                                  isnew: '0' * 1,
                          malicious_content_type: '0' * 1,
                                          fasttmpl_version: '8301946' * 1,
                          is_top_stories: '0' * 1,
                video_ids: [
                  ],
                  isprofileblock: '0' * 1,
                          cdn_url_235_1: 'https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblLJGcYwOahVL3DsR85kKkicqaBJ8NNlOic186VqXq1W8zUmYt5NfhHeoLN9rricp0AjuialK2XGHzeISRXYcrn0ibLVyibxGEuIowiaOI/0?wx_fmt=jpeg',
                          cdn_url_1_1: 'https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblIyXRknxvo8YgTCOBiaOehbAghTg45MkG86qwuoTUWN6RAy1KNbuPT7jcgq9nDCXyGIu11BIViau3ice6tTNtxPibEAgRKh24AD80w/0?wx_fmt=jpeg',
                          more_read_type: '0' * 1,
                          appmsg_like_type: '2' * 1,
                          ori_send_time: '1781248239' * 1,
                                  show_top_bar: '0' * 1,
                related_tag: [
                  ],
                  user_info: {
                                                                                                                                       is_paid: '0' * 1,
                                      clientversion: '',
                                    ckeys: [
                          ],
                                                                                    fasttmpl_infos: [
                            {
                                  type: '0' * 1,
                                                  version: '8301946' * 1,
                                                  lang: 'zh_CN',
                                                  fullversion: '8301946-zh_CN-html',
                                                  versiongroup: 'zh_CN-html',
                                              },
                          ],
                          isoversea: '0' * 1,
                                      search_keyword: {
                 item_list: [
                                    {
                                          keyword: 'Visio',
                                        idx_range_list: [
                                            {
                                                  begin_idx: '2' * 1,
                                                                          end_idx: '6' * 1,
                                                                          section_idx: '4' * 1,
                                                                                              },
                                          ],
                                          s1s_stat_info: '%7B%22bizuin%22%3A3877547210%2C%22msgid%22%3A2247512771%2C%22msgidx%22%3A1%2C%22docid%22%3A%227814784434647871751%22%2C%22keywordItem%22%3A%7B%22keyword%22%3A%22Visio%22%2C%22section_idx%22%3A4%2C%22begin_idx%22%3A2%2C%22end_idx%22%3A6%2C%22type%22%3A64%2C%22baike_docid%22%3A%2212366038781917331286%22%2C%22lemma_id%22%3A%22%22%7D%2C%22category%22%3A%22%E7%A7%91%E6%8A%80_%E4%BF%A1%E6%81%AF%E6%8A%80%E6%9C%AF%3A0.967478%22%2C%22reqId%22%3A18204125863783497429%2C%22S1SPageType%22%3A1%2C%22strReqId%22%3A%2218204125863783497429%22%2C%22orgReqId%22%3A%222336721769896438644%22%2C%22item_show_type%22%3A0%2C%22common_value_expt%22%3A0%2C%22highlight_preload%22%3A0%7D',
                                                              s1s_context_info: '%7B%22keyword%22%3A%22visio%22%2C%22isNeedUpdateGPTInfo%22%3Afalse%2C%22S1SPageType%22%3A1%2C%22search_id%22%3A%222336721769896438644%22%2C%22doc_info%22%3A%7B%22triple%22%3A%7B%22bizuin%22%3A3877547210%2C%22msgid%22%3A2247512771%2C%22msgidx%22%3A1%7D%2C%22docid%22%3A7814784434647870464%2C%22publish_time%22%3A1781248207%7D%2C%22idx_range%22%3A%7B%22section_idx%22%3A4%2C%22begin_idx%22%3A2%2C%22end_idx%22%3A6%7D%2C%22expt_value%22%3A4294967295%2C%22source%22%3A64%2C%22needPreRender%22%3Afalse%7D',
                                                              s1s_jsapi_name: 'openWXSearchHalfPage',
                                                              s1s_jsapi_paras: '{\x22query\x22:\x22Visio\x22,\x22scene\x22:139,\x22hiddenSearchHeader\x22:0,\x22webviewHeightRatio\x22:0.699999988,\x22kvItems\x22:[{\x22key\x22:\x22mpEndHalfPageResultTab\x22,\x22textValue\x22:\x220\x22},{\x22key\x22:\x22firstSearchRequest\x22,\x22uintValue\x22:1},{\x22key\x22:\x22MPHalfSearchAIBox\x22,\x22uintValue\x22:3}],\x22sessionKvItems\x22:[{\x22key\x22:\x22mpEndHalfPageResultTab\x22,\x22textValue\x22:\x220\x22},{\x22key\x22:\x22MPHalfSearchAIBox\x22,\x22uintValue\x22:3}],\x22parentType\x22:135,\x22isAutoShowUnitInHalfScreen\x22:1}',
                                        tags: [
                                          ],
                                      },
                                    {
                                          keyword: '版本控制',
                                        idx_range_list: [
                                            {
                                                  begin_idx: '21' * 1,
                                                                          end_idx: '24' * 1,
                                                                          section_idx: '6' * 1,
                                                                                              },
                                          ],
                                          s1s_stat_info: '%7B%22bizuin%22%3A3877547210%2C%22msgid%22%3A2247512771%2C%22msgidx%22%3A1%2C%22docid%22%3A%227814784434647871751%22%2C%22keywordItem%22%3A%7B%22keyword%22%3A%22%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6%22%2C%22section_idx%22%3A6%2C%22begin_idx%22%3A21%2C%22end_idx%22%3A24%2C%22type%22%3A64%2C%22baike_docid%22%3A%2211100476797589637146%22%2C%22lemma_id%22%3A%22%22%7D%2C%22category%22%3A%22%E7%A7%91%E6%8A%80_%E4%BF%A1%E6%81%AF%E6%8A%80%E6%9C%AF%3A0.967478%22%2C%22reqId%22%3A18204125863783497429%2C%22S1SPageType%22%3A1%2C%22strReqId%22%3A%2218204125863783497429%22%2C%22orgReqId%22%3A%222336721769896438644%22%2C%22item_show_type%22%3A0%2C%22common_value_expt%22%3A0%2C%22highlight_preload%22%3A0%7D',
                                                              s1s_context_info: '%7B%22keyword%22%3A%22%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6%22%2C%22isNeedUpdateGPTInfo%22%3Afalse%2C%22S1SPageType%22%3A1%2C%22search_id%22%3A%222336721769896438644%22%2C%22doc_info%22%3A%7B%22triple%22%3A%7B%22bizuin%22%3A3877547210%2C%22msgid%22%3A2247512771%2C%22msgidx%22%3A1%7D%2C%22docid%22%3A7814784434647870464%2C%22publish_time%22%3A1781248207%7D%2C%22idx_range%22%3A%7B%22section_idx%22%3A6%2C%22begin_idx%22%3A21%2C%22end_idx%22%3A24%7D%2C%22expt_value%22%3A4294967295%2C%22source%22%3A64%2C%22needPreRender%22%3Afalse%7D',
                                                              s1s_jsapi_name: 'openWXSearchHalfPage',
                                                              s1s_jsapi_paras: '{\x22query\x22:\x22版本控制\x22,\x22scene\x22:139,\x22hiddenSearchHeader\x22:0,\x22webviewHeightRatio\x22:0.699999988,\x22kvItems\x22:[{\x22key\x22:\x22mpEndHalfPageResultTab\x22,\x22textValue\x22:\x220\x22},{\x22key\x22:\x22firstSearchRequest\x22,\x22uintValue\x22:1},{\x22key\x22:\x22MPHalfSearchAIBox\x22,\x22uintValue\x22:3}],\x22sessionKvItems\x22:[{\x22key\x22:\x22mpEndHalfPageResultTab\x22,\x22textValue\x22:\x220\x22},{\x22key\x22:\x22MPHalfSearchAIBox\x22,\x22uintValue\x22:3}],\x22parentType\x22:135,\x22isAutoShowUnitInHalfScreen\x22:1}',
                                        tags: [
                                          ],
                                      },
                                    {
                                          keyword: 'LaTeX',
                                        idx_range_list: [
                                            {
                                                  begin_idx: '21' * 1,
                                                                          end_idx: '25' * 1,
                                                                          section_idx: '40' * 1,
                                                                                              },
                                            {
                                                  begin_idx: '17' * 1,
                                                                          end_idx: '21' * 1,
                                                                          section_idx: '41' * 1,
                                                                                              },
                                          ],
                                          s1s_stat_info: '%7B%22bizuin%22%3A3877547210%2C%22msgid%22%3A2247512771%2C%22msgidx%22%3A1%2C%22docid%22%3A%227814784434647871751%22%2C%22keywordItem%22%3A%7B%22keyword%22%3A%22LaTeX%22%2C%22section_idx%22%3A40%2C%22begin_idx%22%3A21%2C%22end_idx%22%3A25%2C%22type%22%3A64%2C%22lemma_id%22%3A%22%22%7D%2C%22category%22%3A%22%E7%A7%91%E6%8A%80_%E4%BF%A1%E6%81%AF%E6%8A%80%E6%9C%AF%3A0.967478%22%2C%22reqId%22%3A18204125863783497429%2C%22S1SPageType%22%3A1%2C%22strReqId%22%3A%2218204125863783497429%22%2C%22orgReqId%22%3A%222336721769896438644%22%2C%22item_show_type%22%3A0%2C%22common_value_expt%22%3A0%2C%22highlight_preload%22%3A0%7D',
                                                              s1s_context_info: '%7B%22keyword%22%3A%22latex%22%2C%22isNeedUpdateGPTInfo%22%3Afalse%2C%22S1SPageType%22%3A1%2C%22search_id%22%3A%222336721769896438644%22%2C%22doc_info%22%3A%7B%22triple%22%3A%7B%22bizuin%22%3A3877547210%2C%22msgid%22%3A2247512771%2C%22msgidx%22%3A1%7D%2C%22docid%22%3A7814784434647870464%2C%22publish_time%22%3A1781248207%7D%2C%22idx_range%22%3A%7B%22section_idx%22%3A40%2C%22begin_idx%22%3A21%2C%22end_idx%22%3A25%7D%2C%22expt_value%22%3A4294967295%2C%22source%22%3A64%2C%22needPreRender%22%3Afalse%7D',
                                                              s1s_jsapi_name: 'openWXSearchHalfPage',
                                                              s1s_jsapi_paras: '{\x22query\x22:\x22LaTeX\x22,\x22scene\x22:139,\x22hiddenSearchHeader\x22:0,\x22webviewHeightRatio\x22:0.699999988,\x22kvItems\x22:[{\x22key\x22:\x22mpEndHalfPageResultTab\x22,\x22textValue\x22:\x220\x22},{\x22key\x22:\x22firstSearchRequest\x22,\x22uintValue\x22:1},{\x22key\x22:\x22MPHalfSearchAIBox\x22,\x22uintValue\x22:3}],\x22sessionKvItems\x22:[{\x22key\x22:\x22mpEndHalfPageResultTab\x22,\x22textValue\x22:\x220\x22},{\x22key\x22:\x22MPHalfSearchAIBox\x22,\x22uintValue\x22:3}],\x22parentType\x22:135,\x22isAutoShowUnitInHalfScreen\x22:1}',
                                        tags: [
                                          ],
                                      },
                                  ],
                                  exp_info: 'CMrZ+rgOEMOl2a8IGAEiEzc4MTQ3ODQ0MzQ2NDc4NzE3NTEo9NblzJuC7bYg',
                                                  need_baike_preload: true,
                                                  show_ad_keyword: false,
                                ad_item_list: [
                                  ],
              },
                                                                                                            transfer_config: [
                            {
                                  scope: 'mmbizwap_cgi_appmsgad',
                                cgis: [
                                    'mp/advertisement_report',
                                    'mp/getappmsgad',
                                    'mp/ad_video_report',
                                    'mp/ad_monitor',
                                    'mp/ad_report',
                                    'mp/ad_biz_info',
                                    'mp/ad_complaint',
                                    'mp/ad',
                                    'mp/ad_app_info',
                                  ],
              },
                            {
                                  scope: 'mmbizwap_cgi_appmsgext',
                                cgis: [
                                    'mp/appmsg_comment',
                                    'mp/getappmsgext',
                                    'mp/videoplayer',
                                    'mp/appmsg_video_snap',
                                    'mp/immersive_player',
                                    'mp/appmsg_weapp',
                                    'mp/appmsg_like',
                                    'mp/newappmsgvote',
                                    'mp/reward',
                                    'mp/authorreward',
                                    'mp/qqmusic',
                                    'mp/video',
                                    'mp/qna',
                                    'mp/searchwordbaike',
                                    'mp/appmsgthank',
                                    'mp/creationcenter',
                                  ],
              },
                            {
                                  scope: 'mmbizwap_cgi_misc',
                                cgis: [
                                    'mp/wapcommreport',
                                    'mp/underline',
                                    'mp/relatedarticle',
                                    'mp/homepage',
                                    'mp/waerrpage',
                                    'mp/getverifyinfo',
                                    'mp/getprofilebizrecommend',
                                    'mp/infringement',
                                    'mp/getprofiletransferpage',
                                    'mp/wacomplain',
                                    'mp/appmsgreport',
                                    'mp/getbizbanner',
                                  ],
              },
                          ],
                                                  appmsg_bar_data: {
                                                                                                                                                                                                                                                                                                                                                                                                                                               },
                                      pic_related_rec_info: {
                               },
                                                                                                                                                                                                            quote_list: [
                          ],
                                      red_flower_like_info: {
                                   is_red_flower_like: '0' * 1,
                                                                                                              },
                                                                          get_search_keyword_realtime: '0' * 1,
                                                                                                                                                                                                                                  },
                ainfos: [
                  ],
                          related_article_info: {
                           has_related_article_info: '0' * 1,
                                  },
                          has_red_packet_cover: '0' * 1,
                          is_pay_subscribe: '0' * 1,
                          pay_subscribe_info: {
                           preview_percent: '0' * 1,
                                      desc: '',
                                      fee: '0' * 1,
                                                  gifts_count: '0' * 1,
                                      wecoin_amount: '0' * 1,
                                  },
                video_in_article: [
                  ],
                          is_area_shield: '0' * 1,
                shield_areaids: [
                  ],
                  appmsg_ext_get: {
                           func_flag: '0' * 1,
                      },
                        anchor_tree: [
                  ],
                  voice_in_appmsg_list_json: '{\x22voice_in_appmsg\x22:[]}',
                                                        live_info: [
                  ],
                  lang: 'zh_CN',
                                                  cdn_url_16_9: '',
                                  biz_card: {
             list: [
                            {
                                  fakeid: 'Mzg3NzU0NzIxMA==',
                                                  nickname: '开源日记',
                                                  alias: '',
                                                  round_head_img: 'http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png',
                                                  service_type: '0' * 1,
                                                  signature: '分享优质开源项目 , 探索AI生产力。',
                                                  orignal_num: '1158' * 1,
                                                  is_biz_ban: '0' * 1,
                                                  username: 'gh_b2bc148c1cf8',
                                                  biz_account_status: '0' * 1,
                                                  verify_status: '0' * 1,
                              },
                            {
                                  fakeid: 'Mzg3NzU0NzIxMA==',
                                                  nickname: '开源日记',
                                                  alias: '',
                                                  round_head_img: 'http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png',
                                                  service_type: '0' * 1,
                                                  signature: '分享优质开源项目 , 探索AI生产力。',
                                                  orignal_num: '1158' * 1,
                                                  is_biz_ban: '0' * 1,
                                                  username: 'gh_b2bc148c1cf8',
                                                  biz_account_status: '0' * 1,
                                                  verify_status: '0' * 1,
                              },
                          ],
                          total: '2' * 1,
                      },
                                  real_item_show_type: '0' * 1,
                          url_item_show_type: '0' * 1,
                video_page_infos: [
                  ],
                  can_use_wecoin: '1' * 1,
                          wecoin_tips: '0' * 1,
                                          front_end_additional_fields: {
                           is_auto_type_setting: '3' * 1,
                                                  save_type: '0' * 1,
                                      template_version: '',
                      },
                          open_fansmsg: '0' * 1,
                          is_cooling_appmsg: '0' * 1,
                          ip_wording: {
                           country_name: '中国',
                                      country_id: '156',
                                      province_name: '湖北',
                                                          },
                          show_ip_wording: '1' * 1,
                          is_acct_area_shield: '0' * 1,
                shield_acct_areaids: [
                  ],
                                                  style_type: '3' * 1,
                shield_areas_info: [
                  ],
                                          create_timestamp: '1781248239' * 1,
                                                        picture_list_in_pictext: [
                  ],
                  servicetype: '0' * 1,
                          segment_comment_id: '4557630342983270407',
                                                          ad_mark_status: '0' * 1,
                          hide_ad_mark_on_cps: '0' * 1,
                          finder_audio_card: '{\x22list\x22:[]}',
                                  claim_source: {
                                                                                               },
                                          at_biz_list: {
             list: [
                          ],
                          total: '0' * 1,
                      },
                          extra_comment_id: '4557630342194741259',
                last_text: [
                  ],
                  wash_status: '0' * 1,
                                                  enterid: '1781521305' * 1,
                        zhuge_qa_id_list: [
                  ],
                                  sec_control_info: {
             list: [
                          ],
          },
                          cdn_url_3_4: '',
                        window_product_list: [
                  ],
                          finder_music_card: '{\x22list\x22:[]}',
                          finder_audio_card_list: {
             list: [
                          ],
          },
                          finder_music_card_list: {
             list: [
                          ],
          },
                                  new_service_type: '1' * 1,
                                  product_activity: {
                                                                                                                       },
                          rt_biz_info: {
                       },
                        redpacket_cover_list: [
                  ],
                          footer_gift_activity: {
                                                           },
                          verify_status: '0' * 1,
                          watermark_setting: '2' * 1,
                                          title_gen_type: '0' * 1,
                                  appmsg_listen_id: '150442785893098399',
                          trans_appmsg_info: {
                                   },
                          location: {
                                                                                                                                                                                                           },
                        topic_infos: [
                  ],
                        footer_common_shops: [
                  ],
                  footer_product_card: {
                                   },
                          desc_empty: true,
                                  hashtags: {
             hashtag: [
                          ],
          },
                                aigc_pictures: [
                  ],
                          private_info: {
                                   },
                                          biz_type: '1' * 1,
                          ai_chat_info: {
                           ai_chat_status: '0' * 1,
                                      room_info: '',
                                              },
                          special_biz: false,
                preload_comment_item_list: [
                  ],

      };
    } catch (e) {
      window.cgiError = e;
    }
  })();
  &lt;/script&gt;
  &lt;link href="//res.wx.qq.com" rel="dns-prefetch" reportloaderror=""/&gt;
  &lt;link href="//mmbiz.qpic.cn" rel="dns-prefetch" reportloaderror=""/&gt;
  &lt;link href="//mpcdn.qpic.cn" rel="dns-prefetch" reportloaderror=""/&gt;
  &lt;link href="//mpcdn.weixin.qq.com" rel="dns-prefetch" reportloaderror=""/&gt;
  &lt;link href="//file.daihuo.qq.com" rel="dns-prefetch" reportloaderror=""/&gt;
  &lt;link href="//wxa.wxs.qq.com" rel="dns-prefetch" reportloaderror=""/&gt;
  &lt;link href="//res.wx.qq.com/a/wx_fed/assets/res/NTI4MWU5.ico" rel="shortcut icon" reportloaderror="" type="image/x-icon"/&gt;
  &lt;link color="#4C4C4C" href="//res.wx.qq.com/a/wx_fed/assets/res/MjliNWVm.svg" rel="mask-icon" reportloaderror=""/&gt;
  &lt;link href="//res.wx.qq.com/a/wx_fed/assets/res/OTE0YTAw.png" rel="apple-touch-icon-precomposed" reportloaderror=""/&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   String.prototype.html = function (encode) {
  var replace = ["&amp;#39;", "'", "&amp;quot;", '"', "&amp;nbsp;", " ", "&amp;gt;", "&gt;", "&amp;lt;", "&lt;", "&amp;yen;", "¥", "&amp;amp;", "&amp;"];
 
 
 
 
 
  
  var replaceReverse = ["&amp;", "&amp;amp;", "¥", "&amp;yen;", "&lt;", "&amp;lt;", "&gt;", "&amp;gt;", " ", "&amp;nbsp;", '"', "&amp;quot;", "'", "&amp;#39;"];
  var target;
  if (encode) {
    target = replaceReverse;
  } else {
    target = replace;
  }
  for (var i = 0, str = this; i &lt; target.length; i += 2) {
    str = str.replace(new RegExp(target[i], 'g'), target[i + 1]);
  }
  return str;
};

window.isInWeixinApp = function () {
  return /MicroMessenger/.test(navigator.userAgent);
};

window.getQueryFromURL = function (url) {
  url = url || 'http://qq.com/s?a=b#rd';
  var tmp = url.split('?'),
    query = (tmp[1] || "").split('#')[0].split('&amp;'),
    params = {};
  for (var i = 0; i &lt; query.length; i++) {
    var arg = query[i].split('=');
    params[arg[0]] = arg[1];
  }
  if (params['pass_ticket']) {
    params['pass_ticket'] = encodeURIComponent(params['pass_ticket'].html(false).html(false).replace(/\s/g, "+"));
  }
  return params;
};


(function () {
  var params = getQueryFromURL(location.href);
  window.uin = params['uin'] || "" || '';
  window.key = params['key'] || "" || '';
  window.wxtoken = params['wxtoken'] || '';
  window.pass_ticket = params['pass_ticket'] || '';
  window.appmsg_token = "" || "";

  var ua = navigator.userAgent;
  var isWin = ua.match(/Windows(\s+\w+)?\s+?(\d+\.\d+)/);
  if (
    ua.match(/Mac\sOS\sX\s(\d+[\.|_]\d+)/)
    || isWin
    || ua.match(/Linux\s/)
    || ua.match(/UnifiedPC/)
    || (ua.match(/OpenHarmony/i) &amp;&amp; ua.match(/pc/i))
  ) {
    document.body.classList.add('pages_skin_pc');
    if (isWin) {
      document.body.classList.add('pages_skin_windows');
    }
  }
  if (/MPAPP\/([\d\.]+)/i.test(ua)) {
    document.body.classList.add('pages_skin_mpapp');
  }
  if (params['uninteractive']) {
    document.body.classList.add('pages_skin_browser_underline');
  }
})();
  &lt;/script&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   window.__ajaxTransferConfig = {  'mp/advertisement_report': 'mmbizwap_cgi_appmsgad',  'mp/getappmsgad': 'mmbizwap_cgi_appmsgad',  'mp/ad_video_report': 'mmbizwap_cgi_appmsgad',  'mp/ad_monitor': 'mmbizwap_cgi_appmsgad',  'mp/ad_report': 'mmbizwap_cgi_appmsgad',  'mp/ad_biz_info': 'mmbizwap_cgi_appmsgad',  'mp/ad_complaint': 'mmbizwap_cgi_appmsgad',  'mp/ad': 'mmbizwap_cgi_appmsgad',  'mp/ad_app_info': 'mmbizwap_cgi_appmsgad',  'mp/appmsg_comment': 'mmbizwap_cgi_appmsgext',  'mp/getappmsgext': 'mmbizwap_cgi_appmsgext',  'mp/videoplayer': 'mmbizwap_cgi_appmsgext',  'mp/appmsg_video_snap': 'mmbizwap_cgi_appmsgext',  'mp/immersive_player': 'mmbizwap_cgi_appmsgext',  'mp/appmsg_weapp': 'mmbizwap_cgi_appmsgext',  'mp/appmsg_like': 'mmbizwap_cgi_appmsgext',  'mp/newappmsgvote': 'mmbizwap_cgi_appmsgext',  'mp/reward': 'mmbizwap_cgi_appmsgext',  'mp/authorreward': 'mmbizwap_cgi_appmsgext',  'mp/qqmusic': 'mmbizwap_cgi_appmsgext',  'mp/video': 'mmbizwap_cgi_appmsgext',  'mp/qna': 'mmbizwap_cgi_appmsgext',  'mp/searchwordbaike': 'mmbizwap_cgi_appmsgext',  'mp/appmsgthank': 'mmbizwap_cgi_appmsgext',  'mp/creationcenter': 'mmbizwap_cgi_appmsgext',  'mp/wapcommreport': 'mmbizwap_cgi_misc',  'mp/underline': 'mmbizwap_cgi_misc',  'mp/relatedarticle': 'mmbizwap_cgi_misc',  'mp/homepage': 'mmbizwap_cgi_misc',  'mp/waerrpage': 'mmbizwap_cgi_misc',  'mp/getverifyinfo': 'mmbizwap_cgi_misc',  'mp/getprofilebizrecommend': 'mmbizwap_cgi_misc',  'mp/infringement': 'mmbizwap_cgi_misc',  'mp/getprofiletransferpage': 'mmbizwap_cgi_misc',  'mp/wacomplain': 'mmbizwap_cgi_misc',  'mp/appmsgreport': 'mmbizwap_cgi_misc',  'mp/getbizbanner': 'mmbizwap_cgi_misc'};
  &lt;/script&gt;
  &lt;div class="fullscreen-layout-padding" id="js_fullscreen_layout_padding"&gt;
   &lt;div class="fullscreen-layout-padding__content"&gt;
   &lt;/div&gt;
  &lt;/div&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   var __INLINE_SCRIPT__ = (function (exports) {
  'use strict';

  function _typeof(obj) {
    "@babel/helpers - typeof";

    return _typeof = "function" == typeof Symbol &amp;&amp; "symbol" == typeof Symbol.iterator ? function (obj) {
      return typeof obj;
    } : function (obj) {
      return obj &amp;&amp; "function" == typeof Symbol &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj;
    }, _typeof(obj);
  }

  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
    try {
      var info = gen[key](arg);
      var value = info.value;
    } catch (error) {
      reject(error);
      return;
    }
    if (info.done) {
      resolve(value);
    } else {
      Promise.resolve(value).then(_next, _throw);
    }
  }
  function _asyncToGenerator(fn) {
    return function () {
      var self = this,
        args = arguments;
      return new Promise(function (resolve, reject) {
        var gen = fn.apply(self, args);
        function _next(value) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
        }
        function _throw(err) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
        }
        _next(undefined);
      });
    };
  }

  function _regeneratorRuntime() {  _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  
  var doc = {};
  var isAcrossOrigin = false;
  var notFoundedMPPageAction = [];
  var __moon_report = window.__moon_report || function () {};
  var MOON_JSAPI_KEY_OFFSET = 8;
  try {
    doc = top.window.document;
  } catch (e) {
    isAcrossOrigin = true;
  }
  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }
  function ready(onBridgeReady) {
    var bridgeReady = function bridgeReady() {
      try {
        if (onBridgeReady) {
          window.onBridgeReadyTime = window.onBridgeReadyTime || Date.now();
          onBridgeReady();
        }
      } catch (e) {
        __moon_report([{
          offset: MOON_JSAPI_KEY_OFFSET,
          log: 'ready',
          e: e
        }]);
        throw e;
      }
      window.jsapiReadyTime = Date.now();
    };
    if (!isAcrossOrigin &amp;&amp; (typeof top.window.WeixinJSBridge === 'undefined' || !top.window.WeixinJSBridge.invoke)) {
      if (doc.addEventListener) {
        doc.addEventListener('WeixinJSBridgeReady', bridgeReady, false);
      } else if (doc.attachEvent) {
        doc.attachEvent('WeixinJSBridgeReady', bridgeReady);
        doc.attachEvent('onWeixinJSBridgeReady', bridgeReady);
      }
    } else {
      bridgeReady();
    }
  }
  var invokeNotWaitA8key = ['notifyPageInfo', 'updatePageAuth'
  ];
  var checkNotFoundedInvoke = function checkNotFoundedInvoke(methodName, args) {
    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; notFoundedMPPageAction.includes(args === null || args === void 0 ? void 0 : args.action)) {
      return true;
    }
    return false;
  };
  function invoke$1(_x, _x2, _x3) {
    return _invoke.apply(this, arguments);
  }
  function _invoke() {
    _invoke = _asyncToGenerator( _regeneratorRuntime().mark(function _callee(methodName, args, callback) {
      return _regeneratorRuntime().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__ &amp;&amp; !invokeNotWaitA8key.includes(methodName))) {
              _context.next = 3;
              break;
            }
            _context.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                alert('请在微信中打开此链接');
                return false;
              }
              if (checkNotFoundedInvoke(methodName, args)) {
                setTimeout(function () {
                  if (callback) {
                    callback.apply(window, [{
                      err_msg: "".concat(methodName, ":fail"),
                      err_desc: 'action isn\'t supported'
                    }]);
                  }
                }, 0);
              } else {
                top.window.WeixinJSBridge.invoke(methodName, args, function () {
                  try {
                    for (var _len2 = arguments.length, rets = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
                      rets[_key2] = arguments[_key2];
                    }
                    var ret = rets[0];
                    var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
                    if (['handleMPPageAction', 'handleVideoAction', 'handleHaokanAction'].indexOf(methodName) !== -1) {
                      var action = (args === null || args === void 0 ? void 0 : args.action) || '';
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName, ", action-&gt;").concat(action).concat(errMsg));
                    } else {
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName).concat(errMsg));
                    }
                    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; ((ret === null || ret === void 0 ? void 0 : ret.err_desc) === 'action isn\'t supported' || (ret === null || ret === void 0 ? void 0 : ret.err_msg) === 'handleMPPageAction:fail action is not supported')) {
                      notFoundedMPPageAction.push(args === null || args === void 0 ? void 0 : args.action);
                    }
                    if (callback) {
                      callback.apply(window, rets);
                    }
                  } catch (e) {
                    __moon_report([{
                      offset: MOON_JSAPI_KEY_OFFSET,
                      log: "invoke;methodName:".concat(methodName),
                      e: e
                    }]);
                    throw e;
                  }
                });
              }
            });
          case 4:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return _invoke.apply(this, arguments);
  }
  function call(_x4) {
    return _call.apply(this, arguments);
  }
  function _call() {
    _call = _asyncToGenerator( _regeneratorRuntime().mark(function _callee2(methodName) {
      return _regeneratorRuntime().wrap(function _callee2$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__)) {
              _context2.next = 3;
              break;
            }
            _context2.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                return false;
              }
              try {
                top.window.WeixinJSBridge.call(methodName);
              } catch (e) {
                __moon_report([{
                  offset: MOON_JSAPI_KEY_OFFSET,
                  log: "call;methodName:".concat(methodName),
                  e: e
                }]);
                throw e;
              }
            });
          case 4:
          case "end":
            return _context2.stop();
        }
      }, _callee2);
    }));
    return _call.apply(this, arguments);
  }
  function on(eventName, callback) {
    ready(function () {
      if (isAcrossOrigin) return false;
      if (_typeof(top.window.WeixinJSBridge) !== 'object' || !top.window.WeixinJSBridge.on) {
        return false;
      }
      if (!window.JSAPIEventCallbackMap[eventName]) {
        window.JSAPIEventCallbackMap[eventName] = [];
      }
      window.JSAPIEventCallbackMap[eventName].push(callback);
      if (window.JSAPIEventCallbackMap[eventName].length &gt; 1) {
        return false;
      }
      top.window.WeixinJSBridge.on(eventName, function () {
        try {
          for (var _len = arguments.length, rets = new Array(_len), _key = 0; _key &lt; _len; _key++) {
            rets[_key] = arguments[_key];
          }
          var ret = rets[0];
          var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
          console.info('[system]', "[jsapi] event-&gt;".concat(eventName).concat(errMsg));
          if (window.JSAPIEventCallbackMap[eventName] &amp;&amp; window.JSAPIEventCallbackMap[eventName].length) {
            var result;
            for (var i = 0; i &lt; window.JSAPIEventCallbackMap[eventName].length; i++) {
              result = window.JSAPIEventCallbackMap[eventName][i].apply(window, rets);
            }
            return result;
          }
        } catch (e) {
          __moon_report([{
            offset: MOON_JSAPI_KEY_OFFSET,
            log: "on;eventName:".concat(eventName),
            e: e
          }]);
          throw e;
        }
      });
    });
  }
  function remove(eventName, callback) {
    ready(function () {
      if (!window.JSAPIEventCallbackMap[eventName]) {
        return false;
      }
      var result = false;
      for (var i = window.JSAPIEventCallbackMap[eventName].length - 1; i &gt;= 0; i--) {
        if (window.JSAPIEventCallbackMap[eventName][i] === callback) {
          window.JSAPIEventCallbackMap[eventName].splice(i, 1);
          result = true;
        }
      }
      return result;
    });
  }
  var JSAPI = {
    ready: ready,
    invoke: invoke$1,
    call: call,
    on: on,
    remove: remove
  };

  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" &amp;&amp; o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike &amp;&amp; o &amp;&amp; typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i &gt;= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion &amp;&amp; it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
  function _arrayLikeToArray(arr, len) { if (len == null || len &gt; arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i]; return arr2; }
  
  
  var ua = navigator.userAgent;
  var is_ios = /(iPhone|iPad|iPod|iOS)/i.test(ua);
  var is_wp = /Windows\sPhone/i.test(ua);
  var is_android = /(Android)/i.test(ua);
  var is_wechat = /MicroMessenger\/([\d\.]+)/i.test(ua);
  var is_mac = /mac\sos/i.test(ua) &amp;&amp; !is_ios;
  var is_windows = /windows\snt/i.test(ua) &amp;&amp; !is_wp;
  var is_mpapp = /MPAPP\/([\d\.]+)/i.test(ua);
  var is_ipad = /iPad/i.test(ua);
  var is_windows_wechat = /WindowsWechat/i.test(ua);
  var is_mac_wechat = /MacWechat/i.test(ua) || /wechat.*mac os/i.test(ua);
  var is_prefetch = is_wechat &amp;&amp; window.WeixinPrefecherJSBridge;
  var is_donut_app = /SAAASDK/i.test(ua);
  var is_harmony = /OpenHarmony|ArkWeb/i.test(ua);
  var is_linux = /Linux\s/i.test(ua);
  var xweb_match = ua.match(/XWEB\/([\d.]+)/i);
  var xweb_version = xweb_match &amp;&amp; xweb_match[1] ? parseInt(xweb_match[1], 10) : 0;
  var is_unified_pc_wechat = /UnifiedPC\w+Wechat/i.test(ua);
  var is_in_miniProgram = is_android &amp;&amp; /miniprogram/.test(ua.toLowerCase()) || window.__wxjs_environment == 'miniprogram';
  var is_wx_work = /wxwork/i.test(ua);
  function getUrlParams() {
    var vars = location.search.substring(1).split('&amp;');
    var params = {};
    var _iterator = _createForOfIteratorHelper(vars),
      _step;
    try {
      for (_iterator.s(); !(_step = _iterator.n()).done;) {
        var ele = _step.value;
        var pair = ele.split('=');
        var key = decodeURIComponent(pair[0]);
        if (typeof params[key] === 'undefined') {
          params[key] = decodeURIComponent(pair[1]);
        }
      }
    } catch (err) {
      _iterator.e(err);
    } finally {
      _iterator.f();
    }
    return params;
  }
  function get() {
    var reg = /MicroMessenger\/([\d\.]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMac() {
    var reg = /MacWechat\/([\d\.]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMacOS() {
    var reg = /Mac OS X ([\d_]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1].replace(/_/g, '.');
    }
    return false;
  }
  function getWindows() {
    var reg = /WindowsWechat\(0x(.+?)\)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getWxWork() {
    var reg = /wxwork\/([\d\.]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMpApp() {
    var appVersion = [2, 4, 5];
    var match = navigator.userAgent.match(/MPAPP\/(\d+(\.\d+)*)/);
    if (match) {
      appVersion = match[1].split('.').map(function (v) {
        return Number(v);
      });
    }
    return appVersion.join('.');
  }
  function getUnifiedPcVer() {
    var versionInfo = navigator.userAgent.match(/UnifiedPC\w+Wechat\(0xf\w{2}(\w+?)\w{2}\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(0, 1));
      var subVersion = getVersionNumber(version.slice(1, 2));
      var subVersion2 = getVersionNumber(version.slice(2, 3));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
  }
  function getVersionNumber(hexStr) {
    return Number(Number("0x".concat(hexStr)).toString(10));
  }
  function getWindowsVersionFormat() {
    var versionInfo = navigator.userAgent.match(/WindowsWechat\(0x(\w+?)\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(1, 2));
      var subVersion = getVersionNumber(version.slice(2, 4));
      var subVersion2 = getVersionNumber(version.slice(4, 6));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
    return false;
  }
  function getInner() {
    var reg = /MicroMessenger\/[\d\.]+\(0x(.+?)\)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1] &amp;&amp; ret[1] != null) {
      return ret[1];
    }
    if (!ret &amp;&amp; /MicroMessenger\/[\d\.]+/i.test(ua)) {
      var urlParams = getUrlParams();
      if (urlParams.version) {
        return urlParams.version;
      }
    }
    return false;
  }
  var opfunc = {
    'cp-1': function cp1(a, b) {
      return a &lt; b;
    },
    cp0: function cp0(a, b) {
      return a === b;
    },
    cp1: function cp1(a, b) {
      return a &gt; b;
    }
  };
  function cpVersion(ver, op, canEq, type) {
    var mmver = false;
    switch (type) {
      case 'mac':
        mmver = getMac();
        break;
      case 'windows':
        mmver = getWindowsVersionFormat();
        break;
      case 'wxwork':
        mmver = getWxWork();
        break;
      case 'mpapp':
        mmver = getMpApp();
        break;
      case 'unifiedpc':
        mmver = getUnifiedPcVer();
        break;
      default:
        mmver = get();
        break;
    }
    if (!mmver) {
      return;
    }
    var mmversion = mmver.split('.');
    var version = ver.split('.');
    if (!/\d+/g.test(mmversion[mmversion.length - 1])) {
      mmversion.pop();
    }
    for (var i = 0, len = Math.max(mmversion.length, version.length); i &lt; len; ++i) {
      var mmv = mmversion[i] || '';
      var v = version[i] || '';
      var mmvn = parseInt(mmv, 10) || 0;
      var vn = parseInt(v, 10) || 0;
      var eq = opfunc.cp0(mmvn, vn);
      if (eq) {
        continue;
      }
      var cp = opfunc["cp".concat(op)];
      return cp(mmvn, vn);
    }
    return canEq || op === 0;
  }
  function eqVersion(version) {
    return cpVersion(version, 0);
  }
  function gtVersion(version, canEq) {
    return cpVersion(version, 1, canEq);
  }
  function ltVersion(version, canEq) {
    return cpVersion(version, -1, canEq);
  }
  function getPlatform() {
    if (is_ios) {
      return 'ios';
    }
    if (is_android) {
      return 'android';
    }
    if (is_mac) {
      return 'mac_os';
    }
    if (is_windows) {
      return 'windows';
    }
    return 'unknown';
  }
  var is_google_play = false;
  var inner_ver_for_google_play_check = getInner();
  if (is_android &amp;&amp; inner_ver_for_google_play_check) {
    var v = "0x".concat(inner_ver_for_google_play_check.substr(-2));
    if (parseInt(v) &gt;= 64 &amp;&amp; parseInt(v) &lt;= 79) {
      is_google_play = true;
    }
  }
  function compareHexVersion(hexNum) {
    var innerVersion = getInner();
    if (innerVersion &amp;&amp; hexNum) {
      if (typeof hexNum === 'string') {
        hexNum = parseInt(hexNum, 16);
      }
      var version = parseInt(innerVersion, 16);
      return version &gt;= hexNum;
    }
    return false;
  }
  var mmversion = {
    get: get,
    getMac: getMac,
    getMacOS: getMacOS,
    getWindows: getWindows,
    getInner: getInner,
    getWxWork: getWxWork,
    getMpApp: getMpApp,
    cpVersion: cpVersion,
    eqVersion: eqVersion,
    gtVersion: gtVersion,
    ltVersion: ltVersion,
    getPlatform: getPlatform,
    getVersionNumber: getVersionNumber,
    isWp: is_wp,
    isIOS: is_ios,
    isAndroid: is_android,
    isHarmony: is_harmony,
    isHarmonyWechat: is_harmony &amp;&amp; is_wechat &amp;&amp; cpVersion('1.0.0', 1, true),
    isInMiniProgram: is_in_miniProgram,
    isWechat: is_wechat,
    isMac: is_mac,
    isWindows: is_windows,
    isLinux: is_linux,
    isMacWechat: is_mac_wechat,
    isWindowsWechat: is_windows_wechat,
    isWxWork: is_wx_work,
    isOnlyWechat: is_wechat &amp;&amp; !is_wx_work,
    isMpapp: is_mpapp,
    isIPad: is_ipad,
    isGooglePlay: is_google_play,
    isPrefetch: is_prefetch,
    isDonutAPP: is_donut_app,
    compareHexVersion: compareHexVersion,
    isPcWechat: is_windows_wechat || is_mac_wechat,
    xwebVersion: xweb_version,
    isUnifiedPcWechat: is_unified_pc_wechat
  };

  var initJsBridge = false;
  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }
  function connectWebViewJavascriptBridge(callback) {
    if (window.WebViewMPapp || window.WebViewJavascriptBridge) {
      return callback(window.WebViewMPapp || window.WebViewJavascriptBridge);
    }
    if (window.WVJBCallbacks) {
      return window.WVJBCallbacks.push(callback);
    }
    window.WVJBCallbacks = [callback];
    if (!mmversion.isMpapp) {
      return false;
    }
    if (!initJsBridge) {
      initJsBridge = true;
      var WVJBIframe = document.createElement('iframe');
      WVJBIframe.style.display = 'none';
      WVJBIframe.src = 'https://__bridge_loaded__';
      document.body.appendChild(WVJBIframe);
      setTimeout(function () {
        initJsBridge = false;
        document.body.removeChild(WVJBIframe);
      }, 0);
    }
    return false;
  }
  function invoke(jsapiName, opt, callback) {
    connectWebViewJavascriptBridge(function (bridge) {
      try {
        if (typeof opt === 'function') {
          callback = opt;
        }
        if (_typeof(opt) !== 'object' &amp;&amp; typeof opt !== 'string') {
          opt = {};
        }
        bridge.callHandler(jsapiName, opt, function (res) {
          try {
            var ret = _typeof(res) === 'object' ? res : JSON.parse(res);
            var errMsg = ret.err_msg || ret.errMsg;
            console.info("[mpapp jsapi] invoke-&gt;".concat(jsapiName, " ").concat(opt.action || '', " ").concat(errMsg));
            typeof callback === 'function' &amp;&amp; callback(ret);
          } catch (e) {
            window.WX_BJ_REPORT.BadJs.report('invoke', "callback ".concat(jsapiName, " error:"), {
              mid: 'mmbizwebapp:js_brridge',
              _info: e
            });
            console.error("[mpapp jsapi] ".concat(jsapiName, " ").concat(opt.action || ''), e, res);
          }
        });
      } catch (e) {
        window.WX_BJ_REPORT.BadJs.report('invoke', 'callback error:', {
          mid: 'mmbizwebapp:js_brridge',
          _info: e
        });
        console.error('[mpapp jsapi]', e);
      }
    });
  }

  
  function _log(level, msg) {
    if (level === 'log') {
      level = 'info';
      msg = "[WechatFe]".concat(msg);
    } else {
      var prefix = "__wap__".concat(window.__second_open__ ? ' (sec)' : '');
      msg = "".concat(prefix, " ").concat(msg, " location:[").concat(location.href, "]");
    }
    msg += new Error().stack;
    if (mmversion.isMpapp) {
      invoke('WNNativeCallbackLog', msg);
    } else if (mmversion.isWechat) {
      if (mmversion.isAndroid) {
        console.warn('[system]', "[MicroMsg.JsApiLog][".concat(level, "] jslog : ").concat(msg));
      } else if (mmversion.isIOS) {
        JSAPI.invoke('writeLog', {
          level: level,
          msg: msg
        });
      } else {
        JSAPI.invoke('log', {
          level: level,
          msg: msg
        });
      }
    }
  }
  var Log = {
    info: function info() {
      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key &lt; _len; _key++) {
        args[_key] = arguments[_key];
      }
      _log('info', args.join(' '));
    },
    warn: function warn() {
      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
        args[_key2] = arguments[_key2];
      }
      _log('warn', args.join(' '));
    },
    error: function error() {
      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 &lt; _len3; _key3++) {
        args[_key3] = arguments[_key3];
      }
      _log('error', args.join(' '));
    },
    debug: function debug() {
      for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 &lt; _len4; _key4++) {
        args[_key4] = arguments[_key4];
      }
      _log('debug', args.join(' '));
    },
    log: function log() {
      for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 &lt; _len5; _key5++) {
        args[_key5] = arguments[_key5];
      }
      _log('info', args.join(' '));
    }
  };
  var getOriginExpVal = function getOriginExpVal(key) {
    var _a, _b, _c;
    return ((_c = (_b = (_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.user_info) === null || _b === void 0 ? void 0 : _b.frontend_exp) === null || _c === void 0 ? void 0 : _c.list) &amp;&amp; window.cgiDataNew.user_info.frontend_exp.list.reduce(function (res, item) {
      if (item.key === key) res = (item === null || item === void 0 ? void 0 : item.value) || '';
      return res;
    }, '');
  };

  
  
  var Device = {};
  function detect(ua) {
    var MQQBrowser = ua.match(/MQQBrowser\/(\d+\.\d+)/i);
    var MQQClient = ua.match(/QQ\/(\d+\.(\d+)\.(\d+)\.(\d+))/i) || ua.match(/V1_AND_SQ_([\d\.]+)/);
    var WeChat = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/) || ua.match(/MicroMessenger\/((\d+)\.(\d+))/);
    var MacOS = ua.match(/Mac\sOS\sX\s(\d+[\.|_]\d+)/);
    var WinOS = ua.match(/Windows(\s+\w+)?\s+?(\d+\.\d+)/);
    var Linux = ua.match(/Linux\s/);
    var MiuiBrowser = ua.match(/MiuiBrowser\/(\d+\.\d+)/i);
    var M1 = ua.match(/MI-ONE/);
    var MIPAD = ua.match(/MI PAD/);
    var UC = ua.match(/UCBrowser\/(\d+\.\d+(\.\d+\.\d+)?)/) || ua.match(/\sUC\s/);
    var IEMobile = ua.match(/IEMobile(\/|\s+)(\d+\.\d+)/) || ua.match(/WPDesktop/);
    var ipod = ua.match(/(ipod).*\s([\d_]+)/i);
    var ipad = ua.match(/(ipad).*\s([\d_]+)/i);
    var iphone = ua.match(/(iphone)\sos\s([\d_]+)/i);
    var Chrome = ua.match(/Chrome\/(\d+\.\d+)/);
    var AndriodBrowser = ua.match(/Mozilla.*Linux.*Android.*AppleWebKit.*Mobile Safari/);
    var android = ua.match(/(android)\s([\d\.]+)/i);
    var harmony = ua.match(/(OpenHarmony)\s([\d\.]+)/i);
    Device.browser = Device.browser || {}, Device.os = Device.os || {};
    Device.os.type = -1;
    Device.os.unifiedPC = ua.match(/UnifiedPC/);
    Device.os.unifiedMac = /UnifiedPCMac/i.test(ua);
    Device.os.unifiedWindows = /UnifiedPCWindows/i.test(ua);
    if (window.ActiveXObject) {
      var vie = 6;
      (window.XMLHttpRequest || ua.indexOf('MSIE 7.0') &gt; -1) &amp;&amp; (vie = 7);
      (window.XDomainRequest || ua.indexOf('Trident/4.0') &gt; -1) &amp;&amp; (vie = 8);
      ua.indexOf('Trident/5.0') &gt; -1 &amp;&amp; (vie = 9);
      ua.indexOf('Trident/6.0') &gt; -1 &amp;&amp; (vie = 10);
      Device.browser.ie = true, Device.browser.version = vie;
    } else if (ua.indexOf('Trident/7.0') &gt; -1) {
      Device.browser.ie = true, Device.browser.version = 11;
    }
    if (android) {
      Device.os.android = true;
      Device.os.version = android[2];
      Device.os.type = 2;
    }
    if (harmony) {
      Device.os.harmony = true;
      Device.os.version = harmony[2];
      Device.os.type = 42;
    }
    if (ipod) {
      Device.os.ios = Device.os.ipod = true;
      Device.os.version = ipod[2].replace(/_/g, '.');
    }
    if (ipad) {
      Device.os.ios = Device.os.ipad = true;
      Device.os.version = ipad[2].replace(/_/g, '.');
      Device.os.type = 13;
    }
    if (iphone) {
      Device.os.iphone = Device.os.ios = true;
      Device.os.version = iphone[2].replace(/_/g, '.');
      Device.os.type = 1;
    }
    if (WinOS) Device.os.windows = true, Device.os.version = WinOS[2], Device.os.type = 15;
    if (MacOS) Device.os.Mac = true, Device.os.version = MacOS[1], Device.os.type = 14;
    if (Linux) Device.os.Linux = true, Device.os.type = 33;
    if (ua.indexOf('lepad_hls') &gt; 0) Device.os.LePad = true;
    if (MIPAD) Device.os.MIPAD = true;
    if (MQQBrowser) Device.browser.MQQ = true, Device.browser.version = MQQBrowser[1];
    if (MQQClient) Device.browser.MQQClient = true, Device.browser.version = MQQClient[1];
    if (WeChat) Device.browser.WeChat = true, Device.browser.mmversion = Device.browser.version = WeChat[1];
    if (MiuiBrowser) Device.browser.MIUI = true, Device.browser.version = MiuiBrowser[1];
    if (UC) Device.browser.UC = true, Device.browser.version = UC[1] || NaN;
    if (IEMobile) Device.browser.IEMobile = true, Device.browser.version = IEMobile[2];
    if (AndriodBrowser) {
      Device.browser.AndriodBrowser = true;
    }
    if (M1) {
      Device.browser.M1 = true;
    }
    if (Chrome) {
      Device.browser.Chrome = true, Device.browser.version = Chrome[1];
    }
    if (Device.os.windows) {
      if (typeof navigator.platform !== "undefined" &amp;&amp; navigator.platform.toLowerCase() == "win64") {
        Device.os.win64 = true;
      } else {
        Device.os.win64 = false;
      }
    }
    if (Device.os.Mac || Device.os.windows || Device.os.Linux || Device.os.unifiedPC || /OpenHarmony/i.test(ua) &amp;&amp; /pc/i.test(ua)) {
      Device.os.pc = true;
    }
    var osType = {
      iPad7: 'iPad; CPU OS 7',
      LePad: 'lepad_hls',
      XiaoMi: 'MI-ONE',
      SonyDTV: "SonyDTV",
      SamSung: 'SAMSUNG',
      HTC: 'HTC',
      VIVO: 'vivo'
    };
    for (var os in osType) {
      Device.os[os] = ua.indexOf(osType[os]) !== -1;
    }
    Device.os.phone = Device.os.phone || /windows phone/i.test(ua);
    Device.os.getNumVersion = function () {
      return parseFloat(Device.os.version);
    };
    Device.os.hasTouch = 'ontouchstart' in window;
    if (Device.os.hasTouch &amp;&amp; Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 6) {
      Device.os.hasTouch = false;
    }
    if (Device.browser.WeChat &amp;&amp; Device.browser.version &lt; 5.0) {
      Device.os.hasTouch = false;
    }
    Device.browser.getNumVersion = function () {
      return parseFloat(Device.browser.version);
    };
    Device.browser.isFFCanOcx = function () {
      return !!Device.browser.firefox &amp;&amp; Device.browser.getNumVersion() &gt;= 3.0;
    };
    Device.browser.isCanOcx = function () {
      return !!Device.os.windows &amp;&amp; (!!Device.browser.ie || Device.browser.isFFCanOcx() || !!Device.browser.webkit);
    };
    Device.browser.isNotIESupport = function () {
      return !!Device.os.windows &amp;&amp; (!!Device.browser.webkit || Device.browser.isFFCanOcx());
    };
    Device.userAgent = {};
    Device.userAgent.browserVersion = Device.browser.version;
    Device.userAgent.osVersion = Device.os.version;
    if (Device.os.unifiedPC) {
      if (Device.os.unifiedWindows) Device.os.type = 37;else if (Device.os.unifiedMac) Device.os.type = 38;else Device.os.type = 39;
    }
    delete Device.userAgent.version;
  }
  detect(window.navigator.userAgent);
  function canSupportH5Video() {
    var ua = window.navigator.userAgent,
      m = null;
    if (!!Device.os.android) {
      if (Device.browser.MQQ &amp;&amp; Device.browser.getNumVersion() &gt;= 4.2) {
        return true;
      }
      if (ua.indexOf('MI2') != -1) {
        return true;
      }
      if (Device.os.version &gt;= '4' &amp;&amp; (m = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/))) {
        if (parseFloat(m[1]) &gt;= 4.2) {
          return true;
        }
      }
      if (Device.os.version &gt;= '4.1') {
        return true;
      }
    }
    return false;
  }
  function canSupportVideoMp4() {
    var video = document.createElement('video');
    if (typeof video.canPlayType === 'function') {
      if (video.canPlayType('video/mp4; codecs="mp4v.20.8"') === 'probably') {
        return true;
      }
      if (video.canPlayType('video/mp4; codecs="avc1.42E01E"') === 'probably' || video.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"') === 'probably') {
        return true;
      }
    }
    return false;
  }
  function canSupportAutoPlay() {
    if (Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 10) {
      return false;
    }
    return true;
  }
  function isLockdownMode() {
    if (!Device.os.ios || Device.os.getNumVersion() &lt; 16) {
      return false;
    }
    if (typeof WebAssembly === 'undefined' &amp;&amp; typeof OfflineAudioContext === 'undefined' &amp;&amp; typeof WebGLRenderingContext === 'undefined') {
      return true;
    }
    return false;
  }
  Device.canSupportVideo = canSupportVideoMp4 || canSupportH5Video;
  Device.canSupportVideoMp4 = canSupportVideoMp4;
  Device.canSupportH5Video = canSupportH5Video;
  Device.canSupportAutoPlay = canSupportAutoPlay;
  Device.isLockdownMode = isLockdownMode;
  
  Device.cpVersion = function (version) {
    var cp = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 0;
    var canEqual = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    var nowVersionStr = Device.os.version;
    if (!nowVersionStr) return false;
    var versionArr = version.split('.');
    var nowVersionArr = nowVersionStr.split('.');
    for (var i = 0; i &lt; Math.max(nowVersionArr.length, versionArr.length); i++) {
      var vi = +versionArr[i];
      var nvi = +nowVersionArr[i];
      if (vi === nvi) continue;
      if (cp &gt; 0) return vi &gt; nvi;
      if (cp &lt; 0) return vi &lt; nvi;
    }
    return canEqual || cp === 0;
  };

  var attrs = ['top', 'left', 'right', 'bottom'];
  var elementComputedStyle = {};
  if (Device.os.android) {
    new Promise(function (resolve) {
      JSAPI.invoke('handleDeviceInfo', {
        action: 'getSafeAreaInsets'
      }, function (res) {
        if (res.err_msg.indexOf(':ok') !== -1) {
          elementComputedStyle.top = res.top;
          elementComputedStyle.left = res.left;
          elementComputedStyle.right = window.screen.width - res.right;
          elementComputedStyle.bottom = window.screen.height - res.bottom;
        } else {
          attrs.forEach(function (attr) {
            elementComputedStyle[attr] = 0;
          });
        }
        resolve();
      });
    });
  }

  function decode(str) {
    var replace = ["&amp;#96;", "`", "&amp;#39;", "'", "&amp;quot;", '"', "&amp;nbsp;", " ", "&amp;gt;", "&gt;", "&amp;lt;", "&lt;", "&amp;yen;", "¥", "&amp;amp;", "&amp;"];
    for (var i = 0; i &lt; replace.length; i += 2) {
      str = str.replace(new RegExp(replace[i], 'g'), replace[i + 1]);
    }
    return str;
  }
  function getQuery(url) {
    url = url || 'http://qq.com/s?a=b#rd';
    var tmp = url.split('?'),
      query = (tmp[1] || '').split('#')[0].split('&amp;'),
      params = {};
    for (var i = 0; i &lt; query.length; i++) {
      var eqIndex = query[i].indexOf('=');
      if (eqIndex &gt; -1) {
        var arg = query[i].substring(0, eqIndex);
        params[arg] = query[i].substring(eqIndex + 1);
      }
    }
    if (params['pass_ticket']) {
      params['pass_ticket'] = encodeURIComponent(decode(params['pass_ticket']).replace(/\s/g, '+'));
    }
    return params;
  }

  var idkey = 398384;
  var reportMap = {
    0: 7,
    5: 13,
    7: 19,
    8: 25,
    10: 31
  };
  function inWhiteList(itemShowType) {
    if ([5, 7, 8, 10].indexOf(itemShowType) &gt; -1) return true;
    if (itemShowType === 0) {
      return mmversion.isIOS &amp;&amp; mmversion.compareHexVersion('1800352B') || mmversion.isAndroid;
    }
    return false;
  }
  function getImmersiveMode(itemShowType) {
    if (!inWhiteList(itemShowType)) return;
    if (window !== top) {
      return;
    }
    var env = window.__wxWebEnv &amp;&amp; typeof window.__wxWebEnv.getEnv === 'function' &amp;&amp; window.__wxWebEnv.getEnv();
    if (env &amp;&amp; typeof env === 'string') {
      try {
        env = JSON.parse(env);
      } catch (err) {
        env = {};
      }
    } else {
      env = {};
    }
    console.log('[env] getImmersiveMode', env, itemShowType);
    try {
      Log.info("[immersiveMode] ".concat(JSON.stringify(env || {})));
    } catch (e) {
    }
    var needChange = window.immersiveMode !== !!env.immersiveMode;
    window.immersiveMode = !!env.immersiveMode;
    if (needChange) {
      if (env.immersiveMode) {
        window.weixinPostMessageHandlers &amp;&amp; window.weixinPostMessageHandlers.monitorHandler &amp;&amp; typeof window.weixinPostMessageHandlers.monitorHandler.postMessage === 'function' &amp;&amp; window.weixinPostMessageHandlers.monitorHandler.postMessage(JSON.stringify({
          event: 'stopImmersiveLoading'
        }));
        window.normalTopInset = env &amp;&amp; typeof env.normalTopInset !== 'undefined' ? +env.normalTopInset : 91;
        document.body.classList.add('fullscreen-padding');
        document.body.style = "".concat(document.body.style, ";--normal-top-insets: ").concat(window.normalTopInset || 91, "px;");
        var pictureFullscreenUI = getOriginExpVal('picture_fullscreen_ui') * 1;
        if (itemShowType * 1 === 8 &amp;&amp; mmversion.isIOS &amp;&amp; mmversion.compareHexVersion('1800412f') &amp;&amp; pictureFullscreenUI * 1 === 1) {
          window.newFullscreenTop = true;
          document.body.classList.add('new-fullscreen-top');
          var fullScreenTopPadding = document.createElement('DIV');
          fullScreenTopPadding.setAttribute('class', 'new-fullscreen-top-padding');
          document.body.insertBefore(fullScreenTopPadding, document.body.children[0]);
        }
        report(itemShowType);
      } else {
        window.normalTopInset = 0;
        document.body.classList.remove('fullscreen-padding', 'new-fullscreen-top');
      }
    }
    if (window.immersiveMode) {
      JSAPI.invoke('setNavigationBarColor', {
        wxcolor: {
          light: '#FFFFFF',
          dark: '#191919'
        },
        alpha: 0
      });
      if (mmversion.isAndroid) {
        JSAPI.invoke('disableBounceScroll', {
          'place': ['top', 'bottom']
        });
      }
    }
    return env;
  }
  var showScrollBorder = false;
  var doubleClickTemp = false;
  function registerImmersiveListener(itemShowType) {
    if (!inWhiteList(itemShowType)) return;
    if (!window.__hasRegisterImmersiveListener) {
      window.__hasRegisterImmersiveListener = true;
      JSAPI.on('activity:state_change', function () {
        return getImmersiveMode();
      });
      JSAPI.on('fakeImmersiveUIStyleTopInsetChanged', function (args) {
        console.log('[env] fakeImmersiveUIStyleTopInsetChanged', args);
        try {
          Log.info("[immersiveMode] fakeImmersiveUIStyleTopInsetChanged ".concat(JSON.stringify(args || {})));
        } catch (e) {
        }
        if (document.body.classList.contains('fullscreen-padding')) {
          window.normalTopInset = args &amp;&amp; typeof args.top !== 'undefined' ? +args.top : window.normalTopInset;
          document.body.style.setProperty('--normal-top-insets', "".concat(window.normalTopInset, "px"));
        }
      });
      window.addEventListener('scroll', function () {
        if (!window.immersiveMode) return;
        var dom = document.getElementById('js_content_container');
        var scrollTop = dom &amp;&amp; dom.scrollTop || window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
        if (showScrollBorder &amp;&amp; scrollTop &lt;= 2) {
          showScrollBorder = false;
          document.body.classList.remove('fullscreen-padding__border');
        } else if (!showScrollBorder &amp;&amp; scrollTop &gt; 2) {
          showScrollBorder = true;
          document.body.classList.add('fullscreen-padding__border');
        }
      });

      if (mmversion.isAndroid &amp;&amp; mmversion.compareHexVersion('28003859')) {
        JSAPI.on('onActionBarClickEventInImmersiveMode', function (res) {
          console.log('onActionBarClickEventInImmersiveMode', res);
          var x = res.x,
            y = res.y,
            action = res.action;
          if (!document.elementsFromPoint) return;
          var nodeAtPoint = document.elementFromPoint(+x, +y);
          if (action === 'click') {
            typeof nodeAtPoint.click === 'function' &amp;&amp; nodeAtPoint.click();
          } else if (action === 'longpress_start') {
            var touchStartEvent = new TouchEvent('touchstart', {
              bubbles: true,
              cancelable: true,
              touches: [new Touch({
                identifier: 1,
                target: nodeAtPoint,
                clientX: +x,
                clientY: +y
              })]
            });
            nodeAtPoint.dispatchEvent(touchStartEvent);
          } else if (action === 'longpress_end') {
            var touchEndEvent = new TouchEvent('touchend', {
              bubbles: true,
              cancelable: true,
              touches: []
            });
            nodeAtPoint.dispatchEvent(touchEndEvent);
          }
        });
      }
      document.body.addEventListener('click', function (e) {
        if (!window.immersiveMode) return;
        if (e.clientY &lt;= window.normalTopInset) {
          if (doubleClickTemp) {
            window.scrollTo({
              top: 0,
              behavior: 'smooth'
            });
            doubleClickTemp = false;
          } else {
            doubleClickTemp = true;
            setTimeout(function () {
              doubleClickTemp = false;
            }, 300);
          }
        }
      });
    }
  }
  function setFullscreenWebview(itemShowType) {
    if (!inWhiteList(itemShowType)) return;
    if (window !== top) {
      return;
    }
    getImmersiveMode(itemShowType);
    registerImmersiveListener(itemShowType);
  }
  function report(itemShowType) {
    new Image().src = "https://mp.weixin.qq.com/mp/jsmonitor?idkey=".concat(idkey, "_1_1");
    if (mmversion.isAndroid) {
      new Image().src = "https://mp.weixin.qq.com/mp/jsmonitor?idkey=".concat(idkey, "_2_1");
    } else if (mmversion.isIOS) {
      new Image().src = "https://mp.weixin.qq.com/mp/jsmonitor?idkey=".concat(idkey, "_3_1");
    }
    var key = reportMap[itemShowType];
    if (key) {
      new Image().src = "https://mp.weixin.qq.com/mp/jsmonitor?idkey=".concat(idkey, "_").concat(key, "_1");
      if (mmversion.isAndroid) {
        new Image().src = "https://mp.weixin.qq.com/mp/jsmonitor?idkey=".concat(idkey, "_").concat(key + 1, "_1");
      } else if (mmversion.isIOS) {
        new Image().src = "https://mp.weixin.qq.com/mp/jsmonitor?idkey=".concat(idkey, "_").concat(key + 2, "_1");
      }
    }
  }
  function setPreviewPublishNavHidden(itemShowType, urlParams) {
    if (itemShowType * 1 !== 8) return;
    var supportPreviewPublish = mmversion.isIOS &amp;&amp; mmversion.compareHexVersion('18004722');
    if (!supportPreviewPublish) return;
    var params = urlParams || getQuery(window.location.href);
    var previewtype = params.previewtype;
    var mpbizpublishFrom = params.mpbizpublish_from;
    if (previewtype * 1 === 2 &amp;&amp; mpbizpublishFrom === 'preview_publish') {
      JSAPI.invoke('setNavigationBarButtons', {
        right: {
          hidden: true
        }
      });
    }
  }
  if (!window.__second_open__) {
    var itemShowType = window.a_value_which_never_exists || '0';
    setFullscreenWebview(+itemShowType);
    setPreviewPublishNavHidden(+itemShowType);
  }

  exports.getImmersiveMode = getImmersiveMode;
  exports.registerImmersiveListener = registerImmersiveListener;
  exports.setFullscreenWebview = setFullscreenWebview;
  exports.setPreviewPublishNavHidden = setPreviewPublishNavHidden;

  Object.defineProperty(exports, '__esModule', { value: true });

  return exports;

})({});
  &lt;/script&gt;
  &lt;script nonce="1435168589" reportloaderror=""&gt;
   try {
    window.env = window.__wxWebEnv &amp;&amp; typeof window.__wxWebEnv.getEnv === 'function' &amp;&amp; window.__wxWebEnv.getEnv();
    window.env = window.env ? JSON.parse(window.env) : {};
  } catch (error) {
    window.env = undefined;
    console.log('env error',error)
  }
  &lt;/script&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   window.PAGE_MID="mmbizwap:appmsg/newindex.html"
  &lt;/script&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   var write_sceen_time = (+new Date());
  var preview = "" * 1 || 0;
  var can_use_wecoin = '1' * 1;
  var wecoin_tips = '0' * 1;
  
  var wecoin_amount = '0' * 1;
  var preview_percent = '0' * 1;
 
  if (location.href.indexOf('rumor_middle_page=1') !== -1) {
    document.body.classList.add('rumor_middle_page');
  }

 
  var interaction_url = '';
  var underline_url= '';
  &lt;/script&gt;
  &lt;div class="rich_media" id="js_article" style="position:relative;"&gt;
   &lt;div class="top_banner" id="js_top_ad_area"&gt;
   &lt;/div&gt;
   &lt;div class="rich_media_inner" id="js_base_container"&gt;
    &lt;div class="wx_row_immersive_stream_wrap" id="js_row_immersive_stream_wrap"&gt;
     &lt;div id="js_row_immersive_cover_img"&gt;
      &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblLJGcYwOahVL3DsR85kKkicqaBJ8NNlOic186VqXq1W8zUmYt5NfhHeoLN9rricp0AjuialK2XGHzeISRXYcrn0ibLVyibxGEuIowiaOI/0?wx_fmt=jpeg"/&gt;
     &lt;/div&gt;
     &lt;div class="wx_row_immersive_stream_mask" id="js_row_immersive_stream_mask"&gt;
     &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="rich_media_area_primary" id="page-content"&gt;
     &lt;div class="rich_media_area_primary_inner"&gt;
      &lt;div class="rich_media_wrp" id="img-content"&gt;
       &lt;h1 class="rich_media_title" id="activity-name"&gt;
        &lt;span&gt;
         画图这件事，我终于不用拖拽了。
        &lt;/span&gt;
       &lt;/h1&gt;
       &lt;div class="rich_media_meta_list" id="meta_content"&gt;
        &lt;span&gt;
         原创
        &lt;/span&gt;
        &lt;span&gt;
         &lt;span style="display: none;"&gt;
          开源日记
         &lt;/span&gt;
         &lt;span&gt;
          开源日记
         &lt;/span&gt;
        &lt;/span&gt;
        &lt;span&gt;
         &lt;a class="wx_tap_link js_wx_tap_highlight weui-wa-hotarea" href="javascript:void(0);" id="js_name"&gt;
          开源日记
         &lt;/a&gt;
         &lt;div id="js_profile_card"&gt;
         &lt;/div&gt;
        &lt;/span&gt;
        &lt;span&gt;
         &lt;em class="rich_media_meta rich_media_meta_text" id="publish_time"&gt;
         &lt;/em&gt;
         &lt;em class="rich_media_meta rich_media_meta_text" id="js_ip_wording_wrp" style="display: none;"&gt;
          &lt;span&gt;
          &lt;/span&gt;
          &lt;span&gt;
          &lt;/span&gt;
         &lt;/em&gt;
         &lt;em aria-labelledby="js_a11y_op_title_modify js_title_modify" class="rich_media_meta rich_media_meta_text" id="js_title_modify_wrp" role="option" style="display: none;"&gt;
          &lt;span&gt;
          &lt;/span&gt;
         &lt;/em&gt;
         &lt;span style="display: none;"&gt;
         &lt;/span&gt;
        &lt;/span&gt;
       &lt;/div&gt;
       &lt;div class="novel-card js_wx_tap_highlight wx_tap_card" id="js_novel_card" style="display: none;"&gt;
        &lt;div class="novel-card__left novel-card__new-only"&gt;
         &lt;div class="novel-card__cover" id="js_novel_cover"&gt;
          &lt;img/&gt;
         &lt;/div&gt;
         &lt;div class="novel-card__text"&gt;
          &lt;div class="novel-card__main" id="js_novel_title"&gt;
           在小说阅读器读本章
          &lt;/div&gt;
          &lt;div class="novel-card__subtitle" id="js_novel_subtitle"&gt;
          &lt;/div&gt;
         &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class="novel-card__link novel-card__new-only" id="js_novel_link"&gt;
         去阅读
        &lt;/div&gt;
        &lt;div class="novel-info novel-card__old-only"&gt;
         &lt;div class="novel-cover-group"&gt;
          &lt;div class="novel-cover" id="js_novel_cover_old"&gt;
           &lt;img/&gt;
          &lt;/div&gt;
          &lt;div class="novel-meta"&gt;
           &lt;div class="novel-title" id="js_novel_title_old"&gt;
           &lt;/div&gt;
           &lt;div class="novel-description"&gt;
            在小说阅读器中沉浸阅读
           &lt;/div&gt;
          &lt;/div&gt;
         &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class="arrow-jump-icon novel-card__old-only"&gt;
        &lt;/div&gt;
       &lt;/div&gt;
       &lt;div class="rich_media_content js_underline_content autoTypeSetting24psection" id="js_content" style="visibility: hidden; opacity: 0; "&gt;
        &lt;section powered-by="werss"&gt;
         &lt;span&gt;
          &lt;br/&gt;
         &lt;/span&gt;
        &lt;/section&gt;
        &lt;section powered-by="werss" style="font-size: 16px;color: black;padding: 0 10px;line-height: 1.6;word-spacing: 0px;letter-spacing: 0px;word-break: break-word;word-wrap: break-word;text-align: left;margin-top: -10px;font-family: PingFangSC-Light;"&gt;
         &lt;section powered-by="werss"&gt;
          &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png" data-id="Mzg3NzU0NzIxMA==" data-nickname="开源日记" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
          &lt;/mp-common-profile&gt;
         &lt;/section&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           &lt;br/&gt;
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           画架构图这件事，我折腾了好多年。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           从 Visio 到 draw.io，从 ProcessOn 到 Excalidraw，工具换了好多次，但是核心问题一直没有解决：改图太麻烦。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           改一个节点的位置，整个图的连线都要重新调整，半个小时就没有了。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           团队合作的时候更加头疼，图表文件传来传去，版本控制很难做到，谁改了什么都不知道。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           直到发现了D2这个项目之后，才发现原来画图也可以像写代码一样。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           只需要用文本来描述“有什么”以及“谁连谁”，布局、对齐、样式等全部由引擎自动完成。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           这个项目在 GitHub 上已经有 24300 Star，核心定位就是把文本转换成图表。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
          &lt;span&gt;
           &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_gif/VDCUoW3UiblK4aPAlVGHCm37uWuMvmXjQrC8HEPuGyhMSBe7pibd8RhEia9YQ4eLjkpib74joOiaUPSHjTjw8XCibuQ7FKMNaVaicyXbib6eMMIWPlk/640?wx_fmt=gif&amp;amp;from=appmsg" style="max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 10px auto;width: 100%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;"/&gt;
          &lt;/span&gt;
         &lt;/figure&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           用声明式的语法来描述结构，它会帮你自动生成SVG或者PNG，不需要你手动去定位。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           布局引擎会自动处理元素的位置，修改代码就是修改图片。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           D2 的语法设计得非常克制，不需要学习很多复杂的命令。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           基本 15 分钟就可以学会。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           我打开 https://play.d2lang.com 体验了一把。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           准备让他画出一个简单的服务架构图。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
          &lt;span&gt;
           &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblK7bbN9YGPekAcje2W08WG3uBsWxLSPhwiaiah2MPwP3ssIxICiceLMoqdZr3IyEutZVNhJiaQ8gdgGfwyugNFQYOlrrsV53fxtCyk/640?wx_fmt=png&amp;amp;from=appmsg" style="max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 10px auto;width: 100%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;"/&gt;
          &lt;/span&gt;
         &lt;/figure&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           D2 会自动生成一个结构化的架构图，节点为矩形，箭头为连线。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
          &lt;span&gt;
           &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLERYjBoXfdicSbiamAJXMoNmtoac3COKVXQlKGpJl0wIwicMGVSLEUc5vFjVKJ1urJk9ib0Smx2Eia4BVOcnuTUuzHDhMC4vrRdo18/640?wx_fmt=png&amp;amp;from=appmsg" style="max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 10px auto;width: 100%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;"/&gt;
          &lt;/span&gt;
         &lt;/figure&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           我又找了一个例子，最前面加一行
          &lt;/span&gt;
          &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
           &lt;span&gt;
            direction: up
           &lt;/span&gt;
          &lt;/code&gt;
          &lt;span&gt;
           整个图形的箭头方向都反过来了。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
          &lt;span&gt;
           &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJqicRazIlMO5gZykKTeEY2djrV6PBywmPmg2H6sjIYYz5xQjYYqwk3VlPeiaU3d4ePwhmr8KkRvkvl2a55ACUW4ADt0rEkUBupY/640?wx_fmt=png&amp;amp;from=appmsg" style="max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 10px auto;width: 100%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;"/&gt;
          &lt;/span&gt;
         &lt;/figure&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           体验下来的感受：
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           你不需要管组件放在哪里，只管它们之间有什么关系，修改结构的时候就修改代码。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           布局会自动调整，不会出现“改一处地方整张图片都乱了”的情况。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           你只管描述图长什么样，至于节点怎么摆、线怎么连，则交给底层布局引擎来处理。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
          &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
           &lt;span&gt;
            这样的布局引擎，D2 内置了三种。
           &lt;/span&gt;
          &lt;/span&gt;
         &lt;/h2&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
           &lt;span&gt;
            01 dagre 分层布局，这是默认的布局方式，适用于大部分情况。
           &lt;/span&gt;
          &lt;/strong&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           这是默认引擎，适用于大部分情况，使用的是Graphviz DOT算法，效果稳定可靠。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
           &lt;span&gt;
            02 ELK 节点链接布局，适用于有方向的复杂网络拓扑图。
           &lt;/span&gt;
          &lt;/strong&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           更适合有方向的节点链接图，端口连接优化做的很好，可以适用于复杂的网络拓扑。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
           &lt;span&gt;
            03 TALA付费引擎，针对软件架构图进行优化，效果最好。
           &lt;/span&gt;
          &lt;/strong&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           专门针对软件架构图进行优化，多种算法组合在一起使用，效果最好但是要单独购买。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           如果你对默认的效果不满意的话，可以换一个引擎试一试，不同的引擎得到的结果差别很大。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
          &lt;span&gt;
           &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKv0DI30ynV7sRcV3T37mzS1pVKM4w1EObRNhzwCjsmGoDWmzgV9XkX9pYR6NF94FmsBwibuw8Jts4sCPkdUuFGHRzSyEQY49Do/640?wx_fmt=png&amp;amp;from=appmsg" style="max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 10px auto;width: 100%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;"/&gt;
          &lt;/span&gt;
         &lt;/figure&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           布局决定着图的结构骨架，而视觉表现力则依靠形状、样式来实现。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
          &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
           &lt;span&gt;
            形状库也是专门为现代架构设计的，这点我很喜欢。
           &lt;/span&gt;
          &lt;/span&gt;
         &lt;/h2&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
           &lt;span&gt;
            基础形状齐全，矩形圆形菱形圆柱体云形状都有，覆盖常见场景。
           &lt;/span&gt;
          &lt;/strong&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           数据库用圆柱体，云服务用云形状，微服务用六边形——一行代码声明类型就可以，不需要手工绘制。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
          &lt;span&gt;
           &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJVmiafEMN5IZogBNc4dQEkBqgLWlMbpCgF9Gghic4vMSFCJjCfcia1kO34gGOSU3jLCPdEW9x3YVPwkjHzlIib0NdVeZQFuYmjiaDo/640?wx_fmt=png&amp;amp;from=appmsg" style="max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 10px auto;width: 100%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;"/&gt;
          &lt;/span&gt;
         &lt;/figure&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
           &lt;span&gt;
            专业的形状很多，可以支持SQL表格时序图、LaTeX公式嵌入、图表展示等，非常实用。
           &lt;/span&gt;
          &lt;/strong&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           甚至可以直接把SQL表格、时序图、LaTeX公式嵌入到图表中，在文档中需要配数据结构的地方就更加方便了。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
          &lt;span&gt;
           &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJ38UtY8Mqxhb6b2rLlKB8lPeiawApkaJShUrzBuiapNib9Vdx7fFYYEPJHPiaWo2JjbfY2mCcm1fPcAiboCEjb4RHhbEzusppPnFyo/640?wx_fmt=png&amp;amp;from=appmsg" style="max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 10px auto;width: 100%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;"/&gt;
          &lt;/span&gt;
         &lt;/figure&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           这些形状不需要你手动绘制出来，只用设置好类型就可以了。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           样式系统配置的方式也很简单。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           填充色、边框、虚线、阴影都用属性声明的方式，官方还提供了一套专业的设计师制作的主题，直接使用即可。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
          &lt;span&gt;
           &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKJqhM0jNW7sMjVK1ZZmxISYpSiaJicMheVBJjkslBWJ82obfPx24BiaDAE54mfk7FLrnOQUcIALq9N99xznBibnEmWDoKGqPyEKUk/640?wx_fmt=png&amp;amp;from=appmsg" style="max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 10px auto;width: 100%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;"/&gt;
          &lt;/span&gt;
         &lt;/figure&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           还有手绘风格的 Sketch 模式，出来的图有随手画的感觉，很适合做演示用。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
          &lt;span&gt;
           &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJW5HgUHzS7aNZ0o9NGjibFpcK6UFBWnP6FUtCSljhZRF4Ex9AHvWCN97F8HjY2bian4ECOKQ3hQ3IxL6dHGSVteynia3SOw9R6RM/640?wx_fmt=png&amp;amp;from=appmsg" style="max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 10px auto;width: 100%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;"/&gt;
          &lt;/span&gt;
         &lt;/figure&gt;
         &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
          &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
           &lt;span&gt;
            看到这里，应该有不少朋友会想试一试。
           &lt;/span&gt;
          &lt;/span&gt;
         &lt;/h2&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           我给大家介绍两种打开方式。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           最简单的。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           直接打开官方 https://play.d2lang.com，在浏览器中就可以玩了。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           还有喜欢命令行也可以。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           用下面的一行命令就能搞定，无需复杂配置：
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;curl -fsSL https://d2lang.com/install.sh | sh -s&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           装完之后创建一个
          &lt;/span&gt;
          &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
           &lt;span&gt;
            hello.d2
           &lt;/span&gt;
          &lt;/code&gt;
          &lt;span&gt;
           文件，并写上几行代码，之后使用
          &lt;/span&gt;
          &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
           &lt;span&gt;
            d2 --watch
           &lt;/span&gt;
          &lt;/code&gt;
          &lt;span&gt;
           可以实现实时预览。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           支持实时预览。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           代码改了，浏览器里的图会自动刷新，调试很方便。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
          &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
           &lt;span&gt;
            到这里缺点也给大家提出来。
           &lt;/span&gt;
          &lt;/span&gt;
         &lt;/h2&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           自动布局是D2最大的优点之一，但是也意味着放弃了像素级别的位置控制。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           对于需要精细排版的地方，它并不是最好的工具。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           另外，在大图中，随着节点、层级的增多，编译的时间也会相应增加。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           但是如果你只想要画软件架构图或者系统流程图的话，D2 的体验已经很好了，可以试一试。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
          &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
           &lt;span&gt;
            写在最后
           &lt;/span&gt;
          &lt;/span&gt;
         &lt;/h2&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           我觉得，D2 最大的价值不只是"画图更快"。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           而把架构图也纳入到了版本管理的闭环当中。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           改了代码就知道改了什么，团队协作不再靠"图-v2-最终版-final.png"来沟通。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           如果你也经常在改图和传图之间消耗耐心，不妨花 15 分钟试试声明式绘图，也许会打开一个新思路。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           开源地址：https://github.com/terrastruct/d2
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           既然看到这了，欢迎随手点赞、在看、转发，也可以给我个星标⭐，接收最新的文章，我们下期见！
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;section powered-by="werss"&gt;
          &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png" data-id="Mzg3NzU0NzIxMA==" data-nickname="开源日记" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
          &lt;/mp-common-profile&gt;
         &lt;/section&gt;
        &lt;/section&gt;
        &lt;p style="display: none;"&gt;
         &lt;mp-style-type data-value="3"&gt;
         &lt;/mp-style-type&gt;
        &lt;/p&gt;
       &lt;/div&gt;
       &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
        var first_sceen__time = (+new Date());
            if ("" == 1 &amp;&amp; document.getElementById('js_content')) {
              document.getElementById('js_content').addEventListener("selectstart",function(e){ e.preventDefault(); });
            }
       &lt;/script&gt;
      &lt;/div&gt;
      &lt;div class="article-tag__error-tips" id="js_tags_preview_toast" style="display: none;"&gt;
       预览时标签不可点
      &lt;/div&gt;
      &lt;div id="content_bottom_area"&gt;
      &lt;/div&gt;
      &lt;div id="font_pannel_area"&gt;
      &lt;/div&gt;
      &lt;div class="rich_media_tool_area" id="js_temp_bottom_area"&gt;
       &lt;div class="rich_media_tool__wrp"&gt;
        &lt;div class="rich_media_tool"&gt;
         &lt;div class="rich_media_info weui-flex"&gt;
         &lt;/div&gt;
        &lt;/div&gt;
       &lt;/div&gt;
      &lt;/div&gt;
     &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="rich_media_area_primary sougou" id="sg_tj" style="display:none"&gt;
    &lt;/div&gt;
    &lt;div class="rich_media_area_extra"&gt;
     &lt;div class="rich_media_area_extra_inner"&gt;
      &lt;div id="page_bottom_area"&gt;
      &lt;/div&gt;
     &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="qr_code_pc_outer" id="js_pc_qr_code" style="display:none;"&gt;
     &lt;div class="qr_code_pc_inner"&gt;
      &lt;div class="qr_code_pc"&gt;
       &lt;img/&gt;
       &lt;p&gt;
        微信扫一扫
        &lt;br/&gt;
        关注该公众号
       &lt;/p&gt;
      &lt;/div&gt;
     &lt;/div&gt;
    &lt;/div&gt;
   &lt;/div&gt;
   &lt;div class="wx_stream_article_slide_tip" id="wx_stream_article_slide_tip"&gt;
    &lt;div class="wx_stream_article_slide_tip_wrp"&gt;
     &lt;span&gt;
     &lt;/span&gt;
     &lt;span&gt;
      继续滑动看下一个
     &lt;/span&gt;
    &lt;/div&gt;
   &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="wx_network_msg_wrp" id="js_network_msg_wrp"&gt;
  &lt;/div&gt;
  &lt;div class="wx_expand_article" id="wx_expand_article"&gt;
   &lt;div class="wx_expand_article_gradient_background" id="wx_expand_background"&gt;
   &lt;/div&gt;
   &lt;div class="wx_expand_article_bottom_area" id="wx_expand_bottom"&gt;
    &lt;div class="wx_expand_article_button_wrap" id="wx_expand_article_placeholder"&gt;
     &lt;button class="wx_expand_article_button" id="wx_expand_article_button"&gt;
      轻触阅读原文
     &lt;/button&gt;
    &lt;/div&gt;
    &lt;div class="stream_bottom_bar_wrp" id="js_stream_bottom_bar"&gt;
     &lt;div class="bottom_bar_placeholder" id="js_stream_bottom_bar_placeholder"&gt;
      &lt;div class="wx_follow_context wx_follow_primary wx_follow_smart wx_follow_top wx_follow_bottom"&gt;
       &lt;div class="function_mod js_function_mod wx_tap_cell"&gt;
        &lt;div class="function_mod_inner js_function_mod_inner"&gt;
         &lt;div class="function_bd"&gt;
          &lt;div class="wx_follow_media weui-flex weui-flex_align-center"&gt;
           &lt;div class="wx_follow_hd"&gt;
            &lt;span&gt;
             &lt;img src="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png"&gt;
             &lt;/img&gt;
            &lt;/span&gt;
           &lt;/div&gt;
           &lt;div class="wx_follow_bd weui-flex__item"&gt;
            &lt;div class="wx_follow_info"&gt;
             &lt;div aria-describedby="js_wx_follow_tips" aria-labelledby="js_wx_follow_nickname" class="wx_follow_nickname" role="link" tabindex="0"&gt;
              开源日记
             &lt;/div&gt;
            &lt;/div&gt;
           &lt;/div&gt;
          &lt;/div&gt;
         &lt;/div&gt;
        &lt;/div&gt;
       &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class="interaction_bar__wrap" style="opacity: 1;"&gt;
       &lt;div class="interaction_bar" style="-webkit-text-size-adjust: 100%;"&gt;
       &lt;/div&gt;
      &lt;/div&gt;
     &lt;/div&gt;
     &lt;div id="stream_article_bottom_area"&gt;
     &lt;/div&gt;
    &lt;/div&gt;
   &lt;/div&gt;
   &lt;div class="wx_expand_article_slide_tip" id="wx_expand_slidetip"&gt;
    &lt;div class="wx_stream_article_slide_tip"&gt;
     &lt;div class="wx_stream_article_slide_tip_wrp"&gt;
      &lt;span&gt;
      &lt;/span&gt;
      &lt;span&gt;
       向上滑动看下一个
      &lt;/span&gt;
     &lt;/div&gt;
    &lt;/div&gt;
   &lt;/div&gt;
  &lt;/div&gt;
  &lt;div id="js_ad_control"&gt;
  &lt;/div&gt;
  &lt;div id="audio_panel_area"&gt;
  &lt;/div&gt;
  &lt;div id="js_profile_card_modal"&gt;
  &lt;/div&gt;
  &lt;div class="comment_primary_emotion_panel_wrp" id="js_emotion_panel_pc" style="display: none"&gt;
   &lt;div class="comment_primary_emotion_panel"&gt;
    &lt;ul class="comment_primary_emotion_list_pc" id="js_emotion_list_pc"&gt;
    &lt;/ul&gt;
   &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="weui-dialog__wrp" id="js_alert_panel" style="display:none;"&gt;
   &lt;div class="weui-mask"&gt;
   &lt;/div&gt;
   &lt;div class="weui-dialog"&gt;
    &lt;div class="weui-dialog__bd" id="js_alert_content"&gt;
    &lt;/div&gt;
    &lt;div class="weui-dialog__ft"&gt;
     &lt;a class="weui-dialog__btn weui-dialog__btn_default" href="javascript:;" id="js_alert_confirm"&gt;
      知道了
     &lt;/a&gt;
    &lt;/div&gt;
   &lt;/div&gt;
  &lt;/div&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   window.img_popup = 1;
  &lt;/script&gt;
  &lt;style&gt;
   .weui-dialog_link{-webkit-transform:translateY(-75%);transform:translateY(-75%)}
  &lt;/style&gt;
  &lt;div class="weui-desktop-popover weui-desktop-popover_pos-up-center weui-desktop-popover_img-text weapp_code_popover" id="js_pc_weapp_code" style="display: none;"&gt;
   &lt;div class="weui-desktop-popover__inner"&gt;
    &lt;div class="weui-desktop-popover__desc"&gt;
     &lt;img/&gt;
     微信扫一扫
     &lt;br/&gt;
     使用小程序
     &lt;span&gt;
     &lt;/span&gt;
    &lt;/div&gt;
   &lt;/div&gt;
  &lt;/div&gt;
  &lt;div aria-labelledby="js_minipro_dialog_head" aria-modal="true" class="outer_dialog" id="js_minipro_dialog" role="dialog" style="display:none;" tabindex="0"&gt;
   &lt;div class="weui-mask"&gt;
   &lt;/div&gt;
   &lt;div class="weui-dialog weui-dialog_link"&gt;
    &lt;div class="weui-dialog__hd"&gt;
     &lt;strong class="weui-dialog__title" id="js_minipro_dialog_head" tabindex="0"&gt;
     &lt;/strong&gt;
    &lt;/div&gt;
    &lt;div class="weui-dialog__bd" id="js_minipro_dialog_body"&gt;
    &lt;/div&gt;
    &lt;div class="weui-dialog__ft"&gt;
     &lt;a class="weui-dialog__btn weui-dialog__btn_default" href="javascript:void(0);" id="js_minipro_dialog_cancel" role="button"&gt;
      取消
     &lt;/a&gt;
     &lt;a class="weui-dialog__btn weui-dialog__btn_primary" href="javascript:void(0);" id="js_minipro_dialog_ok" role="button"&gt;
      允许
     &lt;/a&gt;
    &lt;/div&gt;
   &lt;/div&gt;
  &lt;/div&gt;
  &lt;div aria-labelledby="js_link_dialog_body" aria-modal="true" class="outer_dialog" id="js_link_dialog" role="dialog" style="display:none;" tabindex="0"&gt;
   &lt;div class="weui-mask"&gt;
   &lt;/div&gt;
   &lt;div class="weui-dialog weui-dialog_link"&gt;
    &lt;div class="weui-dialog__hd"&gt;
     &lt;strong class="weui-dialog__title" id="js_link_dialog_head" tabindex="0"&gt;
     &lt;/strong&gt;
    &lt;/div&gt;
    &lt;div class="weui-dialog__bd" id="js_link_dialog_body" tabindex="0"&gt;
    &lt;/div&gt;
    &lt;div class="weui-dialog__ft"&gt;
     &lt;a class="weui-dialog__btn weui-dialog__btn_default" href="javascript:void(0);" id="js_link_dialog_cancel" role="button"&gt;
      取消
     &lt;/a&gt;
     &lt;a class="weui-dialog__btn weui-dialog__btn_primary" href="javascript:void(0);" id="js_link_dialog_ok" role="button"&gt;
      允许
     &lt;/a&gt;
    &lt;/div&gt;
   &lt;/div&gt;
  &lt;/div&gt;
  &lt;div aria-labelledby="js_product_dialog_body" aria-modal="true" class="outer_dialog" id="js_product_dialog" role="dialog" style="display:none;" tabindex="0"&gt;
   &lt;div class="weui-mask"&gt;
   &lt;/div&gt;
   &lt;div class="weui-dialog weui-dialog_link"&gt;
    &lt;div class="weui-dialog__hd"&gt;
     &lt;strong class="weui-dialog__title" id="js_product_dialog_head" tabindex="0"&gt;
     &lt;/strong&gt;
    &lt;/div&gt;
    &lt;div class="weui-dialog__bd" id="js_product_dialog_body" tabindex="0"&gt;
    &lt;/div&gt;
    &lt;div class="weui-dialog__ft"&gt;
     &lt;a class="weui-dialog__btn weui-dialog__btn_default" href="javascript:void(0);" id="js_product_dialog_cancel" role="button"&gt;
      取消
     &lt;/a&gt;
     &lt;a class="weui-dialog__btn weui-dialog__btn_primary" href="javascript:void(0);" id="js_product_dialog_ok" role="button"&gt;
      允许
     &lt;/a&gt;
    &lt;/div&gt;
   &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="analyze_btn_wrap" id="js_analyze_btn" style="display:none"&gt;
   &lt;button class="close-button"&gt;
    ×
   &lt;/button&gt;
   &lt;button class="go-button wx_tap_card js_wx_tap_highlight"&gt;
    分析
   &lt;/button&gt;
  &lt;/div&gt;
  &lt;div class="weui-dialog__wrp jump_wx_qrcode_dialog" id="js_jump_wx_qrcode_dialog" role="dialog" style="display:none;"&gt;
   &lt;div class="weui-mask js_dialog_mask"&gt;
   &lt;/div&gt;
   &lt;div class="weui-dialog"&gt;
    &lt;div class="weui-dialog__hd"&gt;
     &lt;i class="weui-icon-close-thin js_dialog_close"&gt;
     &lt;/i&gt;
     &lt;div class="qrcode-con"&gt;
      &lt;img/&gt;
      &lt;div class="jump_author_avatar_con"&gt;
       &lt;img src="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png"/&gt;
      &lt;/div&gt;
     &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="weui-dialog__bd"&gt;
     &lt;p&gt;
      微信扫一扫可打开此内容，
      &lt;br/&gt;
      使用完整服务
     &lt;/p&gt;
    &lt;/div&gt;
   &lt;/div&gt;
  &lt;/div&gt;
  &lt;div id="unlogin_bottom_bar" style="display:none;"&gt;
   &lt;div class="bottom_bar_wrp js_temp_bottom_bar" id="js_article_bottom_bar"&gt;
    &lt;div id="article_bottom_bar_area"&gt;
    &lt;/div&gt;
   &lt;/div&gt;
  &lt;/div&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   window.logs.pagetime.page_begin = Date.now();

try {
  var adIframeUrl = localStorage.getItem('__WXLS_ad_iframe_url');
  if (window === top) {
    if (adIframeUrl) {
      if (navigator.userAgent.indexOf('iPhone') &gt; -1) {
        var img = new Image();
        img.src = adIframeUrl;
      } else {
        var link = document.createElement('link');
        link.rel = 'prefetch';
        link.href = adIframeUrl;
        document.getElementsByTagName('head')[0].appendChild(link);
      }
    }
  }
} catch (err) {

}
  &lt;/script&gt;
  &lt;span style="display:none"&gt;
   ：
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   ，
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   ，
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   ，
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   ，
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   ，
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   ，
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   ，
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   ，
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   ，
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   ，
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   ，
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   ，
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   。
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   视频
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   小程序
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   赞
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   ，轻点两下取消赞
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   在看
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   ，轻点两下取消在看
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   分享
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   留言
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   收藏
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   听过
  &lt;/span&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   (function () {
  var totalCount = 0,
    finishCount = 0;

  function _addScript(uri, cb) {
    totalCount++;
    var node = document.createElement('SCRIPT');
    node.type = 'text/javascript';
    node.src = uri;
    node.setAttribute('nonce', '1435168589');
    if (cb) {
      node.onload = cb;
    }
    document.getElementsByTagName('head')[0].appendChild(node);
  }
  if ((document.cookie &amp;&amp; document.cookie.indexOf('vconsole_open=1') &gt; -1) || location.href.indexOf('vconsole=1') &gt; -1) {
    _addScript('https://mp.weixin.qq.com/mmbizappmsg/zh_CN/htmledition/js/scripts/vconsole-3.14.6.js', function () {
      window.vConsole = new window.VConsole();
    });
  }
  if (document.cookie &amp;&amp; document.cookie.indexOf('__xweb_remote_debug_device_token__') &gt; -1) {
   
    _addScript('https://mp.weixin.qq.com/mmbizappmsg/zh_CN/htmledition/js/scripts/mprdev-0.3.0.js', function () {
      _addScript('https://mp.weixin.qq.com/mmbizappmsg/zh_CN/htmledition/js/scripts/xwebrd-0.0.2.js');
    });
  }
})();
  &lt;/script&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   var item_show_type = "0";
  &lt;/script&gt;
  &lt;script h5only="" nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   var __INLINE_SCRIPT__ = (function () {
  'use strict';
  var FILTER_ATTRS = ['mp-original-line-height', 'mp-original-font-size'];
  var __contentFilter = function __contentFilter(container) {
    if (!container) return;
    var nodes = container.querySelectorAll("[".concat(FILTER_ATTRS.join('], ['), "]"));
    for (var i = 0; i &lt; nodes.length; i++) {
      for (var j = 0; j &lt; FILTER_ATTRS.length; j++) {
        nodes[i].removeAttribute(FILTER_ATTRS[j]);
      }
    }
  };
  if (!window.__second_open__) {
    __contentFilter(document.getElementById('js_content'));
  }

  return __contentFilter;

})();
  &lt;/script&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   var __INLINE_SCRIPT__ = (function (exports) {
  'use strict';

  function _typeof(obj) {
    "@babel/helpers - typeof";

    return _typeof = "function" == typeof Symbol &amp;&amp; "symbol" == typeof Symbol.iterator ? function (obj) {
      return typeof obj;
    } : function (obj) {
      return obj &amp;&amp; "function" == typeof Symbol &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj;
    }, _typeof(obj);
  }

  
  
  var Device = {};
  function detect(ua) {
    var MQQBrowser = ua.match(/MQQBrowser\/(\d+\.\d+)/i);
    var MQQClient = ua.match(/QQ\/(\d+\.(\d+)\.(\d+)\.(\d+))/i) || ua.match(/V1_AND_SQ_([\d\.]+)/);
    var WeChat = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/) || ua.match(/MicroMessenger\/((\d+)\.(\d+))/);
    var MacOS = ua.match(/Mac\sOS\sX\s(\d+[\.|_]\d+)/);
    var WinOS = ua.match(/Windows(\s+\w+)?\s+?(\d+\.\d+)/);
    var Linux = ua.match(/Linux\s/);
    var MiuiBrowser = ua.match(/MiuiBrowser\/(\d+\.\d+)/i);
    var M1 = ua.match(/MI-ONE/);
    var MIPAD = ua.match(/MI PAD/);
    var UC = ua.match(/UCBrowser\/(\d+\.\d+(\.\d+\.\d+)?)/) || ua.match(/\sUC\s/);
    var IEMobile = ua.match(/IEMobile(\/|\s+)(\d+\.\d+)/) || ua.match(/WPDesktop/);
    var ipod = ua.match(/(ipod).*\s([\d_]+)/i);
    var ipad = ua.match(/(ipad).*\s([\d_]+)/i);
    var iphone = ua.match(/(iphone)\sos\s([\d_]+)/i);
    var Chrome = ua.match(/Chrome\/(\d+\.\d+)/);
    var AndriodBrowser = ua.match(/Mozilla.*Linux.*Android.*AppleWebKit.*Mobile Safari/);
    var android = ua.match(/(android)\s([\d\.]+)/i);
    var harmony = ua.match(/(OpenHarmony)\s([\d\.]+)/i);
    Device.browser = Device.browser || {}, Device.os = Device.os || {};
    Device.os.type = -1;
    Device.os.unifiedPC = ua.match(/UnifiedPC/);
    Device.os.unifiedMac = /UnifiedPCMac/i.test(ua);
    Device.os.unifiedWindows = /UnifiedPCWindows/i.test(ua);
    if (window.ActiveXObject) {
      var vie = 6;
      (window.XMLHttpRequest || ua.indexOf('MSIE 7.0') &gt; -1) &amp;&amp; (vie = 7);
      (window.XDomainRequest || ua.indexOf('Trident/4.0') &gt; -1) &amp;&amp; (vie = 8);
      ua.indexOf('Trident/5.0') &gt; -1 &amp;&amp; (vie = 9);
      ua.indexOf('Trident/6.0') &gt; -1 &amp;&amp; (vie = 10);
      Device.browser.ie = true, Device.browser.version = vie;
    } else if (ua.indexOf('Trident/7.0') &gt; -1) {
      Device.browser.ie = true, Device.browser.version = 11;
    }
    if (android) {
      Device.os.android = true;
      Device.os.version = android[2];
      Device.os.type = 2;
    }
    if (harmony) {
      Device.os.harmony = true;
      Device.os.version = harmony[2];
      Device.os.type = 42;
    }
    if (ipod) {
      Device.os.ios = Device.os.ipod = true;
      Device.os.version = ipod[2].replace(/_/g, '.');
    }
    if (ipad) {
      Device.os.ios = Device.os.ipad = true;
      Device.os.version = ipad[2].replace(/_/g, '.');
      Device.os.type = 13;
    }
    if (iphone) {
      Device.os.iphone = Device.os.ios = true;
      Device.os.version = iphone[2].replace(/_/g, '.');
      Device.os.type = 1;
    }
    if (WinOS) Device.os.windows = true, Device.os.version = WinOS[2], Device.os.type = 15;
    if (MacOS) Device.os.Mac = true, Device.os.version = MacOS[1], Device.os.type = 14;
    if (Linux) Device.os.Linux = true, Device.os.type = 33;
    if (ua.indexOf('lepad_hls') &gt; 0) Device.os.LePad = true;
    if (MIPAD) Device.os.MIPAD = true;
    if (MQQBrowser) Device.browser.MQQ = true, Device.browser.version = MQQBrowser[1];
    if (MQQClient) Device.browser.MQQClient = true, Device.browser.version = MQQClient[1];
    if (WeChat) Device.browser.WeChat = true, Device.browser.mmversion = Device.browser.version = WeChat[1];
    if (MiuiBrowser) Device.browser.MIUI = true, Device.browser.version = MiuiBrowser[1];
    if (UC) Device.browser.UC = true, Device.browser.version = UC[1] || NaN;
    if (IEMobile) Device.browser.IEMobile = true, Device.browser.version = IEMobile[2];
    if (AndriodBrowser) {
      Device.browser.AndriodBrowser = true;
    }
    if (M1) {
      Device.browser.M1 = true;
    }
    if (Chrome) {
      Device.browser.Chrome = true, Device.browser.version = Chrome[1];
    }
    if (Device.os.windows) {
      if (typeof navigator.platform !== "undefined" &amp;&amp; navigator.platform.toLowerCase() == "win64") {
        Device.os.win64 = true;
      } else {
        Device.os.win64 = false;
      }
    }
    if (Device.os.Mac || Device.os.windows || Device.os.Linux || Device.os.unifiedPC || /OpenHarmony/i.test(ua) &amp;&amp; /pc/i.test(ua)) {
      Device.os.pc = true;
    }
    var osType = {
      iPad7: 'iPad; CPU OS 7',
      LePad: 'lepad_hls',
      XiaoMi: 'MI-ONE',
      SonyDTV: "SonyDTV",
      SamSung: 'SAMSUNG',
      HTC: 'HTC',
      VIVO: 'vivo'
    };
    for (var os in osType) {
      Device.os[os] = ua.indexOf(osType[os]) !== -1;
    }
    Device.os.phone = Device.os.phone || /windows phone/i.test(ua);
    Device.os.getNumVersion = function () {
      return parseFloat(Device.os.version);
    };
    Device.os.hasTouch = 'ontouchstart' in window;
    if (Device.os.hasTouch &amp;&amp; Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 6) {
      Device.os.hasTouch = false;
    }
    if (Device.browser.WeChat &amp;&amp; Device.browser.version &lt; 5.0) {
      Device.os.hasTouch = false;
    }
    Device.browser.getNumVersion = function () {
      return parseFloat(Device.browser.version);
    };
    Device.browser.isFFCanOcx = function () {
      return !!Device.browser.firefox &amp;&amp; Device.browser.getNumVersion() &gt;= 3.0;
    };
    Device.browser.isCanOcx = function () {
      return !!Device.os.windows &amp;&amp; (!!Device.browser.ie || Device.browser.isFFCanOcx() || !!Device.browser.webkit);
    };
    Device.browser.isNotIESupport = function () {
      return !!Device.os.windows &amp;&amp; (!!Device.browser.webkit || Device.browser.isFFCanOcx());
    };
    Device.userAgent = {};
    Device.userAgent.browserVersion = Device.browser.version;
    Device.userAgent.osVersion = Device.os.version;
    if (Device.os.unifiedPC) {
      if (Device.os.unifiedWindows) Device.os.type = 37;else if (Device.os.unifiedMac) Device.os.type = 38;else Device.os.type = 39;
    }
    delete Device.userAgent.version;
  }
  detect(window.navigator.userAgent);
  function canSupportH5Video() {
    var ua = window.navigator.userAgent,
      m = null;
    if (!!Device.os.android) {
      if (Device.browser.MQQ &amp;&amp; Device.browser.getNumVersion() &gt;= 4.2) {
        return true;
      }
      if (ua.indexOf('MI2') != -1) {
        return true;
      }
      if (Device.os.version &gt;= '4' &amp;&amp; (m = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/))) {
        if (parseFloat(m[1]) &gt;= 4.2) {
          return true;
        }
      }
      if (Device.os.version &gt;= '4.1') {
        return true;
      }
    }
    return false;
  }
  function canSupportVideoMp4() {
    var video = document.createElement('video');
    if (typeof video.canPlayType === 'function') {
      if (video.canPlayType('video/mp4; codecs="mp4v.20.8"') === 'probably') {
        return true;
      }
      if (video.canPlayType('video/mp4; codecs="avc1.42E01E"') === 'probably' || video.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"') === 'probably') {
        return true;
      }
    }
    return false;
  }
  function canSupportAutoPlay() {
    if (Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 10) {
      return false;
    }
    return true;
  }
  function isLockdownMode() {
    if (!Device.os.ios || Device.os.getNumVersion() &lt; 16) {
      return false;
    }
    if (typeof WebAssembly === 'undefined' &amp;&amp; typeof OfflineAudioContext === 'undefined' &amp;&amp; typeof WebGLRenderingContext === 'undefined') {
      return true;
    }
    return false;
  }
  Device.canSupportVideo = canSupportVideoMp4 || canSupportH5Video;
  Device.canSupportVideoMp4 = canSupportVideoMp4;
  Device.canSupportH5Video = canSupportH5Video;
  Device.canSupportAutoPlay = canSupportAutoPlay;
  Device.isLockdownMode = isLockdownMode;
  
  Device.cpVersion = function (version) {
    var cp = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 0;
    var canEqual = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    var nowVersionStr = Device.os.version;
    if (!nowVersionStr) return false;
    var versionArr = version.split('.');
    var nowVersionArr = nowVersionStr.split('.');
    for (var i = 0; i &lt; Math.max(nowVersionArr.length, versionArr.length); i++) {
      var vi = +versionArr[i];
      var nvi = +nowVersionArr[i];
      if (vi === nvi) continue;
      if (cp &gt; 0) return vi &gt; nvi;
      if (cp &lt; 0) return vi &lt; nvi;
    }
    return canEqual || cp === 0;
  };

  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" &amp;&amp; o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$1(o)) || allowArrayLike &amp;&amp; o &amp;&amp; typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i &gt;= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion &amp;&amp; it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
  function _unsupportedIterableToArray$1(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$1(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen); }
  function _arrayLikeToArray$1(arr, len) { if (len == null || len &gt; arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i]; return arr2; }
  
  
  var ua$1 = navigator.userAgent;
  var is_ios = /(iPhone|iPad|iPod|iOS)/i.test(ua$1);
  var is_wp = /Windows\sPhone/i.test(ua$1);
  var is_android$1 = /(Android)/i.test(ua$1);
  var is_wechat = /MicroMessenger\/([\d\.]+)/i.test(ua$1);
  var is_mac = /mac\sos/i.test(ua$1) &amp;&amp; !is_ios;
  var is_windows = /windows\snt/i.test(ua$1) &amp;&amp; !is_wp;
  var is_mpapp = /MPAPP\/([\d\.]+)/i.test(ua$1);
  var is_ipad = /iPad/i.test(ua$1);
  var is_windows_wechat = /WindowsWechat/i.test(ua$1);
  var is_mac_wechat = /MacWechat/i.test(ua$1) || /wechat.*mac os/i.test(ua$1);
  var is_prefetch = is_wechat &amp;&amp; window.WeixinPrefecherJSBridge;
  var is_donut_app = /SAAASDK/i.test(ua$1);
  var is_harmony = /OpenHarmony|ArkWeb/i.test(ua$1);
  var is_linux = /Linux\s/i.test(ua$1);
  var xweb_match = ua$1.match(/XWEB\/([\d.]+)/i);
  var xweb_version = xweb_match &amp;&amp; xweb_match[1] ? parseInt(xweb_match[1], 10) : 0;
  var is_unified_pc_wechat = /UnifiedPC\w+Wechat/i.test(ua$1);
  var is_in_miniProgram = is_android$1 &amp;&amp; /miniprogram/.test(ua$1.toLowerCase()) || window.__wxjs_environment == 'miniprogram';
  var is_wx_work = /wxwork/i.test(ua$1);
  function getUrlParams() {
    var vars = location.search.substring(1).split('&amp;');
    var params = {};
    var _iterator = _createForOfIteratorHelper(vars),
      _step;
    try {
      for (_iterator.s(); !(_step = _iterator.n()).done;) {
        var ele = _step.value;
        var pair = ele.split('=');
        var key = decodeURIComponent(pair[0]);
        if (typeof params[key] === 'undefined') {
          params[key] = decodeURIComponent(pair[1]);
        }
      }
    } catch (err) {
      _iterator.e(err);
    } finally {
      _iterator.f();
    }
    return params;
  }
  function get() {
    var reg = /MicroMessenger\/([\d\.]+)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMac() {
    var reg = /MacWechat\/([\d\.]+)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMacOS() {
    var reg = /Mac OS X ([\d_]+)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1].replace(/_/g, '.');
    }
    return false;
  }
  function getWindows() {
    var reg = /WindowsWechat\(0x(.+?)\)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getWxWork() {
    var reg = /wxwork\/([\d\.]+)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMpApp() {
    var appVersion = [2, 4, 5];
    var match = navigator.userAgent.match(/MPAPP\/(\d+(\.\d+)*)/);
    if (match) {
      appVersion = match[1].split('.').map(function (v) {
        return Number(v);
      });
    }
    return appVersion.join('.');
  }
  function getUnifiedPcVer() {
    var versionInfo = navigator.userAgent.match(/UnifiedPC\w+Wechat\(0xf\w{2}(\w+?)\w{2}\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(0, 1));
      var subVersion = getVersionNumber(version.slice(1, 2));
      var subVersion2 = getVersionNumber(version.slice(2, 3));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
  }
  function getVersionNumber(hexStr) {
    return Number(Number("0x".concat(hexStr)).toString(10));
  }
  function getWindowsVersionFormat() {
    var versionInfo = navigator.userAgent.match(/WindowsWechat\(0x(\w+?)\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(1, 2));
      var subVersion = getVersionNumber(version.slice(2, 4));
      var subVersion2 = getVersionNumber(version.slice(4, 6));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
    return false;
  }
  function getInner() {
    var reg = /MicroMessenger\/[\d\.]+\(0x(.+?)\)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1] &amp;&amp; ret[1] != null) {
      return ret[1];
    }
    if (!ret &amp;&amp; /MicroMessenger\/[\d\.]+/i.test(ua$1)) {
      var urlParams = getUrlParams();
      if (urlParams.version) {
        return urlParams.version;
      }
    }
    return false;
  }
  var opfunc = {
    'cp-1': function cp1(a, b) {
      return a &lt; b;
    },
    cp0: function cp0(a, b) {
      return a === b;
    },
    cp1: function cp1(a, b) {
      return a &gt; b;
    }
  };
  function cpVersion(ver, op, canEq, type) {
    var mmver = false;
    switch (type) {
      case 'mac':
        mmver = getMac();
        break;
      case 'windows':
        mmver = getWindowsVersionFormat();
        break;
      case 'wxwork':
        mmver = getWxWork();
        break;
      case 'mpapp':
        mmver = getMpApp();
        break;
      case 'unifiedpc':
        mmver = getUnifiedPcVer();
        break;
      default:
        mmver = get();
        break;
    }
    if (!mmver) {
      return;
    }
    var mmversion = mmver.split('.');
    var version = ver.split('.');
    if (!/\d+/g.test(mmversion[mmversion.length - 1])) {
      mmversion.pop();
    }
    for (var i = 0, len = Math.max(mmversion.length, version.length); i &lt; len; ++i) {
      var mmv = mmversion[i] || '';
      var v = version[i] || '';
      var mmvn = parseInt(mmv, 10) || 0;
      var vn = parseInt(v, 10) || 0;
      var eq = opfunc.cp0(mmvn, vn);
      if (eq) {
        continue;
      }
      var cp = opfunc["cp".concat(op)];
      return cp(mmvn, vn);
    }
    return canEq || op === 0;
  }
  function eqVersion(version) {
    return cpVersion(version, 0);
  }
  function gtVersion(version, canEq) {
    return cpVersion(version, 1, canEq);
  }
  function ltVersion(version, canEq) {
    return cpVersion(version, -1, canEq);
  }
  function getPlatform() {
    if (is_ios) {
      return 'ios';
    }
    if (is_android$1) {
      return 'android';
    }
    if (is_mac) {
      return 'mac_os';
    }
    if (is_windows) {
      return 'windows';
    }
    return 'unknown';
  }
  var is_google_play = false;
  var inner_ver_for_google_play_check = getInner();
  if (is_android$1 &amp;&amp; inner_ver_for_google_play_check) {
    var v = "0x".concat(inner_ver_for_google_play_check.substr(-2));
    if (parseInt(v) &gt;= 64 &amp;&amp; parseInt(v) &lt;= 79) {
      is_google_play = true;
    }
  }
  function compareHexVersion(hexNum) {
    var innerVersion = getInner();
    if (innerVersion &amp;&amp; hexNum) {
      if (typeof hexNum === 'string') {
        hexNum = parseInt(hexNum, 16);
      }
      var version = parseInt(innerVersion, 16);
      return version &gt;= hexNum;
    }
    return false;
  }
  var mmversion = {
    get: get,
    getMac: getMac,
    getMacOS: getMacOS,
    getWindows: getWindows,
    getInner: getInner,
    getWxWork: getWxWork,
    getMpApp: getMpApp,
    cpVersion: cpVersion,
    eqVersion: eqVersion,
    gtVersion: gtVersion,
    ltVersion: ltVersion,
    getPlatform: getPlatform,
    getVersionNumber: getVersionNumber,
    isWp: is_wp,
    isIOS: is_ios,
    isAndroid: is_android$1,
    isHarmony: is_harmony,
    isHarmonyWechat: is_harmony &amp;&amp; is_wechat &amp;&amp; cpVersion('1.0.0', 1, true),
    isInMiniProgram: is_in_miniProgram,
    isWechat: is_wechat,
    isMac: is_mac,
    isWindows: is_windows,
    isLinux: is_linux,
    isMacWechat: is_mac_wechat,
    isWindowsWechat: is_windows_wechat,
    isWxWork: is_wx_work,
    isOnlyWechat: is_wechat &amp;&amp; !is_wx_work,
    isMpapp: is_mpapp,
    isIPad: is_ipad,
    isGooglePlay: is_google_play,
    isPrefetch: is_prefetch,
    isDonutAPP: is_donut_app,
    compareHexVersion: compareHexVersion,
    isPcWechat: is_windows_wechat || is_mac_wechat,
    xwebVersion: xweb_version,
    isUnifiedPcWechat: is_unified_pc_wechat
  };
  var getOriginExpVal = function getOriginExpVal(key) {
    var _a, _b, _c;
    return ((_c = (_b = (_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.user_info) === null || _b === void 0 ? void 0 : _b.frontend_exp) === null || _c === void 0 ? void 0 : _c.list) &amp;&amp; window.cgiDataNew.user_info.frontend_exp.list.reduce(function (res, item) {
      if (item.key === key) res = (item === null || item === void 0 ? void 0 : item.value) || '';
      return res;
    }, '');
  };

  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
    try {
      var info = gen[key](arg);
      var value = info.value;
    } catch (error) {
      reject(error);
      return;
    }
    if (info.done) {
      resolve(value);
    } else {
      Promise.resolve(value).then(_next, _throw);
    }
  }
  function _asyncToGenerator(fn) {
    return function () {
      var self = this,
        args = arguments;
      return new Promise(function (resolve, reject) {
        var gen = fn.apply(self, args);
        function _next(value) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
        }
        function _throw(err) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
        }
        _next(undefined);
      });
    };
  }

  function _regeneratorRuntime$2() {  _regeneratorRuntime$2 = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  
  var doc$1 = {};
  var isAcrossOrigin$1 = false;
  var notFoundedMPPageAction = [];
  var __moon_report$1 = window.__moon_report || function () {};
  var MOON_JSAPI_KEY_OFFSET = 8;
  try {
    doc$1 = top.window.document;
  } catch (e) {
    isAcrossOrigin$1 = true;
  }
  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }
  function ready$1(onBridgeReady) {
    var bridgeReady = function bridgeReady() {
      try {
        if (onBridgeReady) {
          window.onBridgeReadyTime = window.onBridgeReadyTime || Date.now();
          onBridgeReady();
        }
      } catch (e) {
        __moon_report$1([{
          offset: MOON_JSAPI_KEY_OFFSET,
          log: 'ready',
          e: e
        }]);
        throw e;
      }
      window.jsapiReadyTime = Date.now();
    };
    if (!isAcrossOrigin$1 &amp;&amp; (typeof top.window.WeixinJSBridge === 'undefined' || !top.window.WeixinJSBridge.invoke)) {
      if (doc$1.addEventListener) {
        doc$1.addEventListener('WeixinJSBridgeReady', bridgeReady, false);
      } else if (doc$1.attachEvent) {
        doc$1.attachEvent('WeixinJSBridgeReady', bridgeReady);
        doc$1.attachEvent('onWeixinJSBridgeReady', bridgeReady);
      }
    } else {
      bridgeReady();
    }
  }
  var invokeNotWaitA8key = ['notifyPageInfo', 'updatePageAuth'
  ];
  var checkNotFoundedInvoke = function checkNotFoundedInvoke(methodName, args) {
    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; notFoundedMPPageAction.includes(args === null || args === void 0 ? void 0 : args.action)) {
      return true;
    }
    return false;
  };
  function invoke$1(_x, _x2, _x3) {
    return _invoke.apply(this, arguments);
  }
  function _invoke() {
    _invoke = _asyncToGenerator( _regeneratorRuntime$2().mark(function _callee(methodName, args, callback) {
      return _regeneratorRuntime$2().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__ &amp;&amp; !invokeNotWaitA8key.includes(methodName))) {
              _context.next = 3;
              break;
            }
            _context.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready$1(function () {
              if (isAcrossOrigin$1) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                alert('请在微信中打开此链接');
                return false;
              }
              if (checkNotFoundedInvoke(methodName, args)) {
                setTimeout(function () {
                  if (callback) {
                    callback.apply(window, [{
                      err_msg: "".concat(methodName, ":fail"),
                      err_desc: 'action isn\'t supported'
                    }]);
                  }
                }, 0);
              } else {
                top.window.WeixinJSBridge.invoke(methodName, args, function () {
                  try {
                    for (var _len2 = arguments.length, rets = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
                      rets[_key2] = arguments[_key2];
                    }
                    var ret = rets[0];
                    var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
                    if (['handleMPPageAction', 'handleVideoAction', 'handleHaokanAction'].indexOf(methodName) !== -1) {
                      var action = (args === null || args === void 0 ? void 0 : args.action) || '';
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName, ", action-&gt;").concat(action).concat(errMsg));
                    } else {
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName).concat(errMsg));
                    }
                    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; ((ret === null || ret === void 0 ? void 0 : ret.err_desc) === 'action isn\'t supported' || (ret === null || ret === void 0 ? void 0 : ret.err_msg) === 'handleMPPageAction:fail action is not supported')) {
                      notFoundedMPPageAction.push(args === null || args === void 0 ? void 0 : args.action);
                    }
                    if (callback) {
                      callback.apply(window, rets);
                    }
                  } catch (e) {
                    __moon_report$1([{
                      offset: MOON_JSAPI_KEY_OFFSET,
                      log: "invoke;methodName:".concat(methodName),
                      e: e
                    }]);
                    throw e;
                  }
                });
              }
            });
          case 4:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return _invoke.apply(this, arguments);
  }
  function call(_x4) {
    return _call.apply(this, arguments);
  }
  function _call() {
    _call = _asyncToGenerator( _regeneratorRuntime$2().mark(function _callee2(methodName) {
      return _regeneratorRuntime$2().wrap(function _callee2$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__)) {
              _context2.next = 3;
              break;
            }
            _context2.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready$1(function () {
              if (isAcrossOrigin$1) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                return false;
              }
              try {
                top.window.WeixinJSBridge.call(methodName);
              } catch (e) {
                __moon_report$1([{
                  offset: MOON_JSAPI_KEY_OFFSET,
                  log: "call;methodName:".concat(methodName),
                  e: e
                }]);
                throw e;
              }
            });
          case 4:
          case "end":
            return _context2.stop();
        }
      }, _callee2);
    }));
    return _call.apply(this, arguments);
  }
  function on$2(eventName, callback) {
    ready$1(function () {
      if (isAcrossOrigin$1) return false;
      if (_typeof(top.window.WeixinJSBridge) !== 'object' || !top.window.WeixinJSBridge.on) {
        return false;
      }
      if (!window.JSAPIEventCallbackMap[eventName]) {
        window.JSAPIEventCallbackMap[eventName] = [];
      }
      window.JSAPIEventCallbackMap[eventName].push(callback);
      if (window.JSAPIEventCallbackMap[eventName].length &gt; 1) {
        return false;
      }
      top.window.WeixinJSBridge.on(eventName, function () {
        try {
          for (var _len = arguments.length, rets = new Array(_len), _key = 0; _key &lt; _len; _key++) {
            rets[_key] = arguments[_key];
          }
          var ret = rets[0];
          var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
          console.info('[system]', "[jsapi] event-&gt;".concat(eventName).concat(errMsg));
          if (window.JSAPIEventCallbackMap[eventName] &amp;&amp; window.JSAPIEventCallbackMap[eventName].length) {
            var result;
            for (var i = 0; i &lt; window.JSAPIEventCallbackMap[eventName].length; i++) {
              result = window.JSAPIEventCallbackMap[eventName][i].apply(window, rets);
            }
            return result;
          }
        } catch (e) {
          __moon_report$1([{
            offset: MOON_JSAPI_KEY_OFFSET,
            log: "on;eventName:".concat(eventName),
            e: e
          }]);
          throw e;
        }
      });
    });
  }
  function remove$1(eventName, callback) {
    ready$1(function () {
      if (!window.JSAPIEventCallbackMap[eventName]) {
        return false;
      }
      var result = false;
      for (var i = window.JSAPIEventCallbackMap[eventName].length - 1; i &gt;= 0; i--) {
        if (window.JSAPIEventCallbackMap[eventName][i] === callback) {
          window.JSAPIEventCallbackMap[eventName].splice(i, 1);
          result = true;
        }
      }
      return result;
    });
  }
  var JSAPI = {
    ready: ready$1,
    invoke: invoke$1,
    call: call,
    on: on$2,
    remove: remove$1
  };

  function _regeneratorRuntime$1() {  _regeneratorRuntime$1 = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  var attrs = ['top', 'left', 'right', 'bottom'];
  var elementComputedStyle = {};
  var changeAttrs = [];
  var callbacks = [];
  var inited;
  var support;
  var jsApiSupport = false;
  var androidReadyPromise = null;
  if (Device.os.android) {
    androidReadyPromise = new Promise(function (resolve) {
      JSAPI.invoke('handleDeviceInfo', {
        action: 'getSafeAreaInsets'
      }, function (res) {
        if (res.err_msg.indexOf(':ok') !== -1) {
          elementComputedStyle.top = res.top;
          elementComputedStyle.left = res.left;
          elementComputedStyle.right = window.screen.width - res.right;
          elementComputedStyle.bottom = window.screen.height - res.bottom;
          jsApiSupport = true;
        } else {
          attrs.forEach(function (attr) {
            elementComputedStyle[attr] = 0;
          });
        }
        inited = true;
        resolve();
      });
    });
  }
  function getSupport() {
    if (Device.os.android) {
      support = '';
    } else if (!('CSS' in window) || typeof CSS.supports !== 'function') {
      support = '';
    } else if (CSS.supports('top: env(safe-area-inset-top)')) {
      support = 'env';
    } else if (CSS.supports('top: constant(safe-area-inset-top)')) {
      support = 'constant';
    } else {
      support = '';
    }
    return support;
  }
  function attrChange(attr) {
    if (!changeAttrs.length) {
      setTimeout(function () {
        var style = {};
        changeAttrs.forEach(function (a) {
          style[a] = elementComputedStyle[a];
        });
        changeAttrs.length = 0;
        callbacks.forEach(function (callback) {
          callback(style);
        });
      }, 0);
    }
    changeAttrs.push(attr);
  }
  function init() {
    support = typeof support === 'string' ? support : getSupport();
    if (!support) {
      attrs.forEach(function (attr) {
        elementComputedStyle[attr] = 0;
      });
      return;
    }
    function setStyle(el, style) {
      var elStyle = el.style;
      Object.keys(style).forEach(function (key) {
        var val = style[key];
        elStyle[key] = val;
      });
    }
    var cbs = [];
    function parentReady(callback) {
      if (callback) {
        cbs.push(callback);
      } else {
        cbs.forEach(function (cb) {
          cb();
        });
      }
    }
    var passiveEvents = false;
    try {
      var opts = Object.defineProperty({}, 'passive', {
        get: function get() {
          passiveEvents = {
            passive: true
          };
        }
      });
      window.addEventListener('test', null, opts);
    } catch (e) {}
    function addChild(parent, attr) {
      var a1 = document.createElement('div');
      var a2 = document.createElement('div');
      var a1Children = document.createElement('div');
      var a2Children = document.createElement('div');
      var W = 100;
      var MAX = 10000;
      var aStyle = {
        position: 'absolute',
        width: "".concat(W, "px"),
        height: '200px',
        boxSizing: 'border-box',
        overflow: 'hidden',
        paddingBottom: "".concat(support, "(safe-area-inset-").concat(attr, ")")
      };
      setStyle(a1, aStyle);
      setStyle(a2, aStyle);
      setStyle(a1Children, {
        transition: '0s',
        animation: 'none',
        width: '400px',
        height: '400px'
      });
      setStyle(a2Children, {
        transition: '0s',
        animation: 'none',
        width: '250%',
        height: '250%'
      });
      a1.appendChild(a1Children);
      a2.appendChild(a2Children);
      parent.appendChild(a1);
      parent.appendChild(a2);
      parentReady(function () {
        a1.scrollTop = MAX;
        a2.scrollTop = MAX;
        var a1LastScrollTop = a1.scrollTop;
        var a2LastScrollTop = a2.scrollTop;
        function onScroll() {
          if (this.scrollTop === (this === a1 ? a1LastScrollTop : a2LastScrollTop)) {
            return;
          }
          a1.scrollTop = MAX;
          a2.scrollTop = MAX;
          a1LastScrollTop = a1.scrollTop;
          a2LastScrollTop = a2.scrollTop;
          attrChange(attr);
        }
        a1.addEventListener('scroll', onScroll, passiveEvents);
        a2.addEventListener('scroll', onScroll, passiveEvents);
      });
      var computedStyle = getComputedStyle(a1);
      Object.defineProperty(elementComputedStyle, attr, {
        configurable: true,
        get: function get() {
          return parseFloat(computedStyle.paddingBottom);
        }
      });
    }
    var parentDiv = document.createElement('div');
    setStyle(parentDiv, {
      position: 'absolute',
      left: '0',
      top: '0',
      width: '0',
      height: '0',
      zIndex: '-1',
      overflow: 'hidden',
      visibility: 'hidden'
    });
    attrs.forEach(function (key) {
      addChild(parentDiv, key);
    });
    document.body.appendChild(parentDiv);
    parentReady();
    inited = true;
  }
  function getAttr(attr) {
    if (!inited) {
      init();
    }
    return elementComputedStyle[attr];
  }
  function onChange(callback) {
    if (!getSupport()) {
      return;
    }
    if (!inited) {
      init();
    }
    if (typeof callback === 'function') {
      callbacks.push(callback);
    }
  }
  function offChange(callback) {
    var index = callbacks.indexOf(callback);
    if (index &gt;= 0) {
      callbacks.splice(index, 1);
    }
  }
  
  function pollUntilReady(attr) {
    var timeout = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 2000;
    return new Promise(function (resolve) {
      var start = Date.now();
      function check() {
        var val = elementComputedStyle[attr];
        if (val &amp;&amp; val !== 0 || Date.now() - start &gt; timeout) {
          resolve();
          return;
        }
        setTimeout(check, 300);
      }
      setTimeout(check, 300);
    });
  }
  var readyPromise = null;
  
  function ready() {
    if (!readyPromise) {
      readyPromise = _asyncToGenerator( _regeneratorRuntime$1().mark(function _callee() {
        return _regeneratorRuntime$1().wrap(function _callee$(_context) {
          while (1) switch (_context.prev = _context.next) {
            case 0:
              if (!androidReadyPromise) {
                _context.next = 4;
                break;
              }
              _context.next = 3;
              return androidReadyPromise;
            case 3:
              return _context.abrupt("return");
            case 4:
              if (!inited) {
                init();
              }
              if (!support) {
                _context.next = 8;
                break;
              }
              _context.next = 8;
              return pollUntilReady('bottom');
            case 8:
            case "end":
              return _context.stop();
          }
        }, _callee);
      }))();
    }
    return readyPromise;
  }
  
  function getAttrAsync(_x) {
    return _getAttrAsync.apply(this, arguments);
  }
  function _getAttrAsync() {
    _getAttrAsync = _asyncToGenerator( _regeneratorRuntime$1().mark(function _callee2(attr) {
      return _regeneratorRuntime$1().wrap(function _callee2$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            _context2.next = 2;
            return ready();
          case 2:
            return _context2.abrupt("return", elementComputedStyle[attr]);
          case 3:
          case "end":
            return _context2.stop();
        }
      }, _callee2);
    }));
    return _getAttrAsync.apply(this, arguments);
  }
  var SafeArea = {
    get support() {
      return (typeof support === 'string' ? support : getSupport()).length !== 0 || jsApiSupport;
    },
    get top() {
      return getAttr('top');
    },
    get left() {
      return getAttr('left');
    },
    get right() {
      return getAttr('right');
    },
    get bottom() {
      return getAttr('bottom');
    },
    onChange: onChange,
    offChange: offChange,
    ready: ready,
    getAsync: getAttrAsync
  };

  function _toPrimitive(input, hint) {
    if (_typeof(input) !== "object" || input === null) return input;
    var prim = input[Symbol.toPrimitive];
    if (prim !== undefined) {
      var res = prim.call(input, hint || "default");
      if (_typeof(res) !== "object") return res;
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return (hint === "string" ? String : Number)(input);
  }

  function _toPropertyKey(arg) {
    var key = _toPrimitive(arg, "string");
    return _typeof(key) === "symbol" ? key : String(key);
  }

  function _defineProperty(obj, key, value) {
    key = _toPropertyKey(key);
    if (key in obj) {
      Object.defineProperty(obj, key, {
        value: value,
        enumerable: true,
        configurable: true,
        writable: true
      });
    } else {
      obj[key] = value;
    }
    return obj;
  }

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  function _defineProperties(target, props) {
    for (var i = 0; i &lt; props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor) descriptor.writable = true;
      Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
    }
  }
  function _createClass(Constructor, protoProps, staticProps) {
    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
    if (staticProps) _defineProperties(Constructor, staticProps);
    Object.defineProperty(Constructor, "prototype", {
      writable: false
    });
    return Constructor;
  }

  
  var prefix = '__WXLS__';
  var localStorage$1 = window.localStorage || {
    getItem: function getItem() {},
    setItem: function setItem() {},
    removeItem: function removeItem() {},
    key: function key() {},
    clear: function clear() {
      var _a, _b;
      (_b = (_a = window.localStorage) === null || _a === void 0 ? void 0 : _a.clear) === null || _b === void 0 ? void 0 : _b.call(_a);
    },
    length: 0
  };
  var evictionPolicies = {
    noeviction: function noeviction(data) {
      return data;
    },
    'allkeys-random': function allkeysRandom(data, size) {
      var keys = Object.keys(data);
      var memCnt = 0;
      while (memCnt &lt; size) {
        var len = keys.length;
        var randomKeyIdx = Math.floor(Math.random() * len);
        var randomKey = keys[randomKeyIdx];
        memCnt += JSON.stringify(data[randomKey]).length;
        delete data[randomKey];
        keys = Object.keys(data);
      }
      return data;
    },
    'volatile-ttl': function volatileTtl(data, size) {
      var keys = Object.keys(data);
      keys = keys.sort(function (key1, key2) {
        var d1 = data[key1];
        var d2 = data[key2];
        if (d1.exp &lt; d2.exp) return -1;
        if (d1.exp &gt; d2.exp) return 1;
        return 0;
      });
      var memCnt = 0;
      for (var i = 0; i &lt; keys.length; i++) {
        if (memCnt &gt;= size) break;
        var key = keys[i];
        memCnt += JSON.stringify(data[key]).length;
        delete data[key];
      }
      return data;
    },
    'clear-all': function clearAll() {
      localStorage$1.clear();
      return {};
    }
  };
  function formatLogMsg(str) {
    return "[WXLS] ".concat(str);
  }
  
  var LS = function () {
    function LS(func, evictionPolicy, logger) {
      _classCallCheck(this, LS);
      this.logger = function () {};
      if (!func) throw 'require function name.';
      this.evictionPolicy = 'noeviction';
      this.key = func;
      if (typeof logger === 'function') {
        this.logger = function (str, type) {
          return logger(formatLogMsg(str), type);
        };
      }
      if (evictionPolicy &amp;&amp; Object.keys(evictionPolicies).indexOf(evictionPolicy) !== -1) {
        this.evictionPolicy = evictionPolicy;
      }
      this.init();
    }
    _createClass(LS, [{
      key: "init",
      value: function init() {
        var _a, _b;
        this.check();
        if (Math.random() * 1000 &lt; 1) {
          (_a = this.logger) === null || _a === void 0 ? void 0 : _a.call(this, "LSlen: ".concat(((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length) || localStorage$1.length), 'report');
        }
      }
    }, {
      key: "getData",
      value: function getData() {
        var data = LS.getItem(this.key) || '{}';
        try {
          data = JSON.parse(data);
        } catch (e) {
          this.logger("getData error: ".concat(e), 'error');
          localStorage$1.removeItem(prefix + this.key);
          data = {};
        }
        return data;
      }
    }, {
      key: "check",
      value: function check(isReturn) {
        var data = this.getData();
        var temp = {};
        var now = +new Date();
        var key;
        var val;
        for (key in data) {
          val = data[key];
          if (+val.exp &gt; now) {
            temp[key] = val;
          }
        }
        this.logger("check info: isReturn:".concat(isReturn, " data:").concat(JSON.stringify(temp)), 'info');
        if (isReturn) return temp;
        LS.setItem(this.key, JSON.stringify(temp), this.logger);
      }
    }, {
      key: "set",
      value: function set(key, val, exp) {
        var _a, _b;
        var data = this.check(true);
        data[key] = {
          val: val,
          exp: exp || +new Date()
        };
        try {
          if (localStorage$1.getItem(prefix + this.key)) localStorage$1.removeItem(prefix + this.key);
          localStorage$1.setItem(prefix + this.key, JSON.stringify(data));
          this.logger("first set success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data)), 'success');
        } catch (e) {
          this.logger("first set error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data), " k:").concat(key, " v:").concat(val, " exp:").concat(exp), 'error');
          localStorage$1.clear();
          LS.setItem(this.key, JSON.stringify(_defineProperty({}, key, {
            val: val,
            exp: exp || +new Date()
          })), this.logger);
        }
      }
    }, {
      key: "get",
      value: function get(key) {
        var data = this.getData();
        data = data[key];
        return data ? data.val || null : null;
      }
    }, {
      key: "remove",
      value: function remove(key) {
        var data = this.getData();
        if (data[key]) delete data[key];
        LS.setItem(this.key, JSON.stringify(data), this.logger);
      }
    }], [{
      key: "getItem",
      value: function getItem(key) {
        key = prefix + key;
        return localStorage$1.getItem(key);
      }
    }, {
      key: "setItem",
      value: function setItem(key, val, logger) {
        var _a, _b;
        key = prefix + key;
        var n = 3;
        while (n--) {
          try {
            if (localStorage$1.getItem(key)) localStorage$1.removeItem(key);
            localStorage$1.setItem(key, val);
            typeof logger === 'function' &amp;&amp; logger("setItem success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(key, " val:").concat(val), 'success');
            break;
          } catch (e) {
            typeof logger === 'function' &amp;&amp; logger("setItem error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(key, " val:").concat(val), 'error');
            LS.clear();
          }
        }
      }
    }, {
      key: "clear",
      value: function clear() {
        var i;
        var k;
        for (i = localStorage$1.length - 1; i &gt;= 0; i--) {
          k = localStorage$1.key(i);
          if (k.indexOf(prefix) == 0) {
            localStorage$1.removeItem(k);
          }
        }
      }
    }, {
      key: "getSupportEvicationPolicy",
      value: function getSupportEvicationPolicy() {
        return Object.keys(evictionPolicies);
      }
    }]);
    return LS;
  }();

  
  var LOCAL_STORAGE_EXPIRE_TIME = 24 * 60 * 60 * 1000;

  
  
  var onceListeners = {};
  var permanentListeners = {};
  function clean(event, all) {
    delete onceListeners[event];
    if (all) {
      delete permanentListeners[event];
    }
  }
  function on$1(event, callback, permanent) {
    if (typeof callback === 'function') {
      if (permanent) {
        if (!permanentListeners[event]) {
          permanentListeners[event] = [];
        }
        permanentListeners[event].push(callback);
      } else {
        if (!onceListeners[event]) {
          onceListeners[event] = [];
        }
        onceListeners[event].push(callback);
      }
    }
  }
  function emit(event) {
    for (var _len = arguments.length, params = new Array(_len &gt; 1 ? _len - 1 : 0), _key = 1; _key &lt; _len; _key++) {
      params[_key - 1] = arguments[_key];
    }
    if (permanentListeners[event]) {
      permanentListeners[event].forEach(function (callback) {
        if (typeof callback === 'function') {
          callback.apply(void 0, params);
        }
      });
    }
    if (onceListeners[event]) {
      onceListeners[event].forEach(function (callback) {
        if (typeof callback === 'function') {
          callback.apply(void 0, params);
        }
      });
      clean(event);
    }
  }
  function remove(event, callback, permanent) {
    if (typeof callback === 'function') {
      if (permanent &amp;&amp; permanentListeners[event]) {
        var idx = permanentListeners[event].indexOf(callback);
        if (idx !== -1) {
          permanentListeners[event].splice(idx, 1);
        }
      } else if (onceListeners[event]) {
        var _idx = onceListeners[event].indexOf(callback);
        if (_idx !== -1) {
          onceListeners[event].splice(_idx, 1);
        }
      }
    }
  }
  var EventBus = {
    on: on$1,
    emit: emit,
    remove: remove,
    clean: clean
  };

  function _arrayWithHoles(arr) {
    if (Array.isArray(arr)) return arr;
  }

  function _iterableToArrayLimit(arr, i) {
    var _i = null == arr ? null : "undefined" != typeof Symbol &amp;&amp; arr[Symbol.iterator] || arr["@@iterator"];
    if (null != _i) {
      var _s,
        _e,
        _x,
        _r,
        _arr = [],
        _n = !0,
        _d = !1;
      try {
        if (_x = (_i = _i.call(arr)).next, 0 === i) {
          if (Object(_i) !== _i) return;
          _n = !1;
        } else for (; !(_n = (_s = _x.call(_i)).done) &amp;&amp; (_arr.push(_s.value), _arr.length !== i); _n = !0);
      } catch (err) {
        _d = !0, _e = err;
      } finally {
        try {
          if (!_n &amp;&amp; null != _i["return"] &amp;&amp; (_r = _i["return"](), Object(_r) !== _r)) return;
        } finally {
          if (_d) throw _e;
        }
      }
      return _arr;
    }
  }

  function _arrayLikeToArray(arr, len) {
    if (len == null || len &gt; arr.length) len = arr.length;
    for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i];
    return arr2;
  }

  function _unsupportedIterableToArray(o, minLen) {
    if (!o) return;
    if (typeof o === "string") return _arrayLikeToArray(o, minLen);
    var n = Object.prototype.toString.call(o).slice(8, -1);
    if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name;
    if (n === "Map" || n === "Set") return Array.from(o);
    if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
  }

  function _nonIterableRest() {
    throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }

  function _slicedToArray(arr, i) {
    return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
  }

  function getInflightMap() {
    if (!window.__dedupe_promise_inflight__) {
      window.__dedupe_promise_inflight__ = new Map();
    }
    return window.__dedupe_promise_inflight__;
  }
  
  function dedupePromise(key, factory) {
    var inflightMap = getInflightMap();
    var existing = inflightMap.get(key);
    console.log("dedupePromise key=".concat(key, " existing=").concat(existing));
    if (existing) {
      return existing;
    }
    var promise = Promise.resolve().then(factory)["finally"](function () {
      inflightMap["delete"](key);
    });
    inflightMap.set(key, promise);
    return promise;
  }
  var innerVersion = (mmversion.getInner() || '').toUpperCase();
  var getBizLS = new LS('get_biz_result');
  function getBizMap() {
    if (!window.__get_biz_map__) {
      window.__get_biz_map__ = {};
    }
    return window.__get_biz_map__;
  }
  var isGetBizSupported = mmversion.isOnlyWechat &amp;&amp; mmversion.isIOS &amp;&amp; innerVersion &gt;= '18003C2A' || mmversion.isOnlyWechat &amp;&amp; mmversion.isAndroid &amp;&amp; innerVersion &gt;= '28003D3C' || mmversion.isUnifiedPcWechat &amp;&amp; mmversion.cpVersion('4.1.10', 1, true, 'unifiedpc');
  function invokeGetBiz(needCheckBiz, bizType) {
    return dedupePromise("getBiz:".concat(needCheckBiz, ":").concat(bizType), function () {
      return new Promise(function (resolve, reject) {
        if (!isGetBizSupported) {
          reject('Not support');
        } else {
          JSAPI.invoke('handleMPPageAction', {
            action: 'getBiz',
            needCheckBiz: needCheckBiz,
            bizType: bizType
          }, function (res) {
            console.log("getBiz needCheckBiz=".concat(needCheckBiz, " bizType=").concat(bizType, " res: ").concat(JSON.stringify(res)));
            if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf('ok') &gt; -1) {
              var bizMap = getBizMap();
              bizMap[bizType] = res.biz;
              resolve(res.biz);
              getBizLS.set("".concat(bizType, "_get_biz_result"), res.biz, +new Date() + 3 * 24 * 60 * 60 * 1000);
            } else {
              reject('Failed to get biz');
            }
          });
        }
      });
    });
  }
  function getBiz(needCheckBiz, bizType) {
    var _a;
    if (needCheckBiz === void 0) {
      needCheckBiz = false;
    }
    if (bizType === void 0) {
      bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
    }
    var bizMap = getBizMap();
    if (!needCheckBiz &amp;&amp; bizMap[bizType] !== undefined) {
      return Promise.resolve(bizMap[bizType]);
    }
    return invokeGetBiz(needCheckBiz, bizType);
  }
  mmversion.isOnlyWechat &amp;&amp; mmversion.isIOS || mmversion.isOnlyWechat &amp;&amp; mmversion.isAndroid || mmversion.isUnifiedPcWechat &amp;&amp; mmversion.cpVersion('4.1.10', 1, true, 'unifiedpc');
  var getIsAuthor = function getIsAuthor(cb, bizuin, needCheckBiz, bizType) {
    var _a;
    if (bizuin === void 0) {
      bizuin = window.biz;
    }
    if (needCheckBiz === void 0) {
      needCheckBiz = false;
    }
    if (bizType === void 0) {
      bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
    }
    getBiz(needCheckBiz, bizType).then(function (biz) {
      cb(biz &amp;&amp; biz === bizuin);
    })["catch"](function () {
      cb(false);
    });
  };

  function parseUrl(url) {
    var len = url.length;
    var ques_pos = url.indexOf('?');
    var hash_pos = url.indexOf('#');
    hash_pos = hash_pos == -1 ? len : hash_pos;
    ques_pos = ques_pos == -1 ? hash_pos : ques_pos;
    var host = url.substring(0, ques_pos);
    var query_str = url.substring(ques_pos + 1, hash_pos);
    var hash = url.substring(hash_pos + 1);
    return {
      host: host,
      query_str: query_str,
      hash: hash
    };
  }
  function join(url, args, noEncode) {
    var ret = parseUrl(url);
    var query_str = ret.query_str;
    var args_arr = [];
    if (_typeof(args) === 'object') {
      for (var key in args) {
        if (args.hasOwnProperty(key)) {
          args_arr.push("".concat(key, "=").concat(noEncode ? args[key] : encodeURIComponent(args[key])));
        }
      }
    } else {
      args_arr.push(noEncode ? args : encodeURIComponent(args));
    }
    if (args_arr.length &gt; 0) {
      query_str += (query_str !== "" ? "&amp;" : "") + args_arr.join("&amp;");
    }
    return ret.host + (query_str !== "" ? "?".concat(query_str) : "") + (ret.hash !== "" ? "#".concat(ret.hash) : "");
  }
  
  function addParam(url, param, value, forceReplace) {
    url = url || location.href;
    var firstAndPos = url.indexOf("&amp;");
    var len = url.length;
    var reverseUrl = url.replace(/^[\w\d]+:[/\\]+/g, "").split("").reverse();
    if (!Array.prototype.indexOf) {
      Array.prototype.indexOf = function (searchElement, fromIndex) {
        var k;
        if (this == null) {
          throw new TypeError('"this" is null or not defined');
        }
        var O = Object(this);
        var len = O.length &gt;&gt;&gt; 0;
        if (len === 0) {
          return -1;
        }
        var n = fromIndex || 0;
        if (Math.abs(n) === Infinity) {
          n = 0;
        }
        if (n &gt;= len) {
          return -1;
        }
        k = Math.max(n &gt;= 0 ? n : len - Math.abs(n), 0);
        while (k &lt; len) {
          if (k in O &amp;&amp; O[k] === searchElement) {
            return k;
          }
          k++;
        }
        return -1;
      };
    }
    var lastSlashPos = len - 1 - reverseUrl.indexOf("/");
    if (firstAndPos !== -1 &amp;&amp; url.indexOf("?") == -1 &amp;&amp; firstAndPos &gt; lastSlashPos) {
      url = url.replace("&amp;", "?");
    }
    var reg = new RegExp("([\\?&amp;]".concat(param, "=)[^&amp;#]*"));
    if (!url.match(reg)) {
      var urlInfo = parseUrl(url);
      var hash = urlInfo.hash ? '#' + urlInfo.hash : '';
      url = url.replace(hash, '');
      var _pos = url.indexOf("?");
      if (_pos == -1) {
        return "".concat(url, "?").concat(param, "=").concat(value).concat(hash);
      }
      if (_pos == url.length - 1) {
        return "".concat(url + param, "=").concat(value).concat(hash);
      }
      return "".concat(url, "&amp;").concat(param, "=").concat(value).concat(hash);
    }
    if (forceReplace === true) {
      return url.replace(reg, "$1".concat(value));
    }
    return url;
  }
  function addWxfrom(src, wxfrom) {
    var offset = window.service_type === 1 ? 10000 : 0;
    return addParam(src, 'wxfrom', offset + Number(wxfrom), true);
  }
  function removeParam(url, param) {
    var _URL = new URL(url),
      protocol = _URL.protocol,
      host = _URL.host,
      pathname = _URL.pathname,
      search = _URL.search,
      hash = _URL.hash;
    var queryParams = new URLSearchParams(search);
    queryParams["delete"](param);
    var newSearch = queryParams.toString();
    var newUrl = new URL("".concat(protocol, "//").concat(host).concat(pathname).concat(newSearch ? "?".concat(decodeURIComponent(newSearch)) : "").concat(hash));
    return newUrl.toString();
  }
  function getQuery(name, url) {
    var u = url || window.location.search;
    var reg = new RegExp("(^|&amp;)".concat(name, "=([^&amp;]*)(&amp;|$)"));
    var r = u.substring(u.indexOf('?') + 1).match(reg);
    return r !== null ? r[2] : '';
  }
  function encodeBase64(value) {
    try {
      return window.btoa(value);
    } catch (e) {
      return '';
    }
  }
  function decodeBase64(value) {
    try {
      return window.atob(value);
    } catch (e) {
      return '';
    }
  }
  function joinUrl$1(url) {
    var obj = {};
    if (typeof window.uin !== 'undefined') {
      obj.uin = window.uin;
    }
    if (typeof window.key !== 'undefined') {
      obj.key = window.key;
    }
    if (typeof window.pass_ticket !== 'undefined') {
      obj.pass_ticket = window.pass_ticket;
    }
    if (typeof window.wxtoken !== 'undefined') {
      obj.wxtoken = window.wxtoken;
    }
    if (typeof window.devicetype !== 'undefined') {
      obj.devicetype = window.devicetype;
    }
    if (typeof window.clientversion !== 'undefined') {
      obj.clientversion = window.clientversion || mmversion.getInner();
    }
    obj.version = obj.clientversion;
    if (window.biz) {
      obj.__biz = window.biz;
    }
    if (getQuery('enterid')) {
      obj.enterid = getQuery('enterid');
    }
    if (typeof window.appmsg_token !== 'undefined') {
      obj.appmsg_token = window.appmsg_token;
    } else if (url.indexOf('advertisement_report') &gt; -1) {
      new Image().src = "".concat(location.protocol, "//mp.weixin.qq.com/mp/jsmonitor?idkey=68064_13_1&amp;r=").concat(Math.random());
    }
    obj.x5 = navigator.userAgent.indexOf('TBS/') !== -1 ? '1' : '0';
    obj.f = 'json';
    return join(url, obj);
  }
  function joinUserArticleRole(url, notJoin, cb) {
    var bizuin = arguments.length &gt; 3 &amp;&amp; arguments[3] !== undefined ? arguments[3] : window.biz;
    var needCheckBiz = arguments.length &gt; 5 &amp;&amp; arguments[5] !== undefined ? arguments[5] : false;
    if (notJoin) {
      cb(url);
    } else {
      getIsAuthor(function (isAuthor) {
        cb(addParam(url, 'user_article_role', isAuthor ? 1 : 0, true));
      }, bizuin, needCheckBiz);
    }
  }
  function getA8keyQuery(name, url) {
    return new Promise(function (resolve) {
      if (window.__secPageAuthPromise) {
        window.__secPageAuthPromise.then(function () {
          resolve(getQuery(name, url));
        });
      } else {
        resolve(getQuery(name, url));
      }
    });
  }
  function addHash(url, hash) {
    var isReplace = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    if (isReplace) {
      return "".concat(url.split('#')[0]).concat(hash);
    }
    return "".concat(url).concat(url.indexOf('#') === -1 ? '#' : '').concat(hash);
  }
  function decodeUrl(url) {
    var _url = url;
    while (_url.indexOf('&amp;amp;') !== -1) {
      _url = _url.htmlDecode();
    }
    return _url;
  }
  var Url = {
    parseUrl: parseUrl,
    join: join,
    addParam: addParam,
    addWxfrom: addWxfrom,
    addHash: addHash,
    getQuery: getQuery,
    getA8keyQuery: getA8keyQuery,
    encodeBase64: encodeBase64,
    decodeBase64: decodeBase64,
    joinUrl: joinUrl$1,
    joinUserArticleRole: joinUserArticleRole,
    removeParam: removeParam,
    decodeUrl: decodeUrl
  };

  var isIPadOS13 = Device.os.ipad &amp;&amp; Device.os.getNumVersion() &gt;= 13 &amp;&amp; Device.os.getNumVersion() &lt; 14;
  
  var ARTICLE_FONT_SCALE_CHANGE_EVENT = 'article-font-scale-change';
  
  var FONT_LEVEL_TO_SCALE_MAP = [0.94, 1, 1.2, 1.3, 1.44, 1.5, 1.62, 1.7];
  function isSupportTextSizeAdjust() {
    var _a, _b;
    if (mmversion.isIOS) {
      return true;
    }
    return mmversion.isAndroid &amp;&amp; !!((_b = (_a = window.xweb_wechat_extend) === null || _a === void 0 ? void 0 : _a.AvailableFeatures) === null || _b === void 0 ? void 0 : _b.includes('XWEB_SUPPORT_TEXT_SIZE_ADJUST'));
  }
  function getNativeFontScaleVar() {
    if (window.__nativeFontScale__) {
      return window.__nativeFontScale__;
    }
    setNativeFontScaleVar(getScaleByDom());
    return window.__nativeFontScale__;
  }
  function setNativeFontScaleVar(val) {
    window.__nativeFontScale__ = val || 1;
  }
  function getNativeFontLevelVar() {
    var _a;
    if (window.__nativeFontLevel__) {
      return window.__nativeFontLevel__;
    }
    var fontLevel = +Url.getQuery('fontLevel');
    if (!fontLevel) {
      try {
        var envStr = (_a = window.__wxWebEnv) === null || _a === void 0 ? void 0 : _a.getEnv();
        if (envStr) {
          var envData = JSON.parse(envStr);
          if (envData.fontLevel) fontLevel = +envData.fontLevel;
        }
      } catch (e) {}
    }
    setNativeFontLevelVar(fontLevel);
    return window.__nativeFontLevel__;
  }
  function setNativeFontLevelVar(val) {
    window.__nativeFontLevel__ = val || 2;
  }
  function getScaleByDPR() {
    var _a;
    if (window.__dprScale__ !== null &amp;&amp; window.__dprScale__ !== undefined) return window.__dprScale__;
    try {
      var scale = (_a = window.__wxWebEnv) === null || _a === void 0 ? void 0 : _a.getLayoutScale();
      if (typeof scale === 'number' &amp;&amp; scale &gt; 0 &amp;&amp; isFinite(scale)) {
        window.__dprScale__ = 1 / scale;
        return window.__dprScale__;
      }
    } catch (e) {
    }
    window.__dprScale__ = 1;
    return window.__dprScale__;
  }
  function getNativeFontScale() {
    return getNativeFontScaleVar() * getScaleByDPR();
  }
  function getScaleByDom() {
    if (typeof document === 'undefined' || !document.body) {
      return 1;
    }
    var fontDom = document.createElement('div');
    fontDom.style.fontSize = '16px';
    document.body.appendChild(fontDom);
    var originFontSize = parseFloat(fontDom.style.fontSize);
    var realFontSize = parseFloat(window.getComputedStyle(fontDom, null).getPropertyValue('font-size'));
    document.body.removeChild(fontDom);
    var percent = realFontSize / originFontSize;
    if (!percent || percent &lt;= 0 || !isFinite(percent)) {
      return 1;
    }
    return percent;
  }
  function getScaleFromParent(node) {
    var targetNode;
    if (node instanceof ShadowRoot) {
      targetNode = node.host;
    } else {
      targetNode = node;
    }
    var originScale = targetNode.getAttribute('mp-font-scale');
    if (originScale) {
      return parseFloat(originScale);
    }
    if (!targetNode.parentElement) return getNativeFontScale();
    return getScaleFromParent(targetNode.parentElement);
  }
  function setFontSize(root, percent, fontScale) {
    if (root === null || !percent || mmversion.isPcWechat || !mmversion.isWechat) return;
    if (isSupportTextSizeAdjust()) {
      var targetEl = root instanceof ShadowRoot ? root.host : root;
      targetEl.setAttribute('mp-font-scale', percent.toString());
      var adjustValue = mmversion.isIOS ? "".concat(percent * 100, "%") : "".concat(percent * 100 / getNativeFontScale(), "%");
      targetEl.style.setProperty('-webkit-text-size-adjust', adjustValue);
      targetEl.style.setProperty('text-size-adjust', adjustValue);
      return;
    }
    var nowFontScale = fontScale || getScaleFromParent(root);
    if (root instanceof ShadowRoot) {
      root.host.setAttribute('mp-font-scale', percent.toString());
    } else {
      root.setAttribute('mp-font-scale', percent.toString());
    }
    var setQueue = [];
    var textWalker = document.createTreeWalker(root, 1);
    do {
      var textContainer = textWalker.currentNode;
      if (textContainer.nodeType !== 1) continue;
      if (textContainer.tagName &amp;&amp; customElements.get(textContainer.tagName.toLowerCase()) &amp;&amp; textContainer.shadowRoot) {
        var shadowRoot = textContainer.shadowRoot;
        setFontSize(shadowRoot, percent, fontScale);
        continue;
      }
      var oriFontSize = textContainer.getAttribute('mp-original-font-size');
      if (!oriFontSize) {
        if (isIPadOS13) {
          oriFontSize = String(parseFloat(getComputedStyle(textContainer).fontSize));
        } else {
          oriFontSize = String(parseFloat(getComputedStyle(textContainer).fontSize) / nowFontScale);
        }
        textContainer.setAttribute('mp-original-font-size', oriFontSize);
      }
      var oriLineHeight = textContainer.getAttribute('mp-original-line-height');
      if (!oriLineHeight) {
        oriLineHeight = parseFloat(getComputedStyle(textContainer).lineHeight) / parseFloat(getComputedStyle(textContainer).fontSize);
        textContainer.setAttribute('mp-original-line-height', String(oriLineHeight));
      }
      setQueue.push([textContainer, oriFontSize, oriLineHeight]);
    } while (textWalker.nextNode());
    for (var _i = 0, _setQueue = setQueue; _i &lt; _setQueue.length; _i++) {
      var setPair = _setQueue[_i];
      var originalSize = parseFloat(setPair[1]);
      if (isNaN(originalSize) || originalSize &lt;= 0) {
        continue;
      }
      var calculatedSize = originalSize * (percent / getNativeFontScale());
      if (!isFinite(calculatedSize) || calculatedSize &lt;= 0 || calculatedSize &gt; 1000) {
        continue;
      }
      setPair[0].style.fontSize = "".concat(calculatedSize, "px");
      setPair[0].style.lineHeight = "".concat(setPair[2]);
    }
  }
  
  function getLevelScaleByFontLevel(fontLevel) {
    var level = Math.max(0, Math.min(fontLevel, FONT_LEVEL_TO_SCALE_MAP.length - 1));
    return FONT_LEVEL_TO_SCALE_MAP[level];
  }
  function getClientFontScaleValue() {
    var useFontLevel = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : false;
    if (useFontLevel) {
      var fontLevel = getNativeFontLevelVar();
      return getLevelScaleByFontLevel(fontLevel - 1) * 100;
    }
    return getNativeFontScale() * 100;
  }
  
  function setArticleContentFontSize(percent, root) {
    var contentEl = root || document.getElementById('js_content');
    if (contentEl) {
      window.__contentFontScale__ = percent;
      EventBus.emit(ARTICLE_FONT_SCALE_CHANGE_EVENT, percent);
      setFontSize(contentEl, percent);
    }
  }
  
  function applyContentFontScale(localFontScale) {
    var useFontLevel = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : true;
    var root = arguments.length &gt; 2 ? arguments[2] : undefined;
    if (!localFontScale) return;
    var clientFontScale = getClientFontScaleValue(useFontLevel);
    var finalFontScale = localFontScale * clientFontScale / 100;
    setArticleContentFontSize(finalFontScale, root);
  }

  var initJsBridge = false;
  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }
  function connectWebViewJavascriptBridge(callback) {
    if (window.WebViewMPapp || window.WebViewJavascriptBridge) {
      return callback(window.WebViewMPapp || window.WebViewJavascriptBridge);
    }
    if (window.WVJBCallbacks) {
      return window.WVJBCallbacks.push(callback);
    }
    window.WVJBCallbacks = [callback];
    if (!mmversion.isMpapp) {
      return false;
    }
    if (!initJsBridge) {
      initJsBridge = true;
      var WVJBIframe = document.createElement('iframe');
      WVJBIframe.style.display = 'none';
      WVJBIframe.src = 'https://__bridge_loaded__';
      document.body.appendChild(WVJBIframe);
      setTimeout(function () {
        initJsBridge = false;
        document.body.removeChild(WVJBIframe);
      }, 0);
    }
    return false;
  }
  function invoke(jsapiName, opt, callback) {
    connectWebViewJavascriptBridge(function (bridge) {
      try {
        if (typeof opt === 'function') {
          callback = opt;
        }
        if (_typeof(opt) !== 'object' &amp;&amp; typeof opt !== 'string') {
          opt = {};
        }
        bridge.callHandler(jsapiName, opt, function (res) {
          try {
            var ret = _typeof(res) === 'object' ? res : JSON.parse(res);
            var errMsg = ret.err_msg || ret.errMsg;
            console.info("[mpapp jsapi] invoke-&gt;".concat(jsapiName, " ").concat(opt.action || '', " ").concat(errMsg));
            typeof callback === 'function' &amp;&amp; callback(ret);
          } catch (e) {
            window.WX_BJ_REPORT.BadJs.report('invoke', "callback ".concat(jsapiName, " error:"), {
              mid: 'mmbizwebapp:js_brridge',
              _info: e
            });
            console.error("[mpapp jsapi] ".concat(jsapiName, " ").concat(opt.action || ''), e, res);
          }
        });
      } catch (e) {
        window.WX_BJ_REPORT.BadJs.report('invoke', 'callback error:', {
          mid: 'mmbizwebapp:js_brridge',
          _info: e
        });
        console.error('[mpapp jsapi]', e);
      }
    });
  }

  
  function _log(level, msg) {
    if (level === 'log') {
      level = 'info';
      msg = "[WechatFe]".concat(msg);
    } else {
      var prefix = "__wap__".concat(window.__second_open__ ? ' (sec)' : '');
      msg = "".concat(prefix, " ").concat(msg, " location:[").concat(location.href, "]");
    }
    msg += new Error().stack;
    if (mmversion.isMpapp) {
      invoke('WNNativeCallbackLog', msg);
    } else if (mmversion.isWechat) {
      if (mmversion.isAndroid) {
        console.warn('[system]', "[MicroMsg.JsApiLog][".concat(level, "] jslog : ").concat(msg));
      } else if (mmversion.isIOS) {
        JSAPI.invoke('writeLog', {
          level: level,
          msg: msg
        });
      } else {
        JSAPI.invoke('log', {
          level: level,
          msg: msg
        });
      }
    }
  }
  var Log = {
    info: function info() {
      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key &lt; _len; _key++) {
        args[_key] = arguments[_key];
      }
      _log('info', args.join(' '));
    },
    warn: function warn() {
      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
        args[_key2] = arguments[_key2];
      }
      _log('warn', args.join(' '));
    },
    error: function error() {
      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 &lt; _len3; _key3++) {
        args[_key3] = arguments[_key3];
      }
      _log('error', args.join(' '));
    },
    debug: function debug() {
      for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 &lt; _len4; _key4++) {
        args[_key4] = arguments[_key4];
      }
      _log('debug', args.join(' '));
    },
    log: function log() {
      for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 &lt; _len5; _key5++) {
        args[_key5] = arguments[_key5];
      }
      _log('info', args.join(' '));
    }
  };

  
  
  var reportLogs = [];
  var reportExtraLogs = [];
  var sendUrl = '/mp/jsmonitor?#wechat_redirect';
  var monitor = {};
  monitor._reportOptions = {
    idkey: {}
  };
  function ObjWithoutProperty(source, exclude) {
    if (source === null) return {};
    var target = {};
    var sourceKeys = Object.keys(source);
    for (var i = 0; i &lt; sourceKeys.length; i++) {
      var key = sourceKeys[i];
      if (exclude.indexOf(key) &gt;= 0) continue;
      target[key] = source[key];
    }
    return target;
  }
  function formatDataToString(data) {
    var reportData = [];
    for (var key in data) {
      if (Object.prototype.hasOwnProperty.call(data, key)) {
        reportData.push(key + '=' + encodeURIComponent(data[key]));
      }
    }
    return reportData.join('&amp;');
  }
  monitor.getReportData = function (opt) {
    opt = opt || {};
    var idkey = monitor._reportOptions.idkey || {};
    var key = null;
    var reportData = {};
    var nextKey;
    try {
      for (key in idkey) {
        if (Object.prototype.hasOwnProperty.call(idkey, key) &amp;&amp; idkey[key]) {
          reportLogs.push(key + '_' + idkey[key]);
        }
      }
    } catch (e) {
      return false;
    }
    if (reportLogs.length === 0) {
      return false;
    }
    if (reportExtraLogs.length) {
      reportData.lc = reportExtraLogs.length;
      reportExtraLogs.forEach(function (extraLog, index) {
        reportData["log".concat(index)] = extraLog;
      });
    }
    try {
      var reportOptions = monitor._reportOptions;
      if (reportOptions !== null &amp;&amp; reportOptions !== undefined) {
        for (nextKey in reportOptions) {
          if (Object.prototype.hasOwnProperty.call(reportOptions, nextKey)) {
            reportData[nextKey] = reportOptions[nextKey];
          }
        }
      }
    } catch (e) {
      reportData = {};
    }
    reportData.idkey = reportLogs.join(';');
    reportData.t = Math.random();
    if (opt.remove !== false) {
      reportLogs = [];
      reportExtraLogs = [];
      monitor._reportOptions = {
        idkey: {}
      };
    }
    return reportData;
  };
  monitor.setLogs = function (opt) {
    var id = opt.id;
    var key = opt.key;
    var value = opt.value;
    var extraLog = opt.log;
    var others = ObjWithoutProperty(opt, ['id', 'key', 'value', 'log']);
    var idkey = monitor._reportOptions.idkey || {};
    var param = id + '_' + key;
    if (idkey[param]) {
      idkey[param] += value;
    } else {
      idkey[param] = value;
    }
    monitor._reportOptions.idkey = idkey;
    if (extraLog) {
      reportExtraLogs.push(extraLog);
    }
    try {
      if (others !== null &amp;&amp; others !== undefined) {
        for (var otherKey in others) {
          if (Object.prototype.hasOwnProperty.call(others, otherKey)) {
            monitor._reportOptions[otherKey] = others[otherKey];
          }
        }
      }
    } catch (e) {
      console.log(e);
    }
    return monitor;
  };
  monitor.setAvg = function (id, key, value) {
    var idkey = monitor._reportOptions.idkey || {};
    var param1 = id + '_' + key;
    var param2 = id + '_' + (key - 1);
    if (idkey[param1]) {
      idkey[param1] += value;
    } else {
      idkey[param1] = value;
    }
    if (idkey[param2]) {
      idkey[param2] += 1;
    } else {
      idkey[param2] = 1;
    }
    monitor._reportOptions.idkey = idkey;
    return monitor;
  };
  monitor.setSum = function (id, key) {
    var value = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : 1;
    var idkey = monitor._reportOptions.idkey;
    var param = id + '_' + key;
    if (idkey[param]) {
      idkey[param] += value;
    } else {
      idkey[param] = value;
    }
    monitor._reportOptions.idkey = idkey;
    return monitor;
  };
  monitor.send = function (async, ajax, origin) {
    if (async !== false) {
      async = true;
    }
    var data = monitor.getReportData();
    origin = origin || '';
    if (!data) {
      return;
    }
    if (!!ajax &amp;&amp; ajax instanceof Function) {
      ajax({
        url: origin + sendUrl,
        type: 'POST',
        mayAbort: true,
        data: data,
        async: async,
        timeout: 2000,
        dontReport: true
      });
    } else {
      new Image().src = origin + '/mp/jsmonitor?' + formatDataToString(data) + '#wechat_redirect';
    }
  };
  if (typeof window !== 'undefined' &amp;&amp; window.__monitor) {
    monitor = window.__monitor;
  } else {
    typeof window !== 'undefined' &amp;&amp; (window.__monitor = monitor);
  }
  var monitor$1 = monitor;

  
  var logList = [];
  var log = function log(msg) {
    logList.push(msg);
  };
  var printLog = function printLog() {
    for (var i = 0, len = logList.length; i &lt; len; ++i) {
      console.log("[RespType]".concat(logList[i]));
    }
  };
  var isArray = function isArray(val) {
    return Object.prototype.toString.call(val) === '[object Array]';
  };
  var getValueType = function getValueType(value) {
    if (isArray(value)) {
      return 'array';
    }
    return _typeof(value);
  };
  var parseRtDesc = function parseRtDesc(rtDesc, k) {
    var type = 'mix';
    var isRequired = false;
    var key = k;
    if (k) {
      var requireKeyWord = '_R';
      var pos = k.indexOf(requireKeyWord);
      var len = k.length - requireKeyWord.length;
      isRequired = pos !== -1 &amp;&amp; pos === len;
      key = isRequired ? k.substring(0, len) : k;
    }
    if (typeof rtDesc === 'string') {
      type = rtDesc;
    } else if (isArray(rtDesc)) {
      type = 'array';
    } else if (_typeof(rtDesc) === 'object') {
      type = 'object';
    }
    return {
      key: key,
      type: type,
      isRequired: isRequired
    };
  };
  var checkForArrayRtDesc = function checkForArrayRtDesc(arr, rtDescs) {
    if (!isArray(arr)) {
      return false;
    }
    for (var i = 0, len = arr.length; i &lt; len; ++i) {
      var value = arr[i];
      var rtDesc = void 0;
      var j = 0;
      var flag = rtDescs.length === 0;
      while (rtDesc = rtDescs[j++]) {
        if (checkForRtDesc(value, rtDesc)) {
          flag = true;
          break;
        }
      }
      if (!flag) {
        return false;
      }
    }
    return true;
  };
  var checkForStringRtDesc = function checkForStringRtDesc(value, rtDesc) {
    var valueType = getValueType(value);
    var desc = parseRtDesc(rtDesc);
    var ret = desc.type === valueType;
    if (!ret) {
      log("miss match type : ".concat(valueType, " !== ").concat(desc.type));
    }
    return ret;
  };
  var checkForObjectRtDesc = function checkForObjectRtDesc(json, rtDesc) {
    if (_typeof(json) !== 'object' || isArray(json)) {
      log('must be object');
      return false;
    }
    var rootJson = json;
    var nowCheckValue = json;
    for (var k in rtDesc) {
      if (rtDesc.hasOwnProperty(k)) {
        var nowCheckDesc = rtDesc[k];
        var desc = parseRtDesc(nowCheckDesc, k);
        var key = desc.key;
        nowCheckValue = rootJson[key];
        var valueType = getValueType(nowCheckValue);
        if (desc.isRequired &amp;&amp; nowCheckValue === undefined) {
          log("is required @key=".concat(key));
          return false;
        }
        if (nowCheckValue !== undefined) {
          if (valueType !== desc.type &amp;&amp; desc.type !== 'mix') {
            log("miss match type : ".concat(valueType, " !== ").concat(desc.type, " @key=").concat(key));
            return false;
          }
          if ((valueType === 'array' || valueType === 'object') &amp;&amp; desc.type !== 'mix') {
            if (!checkForRtDesc(nowCheckValue, nowCheckDesc)) {
              return false;
            }
          }
        }
      }
    }
    return true;
  };
  var checkForRtDesc = function checkForRtDesc(json, rtDesc) {
    if (isArray(rtDesc)) {
      return checkForArrayRtDesc(json, rtDesc);
    }
    if (_typeof(rtDesc) === 'object') {
      return checkForObjectRtDesc(json, rtDesc);
    }
    if (typeof rtDesc === 'string') {
      return checkForStringRtDesc(json, rtDesc);
    }
    return false;
  };
  var _check = function check(json, rtDescs) {
    if (typeof json === 'string') {
      try {
        json = eval("(".concat(json, ")"));
      } catch (e) {
        log('parse json error');
        return false;
      }
    }
    if (_typeof(json) !== 'object') {
      log('must be object');
      return false;
    }
    if (!isArray(rtDescs)) {
      rtDescs = [rtDescs];
    }
    var rtDesc;
    var i = 0;
    while (rtDesc = rtDescs[i++]) {
      if (checkForRtDesc(json, rtDesc)) {
        return true;
      }
    }
    return false;
  };
  var RespTypes = {
    check: function check(json, rtDesc) {
      logList = [];
      try {
        var ret = _check(json, rtDesc);
        if (!ret) {
          printLog();
        }
        return ret;
      } catch (e) {
        logList.push("[rtException]".concat(e.toString()));
        printLog();
        return false;
      }
    },
    getMsg: function getMsg() {
      return logList.join(';');
    }
  };

  var _a;
  var doc;
  var isAcrossOrigin = false;
  try {
    doc = (_a = window.top) === null || _a === void 0 ? void 0 : _a.window.document;
  } catch (e) {
    isAcrossOrigin = true;
  }
  var StatusTextMap = {
    200: 'OK',
    302: 'Found',
    400: 'Bad Request',
    500: 'Internal Server Error'
  };
  function getIsAcrossOrigin() {
    return isAcrossOrigin;
  }
  function networkStartLog(item) {
    var _a, _b, _c, _d, _e;
    console.log('[system]', "&lt; [request ".concat(item.requestType, "]"), item.url, item.method, item);
    var rdevRequestId;
    var requestTime = performance.now() / 1000;
    if ((_b = (_a = window.RemoteDevSdk) === null || _a === void 0 ? void 0 : _a.instance) === null || _b === void 0 ? void 0 : _b.Network) {
      try {
        var willBeSentOptions = {
          url: item.url,
          method: item.method,
          requestHeaders: Object.assign({}, item.requestHeader || {}, {
            RDEV_REQUEST_TYPE: item.requestType
          }),
          requestBody: item.postData,
          requestTime: requestTime
        };
        rdevRequestId = window.RemoteDevSdk.instance.Network.customRequestWillBeSent(willBeSentOptions);
      } catch (err) {}
    }
    if ((_c = window.vConsole) === null || _c === void 0 ? void 0 : _c.network) {
      try {
        var vconsoleNetworkItem = (_e = (_d = window.vConsole.network).add) === null || _e === void 0 ? void 0 : _e.call(_d, Object.assign({}, item, {
          startTime: Date.now(),
          endTime: Date.now(),
          status: 0,
          readyState: 2,
          response: ''
        }));
        vconsoleNetworkItem.rdevRequestId = rdevRequestId;
        vconsoleNetworkItem.requestTime = requestTime;
        return vconsoleNetworkItem;
      } catch (err) {}
    }
    if (rdevRequestId) {
      return Object.assign(Object.assign({}, item), {
        id: '__only_rdev_log__',
        rdevRequestId: rdevRequestId,
        requestTime: requestTime
      });
    }
    return Object.assign({}, item, {
      id: '__system_log__'
    });
  }
  function networkEndLog(item) {
    var _a, _b, _c, _d, _e;
    console.log('[system]', "&gt; [response ".concat(item.requestType, "]"), item.url, item.response, item);
    if (item.rdevRequestId &amp;&amp; ((_b = (_a = window.RemoteDevSdk) === null || _a === void 0 ? void 0 : _a.instance) === null || _b === void 0 ? void 0 : _b.Network) &amp;&amp; item.id !== '__system_log__') {
      try {
        var finishedOptions = {
          requestId: item.rdevRequestId,
          url: item.url,
          status: +(item.status || '500'),
          statusText: StatusTextMap[+(item.status || '500')] || 'Error',
          responseHeaders: {
            RDEV_RESPONSE_TYPE: item.requestType
          },
          responseBody: item.response,
          requestTime: item.requestTime || 0,
          duration: item.costTime || (item.endTime &amp;&amp; item.startTime ? item.endTime - item.startTime : performance.now() / 1000 - (item.requestTime || 0))
        };
        window.RemoteDevSdk.instance.Network.customRequestFinished(finishedOptions);
      } catch (err) {}
    }
    if (((_c = window.vConsole) === null || _c === void 0 ? void 0 : _c.network) &amp;&amp; item.id !== '__system_log__') {
      try {
        item.statusText = "".concat(item.status);
        item.responseSize = item.response.length;
        item.responseSizeText = "".concat(item.response.length);
        return (_e = (_d = window.vConsole.network).update) === null || _e === void 0 ? void 0 : _e.call(_d, item.id, Object.assign({}, item, {
          readyState: 4
        }));
      } catch (err) {}
    }
  }
  function reqType(obj, path) {
    return obj.url.indexOf(path) &gt; -1 &amp;&amp; obj.url.indexOf('action=') === -1 &amp;&amp; (!obj.data || !obj.data.action);
  }
  function findAjaxScopeByConfig(url, config) {
    var pathname = new URL(url, location.href).pathname || '';
    var scope = config[pathname.slice(1)];
    if (scope) {
      return scope;
    }
  }
  function getAjaxScope(ajaxUrl) {
    if (Url.getQuery('no_transfer', location.href) !== '1' &amp;&amp; mmversion.isWechat &amp;&amp; !mmversion.isInMiniProgram &amp;&amp; !mmversion.isWxWork &amp;&amp; !mmversion.isMpapp &amp;&amp; !isAcrossOrigin &amp;&amp; window.__ajaxTransferConfig &amp;&amp; _typeof(window.__ajaxTransferConfig) === 'object' &amp;&amp; (
    mmversion.isIOS &amp;&amp; mmversion.compareHexVersion('1800282F') || mmversion.isAndroid &amp;&amp; mmversion.compareHexVersion('28002234') || mmversion.isWindowsWechat &amp;&amp; mmversion.cpVersion('3.9.5', 1, true, 'windows') || mmversion.isMacWechat &amp;&amp; mmversion.cpVersion('3.8.4', 1, true, 'mac') || mmversion.isHarmonyWechat &amp;&amp; mmversion.compareHexVersion('0xf3100b00') &amp;&amp; !mmversion.compareHexVersion('0xf3100c00') || mmversion.compareHexVersion('0xf3800b00'))) {
      try {
        return findAjaxScopeByConfig(ajaxUrl, window.__ajaxTransferConfig);
      } catch (err) {
        
      }
    }
  }
  function getActionByData(data) {
    var _a, _b;
    if (_typeof(data) === 'object' &amp;&amp; !(data instanceof Blob)) {
      if (data.hasOwnProperty('data') &amp;&amp; typeof data.data === 'string') {
        try {
          var workedData = JSON.parse(data.data);
          return workedData.action || '';
        } catch (e) {}
      }
      return data.action || '';
    }
    if (typeof data === 'string') {
      return ((_b = (_a = data.split(/[?&amp;]/).find(function (x) {
        return x.indexOf('action=') &gt;= 0;
      })) === null || _a === void 0 ? void 0 : _a.split('=')) === null || _b === void 0 ? void 0 : _b[1]) || '';
    }
    return '';
  }

  var METHOD_ENUM = {
    GET: 0,
    POST: 1
  };
  var __moon_report = window.__moon_report || function () {};
  var MOON_AJAX_SUCCESS_OFFSET = 3;
  var MOON_AJAX_NETWORK_OFFSET = 4;
  var MOON_AJAX_ERROR_OFFSET = 5;
  var MOON_AJAX_TIMEOUT_OFFSET = 6;
  var MOON_AJAX_COMPLETE_OFFSET = 7;
  var LENGTH_LIMIT = 4096;
  function reportRtError(type, id, key, content) {
    var log = '';
    var prefix = type === 'rt' ? 'rtCheckError' : 'Ajax Length Limit';
    if (content === null || content === void 0 ? void 0 : content.length) {
      var loglen = 1000;
      var len = content.length;
      var lc = Math.ceil(len / loglen);
      log = ["&amp;lc=".concat(lc)];
      for (var i = 0; i &lt; lc; ++i) {
        log.push("&amp;log".concat(i, "=") + "[".concat(prefix, "][").concat(i, "]").concat(encodeURIComponent(content.substring(i * loglen, i * loglen + loglen))));
      }
      log = log.join('');
    }
    var data = "idkey=".concat(id, "_").concat(key, "_1").concat(log, "&amp;r=").concat(Math.random());
    var xmlobj = new XMLHttpRequest();
    xmlobj.open('POST', "".concat(location.protocol, "//").concat(location.host, "/mp/jsmonitor?"), true);
    xmlobj.setRequestHeader('cache-control', 'no-cache');
    xmlobj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    xmlobj.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    xmlobj.send(data);
    if (type === 'ajaxLen') {
      monitor$1.setLogs({
        id: id,
        key: key,
        value: 1,
        log: log
      });
    }
  }
  function reportRt(id, key, content) {
    reportRtError('rt', id, key, content);
  }
  function reportAjaxLength(id, key, content) {
    reportRtError('ajaxLen', id, key, content);
  }
  function setXhrHeader(xhr, type, opt) {
    if (opt.contentType) {
      xhr.setRequestHeader('Content-Type', opt.contentType);
    } else if (type === 'POST') {
      xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    }
    if (!opt.noXRequestedWidthHeader) {
      xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    }
  }
  function Ajax(obj) {
    var report36408 = typeof obj.report36408 === 'function' ? obj.report36408 : function () {};
    if (obj.usePb) {
      obj.type = 'POST';
      obj.data = {
        data: JSON.stringify(obj.data)
      };
    }
    var ajaxScope = getAjaxScope(obj.url);
    var type = (obj.type || 'GET').toUpperCase();
    var timer;
    var _url;
    if (obj.notJoinUrl) {
      _url = obj.url;
    } else {
      _url = Url.joinUrl(obj.url);
    }
    Url.joinUserArticleRole(_url, !!obj.notJoinUrl, function (url) {
      var urlObj = new URL(url, location.origin);
      if (obj.f === 'html') {
        url = url.replace('&amp;f=json', '');
      }
      var data = null;
      if (obj.data instanceof Blob) {
        data = obj.data;
      } else if (_typeof(obj.data) === 'object') {
        var d = obj.data;
        var ds = [];
        for (var k in d) {
          if (d.hasOwnProperty(k)) {
            ds.push("".concat(k, "=").concat(encodeURIComponent(d[k])));
          }
        }
        data = ds.join('&amp;');
      } else {
        data = typeof obj.data === 'string' ? obj.data : null;
      }
      var beginTs;
      var beforeReq = function beforeReq() {
        if (reqType(obj, '/mp/getappmsgext')) {
          window.startGetAppmsgExtTime = Date.now();
          Log.log('start get appmsgext, url: ', obj.url);
        }
        if (reqType(obj, '/mp/getappmsgad')) {
          window.startGetAppmsgAdTime = Date.now();
          Log.log('start get appmsgad, url: ', obj.url);
        }
        beginTs = Date.now();
      };
      var beforeResp = function beforeResp(xhr) {
        if (reqType(obj, '/mp/getappmsgext')) {
          window.receiveGetAppmsgExt = "".concat(xhr.status, "|").concat(Date.now());
          Log.log("receive appmsgext response, status: ".concat(xhr.status));
        }
        if (reqType(obj, '/mp/getappmsgad')) {
          window.receiveGetAppmsgAd = "".concat(xhr.status, "|").concat(Date.now());
          Log.log("receive appmsgad response, status: ".concat(xhr.status));
        }
        if (Math.random() &lt; 0.001 &amp;&amp; window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs) {
          try {
            var key = ajaxScope ? 'transfer' : 'xhr';
            var interval = 250;
            var time = Date.now() - beginTs;
            var range = Math.floor(time / interval) * interval;
            var pathname = new URL(obj.url, location.href).pathname || '';
            window.WX_BJ_REPORT.BadJs.report("".concat(key, "_perf:").concat(pathname), JSON.stringify({
              status: xhr.status,
              time: "[".concat(range, "-").concat(range + interval, ")")
            }), {
              mid: 'mmbizwap:ajaxtransfer',
              view: 'wap_business'
            });
          } catch (err) {}
        }
      };
      var handleRespSucc = function handleRespSucc(xhr, requestType) {
        var _a, _b, _c, _d;
        try {
          var responseText = xhr.responseText;
          var resp = responseText;
          if (obj.dataType === 'json') {
            try {
              if (JSON &amp;&amp; JSON.parse) {
                resp = JSON.parse(resp);
              } else {
                resp = eval("(".concat(resp, ")"));
                monitor$1.setSum(523105, 127, 1).send();
              }
              var rtId = obj.rtId;
              var rtKey = obj.rtKey || 0;
              var rtDesc = obj.rtDesc;
              if (rtId &amp;&amp; rtDesc &amp;&amp; RespTypes &amp;&amp; !RespTypes.check(resp, rtDesc)) {
                reportRt(+rtId, +rtKey, "".concat(RespTypes.getMsg(), "[detail]").concat(responseText, ";").concat(obj.url));
              }
              if (resp &amp;&amp; resp.base_resp &amp;&amp; ((_a = resp.base_resp) === null || _a === void 0 ? void 0 : _a.ret) !== 0 &amp;&amp; typeof window.WX_BJ_REPORT !== 'undefined' &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; Math.random() &lt; 0.001) {
                var reportUrl = url;
                if (url.indexOf('?') !== -1) {
                  reportUrl = url.substring(0, url.indexOf('?'));
                  if (Url.getQuery('action', url)) {
                    reportUrl = "".concat(reportUrl, "?action=").concat(Url.getQuery('action', url));
                  }
                }
                if (!((reportUrl === '/mp/getappmsgext' || reportUrl === '/mp/getappmsgad') &amp;&amp; typeof resp.base_resp.ret === 'undefined')) {
                  window.WX_BJ_REPORT.BadJs.report(reportUrl, "ret=".concat(resp.base_resp.ret), {
                    mid: window.PAGE_MID,
                    view: 'wap_retcode'
                  });
                }
              }
            } catch (e) {
              obj.error &amp;&amp; obj.error(xhr, {
                type: 1,
                error: e,
                status: xhr.status
              });
              if (!obj.dontReport) {
                report36408({
                  CgiPath: urlObj.pathname || '',
                  Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                  Query: urlObj.search || '',
                  PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                  Method: type || '',
                  RequestType: requestType || 0,
                  RetType: 1,
                  HttpCode: xhr.status || 0,
                  Ret: 0
                });
              }
              return;
            }
          }
          if (_typeof(resp) === 'object' &amp;&amp; ((_b = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _b === void 0 ? void 0 : _b.ret) !== 0) {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                Method: type || '',
                RequestType: requestType || 0,
                RetType: 4,
                HttpCode: xhr.status || 0,
                Ret: ((_c = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _c === void 0 ? void 0 : _c.ret) || 0
              });
            }
          } else {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                Method: type || '',
                RequestType: requestType || 0,
                RetType: 0,
                HttpCode: xhr.status || 0,
                Ret: ((_d = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _d === void 0 ? void 0 : _d.ret) || 0
              });
            }
          }
          obj.success &amp;&amp; obj.success(resp);
        } catch (e) {
          __moon_report({
            offset: MOON_AJAX_SUCCESS_OFFSET,
            e: e
          });
          throw e;
        }
      };
      var handleRespErr = function handleRespErr(xhr, error, requestType) {
        try {
          obj.error &amp;&amp; obj.error(xhr, {
            type: 2,
            error: error,
            status: xhr.status
          });
          if (!obj.dontReport) {
            report36408({
              CgiPath: urlObj.pathname || '',
              Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
              Query: urlObj.search || '',
              PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
              Method: type,
              RequestType: requestType,
              RetType: 2,
              HttpCode: xhr.status,
              Ret: 0
            });
          }
        } catch (e) {
          __moon_report({
            offset: MOON_AJAX_ERROR_OFFSET,
            e: e
          });
          throw e;
        }
      };
      var handleRespComplete = function handleRespComplete() {
        clearTimeout(timer);
        try {
          obj.complete &amp;&amp; obj.complete();
        } catch (e) {
          __moon_report({
            offset: MOON_AJAX_COMPLETE_OFFSET,
            e: e
          });
          throw e;
        }
        obj.complete = null;
      };
      var handleReqTimeout = function handleReqTimeout(xhr) {
        if (typeof obj.timeout !== 'undefined') {
          timer = setTimeout(function () {
            xhr.abort();
            try {
              obj.complete &amp;&amp; obj.complete();
            } catch (e) {
              __moon_report({
                offset: MOON_AJAX_COMPLETE_OFFSET,
                e: e
              });
              throw e;
            }
            obj.complete = null;
            __moon_report({
              offset: MOON_AJAX_TIMEOUT_OFFSET,
              log: "ajax_timeout_error: ".concat(url),
              e: ''
            });
          }, obj.timeout);
        }
      };
      var retryXhrFn = function retryXhrFn(res, isTimeout, reqLogItem) {
        var retryXhr = new XMLHttpRequest();
        try {
          retryXhr._noVConsole = true;
        } catch (err) {}
        retryXhr.open(type, url);
        retryXhr.onreadystatechange = function () {
          if (isTimeout) return;
          if (retryXhr.readyState === 3) {
            obj.received &amp;&amp; obj.received(retryXhr);
          }
          if (retryXhr.readyState === 4) {
            beforeResp(retryXhr);
            var retryStatus = retryXhr.status;
            if (retryStatus &gt;= 200 &amp;&amp; retryStatus &lt; 400) {
              handleRespSucc(retryXhr, 1);
            } else {
              handleRespErr(retryXhr, res, 1);
              window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; window.WX_BJ_REPORT.BadJs.report('req_failure', JSON.stringify({
                retryXhrStatus: retryStatus,
                transferRes: res
              }), {
                mid: 'mmbizwap:ajaxtransfer',
                view: 'wap_business'
              });
            }
            reqLogItem.status = retryStatus;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = retryXhr.responseText;
            handleRespComplete();
            networkEndLog(reqLogItem);
          }
        };
        setXhrHeader(retryXhr, type, obj);
        retryXhr.send(data);
      };
      if (ajaxScope &amp;&amp; !obj.pureHttp) {
        var header = {
          'User-Agent': navigator.userAgent,
          'Cookie': (window.__test_env__ ? 'uniproxy_route=1; ' : '') + document.cookie,
          'Referer': location.href
        };
        if (obj.contentType) {
          header['Content-Type'] = obj.contentType;
        } else if (type === 'POST') {
          header['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
        }
        if (!obj.noXRequestedWidthHeader) {
          header['X-Requested-With'] = 'XMLHttpRequest';
        }
        var reqUrl = new URL(url, location.href).href;
        var method = METHOD_ENUM[type] || 0;
        var params = Device.os.pc ? {
          url: reqUrl,
          req_json: data || '',
          scope: ajaxScope,
          webcgi_method: method,
          webcgi_header: Object.keys(header).map(function (headerItemKey) {
            return Device.os.Mac ? _defineProperty({}, headerItemKey, header[headerItemKey]) : {
              key: headerItemKey,
              value: header[headerItemKey]
            };
          }),
          cgi_type: 1
        } : {
          reqUrl: reqUrl,
          reqBody: data,
          scope: ajaxScope,
          method: method,
          header: header
        };
        var reqLogItem = networkStartLog({
          method: type,
          url: url,
          postData: obj.data || {},
          requestHeader: header,
          requestType: 'transfer',
          startTime: Date.now(),
          responseType: url.indexOf('f=json') &gt; 0 ? 'json' : undefined
        });
        var isTimeout = false;
        handleReqTimeout({
          abort: function abort() {
            isTimeout = true;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = 'timeout';
            networkEndLog(reqLogItem);
          }
        });
        Device.os.pc &amp;&amp; monitor$1.setSum(115849, 69, 1);
        JSAPI.invoke(Device.os.pc ? 'H5ExtTransfer' : 'webTransfer', params, function (res) {
          var _a, _b, _c, _d, _e, _f;
          if (isTimeout) return;
          var status = 400;
          var result = '';
          if (Device.os.pc) {
            try {
              var retFlag = res.base_resp.ret === 0 &amp;&amp; res.jsapi_resp.ret === 0 &amp;&amp; res.err_msg.indexOf(':ok') &gt; -1;
              var respJsonFlag = res.jsapi_resp.resp_json;
              status = retFlag &amp;&amp; respJsonFlag ? 200 : 400;
              result = res.jsapi_resp.resp_json;
            } catch (err) {
              console.error(err);
            }
          } else {
            status = res &amp;&amp; res.errCode * 1 === 0 &amp;&amp; typeof res.result === 'string' &amp;&amp; res.result ? 200 : 400;
            result = res.result;
          }
          try {
            Log.log("ajax transfer, status: ".concat(status, ", reqUrl: ").concat(reqUrl));
          } catch (err) {
            console.error(err);
          }
          if (status &gt;= 200 &amp;&amp; status &lt; 400) {
            obj.received &amp;&amp; obj.received(null);
            beforeResp({
              status: status
            });
            handleRespSucc({
              status: status,
              responseText: result
            }, 10);
            reqLogItem.status = status;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = result;
            handleRespComplete();
            networkEndLog(reqLogItem);
          } else if (window.__second_open__) {
            JSAPI.invoke('request', {
              url: reqUrl,
              method: type,
              data: data,
              header: header
            }, function (retryRes) {
              try {
                Log.log("ajax retry request, retryStatus: ".concat((retryRes === null || retryRes === void 0 ? void 0 : retryRes.statusCode) || '', ", reqUrl: ").concat(reqUrl));
              } catch (err) {
                console.error(err);
              }
              if (isTimeout) return;
              var retryStatus = retryRes.statusCode;
              obj.received &amp;&amp; obj.received(null);
              beforeResp({
                status: retryStatus
              });
              if (retryRes.err_msg.indexOf(':ok') &gt; -1 &amp;&amp; retryStatus &gt;= 200 &amp;&amp; retryStatus &lt; 400) {
                handleRespSucc({
                  status: retryStatus,
                  responseText: retryRes.data
                }, 20);
              } else {
                retryXhrFn(res, isTimeout, reqLogItem);
                handleRespErr({
                  status: retryStatus
                }, res, 20);
                window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; window.WX_BJ_REPORT.BadJs.report('req_failure_sec_open', JSON.stringify({
                  retryReqJsapiRes: retryRes,
                  transferRes: res,
                  url: reqUrl
                }), {
                  mid: 'mmbizwap:ajaxtransfer',
                  view: 'wap_business'
                });
              }
              reqLogItem.status = retryStatus;
              reqLogItem.endTime = Date.now();
              reqLogItem.response = retryRes.data;
              handleRespComplete();
              networkEndLog(reqLogItem);
            });
          } else {
            retryXhrFn(res, isTimeout, reqLogItem);
          }
          if (Device.os.pc) {
            if (!res.err_msg.includes(':ok')) {
              (_b = (_a = window.WX_BJ_REPORT) === null || _a === void 0 ? void 0 : _a.BadJs) === null || _b === void 0 ? void 0 : _b.report("pc transfer res no ok: ".concat(res.err_msg), params.url || '', {
                mid: window.PAGE_MID,
                _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
              });
            }
            try {
              if (res.jsapi_resp.resp_json &amp;&amp; JSON.parse(res.jsapi_resp.resp_json).base_resp.ret !== 0 &amp;&amp; JSON.parse(res.jsapi_resp.resp_json).base_resp.ret !== 190001 || res.base_resp.ret !== 0 || res.jsapi_resp.ret !== 0) {
                (_d = (_c = window.WX_BJ_REPORT) === null || _c === void 0 ? void 0 : _c.BadJs) === null || _d === void 0 ? void 0 : _d.report("pc transfer res invalid ret", params.url || '', {
                  mid: window.PAGE_MID,
                  _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
                });
              }
            } catch (err) {}
          } else {
            try {
              if (res.errCode !== 0) {
                (_f = (_e = window.WX_BJ_REPORT) === null || _e === void 0 ? void 0 : _e.BadJs) === null || _f === void 0 ? void 0 : _f.report("mobile transfer res invalid ret", params.url || '', {
                  mid: window.PAGE_MID,
                  _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
                });
              }
            } catch (err) {}
          }
        });
        beforeReq();
        return;
      }
      var xhr = new XMLHttpRequest();
      var mayAbort = !!obj.mayAbort;
      var async = typeof obj.async === 'undefined' ? true : obj.async;
      var _onreadystatechange = xhr.onreadystatechange;
      xhr.open(type, url, async);
      xhr.onreadystatechange = function () {
        if (typeof _onreadystatechange === 'function') {
          _onreadystatechange.apply(xhr);
        }
        if (xhr.readyState === 3) {
          obj.received &amp;&amp; obj.received(xhr);
        }
        if (xhr.readyState === 4) {
          beforeResp(xhr);
          xhr.onreadystatechange = null;
          var status = xhr.status;
          if (status &gt;= 200 &amp;&amp; status &lt; 400) {
            handleRespSucc(xhr, 1);
          } else {
            handleRespErr(xhr, 'status error', 1);
            if (!!status || !mayAbort) {
              var __ajaxtest = window.__ajaxtest || '0';
              __moon_report({
                offset: MOON_AJAX_NETWORK_OFFSET,
                log: "ajax_network_error[".concat(status, "][").concat(__ajaxtest, "]: ").concat(url, ";host:").concat(location.host),
                e: ''
              });
            }
          }
          handleRespComplete();
        }
      };
      setXhrHeader(xhr, type, obj);
      handleReqTimeout(xhr);
      try {
        xhr.send(data);
        try {
          if (url &amp;&amp; url.length &gt; LENGTH_LIMIT) {
            reportAjaxLength(27613, 17, "ajax get limit[length: ".concat(url.length, "]").concat(url.substring(0, 1024)));
          }
          if (data &amp;&amp; !(data instanceof Blob) &amp;&amp; data.length &gt; LENGTH_LIMIT) {
            reportAjaxLength(27613, 18, "ajax post limit[length: ".concat(data.length, "]").concat(data.substring(0, 1024)));
          }
          if (data &amp;&amp; data instanceof Blob &amp;&amp; data.size &gt; LENGTH_LIMIT) {
            reportAjaxLength(27613, 18, "ajax post limit[length: ".concat(data.size, "]blob"));
          }
        } catch (e) {
        }
      } catch (e) {
        obj.error &amp;&amp; obj.error(xhr, {
          type: 3,
          error: e,
          status: 0
        });
      }
      beforeReq();
    });
  }

  
  mmversion.isWindowsWechat &amp;&amp; mmversion.compareHexVersion('0xf2550000') || mmversion.isMacWechat &amp;&amp; mmversion.compareHexVersion('0xf2650000');

  
  var getBrandServiceType = function getBrandServiceType() {
    var serviceType = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : window.service_type;
    var _a, _b;
    var brandServiceType = 0;
    if (serviceType !== undefined) brandServiceType = serviceType + 1;
    if (((_b = (_a = window.cgiData) === null || _a === void 0 ? void 0 : _a.trans_appmsg_info) === null || _b === void 0 ? void 0 : _b.trans_type) * 1 === 1) brandServiceType = 3;
    return brandServiceType;
  };

  function setCurrentMpInfo(ifShow) {
    var supportNewTopBar = mmversion.isIOS &amp;&amp; mmversion.gtVersion('7.0.10', true) || mmversion.isAndroid &amp;&amp; mmversion.gtVersion('7.0.12', true);
    var supportLiveStatus = mmversion.isIOS &amp;&amp; mmversion.gtVersion('8.0.46', true) || mmversion.isAndroid &amp;&amp; mmversion.gtVersion('8.0.46', true);
    JSAPI.invoke('currentMpInfo', {
      userName: window.user_name,
      brandName: !!supportNewTopBar &amp;&amp; window.nickname === '' ? '未命名账号' : window.title,
      title: window.msg_title || '',
      brandIcon: window.hd_head_img.replace(/\/0$/, '/132'),
      itemShowType: window.item_show_type,
      isPaySubscribe: window.isPaySubscribe,
      topBarStyle: supportNewTopBar ? 1 : 0,
      topBarShowed: ifShow,
      disableShowFinderLiveTopBar: !ifShow &amp;&amp; supportLiveStatus ? 1 : 0,
      brandServiceType: getBrandServiceType()
    }, function () {});
  }
  function AjaxWx(obj) {
    var report36408 = typeof obj.report36408 === 'function' ? obj.report36408 : function () {};
    obj.url += obj.url.indexOf('?') === -1 ? '?fasttmplajax=1' : '&amp;fasttmplajax=1';
    if (getAjaxScope(obj.url)) {
      Ajax(obj);
      return;
    }
    if (obj.usePb) {
      obj.type = 'POST';
      obj.data = {
        data: JSON.stringify(obj.data)
      };
    }
    if (!/^(http:\/\/|https:\/\/|\/\/)/.test(obj.url)) {
      obj.url = "https://mp.weixin.qq.com/".concat(obj.url.replace(/^\//, ''));
    } else if (/^\/\//.test(obj.url)) {
      obj.url = "https:".concat(obj.url);
    }
    if (obj.f !== 'html' &amp;&amp; (obj.url.indexOf('?f=json') === -1 || obj.url.indexOf('&amp;f=json') === -1)) {
      obj.url += '&amp;f=json';
    }
    if (!obj.notJoinUrl &amp;&amp; obj.f !== 'html') {
      obj.url = Url.joinUrl(obj.url);
    }
    Url.joinUserArticleRole(obj.url, !!obj.notJoinUrl, function (url) {
      obj.url = url;
      var urlObj = new URL(url, location.origin);
      var data = null;
      if (_typeof(obj.data) === 'object') {
        var d = obj.data;
        var ds = [];
        for (var k in d) {
          if (d.hasOwnProperty(k)) {
            ds.push("".concat(k, "=").concat(encodeURIComponent(d[k])));
          }
        }
        data = ds.join('&amp;');
      } else {
        data = typeof obj.data === 'string' ? obj.data : null;
      }
      var header = {
        Cookie: document.cookie,
        referer: location.href
      };
      if (obj.contentType) {
        header['Content-Type'] = obj.contentType;
      } else if ((obj.type || 'GET').toUpperCase() === 'POST') {
        header['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
      }
      var reqLogItem = networkStartLog({
        method: obj.type || 'GET',
        url: obj.url,
        postData: obj.data || {},
        requestHeader: header,
        requestType: 'jsapi',
        startTime: Date.now()
      });
      var retryTime = 1;
      var jsapiRequest = function jsapiRequest(obj, data) {
        return JSAPI.invoke('request', {
          url: obj.url,
          method: obj.type,
          data: data,
          header: header
        }, function (res) {
          var _a, _b, _c, _d, _e, _f;
          if (res.err_msg.indexOf(':ok') &gt; -1 &amp;&amp; (!res.statusCode || res.statusCode &gt;= 200 &amp;&amp; res.statusCode &lt; 400)) {
            if (reqType(obj, '/mp/getappmsgext')) {
              window.receiveGetAppmsgExt = "".concat(res.statusCode, "|").concat(Date.now());
            }
            if (reqType(obj, '/mp/getappmsgad')) {
              window.receiveGetAppmsgAd = "".concat(res.statusCode, "|").concat(Date.now());
            }
            if (retryTime === 1) {
              obj.received &amp;&amp; obj.received(null);
            }
            var resData = {};
            if (res.data) {
              try {
                if (obj.dataType === 'json') {
                  resData = JSON.parse(res.data);
                } else {
                  resData = res.data;
                }
                if (resData &amp;&amp; resData.base_resp &amp;&amp; ((_a = resData.base_resp) === null || _a === void 0 ? void 0 : _a.ret) !== 0 &amp;&amp; typeof window.WX_BJ_REPORT !== 'undefined' &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; Math.random() &lt; 0.001) {
                  var reportUrl = obj.url;
                  if (obj.url.indexOf('?') !== -1) {
                    reportUrl = obj.url.substring(0, obj.url.indexOf('?'));
                    if (Url.getQuery('action', obj.url)) {
                      reportUrl = "".concat(reportUrl, "?action=").concat(Url.getQuery('action', obj.url));
                    }
                  }
                  if (!((reportUrl === '/mp/getappmsgext' || reportUrl === '/mp/getappmsgad') &amp;&amp; typeof resData.base_resp.ret === 'undefined')) {
                    window.WX_BJ_REPORT.BadJs.report(reportUrl, "ret=".concat(resData.base_resp.ret), {
                      mid: window.PAGE_MID,
                      view: 'wap_retcode'
                    });
                  }
                }
              } catch (e) {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 1,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_b = resData === null || resData === void 0 ? void 0 : resData.base_resp) === null || _b === void 0 ? void 0 : _b.ret) || 0
                  });
                }
                console.error(e);
                obj.error &amp;&amp; obj.error(null, {
                  type: 1,
                  error: e,
                  status: res.statusCode
                });
                obj.complete &amp;&amp; obj.complete();
                reqLogItem.endTime = Date.now();
                reqLogItem.response = res;
                networkEndLog(reqLogItem);
                return;
              }
            }
            var tmpResData = {};
            try {
              tmpResData = JSON.parse(res.data);
            } catch (e) {}
            if (tmpResData &amp;&amp; tmpResData.base_resp &amp;&amp; tmpResData.base_resp.ret === -3 &amp;&amp; retryTime &lt; 2 &amp;&amp; (mmversion.isIOS || mmversion.isAndroid &amp;&amp; mmversion.getInner() &gt; '27000600')) {
              if (!obj.dontReport) {
                report36408({
                  CgiPath: urlObj.pathname || '',
                  Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                  Query: urlObj.search || '',
                  PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                  Method: obj.type || '',
                  RequestType: 20,
                  RetType: 1,
                  HttpCode: res.statusCode || 0,
                  Ret: ((_c = resData === null || resData === void 0 ? void 0 : resData.base_resp) === null || _c === void 0 ? void 0 : _c.ret) || 0
                });
              }
              var _retryTime = retryTime++;
              JSAPI.invoke('updatePageAuth', {}, function (res) {
                console.log('[skeleton] updatePageAuth', res);
                monitor$1.setSum(112287, 3, 1);
                if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf(':ok') &gt; -1) {
                  window.top.pass_ticket = encodeURIComponent(Url.getQuery('pass_ticket', res.fullUrl).html(false).replace(/\s/g, '+'));
                  if (obj.pass_ticket) {
                    obj.pass_ticket = window.top.pass_ticket;
                  }
                  console.warn('[skeleton] updatePageAuth resetTopbar');
                  var supportNewTopBar = mmversion.isIOS &amp;&amp; mmversion.gtVersion('7.0.10', true);
                  var showBottomBar = !!window.is_login;
                  if (window.top.item_show_type === '0' &amp;&amp; supportNewTopBar) {
                    var top = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop || 0;
                    setCurrentMpInfo(top &gt; 40 &amp;&amp; !showBottomBar);
                  }
                  try {
                    obj.url = Url.addParam(obj.url, 'retry', _retryTime, true);
                  } catch (err) {
                    console.error(err);
                  }
                  jsapiRequest(obj, data);
                  monitor$1.setSum(112287, 4, 1);
                } else {
                  obj.success &amp;&amp; obj.success(resData);
                  obj.complete &amp;&amp; obj.complete();
                  if (mmversion.isIOS) {
                    monitor$1.setSum(112287, 35, 1);
                  } else {
                    monitor$1.setSum(112287, 36, 1);
                  }
                  reqLogItem.status = 200;
                  reqLogItem.endTime = Date.now();
                  reqLogItem.response = resData;
                  networkEndLog(reqLogItem);
                }
              });
            } else {
              if (((_d = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _d === void 0 ? void 0 : _d.ret) !== 0) {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 4,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_e = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _e === void 0 ? void 0 : _e.ret) || 0
                  });
                }
              } else {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 0,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_f = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _f === void 0 ? void 0 : _f.ret) || 0
                  });
                }
              }
              obj.success &amp;&amp; obj.success(resData);
              obj.complete &amp;&amp; obj.complete();
              reqLogItem.status = 200;
              reqLogItem.endTime = Date.now();
              reqLogItem.response = resData;
              networkEndLog(reqLogItem);
            }
          } else if (res.err_msg.indexOf('no permission') &gt; -1 || !mmversion.isOnlyWechat) {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                Method: obj.type || '',
                RequestType: 20,
                RetType: 1,
                HttpCode: res.statusCode || 0,
                Ret: 0
              });
            }
            Ajax(obj);
            if (res.err_msg.indexOf('no permission') &gt; -1) {
              console.warn('[JSAPI Request] No permission');
              monitor$1.setSum(112287, 31, 1);
            }
            reqLogItem.status = 302;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = res;
            networkEndLog(reqLogItem);
          } else {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                Method: obj.type || '',
                RequestType: 20,
                RetType: 2,
                HttpCode: res.statusCode || 0,
                Ret: 0
              });
            }
            obj.error &amp;&amp; obj.error(null, {
              type: 3,
              error: res,
              status: 0
            });
            obj.complete &amp;&amp; obj.complete();
            monitor$1.setSum(112287, 32, 1);
            var sample = 0.001;
            if (Math.random() &lt; sample) {
              var msg = "request: ".concat(JSON.stringify(obj.type), " ").concat(JSON.stringify(obj.url), " ;;;; cookie: ").concat(JSON.stringify(document.cookie), " ;;;; data: ").concat(JSON.stringify(data), " ;;;; resp: ").concat(JSON.stringify(res));
              if (window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs) {
                window.WX_BJ_REPORT.BadJs.report('ajax_wx_request_error', msg, {
                  mid: 'mmbizwap:Monitor'
                });
              }
            }
            reqLogItem.status = 400;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = res;
            networkEndLog(reqLogItem);
          }
        });
      };
      if (reqType(obj, '/mp/getappmsgext')) {
        window.startGetAppmsgExtTime = Date.now();
      }
      if (reqType(obj, '/mp/getappmsgad')) {
        window.startGetAppmsgAdTime = Date.now();
      }
      jsapiRequest(obj, data);
    });
  }

  function _regeneratorRuntime() {  _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  var AjaxRouter = function () {
    var _ref = _asyncToGenerator( _regeneratorRuntime().mark(function _callee(obj) {
      return _regeneratorRuntime().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            if (!window.__secPageAuthPromise) {
              _context.next = 3;
              break;
            }
            _context.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            if (!(!mmversion.isWxWork &amp;&amp; (window.__second_open__ || !getIsAcrossOrigin() &amp;&amp; top.window.__second_open__) &amp;&amp; window.__is_page_auth_return__ &amp;&amp; !obj.pureHttp)) {
              _context.next = 5;
              break;
            }
            return _context.abrupt("return", AjaxWx(obj));
          case 5:
            return _context.abrupt("return", Ajax(obj));
          case 6:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return function AjaxRouter(_x) {
      return _ref.apply(this, arguments);
    };
  }();

  var isx5 = navigator.userAgent.indexOf('TBS/') !== -1;
  var getDataFunc = [];
  var reportData = [];
  
  var specificData = {};
  function joinUrl(url) {
    var obj = {};
    if (typeof window.uin !== 'undefined') {
      obj.uin = window.uin;
    }
    if (typeof window.key !== 'undefined') {
      obj.key = window.key;
    }
    if (typeof window.pass_ticket !== 'undefined') {
      obj.pass_ticket = window.pass_ticket;
    }
    if (typeof window.wxtoken !== 'undefined') {
      obj.wxtoken = window.wxtoken;
    }
    if (typeof window.devicetype !== 'undefined') {
      obj.devicetype = window.devicetype;
    }
    if (typeof window.clientversion !== 'undefined') {
      obj.clientversion = window.clientversion;
    }
    if (typeof window.appmsg_token !== 'undefined') {
      obj.appmsg_token = window.appmsg_token;
    } else if (url.indexOf('advertisement_report') &gt; -1) {
      new Image().src = "".concat(location.protocol, "//mp.weixin.qq.com/mp/jsmonitor?idkey=68064_13_1&amp;r=").concat(Math.random());
    }
    obj.x5 = isx5 ? '1' : '0';
    obj.f = 'json';
    return Url.join(url, obj);
  }
  function isObj(obj) {
    return obj &amp;&amp; _typeof(obj) === 'object';
  }
  function assign(target, source) {
    if (isObj(target) &amp;&amp; isObj(source)) {
      for (var key in source) {
        if (Object.prototype.hasOwnProperty.call(source, key)) {
          target[key] = source[key];
        }
      }
    }
  }
  function assembleReportData(initiative) {
    var leaveReportLog = [];
    leaveReportLog.push({
      content: "[LeaveReport] specificData keys: ".concat(Object.keys(specificData)),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] specificData keys: ".concat(Object.keys(specificData)));
    console.log("[LeaveReport] specificData keys: ".concat(Object.keys(specificData)));
    var allReportData = {};
    for (var reportField in specificData) {
      if (!allReportData[reportField]) {
        allReportData[reportField] = {};
      }
      for (var i = 0; i &lt; specificData[reportField].length; i++) {
        var param = specificData[reportField][i];
        if (typeof param === 'function') {
          try {
            assign(allReportData[reportField], param(initiative));
          } catch (err) {
            leaveReportLog.push({
              content: "[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)),
              timestamp: Date.now()
            });
            Log.error("[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)));
            console.error("[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)));
          }
        } else if (isObj(param)) {
          assign(allReportData[reportField], param);
        }
      }
    }
    leaveReportLog.push({
      content: "[LeaveReport] reportData.length: ".concat(reportData.length),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] reportData.length: ".concat(reportData.length));
    console.log("[LeaveReport] reportData.length: ".concat(reportData.length));
    leaveReportLog.push({
      content: "[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length));
    console.log("[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length));
    for (var _i = 0; _i &lt; getDataFunc.length; _i++) {
      try {
        var data = getDataFunc[_i](initiative);
        if (isObj(data)) {
          reportData.push(data);
        }
      } catch (err) {
        leaveReportLog.push({
          content: "[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)),
          timestamp: Date.now()
        });
        Log.error("[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)));
        console.error("[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)));
      }
    }
    for (var _i2 = 0; _i2 &lt; reportData.length; _i2++) {
      if (reportData[_i2].reportUrl) {
        reportData[_i2].reportUrl = joinUrl(reportData[_i2].reportUrl);
      }
    }
    allReportData.data = {
      'requestList': reportData
    };
    leaveReportLog.push({
      content: "[LeaveReport] final reportData.length: ".concat(reportData.length, ", data=").concat(JSON.stringify(reportData)),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] final reportData.length: ".concat(reportData.length));
    console.log("[LeaveReport] final reportData.length: ".concat(reportData.length));
    allReportData.info = leaveReportLog;
    return allReportData;
  }
  function addReport(param) {
    if (typeof param === 'function') {
      getDataFunc.push(param);
    } else if (isObj(param)) {
      reportData.push(param);
    }
  }
  
  function addSpecificReport(reportField, param) {
    if (!specificData[reportField]) {
      specificData[reportField] = [];
    }
    specificData[reportField].push(param);
  }
  
  function reportNow(callback) {
    var allReportData = assembleReportData(true);
    JSAPI.invoke('handleMPPageAction', {
      action: 'reportByLeaveForMPGateway',
      reportData: allReportData
    }, function (res) {
      if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf(':ok') !== -1) {
        getDataFunc = [];
        reportData = [];
        specificData = {};
        typeof callback === 'function' &amp;&amp; callback(res);
      } else {
        getDataFunc = [];
        reportData = [];
        var len = allReportData.data.requestList.length;
        allReportData.data.requestList.forEach(function (req) {
          if (req.reportUrl) {
            AjaxRouter({
              type: req.method || 'GET',
              url: req.reportUrl,
              data: req.reportData,
              async: false,
              success: function success(resp) {
                if (--len &lt; 0) {
                  typeof callback === 'function' &amp;&amp; callback({
                    err_msg: 'handleMPPageAction:ok',
                    fallback: true,
                    resp: resp
                  });
                }
              },
              error: function error(xhr, err) {
                if (--len &lt; 0) {
                  typeof callback === 'function' &amp;&amp; callback({
                    err_msg: 'handleMPPageAction:fail',
                    fallback: true,
                    err: err
                  });
                }
              }
            });
          }
        });
      }
    });
  }
  var leaveReport = {
    reportNow: reportNow,
    addReport: addReport,
    addSpecificReport: addSpecificReport
  };
  var _leaveReport = (function () {
    var doc = {};
    var isCrossOrigin = false;
    try {
      doc = top.window.document;
    } catch (e) {
      isCrossOrigin = true;
    }
    if (!isCrossOrigin &amp;&amp; top.window.__leaveReport) {
      return top.window.__leaveReport;
    }
    if (window.__leaveReport) {
      return window.__leaveReport;
    }
    JSAPI.on('reportOnLeaveForMP', function () {
      return assembleReportData(false);
    });
    return window.__leaveReport = leaveReport;
  })();

  var getReportJson = function getReportJson(logId, rawData) {
    var data = JSON.parse(JSON.stringify(rawData));
    data.log_id = Number(logId);
    data.TimeStamp = Math.round(Date.now() / 1000);
    console.log('[comm_report] reportjson: ', data);
    return JSON.stringify(data);
  };
  var getSuccessHandler = function getSuccessHandler(logId, data, opt) {
    return function (res) {
      if (res &amp;&amp; res.err_code !== 0) {
        console.warn("[comm_report] report ".concat(logId, " fail: "), res.err_msg, data);
      }
      if (typeof opt.success === 'function') {
        opt.success(res);
      }
    };
  };
  var getErrorHandler = function getErrorHandler(logId, data, opt) {
    return function (xhr, info) {
      console.error("[comm_report] report ".concat(logId, " error: "), info, data);
      if (typeof opt.error === 'function') {
        opt.error(xhr, info);
      }
    };
  };
  var batchReportDataArr = [];
  var blackLogId = [25587, 18832, 28208, 25574, 29139, 10945];
  var BATCH_SIZE = 4;
  var BATCH_TIME = 1000;
  var getRepeatedReportJson = function getRepeatedReportJson() {
    if (!batchReportDataArr || !batchReportDataArr.length) return false;
    var reportData = {
      count: 0
    };
    reportData.count = batchReportDataArr.length;
    batchReportDataArr.forEach(function (data, index) {
      reportData["reportjson".concat(index)] = data;
    });
    batchReportDataArr = [];
    console.log('[reportData]: ', reportData);
    return reportData;
  };
  var timeOutId;
  function batchReport() {
    if (!batchReportDataArr || !batchReportDataArr.length) return;
    var repeatedReportJson = getRepeatedReportJson();
    if (!repeatedReportJson) return;
    AjaxRouter({
      type: 'POST',
      dataType: 'json',
      url: '/mp/wapcommreport?action=batch_report',
      data: repeatedReportJson,
      dontReport: true,
      success: function success(res) {
        if (res &amp;&amp; res.err_code) {
          console.warn("[comm_report] batch report fail: ", res.err_msg, batchReportDataArr);
        }
      },
      error: function error(xhr, info) {
        console.error("[comm_report] batch report error: ", info, batchReportDataArr);
      }
    });
  }
  function batchReportThrottle(logId, rawData) {
    var reportJsonData = getReportJson(logId, rawData);
    if (!reportJsonData) return;
    batchReportDataArr.push(reportJsonData);
    if (batchReportDataArr.length &gt;= BATCH_SIZE) {
      batchReport();
    } else {
      if (!timeOutId) {
        timeOutId = setTimeout(function () {
          batchReport();
          clearTimeout(timeOutId);
          timeOutId = null;
        }, BATCH_TIME);
      }
    }
  }
  _leaveReport.addReport(function () {
    var repeatedReportJson = getRepeatedReportJson();
    if (!repeatedReportJson) return false;
    var reportData = [];
    for (var _i = 0, _Object$entries = Object.entries(repeatedReportJson); _i &lt; _Object$entries.length; _i++) {
      var _Object_i = _slicedToArray(_Object$entries[_i], 2),
        key = _Object_i[0],
        value = _Object_i[1];
      reportData.push("".concat(key, "=").concat(encodeURIComponent(value)));
    }
    return {
      reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport?action=batch_report',
      reportData: reportData.join('&amp;'),
      method: 'POST'
    };
  });
  var WapReport = {
    report: function report(logId, rawData, rawOpt) {
      var opt = rawOpt || {};
      if (!opt.realTime &amp;&amp; !blackLogId.includes(logId)) {
        batchReportThrottle(logId, rawData);
      } else {
        AjaxRouter({
          type: 'POST',
          dataType: 'json',
          url: '/mp/wapcommreport',
          data: {
            reportjson: getReportJson(logId, rawData)
          },
          async: opt.async,
          success: getSuccessHandler(logId, rawData, opt),
          error: getErrorHandler(logId, rawData, opt)
        });
      }
    },
    leaveReport: function leaveReport(logId, rawData) {
      _leaveReport.addReport(function () {
        var data = typeof rawData === 'function' ? rawData() : rawData;
        if (!data) {
          return false;
        }
        return {
          reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport',
          reportData: "reportjson=".concat(encodeURIComponent(getReportJson(logId, data))),
          method: 'POST'
        };
      });
    },
    reportByBeacon: function reportByBeacon(logId, rawData) {
      try {
        if (!Device.os.android &amp;&amp; !Device.os.ios &amp;&amp; !Device.os.harmony) {
          var data = typeof rawData === 'function' ? rawData() : rawData;
          if (!data) {
            return false;
          }
          var url = '/mp/wapcommreport';
          var reportJsonData = encodeURIComponent(getReportJson(logId, data));
          console.log("reportByBeacon", JSON.stringify(reportJsonData));
          navigator.sendBeacon(Url.joinUrl(url), "reportjson=".concat(reportJsonData));
        } else {
          _leaveReport.addReport(function () {
            var data = typeof rawData === 'function' ? rawData() : rawData;
            if (!data) {
              return false;
            }
            return {
              reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport',
              reportData: "reportjson=".concat(encodeURIComponent(getReportJson(logId, data))),
              method: 'POST'
            };
          });
        }
      } catch (error) {
        console.log(error);
      }
    }
  };

  
  var ua = navigator.userAgent;
  var is_android = /(Android)/i.test(ua);
  var g = {
    x: 0,
    y: 0,
    isPc: /(WindowsNT)|(Windows NT)|(Macintosh)|Linux|UnifiedPCOHOSWechat/i.test(navigator.userAgent) &amp;&amp; !is_android,
    isWp: /Windows\sPhone/i.test(ua),
    tsTime: -1
  };
  var prefixes = ['webkit', 'moz', 'ms', 'o'];
  if (isUseTap()) {
    on(document, "touchstart", function (e) {
      if (e.touches.length === 1) {
        var st = e.touches[0];
        g.x = st.clientX;
        g.y = st.clientY;
        g.tsTime = +new Date();
      } else {
        g.tsTime = -1;
      }
    });
  }
  var scrolling;
  function isScrolling() {
    if (scrolling &amp;&amp; new Date().getTime() - scrolling &lt; 200) return true;
    return false;
  }
  window.addEventListener('scroll', function () {
    scrolling = new Date().getTime();
  }, true);
  function isUseTap() {
    if (g.isPc || g.isWp) {
      return false;
    }
    return true;
  }
  
  function tap(el, cb, flag, className) {
    if (!isUseTap()) {
      on(el, "click", className, cb, flag);
    } else {
      cb.tap_handler = function (e) {
        if (g.tsTime == -1 || +new Date() - g.tsTime &gt; 200 || isScrolling()) {
          return;
        }
        var st = e.changedTouches[0];
        if (Math.abs(g.y - st.clientY) &lt;= 5 &amp;&amp; Math.abs(g.x - st.clientX) &lt;= 5) {
          return cb.call(this, e);
          
        }
      };
      on(el, "touchend", className, cb.tap_handler, flag);
    }
  }
  
  function longtap(el, cb, _flag, className, cancelCb) {
    var self = this;
    var timeOutEvent;
    if (g.isPc || g.isWp) {
      var mousedown = false;
      var x;
      var y;
      var triggerLongClick;
      on(el, 'mousedown', className, function (e) {
        triggerLongClick = false;
        mousedown = true;
        x = e.clientX;
        y = e.clientY;
        timeOutEvent = setTimeout(function () {
          triggerLongClick = true;
          timeOutEvent = undefined;
          cb.call(this, e);
        }, 500);
        e.preventDefault();
      });
      on(el, 'mousemove', className, function (e) {
        if (!mousedown) return;
        if (timeOutEvent &amp;&amp; (Math.abs(y - e.clientY) &gt; 5 || Math.abs(x - e.clientX) &gt; 5)) {
          clearTimeout(timeOutEvent);
          timeOutEvent = undefined;
          typeof cancelCb === 'function' &amp;&amp; cancelCb.call(self, e);
        }
      });
      on(el, 'mouseup', className, function () {
        mousedown = false;
        clearTimeout(timeOutEvent);
      });
      on(el, 'click', className, function () {
        if (triggerLongClick) return false;
      });
    } else {
      on(el, 'touchstart', className, function (e) {
        e.touches.length === 1 &amp;&amp; (timeOutEvent = setTimeout(function () {
          timeOutEvent = undefined;
          cb.call(self, e);
        }, 500));
      });
      on(el, 'touchmove', className, function (e) {
        if (!timeOutEvent) return;
        var st = e.changedTouches[0];
        if (Math.abs(g.y - st.clientY) &gt; 5 || Math.abs(g.x - st.clientX) &gt; 5) {
          clearTimeout(timeOutEvent);
          timeOutEvent = undefined;
          typeof cancelCb === 'function' &amp;&amp; cancelCb.call(self, e);
        }
      });
      on(el, 'touchend', className, function (e) {
        if (timeOutEvent) {
          clearTimeout(timeOutEvent);
          timeOutEvent = undefined;
        } else {
          e.preventDefault();
        }
      }, true);
    }
  }
  function doubletap(el, cb) {
    var _this = this;
    var __lastTouchVideoTs = 0;
    var realCb = function realCb(e) {
      if (Date.now() - __lastTouchVideoTs &lt; 300) {
        cb.call(_this, e);
      }
      __lastTouchVideoTs = Date.now();
    };
    tap(el, realCb);
    return function () {
      return off(el, 'touchend', realCb);
    };
  }
  function matches(ele, className) {
    if (!ele || !className || ele.nodeType != ele.ELEMENT_NODE) return false;
    var matchesSelector = ele.webkitMatchesSelector || ele.msMatchesSelector || ele.matchesSelector;
    if (matchesSelector) return matchesSelector.call(ele, className);
    className = className.substr(1);
    return ele.className.indexOf(className) &gt; -1;
  }
  function closest(target, className, context) {
    while (target &amp;&amp; !matches(target, className)) {
      target = target !== context &amp;&amp; target.nodeType !== target.DOCUMENT_NODE &amp;&amp; target.parentNode;
    }
    return target;
  }
  function on(el, type, className, cb, flag, extra) {
    var callback;
    var handler;
    var delegator;
    if (!el) return;
    if (typeof className === 'function') {
      extra = flag;
      flag = cb;
      cb = className;
      className = '';
    }
    if (typeof className !== 'string') {
      className = '';
    }
    if (el == window &amp;&amp; type == "load" &amp;&amp; /complete|loaded/.test(document.readyState)) {
      return cb({
        type: "load"
      });
    }
    if (type == 'tap') return tap(el, cb, flag, className);
    if (type === 'longtap') return longtap(el, cb, flag, className, extra);
    if (type == "unload" &amp;&amp; "onpagehide" in window) {
      type = "pagehide";
    }
    callback = function callback(e) {
      var ret = cb(e);
      if (ret === false) {
        e.stopPropagation &amp;&amp; e.stopPropagation();
        e.preventDefault &amp;&amp; e.preventDefault();
      }
      return ret;
    };
    if (className &amp;&amp; className.charAt(0) == '.') delegator = function delegator(e) {
      var target = e.target || e.srcElement;
      var match = closest(target, className, el);
      if (match) {
        e.delegatedTarget = match;
        return callback(e);
      }
    };
    handler = delegator || callback;
    cb["".concat(type, "_handler")] = handler;
    if (el.addEventListener) {
      el.addEventListener(type, handler, !!flag);
      return;
    }
    if (el.attachEvent) {
      el.attachEvent("on".concat(type), handler, !!flag);
      return;
    }
  }
  function off(el, type, cb, flag) {
    if (!el) return;
    var handlerType = type;
    var handler;
    if (handlerType == 'tap') {
      if (isUseTap()) {
        handlerType = 'touchend';
        handler = cb.tap_handler &amp;&amp; cb.tap_handler.touchend_handler ? cb.tap_handler.touchend_handler : cb;
      } else {
        handlerType = 'click';
      }
    }
    if (!handler) {
      handler = cb["".concat(handlerType, "_handler")] || cb;
    }
    if (el.removeEventListener) {
      el.removeEventListener(handlerType, handler, !!flag);
      return;
    }
    if (el.detachEvent) {
      el.detachEvent("on".concat(handlerType), handler, !!flag);
      return;
    }
    if (handlerType == 'tap' &amp;&amp; isUseTap()) {
      if (cb.tap_handler) {
        cb.tap_handler.touchend_handler = null;
      }
      cb.tap_handler = null;
    } else {
      cb["".concat(handlerType, "_handler")] = null;
    }
  }
  function getHiddenProp() {
    if ('hidden' in document) {
      return 'hidden';
    }
    for (var i = 0; i &lt; prefixes.length; i++) {
      if ("".concat(prefixes[i], "Hidden") in document) {
        return "".concat(prefixes[i], "Hidden");
      }
    }
    return null;
  }
  function getVisibilityState() {
    if ('visibilityState' in document) {
      return 'visibilityState';
    }
    for (var i = 0; i &lt; prefixes.length; i++) {
      if ("".concat(prefixes[i], "VisibilityState") in document) {
        return "".concat(prefixes[i], "VisibilityState");
      }
    }
    return null;
  }
  function bindVisibilityChangeEvt(cb) {
    var visProp = getHiddenProp();
    if (visProp) {
      var evtname = "".concat(visProp.replace(/[H|h]idden/, ''), "visibilitychange");
      var handler = function handler() {
        var isShow = document[getVisibilityState()] !== 'hidden';
        typeof cb === 'function' &amp;&amp; cb(isShow);
      };
      document.addEventListener(evtname, handler, false);
      return function () {
        document.removeEventListener(evtname, handler, false);
      };
    }
    return function () {};
  }
  var DomEvent = {
    on: on,
    off: off,
    tap: tap,
    longtap: longtap,
    bindVisibilityChangeEvt: bindVisibilityChangeEvt,
    doubletap: doubletap
  };

  var html = function html(_str, encode) {
    if (!_str) return '';
    var replace = ['&amp;#96;', '`', '&amp;#39;', '\'', '&amp;quot;', '"', '&amp;nbsp;', ' ', '&amp;gt;', '&gt;', '&amp;lt;', '&lt;', '&amp;yen;', '¥', '&amp;amp;', '&amp;', '&amp;#60;', '&lt;', '&amp;#62;', '&gt;'];
    
    var replaceReverse = ['&amp;', '&amp;amp;', '¥', '&amp;yen;', '&lt;', '&amp;lt;', '&gt;', '&amp;gt;', ' ', '&amp;nbsp;', '"', '&amp;quot;', '\'', '&amp;#39;', '`', '&amp;#96;'];
    var str = _str;
    var target;
    if (encode) {
      target = replaceReverse;
    } else {
      target = replace;
    }
    for (var i = 0; i &lt; target.length; i += 2) {
      str = str.replace(new RegExp(target[i], 'g'), target[i + 1]);
    }
    return str;
  };
  var htmlLite = function htmlLite(_str, encode) {
    if (!_str) return '';
    var replace = ['&amp;#96;', '`', '&amp;#39;', '\'', '&amp;quot;', '"', '&amp;gt;', '&gt;', '&amp;lt;', '&lt;', '&amp;amp;', '&amp;'];
    
    var replaceReverse = ['&amp;', '&amp;amp;', '&lt;', '&amp;lt;', '&gt;', '&amp;gt;', '"', '&amp;quot;', '\'', '&amp;#39;', '`', '&amp;#96;'];
    var str = _str;
    var target;
    if (encode) {
      target = replaceReverse;
    } else {
      target = replace;
    }
    for (var i = 0; i &lt; target.length; i += 2) {
      str = str.replace(new RegExp(target[i], 'g'), target[i + 1]);
    }
    return str;
  };
  var htmlEncode = function htmlEncode(str) {
    return html(str, true);
  };
  var htmlDecode = function htmlDecode(str) {
    return html(str, false);
  };
  var htmlEncodeLite = function htmlEncodeLite(str) {
    return htmlLite(str, true);
  };
  var htmlDecodeLite = function htmlDecodeLite(str) {
    return htmlLite(str, false);
  };
  String.prototype.html = function (encode) {
    return html(this.toString(), encode);
  };
  String.prototype.htmlEncode = function () {
    return htmlEncode(this.toString());
  };
  String.prototype.htmlDecode = function () {
    return htmlDecode(this.toString());
  };
  String.prototype.htmlLite = function (encode) {
    return htmlLite(this.toString(), encode);
  };
  String.prototype.htmlEncodeLite = function () {
    return htmlEncodeLite(this.toString());
  };
  String.prototype.htmlDecodeLite = function () {
    return htmlDecodeLite(this.toString());
  };

  function getCommonReportData() {
    return {
      Referer: location.href,
      UserAgent: navigator.userAgent,
      Protocol: location.protocol || '',
      Origin: location.host || ''
    };
  }
  var report36408 = function report36408(data) {
    WapReport.report(36408, Object.assign(Object.assign({}, data), getCommonReportData()));
  };

  
  var ajax = function ajax(obj) {
    obj.report36408 = report36408;
    AjaxRouter(obj);
  };

  
  var timer = null;
  var jsmonitorReport = {
    setSum: function setSum(id, key, value) {
      throw new Error('Function not implemented.');
    },
    setAvg: function setAvg(id, key, value) {
      throw new Error('Function not implemented.');
    },
    setLogs: function setLogs(opt) {
      throw new Error('Function not implemented.');
    },
    send: function send(async) {
      throw new Error('Function not implemented.');
    }
  };
  window.__monitor_unload_has_done__ = false;
  jsmonitorReport.setSum = function (id, key, value) {
    monitor$1.setSum(id, key, value);
    return jsmonitorReport;
  };
  jsmonitorReport.setAvg = function (id, key, value) {
    monitor$1.setAvg(id, key, value);
    return jsmonitorReport;
  };
  jsmonitorReport.setLogs = function (opt) {
    monitor$1.setLogs(opt);
    return jsmonitorReport;
  };
  jsmonitorReport.send = function (async) {
    if (async !== false) {
      async = true;
    }
    monitor$1.send(async, ajax);
    return jsmonitorReport;
  };
  function reportInterval(fn, delay) {
    timer = window.setTimeout(function () {
      fn();
      reportInterval(fn, delay);
    }, delay);
  }
  reportInterval(function () {
    jsmonitorReport.send();
  }, 1 * 1000);
  window.addEventListener('unload', function () {
    if (window.__monitor_report_has_done__) return;
    window.__ajaxtest = '2';
    if (timer) {
      window.clearTimeout(timer);
      timer = null;
    }
    jsmonitorReport.send(false);
    window.__monitor_unload_has_done__ = true;
  }, false);
  if (window.__jsmonitorReport) {
    jsmonitorReport = window.__jsmonitorReport;
  } else {
    window.__jsmonitorReport = jsmonitorReport;
  }
  var jsmonitorReport$1 = jsmonitorReport;

  
  try {
    if (typeof parent.window.hasListenMpPageAction === 'undefined') {
      parent.window.hasListenMpPageAction = false;
    }
    if (typeof parent.window.hasListenStateChange === 'undefined') {
      parent.window.hasListenStateChange = false;
    }
  } catch (error) {
  }
  var mpPageActionCb = [];
  var stateChangeCb = [];
  var HistoryLS = new LS('history4secondopen');
  var HistoryKey = 'from';
  var hasListenPopstateForSecOpenReload = false;
  
  var webComptStatus = {
    status: 'loading'
  };
  var webComptInitCb = [];
  var directionHandlerId = 0;
  var directionChangeHandlersMap = {};
  function isNativePage() {
    return Url.getQuery('isNativePage') === '1' || Url.getQuery('isNativePage') === '2';
  }
  
  function debounce(func) {
    var wait = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 50;
    var timeout;
    return function () {
      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key &lt; _len; _key++) {
        args[_key] = arguments[_key];
      }
      var context = this;
      var later = function later() {
        timeout = null;
        func.apply(context, args);
      };
      if (timeout) {
        return;
      }
      timeout = setTimeout(later, wait);
    };
  }
  
  function checkIntersect(rectA, rectB) {
    return !(rectB.right &lt; rectA.left || rectB.left &gt; rectA.right || rectB.bottom &lt; rectA.top || rectB.top &gt; rectA.bottom);
  }
  var utils = {
    isNativePage: isNativePage,
    isNewNativePage: function isNewNativePage() {
      return Url.getQuery('isNativePage') === '2';
    },
    isOldNativePage: function isOldNativePage() {
      return Url.getQuery('isNativePage') === '1';
    },
    __useWcSlPlayer: false,
    isWcSlPage: function isWcSlPage() {
      return utils.__useWcSlPlayer;
    },
    getPlayerType: function getPlayerType() {
      if (isNativePage()) {
        return 2;
      }
      return 1;
    },
    getParam: function getParam(key) {
      if (!key) return null;
      var m = location.href.match(new RegExp("(\\?|&amp;)".concat(key, "=([^&amp;]+)")));
      return m ? m[2] : null;
    },
    
    insertAfter: function insertAfter(newElement, targetElement) {
      var parentElement = targetElement.parentNode;
      if (parentElement.lastChild === targetElement) {
        parentElement.appendChild(newElement);
      } else {
        parentElement.insertBefore(newElement, targetElement.nextSibling);
      }
    },
    getInnerHeight: function getInnerHeight() {
      var innerHeightFromApp = window.getInnerHeight &amp;&amp; window.getInnerHeight();
      return innerHeightFromApp || window.innerHeight || document.documentElement.clientHeight;
    },
    getInnerWidth: function getInnerWidth() {
      return window.innerWidth || document.documentElement.clientWidth;
    },
    getScrollTop: function getScrollTop() {
      return document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
    },
    getDocumentHeight: function getDocumentHeight() {
      return document.body.scrollHeight;
    },
    getElementActualTop: function getElementActualTop(element) {
      var elRect = element.getBoundingClientRect();
      var actualTop = elRect.top + this.getScrollTop();
      return actualTop;
    },
    getElementTop: function getElementTop(element) {
      return element.getBoundingClientRect().top;
    },
    getElementHeight: function getElementHeight(element) {
      return element.getBoundingClientRect().height;
    },
    getOrientation: function getOrientation() {
      var _a, _b;
      return (_b = (_a = window.screen.orientation) === null || _a === void 0 ? void 0 : _a.angle) !== null &amp;&amp; _b !== void 0 ? _b : window.orientation;
    },
    getDirection: function getDirection() {
      var orientation = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : utils.getOrientation();
      return (mmversion.isIPad ? [90, 270] : [0, 180]).indexOf(orientation) &gt; -1 ? 'vertical' : 'horizontal';
    },
    listenDirectionChange: function listenDirectionChange(cb) {
      var _a, _b;
      if ((_b = (_a = window.screen) === null || _a === void 0 ? void 0 : _a.orientation) === null || _b === void 0 ? void 0 : _b.addEventListener) {
        directionChangeHandlersMap[directionHandlerId] = function (e) {
          cb === null || cb === void 0 ? void 0 : cb(utils.getDirection(e.target.angle), e.target.angle);
        };
        window.screen.orientation.addEventListener('change', directionChangeHandlersMap[directionHandlerId]);
      } else {
        directionChangeHandlersMap[directionHandlerId] = function () {
          var orientation = utils.getOrientation();
          cb === null || cb === void 0 ? void 0 : cb(utils.getDirection(orientation), orientation);
        };
        window.addEventListener('orientationchange', directionChangeHandlersMap[directionHandlerId]);
      }
      return directionHandlerId++;
    },
    unlistenDirectionChange: function unlistenDirectionChange(handlerId) {
      var _a, _b;
      if ((_b = (_a = window.screen) === null || _a === void 0 ? void 0 : _a.orientation) === null || _b === void 0 ? void 0 : _b.removeEventListener) {
        window.screen.orientation.removeEventListener('change', directionChangeHandlersMap[handlerId]);
      } else {
        window.removeEventListener('orientationchange', directionChangeHandlersMap[handlerId]);
      }
      delete directionChangeHandlersMap[handlerId];
    },
    isScrollEnd: function isScrollEnd(threshold) {
      return this.getScrollTop() + this.getInnerHeight() + threshold &gt;= this.getDocumentHeight();
    },
    
    listenStateChange: function listenStateChange() {
      var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
      stateChangeCb.push(opt.cb);
      try {
        if (parent.window.hasListenStateChange) {
          return;
        }
      } catch (error) {
      }
      JSAPI.on('activity:state_change', function (res) {
        stateChangeCb.forEach(function (callback) {
          callback(res);
        });
      });
      try {
        parent.window.hasListenStateChange = true;
      } catch (error) {
      }
    },
    
    listenMpPageAction: function listenMpPageAction(cb) {
      mpPageActionCb.push(cb);
      try {
        if (parent.window.hasListenMpPageAction) {
          return;
        }
      } catch (error) {
      }
      JSAPI.on('onMPPageAction', function (res) {
        mpPageActionCb.forEach(function (callback) {
          callback(res);
        });
      });
      try {
        parent.window.hasListenMpPageAction = true;
      } catch (error) {
      }
    },
    getIosMainVersion: function getIosMainVersion() {
      var versionInfo = navigator.userAgent.toLowerCase().match(/cpu iphone os (.*?) like mac os/);
      return versionInfo &amp;&amp; versionInfo[1] &amp;&amp; parseInt(versionInfo[1].split('_')[0], 10);
    },
    
    report120081: function report120081(key, times) {
      jsmonitorReport$1.setSum(120081, key, times);
      jsmonitorReport$1.send();
    },
    loadNewPageKeepingHistoryStackIfSecOpen: function loadNewPageKeepingHistoryStackIfSecOpen(url) {
      if (window.__second_open__ &amp;&amp; typeof url === 'string' &amp;&amp; /^https?:\/\/mp.weixin.qq.com\//.test(url)) {
        HistoryLS.set(HistoryKey, location.href, Date.now() + 10000);
      }
      location.href = "".concat(url.replace(/#.*$/, ''), "#wechat_redirect");
    },
    initNewPageHistoryStackFromSecOpen: function initNewPageHistoryStackFromSecOpen() {
      var fromUrl = HistoryLS.get(HistoryKey);
      if (fromUrl &amp;&amp; typeof fromUrl === 'string' &amp;&amp; /^https?:\/\/mp.weixin.qq.com\//.test(fromUrl)) {
        HistoryLS.remove(HistoryKey);
        if (history &amp;&amp; history.replaceState &amp;&amp; history.pushState) {
          var curUrl = location.href;
          try {
            history.replaceState({
              __mock_secopen_history_stack_reload__: 1
            }, '', fromUrl);
            history.pushState({
              __mock_secopen_history_stack_reload__: 1
            }, '', curUrl);
          } catch (e) {
            console.error('[initNewPageHistoryStackFromSecOpen]', e);
          }
        }
      }
      if (!hasListenPopstateForSecOpenReload) {
        hasListenPopstateForSecOpenReload = true;
        window.addEventListener('popstate', function (e) {
          if (e.state &amp;&amp; e.state.__mock_secopen_history_stack_reload__ === 1) {
            location.reload();
          }
        });
      }
    },
    initWebCompt: function initWebCompt(webComptList, callback) {
      var flushCb = function flushCb() {
        while (webComptInitCb.length) {
          var cb = webComptInitCb.shift();
          cb(webComptStatus);
        }
      };
      if (mmversion.isWechat &amp;&amp; !mmversion.isInMiniProgram &amp;&amp; (Device.os.iphone &amp;&amp; Device.os.getNumVersion() &gt;= 10.3 &amp;&amp; (mmversion.gtVersion('7.0.14', 1) &amp;&amp; Device.os.getNumVersion() &lt; 15 || mmversion.gtVersion('8.0.7')) || Device.os.android &amp;&amp; mmversion.gtVersion('7.0.15', 1) &amp;&amp; Device.os.getNumVersion() &gt;= 5 || Device.os.harmony &amp;&amp; mmversion.compareHexVersion('0xf3800c00'))) {
        document.addEventListener('WeixinOpenTagsReady', function () {
          webComptStatus = {
            status: 'ready'
          };
          flushCb();
        });
        document.addEventListener('WeixinOpenTagsError', function (e) {
          webComptStatus = {
            status: 'error',
            error: e &amp;&amp; e.detail &amp;&amp; e.detail.errMsg
          };
          flushCb();
        });
        JSAPI.invoke('handleMPPageAction', {
          action: 'wxConfig',
          appid: 'wxmpfakeid',
          webComptList: webComptList,
          url: location.href
        }, function (res) {
          console.log('wx config web compt result', webComptList, res);
          Log.info('wx config web compt result', webComptList, JSON.stringify(res));
          if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf(':ok') === -1) {
            webComptStatus = {
              status: 'error',
              error: res.err_msg
            };
            flushCb();
          }
          if (typeof callback === 'function') {
            callback(res);
          }
        });
      } else {
        var res = {
          err_msg: 'handleMPPageAction:fail_webcompt unsupported'
        };
        console.log('wx config web compt result', webComptList, res);
        Log.info('wx config web compt result', webComptList, JSON.stringify(res));
        webComptStatus = {
          status: 'error',
          error: res.err_msg
        };
        flushCb();
        if (typeof callback === 'function') {
          callback(res);
        }
      }
    },
    initWebComptForWcSlVideoSharePage: function initWebComptForWcSlVideoSharePage() {
      var initAfterConfWxOpen = function initAfterConfWxOpen(res) {
        if (res.err_msg.indexOf(':ok') !== -1) {
          utils.initNewPageHistoryStackFromSecOpen();
        } else {
          window.__failConfigWxOpen = true;
          Log.info('failed to config wxopen: res not ok');
          jsmonitorReport$1.setSum(221515, Device.os.iphone ? 7 : 8, 1);
          window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; res &amp;&amp; window.WX_BJ_REPORT.BadJs.report('WcSlPlayer:CfgError', (window.__second_open__ ? 'secopen:' : 'h5:') + JSON.stringify(res));
        }
      };
      if (mmversion.isAndroid) {
        var clientVer = mmversion.getInner();
        if (clientVer &gt; '27001037' &amp;&amp; clientVer &lt; '27001060' || clientVer &gt;= '27001100') {
          utils.initWebCompt(['wxOpen' ], initAfterConfWxOpen);
        } else if (mmversion.gtVersion('7.0.15', 1)) {
          window.__failConfigWxOpen = true;
          Log.info('failed to config wxopen: android version check failed (gt 7.0.15)');
        } else {
          window.__failConfigWxOpen = true;
          Log.info('failed to config wxopen: android version check failed');
        }
      } else if (mmversion.isIOS) {
        if (mmversion.gtVersion('7.0.15', 1)) {
          utils.initWebCompt(['wxOpen' ], initAfterConfWxOpen);
        } else {
          window.__failConfigWxOpen = true;
          Log.info('failed to config wxopen: ios version check failed');
        }
      } else {
        window.__failConfigWxOpen = true;
      }
    },
    
    getWebComptStatus: function getWebComptStatus(cb) {
      if (typeof cb !== 'function') {
        return webComptStatus;
      }
      if (webComptStatus.status === 'loading') {
        webComptInitCb.push(cb);
      } else {
        cb(webComptStatus);
      }
      return true;
    },
    
    supportImmersiveMode: mmversion.isWechat &amp;&amp; !mmversion.isInMiniProgram &amp;&amp; (mmversion.isIOS &amp;&amp; mmversion.gtVersion('8.0.9', 1) || mmversion.isAndroid &amp;&amp; mmversion.gtVersion('8.0.9', 1)),
    debounce: debounce,
    
    bindDebounceScrollEvent: function bindDebounceScrollEvent(fn) {
      var scrollEle = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : window;
      var wait = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : 50;
      var useCapture = arguments.length &gt; 3 &amp;&amp; arguments[3] !== undefined ? arguments[3] : false;
      var debounceFn = debounce(fn, wait);
      DomEvent.on(scrollEle, 'scroll', '', debounceFn, useCapture);
    },
    checkIntersect: checkIntersect,
    
    clickRange: function clickRange(evt) {
      var selection = window.getSelection();
      var range = selection.rangeCount &amp;&amp; selection.getRangeAt(0);
      if (!range || range.collapsed || !range.intersectsNode(evt.target)) {
        return false;
      }
      var rangeClientRects = range.getClientRects();
      var targetLineHeight = parseFloat(getComputedStyle(evt.target).lineHeight, 10);
      var targetRect = evt.target.getBoundingClientRect();
      for (var i in rangeClientRects) {
        if (rangeClientRects.hasOwnProperty(i)) {
          var rect = rangeClientRects[i];
          var extraHeight = targetLineHeight ? (targetLineHeight - rect.height) / 2 : 0;
          if (rect.width &amp;&amp; checkIntersect(rect, targetRect) &amp;&amp; evt.clientX &gt;= rect.left &amp;&amp; evt.clientX &lt;= rect.right &amp;&amp; evt.clientY &gt;= rect.top - extraHeight &amp;&amp; evt.clientY &lt;= rect.bottom + extraHeight) {
            return true;
          }
        }
      }
    },
    once: function once(fn) {
      return function () {
        if (fn) {
          for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
            args[_key2] = arguments[_key2];
          }
          var ret = fn.apply(this, args);
          fn = null;
          return ret;
        }
      };
    },
    getRealHeightOfIOSNativePanel: function getRealHeightOfIOSNativePanel(oriHeight, callback) {
      if (mmversion.isIOS) {
        JSAPI.invoke('handleDeviceInfo', {
          action: 'getUIParams'
        }, function (res) {
          var realHeight = oriHeight;
          if (res.isShowBottomBar) {
            realHeight -= res.bottomBarHeight;
          }
          realHeight = Math.max(realHeight, 0);
          typeof callback === 'function' &amp;&amp; callback(realHeight);
        });
      } else {
        typeof callback === 'function' &amp;&amp; callback(oriHeight);
      }
    }
  };

  mmversion.isIOS &amp;&amp; mmversion.compareHexVersion('18003C31') || mmversion.isAndroid &amp;&amp; mmversion.compareHexVersion('28003E11');
  mmversion.isIOS &amp;&amp; mmversion.compareHexVersion('18003622') || mmversion.isAndroid &amp;&amp; mmversion.compareHexVersion('2800353C') || Device.os.unifiedPC &amp;&amp; mmversion.cpVersion('4.0.6', 1, true, 'unifiedpc') &amp;&amp; getOriginExpVal('unified_share_card_style_pc') !== '0'
;

  var e = {
      d: function d(t, r) {
        for (var i in r) e.o(r, i) &amp;&amp; !e.o(t, i) &amp;&amp; Object.defineProperty(t, i, {
          enumerable: !0,
          get: r[i]
        });
      },
      o: function o(e, t) {
        return Object.prototype.hasOwnProperty.call(e, t);
      }
    },
    t = {};
  e.d(t, {
    A: function A() {
      return s;
    },
    Q: function Q() {
      return a;
    }
  });
  var r = function r(e, t) {
      var r = {};
      for (var i in e) Object.prototype.hasOwnProperty.call(e, i) &amp;&amp; t.indexOf(i) &lt; 0 &amp;&amp; (r[i] = e[i]);
      if (null != e &amp;&amp; "function" == typeof Object.getOwnPropertySymbols) {
        var n = 0;
        for (i = Object.getOwnPropertySymbols(e); n &lt; i.length; n++) t.indexOf(i[n]) &lt; 0 &amp;&amp; Object.prototype.propertyIsEnumerable.call(e, i[n]) &amp;&amp; (r[i[n]] = e[i[n]]);
      }
      return r;
    },
    i = function i(e, t, r) {
      if (r || 2 === arguments.length) for (var i, n = 0, o = t.length; n &lt; o; n++) !i &amp;&amp; n in t || (i || (i = Array.prototype.slice.call(t, 0, n)), i[n] = t[n]);
      return e.concat(i || Array.prototype.slice.call(t));
    },
    n = function n(e) {
      if ("object" == _typeof(e) &amp;&amp; e) return e;
      if ("string" == typeof e) try {
        return JSON.parse(e);
      } catch (e) {
        return;
      }
    },
    o = function o(e) {
      return 173 === e ? 95 : 166 === e ? 147 : [205, 207, 206].includes(e) ? 135 : 78;
    };
  function a(e) {
    var t,
      a,
      s = e.thirdExtParam,
      d = void 0 === s ? "" : s,
      m = e.kvItems,
      p = void 0 === m ? [] : m,
      l = e.sessionKvItems,
      c = void 0 === l ? [] : l,
      u = e.scene,
      x = void 0 === u ? -1 : u,
      y = (e.query, e.parentType),
      h = r(e, ["thirdExtParam", "kvItems", "sessionKvItems", "scene", "query", "parentType"]),
      g = {
        crossExtReqParams: [],
        sessionExtReqParams: [],
        originThirdExtParam: ""
      };
    try {
      if (console.warn("mpThirdExtParamToSearchExtParam init extReqParams:", g), !d) throw new Error("mpThirdExtParamToSearchExtParam thirdExtParam 不存在");
      var _ = JSON.parse(decodeURIComponent(d));
      if (_) {
        if (g.originThirdExtParam = JSON.stringify({
          s1sKeywordsData: null == _ ? void 0 : _.s1sKeywordsData,
          mp_bizuin_msgid_msgidx: null == _ ? void 0 : _.mp_bizuin_msgid_msgidx,
          mp_finger_search_query_pos: null == _ ? void 0 : _.mp_finger_search_query_pos
        }), null == _ ? void 0 : _.s1sKeywordsData) {
          var v = (_ || {}).s1sKeywordsData,
            P = void 0 === v ? {} : v,
            f = P.enterId,
            E = void 0 === f ? 0 : f,
            S = P.s1sContextInfo,
            q = void 0 === S ? "{}" : S,
            T = P.s1sStatInfo,
            I = void 0 === T ? "{}" : T,
            R = P.sessionId,
            O = void 0 === R ? "" : R,
            b = P.postype,
            C = n(decodeURIComponent(q)) || {},
            k = n(decodeURIComponent(I)) || {},
            w = k.bizuin,
            j = void 0 === w ? 0 : w,
            z = k.msgid,
            J = void 0 === z ? 0 : z,
            N = k.msgidx,
            V = void 0 === N ? 0 : N,
            A = C.mixerCommonContext,
            D = void 0 === A ? "" : A,
            U = (C.isNeedUpdateGPTInfo, C.S1SPageType);
          if ([2, 5].includes(void 0 === U ? 1 : U)) return {
            thirdExtParam: d
          };
          g.crossExtReqParams.push({
            key: "parentSearchID",
            textValue: [y || o(x), E || k.enterId, "", "".concat(j, "_").concat(J, "_").concat(V), encodeURIComponent(JSON.stringify({
              enterId: E || k.enterId,
              sessionId: O,
              s1sStatInfo: k,
              postype: b,
              mpBizuinMsgidMsgidx: (null == _ ? void 0 : _.mp_bizuin_msgid_msgidx) || "".concat(j, "_").concat(J, "_").concat(V),
              mpFingerSearchQueryPos: null == _ ? void 0 : _.mp_finger_search_query_pos,
              docid: null == h ? void 0 : h.docid
            }))].join(":").replace(/,/g, ";")
          }), D &amp;&amp; g.crossExtReqParams.push({
            key: "mixerCommonContext",
            textValue: D
          });
        } else g.crossExtReqParams.push({
          key: "parentSearchID",
          textValue: [y || o(x), 0, "", "", encodeURIComponent(JSON.stringify({
            mpBizuinMsgidMsgidx: null == _ ? void 0 : _.mp_bizuin_msgid_msgidx,
            mpFingerSearchQueryPos: null == _ ? void 0 : _.mp_finger_search_query_pos,
            docid: null == h ? void 0 : h.docid
          }))].join(":").replace(/,/g, ";")
        });
        (null == _ ? void 0 : _.mpSelectedContent) &amp;&amp; g.sessionExtReqParams.push({
          key: "mpSelectedContent",
          textValue: _.mpSelectedContent
        }), (null == _ ? void 0 : _.mpSelectActionType) &amp;&amp; g.sessionExtReqParams.push({
          key: "mpSelectActionType",
          textValue: String(_.mpSelectActionType)
        }), (null == _ ? void 0 : _.mp_bizuin_msgid_msgidx) &amp;&amp; g.sessionExtReqParams.push({
          key: "mpBizuinMsgidMsgidx",
          textValue: _.mp_bizuin_msgid_msgidx
        }), (null == _ ? void 0 : _.mp_finger_search_query_context) &amp;&amp; g.sessionExtReqParams.push({
          key: "mpFingerSearchQueryContext",
          textValue: _.mp_finger_search_query_context
        }), (null == _ ? void 0 : _.mp_finger_search_query_pos) &amp;&amp; g.sessionExtReqParams.push({
          key: "mpFingerSearchQueryPos",
          textValue: String(_.mp_finger_search_query_pos)
        }), !(null == _ ? void 0 : _.aiH5Link) &amp;&amp; !(null == _ ? void 0 : _.aiH5Title) || [206].includes(x) || g.sessionExtReqParams.push({
          key: "aiSearchUploadInfo",
          textValue: JSON.stringify({
            uploadFiles: [{
              fileType: 4,
              fileContentDetail: {
                mpContentDetail: {
                  title: null == _ ? void 0 : _.aiH5Title
                }
              },
              url: String(null == _ ? void 0 : _.aiH5Link)
            }],
            contentType: 4,
            allowedContentType: 4
          })
        });
      }
      return (null == p ? void 0 : p.length) &amp;&amp; (t = g.crossExtReqParams).push.apply(t, p), (null == c ? void 0 : c.length) &amp;&amp; (a = g.sessionExtReqParams).push.apply(a, c), h &amp;&amp; Object.keys(h).length &amp;&amp; (g.otherJsApiParams = h), console.warn("mpThirdExtParamToSearchExtParam extReqParams:", g), {
        thirdExtParam: encodeURIComponent(JSON.stringify(g)),
        extReqParams: JSON.stringify(i(i([], g.crossExtReqParams, !0), g.sessionExtReqParams, !0))
      };
    } catch (e) {
      return console.error("mpThirdExtParamToSearchExtParam err:", e), {
        thirdExtParam: d
      };
    }
  }
  var s = {
    mpThirdExtParamToSearchExtParam: a
  };
  t.A;
    t.Q;

  utils.getInnerHeight();
  utils.getInnerWidth();
  (function () {
      var style = document.createElement('style');
      style.innerHTML = '*:not(input):not(textarea):not([contenteditable="true"]) { -webkit-touch-callout: none !important; -webkit-user-select: none !important; -khtml-user-select: none !important; -moz-user-select: none !important; -ms-user-select: none !important; user-select: none !important; }';
      return {
        enableSelect: function enableSelect() {
          document.head.contains(style) &amp;&amp; document.head.removeChild(style);
        },
        disableSelect: function disableSelect() {
          Log.log('disableSelect');
          document.head.appendChild(style);
        }
      };
    })();
  var uuid = function uuid() {
    return ((1 + Math.random()) * 0x10000 | 0).toString(16).substring(1);
  };

  var env = null;
  var getEnv = function getEnv(key, updateEnv) {
    if (window.__wxWebEnv &amp;&amp; (!env || updateEnv)) {
      try {
        env = window.__wxWebEnv &amp;&amp; typeof window.__wxWebEnv.getEnv === 'function' &amp;&amp; window.__wxWebEnv.getEnv();
        env = env ? JSON.parse(env) : null;
      } catch (error) {
        env = null;
        console.error('get env error', error);
      }
    }
    return env ? env[key] : undefined;
  };
  var fontLS = new LS('font-scale');
  function parseExp(key) {
    var expList = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : [];
    var frontend_exp_list = [];
    if (expList &amp;&amp; expList.length &gt; 0) {
      frontend_exp_list = expList;
    } else if (window.frontend_exp_list) {
      frontend_exp_list = window.frontend_exp_list;
    } else {
      try {
        var frontend_exp_str = '';
        frontend_exp_list = JSON.parse('[' + frontend_exp_str + ']');
      } catch (e) {
        console.log('============error', e);
      }
    }
    var res = frontend_exp_list.reduce(function (res, item) {
      if (item.key === key) res = item.value === '1';
      return res;
    }, false);
    return res;
  }
  function setAutospace() {
    if (Device.os.ios &amp;&amp; Device.cpVersion('18.4', -1, true)) {
      document.body.classList.add('autospace');
      window.test_autospace = true;
      new Image().src = "https://mp.weixin.qq.com/mp/jsmonitor?idkey=526340_1_1";
    }
  }
  function setBottomBarSafeBottom() {
    var bottomBarSafeBottomKey = '__bottom_bar_safe_bottom__';
    var bottomBarSafeBottom = localStorage.getItem(bottomBarSafeBottomKey);
    if (bottomBarSafeBottom) {
      document.documentElement.style.setProperty('--immersive-safe-bottom', bottomBarSafeBottom);
    }
    SafeArea.getAsync('bottom').then(function (res) {
      console.error('bottombar-safe-bottom', res);
      try {
        if (Device.os.ios || Device.os.android &amp;&amp; getEnv('enableAndroidEdge2Edge')) {
          document.documentElement.style.setProperty('--immersive-safe-bottom', "".concat(res, "px"));
          localStorage.setItem(bottomBarSafeBottomKey, "".concat(res, "px"));
        } else if (Device.os.android &amp;&amp; !getEnv('enableAndroidEdge2Edge')) {
          document.documentElement.style.setProperty('--immersive-safe-bottom', "0px");
          localStorage.setItem(bottomBarSafeBottomKey, "0px");
        } else {
          document.documentElement.style.removeProperty('--immersive-safe-bottom');
          localStorage.removeItem(bottomBarSafeBottomKey);
        }
      } catch (error) {
        console.log(error);
      }
    });
  }
  function setGlobalTextLink() {
    var normalTextLinks = document.getElementsByClassName('normal_text_link');
    var mp_article_text_link = document.getElementsByClassName('mp_article_text_link');
    if (!normalTextLinks || normalTextLinks.length === 0 || mp_article_text_link &amp;&amp; mp_article_text_link.length &gt; 0) return;
    for (var i = 0; i &lt; normalTextLinks.length; i++) {
      var item = normalTextLinks[i];
      var href = item.getAttribute('href') || item.getAttribute('data-href');
      item.setAttribute('link-id', uuid());
      if (item &amp;&amp; href) {
        var isMpWeixinLink = /^https?:\/\/mp\.weixin\.qq\.com\/s/.test(href);
        if (isMpWeixinLink) {
          item.classList.add('mp_article_text_link');
        }
      }
    }
  }
  function setImgPgaeSkinPc() {
    if (window.cgiDataNew &amp;&amp; window.cgiDataNew.item_show_type * 1 === 8 &amp;&amp; document.documentElement.clientWidth &gt; 851) {
      document.body.classList.add('pages_skin_pc');
    }
  }
  function setWindowsTitleBold() {
    var ua = navigator.userAgent;
    var isWindows = /windows\snt/i.test(ua) &amp;&amp; !/Windows\sPhone/i.test(ua);
    if (isWindows) document.body.classList.add('windows-title-bold');
  }
  function setNewCmtUi() {
    document.body.classList.add('appmsg_cmt_new_ui');
    if (window.cgiDataNew &amp;&amp; window.cgiDataNew.item_show_type * 1 === 0) {
      document.body.classList.add('appmsg_content_new_ui');
    }
  }
  function setDeviceClass() {
    if (Device.os.ios) {
      document.body.classList.add('wx-device-ios');
    }
  }

  
  function isTimeValid(timestamp) {
    if (!timestamp || timestamp &lt;= 0) return false;
    var now = Date.now();
    return now - timestamp &lt;= LOCAL_STORAGE_EXPIRE_TIME;
  }

  
  function getFontScale(biz, mid, idx) {
    if (!biz || !mid || idx == null) return null;
    var tripleKey = biz + '-' + mid + '-' + idx;
    var lsData = fontLS.get(tripleKey);
    var dbData = null;
    if (Array.isArray(window.fontScaleDBData) &amp;&amp; window.fontScaleDBData.length &gt; 0) {
      var foundItem = window.fontScaleDBData.find(function (item) {
        return item &amp;&amp; item.tripleKey === tripleKey;
      });
      if (foundItem) {
        dbData = foundItem;
      }
    }
    var lsTime = lsData &amp;&amp; _typeof(lsData) === 'object' ? lsData.lastUpdateTime || 0 : 0;
    var dbTime = dbData ? dbData.lastUpdateTime || 0 : 0;
    var storedClientFontLevel = lsTime &gt;= dbTime &amp;&amp; lsData ? lsData.clientFontLevel || null : dbData ? dbData.clientFontLevel || null : null;
    var currentClientFontLevel = getNativeFontLevelVar();
    if (storedClientFontLevel !== null &amp;&amp; Number(currentClientFontLevel) !== Number(storedClientFontLevel)) {
      return null;
    }
    var latestTime = Math.max(lsTime, dbTime);
    if (!isTimeValid(latestTime)) {
      return null;
    }
    var fontScale = null;
    if (lsTime &gt;= dbTime &amp;&amp; lsData) {
      fontScale = _typeof(lsData) === 'object' ? lsData.fontScale : lsData;
    } else if (dbData) {
      fontScale = dbData.fontScale;
    }
    if (fontScale) window.lastFontScale = fontScale;
    console.log('getFontScale result:', fontScale);
    return fontScale;
  }

  

  function initFontScale(biz, mid, idx) {
    var useFontLevel = true;
    var fontScale = getFontScale(biz, mid, idx);
    var localFontScale = fontScale || 1;
    applyContentFontScale(localFontScale, useFontLevel);
  }
  function setGlobalStyle(biz, mid, idx) {
    initFontScale(biz, mid, idx);
    setWindowsTitleBold();
    setAutospace();
    setBottomBarSafeBottom();
    setImgPgaeSkinPc();
    setNewCmtUi();
    setDeviceClass();
  }
  window.canShowAiChatCommentEntry =
  mmversion.isIOS &amp;&amp; mmversion.compareHexVersion('0x18004221') || mmversion.isAndroid &amp;&amp; mmversion.compareHexVersion('0x28004150');
  window.canShowAiChatRoomEntry =
  mmversion.isIOS &amp;&amp; mmversion.compareHexVersion('0x18004522') || mmversion.isAndroid &amp;&amp; mmversion.compareHexVersion('0x28004555');
  function setBarAiChat() {
    if (!window.canShowAiChatRoomEntry) {
      var barAiChat = document.getElementById('js_bar_ai_chat');
      barAiChat === null || barAiChat === void 0 ? void 0 : barAiChat.parentElement.removeChild(barAiChat);
    }
  }
  try {
    setBarAiChat();
    setGlobalTextLink();
  } catch (error) {
    console.log('setGlobalTextLink error', error);
  }
  if (!window.__second_open__) {
    var _window = window,
      biz = _window.biz,
      mid = _window.mid,
      idx = _window.idx;
    setGlobalStyle(biz, mid, idx);
  }

  exports.getFontScale = getFontScale;
  exports.initFontScale = initFontScale;
  exports.parseExp = parseExp;
  exports.setAutospace = setAutospace;
  exports.setBottomBarSafeBottom = setBottomBarSafeBottom;
  exports.setDeviceClass = setDeviceClass;
  exports.setGlobalStyle = setGlobalStyle;
  exports.setGlobalTextLink = setGlobalTextLink;
  exports.setImgPgaeSkinPc = setImgPgaeSkinPc;
  exports.setNewCmtUi = setNewCmtUi;
  exports.setWindowsTitleBold = setWindowsTitleBold;

  Object.defineProperty(exports, '__esModule', { value: true });

  return exports;

})({});
  &lt;/script&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   var __INLINE_SCRIPT__ = (function () {
  'use strict';

  function _arrayLikeToArray$1(arr, len) {
    if (len == null || len &gt; arr.length) len = arr.length;
    for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i];
    return arr2;
  }

  function _arrayWithoutHoles(arr) {
    if (Array.isArray(arr)) return _arrayLikeToArray$1(arr);
  }

  function _iterableToArray(iter) {
    if (typeof Symbol !== "undefined" &amp;&amp; iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
  }

  function _unsupportedIterableToArray$1(o, minLen) {
    if (!o) return;
    if (typeof o === "string") return _arrayLikeToArray$1(o, minLen);
    var n = Object.prototype.toString.call(o).slice(8, -1);
    if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name;
    if (n === "Map" || n === "Set") return Array.from(o);
    if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen);
  }

  function _nonIterableSpread() {
    throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }

  function _toConsumableArray(arr) {
    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray$1(arr) || _nonIterableSpread();
  }

  function _typeof(obj) {
    "@babel/helpers - typeof";

    return _typeof = "function" == typeof Symbol &amp;&amp; "symbol" == typeof Symbol.iterator ? function (obj) {
      return typeof obj;
    } : function (obj) {
      return obj &amp;&amp; "function" == typeof Symbol &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj;
    }, _typeof(obj);
  }

  function _toPrimitive(input, hint) {
    if (_typeof(input) !== "object" || input === null) return input;
    var prim = input[Symbol.toPrimitive];
    if (prim !== undefined) {
      var res = prim.call(input, hint || "default");
      if (_typeof(res) !== "object") return res;
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return (hint === "string" ? String : Number)(input);
  }

  function _toPropertyKey(arg) {
    var key = _toPrimitive(arg, "string");
    return _typeof(key) === "symbol" ? key : String(key);
  }

  function _defineProperty(obj, key, value) {
    key = _toPropertyKey(key);
    if (key in obj) {
      Object.defineProperty(obj, key, {
        value: value,
        enumerable: true,
        configurable: true,
        writable: true
      });
    } else {
      obj[key] = value;
    }
    return obj;
  }

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  function _defineProperties(target, props) {
    for (var i = 0; i &lt; props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor) descriptor.writable = true;
      Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
    }
  }
  function _createClass(Constructor, protoProps, staticProps) {
    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
    if (staticProps) _defineProperties(Constructor, staticProps);
    Object.defineProperty(Constructor, "prototype", {
      writable: false
    });
    return Constructor;
  }

  
  var prefix = '__WXLS__';
  var localStorage = window.localStorage || {
    getItem: function getItem() {},
    setItem: function setItem() {},
    removeItem: function removeItem() {},
    key: function key() {},
    clear: function clear() {
      var _a, _b;
      (_b = (_a = window.localStorage) === null || _a === void 0 ? void 0 : _a.clear) === null || _b === void 0 ? void 0 : _b.call(_a);
    },
    length: 0
  };
  var evictionPolicies = {
    noeviction: function noeviction(data) {
      return data;
    },
    'allkeys-random': function allkeysRandom(data, size) {
      var keys = Object.keys(data);
      var memCnt = 0;
      while (memCnt &lt; size) {
        var len = keys.length;
        var randomKeyIdx = Math.floor(Math.random() * len);
        var randomKey = keys[randomKeyIdx];
        memCnt += JSON.stringify(data[randomKey]).length;
        delete data[randomKey];
        keys = Object.keys(data);
      }
      return data;
    },
    'volatile-ttl': function volatileTtl(data, size) {
      var keys = Object.keys(data);
      keys = keys.sort(function (key1, key2) {
        var d1 = data[key1];
        var d2 = data[key2];
        if (d1.exp &lt; d2.exp) return -1;
        if (d1.exp &gt; d2.exp) return 1;
        return 0;
      });
      var memCnt = 0;
      for (var i = 0; i &lt; keys.length; i++) {
        if (memCnt &gt;= size) break;
        var key = keys[i];
        memCnt += JSON.stringify(data[key]).length;
        delete data[key];
      }
      return data;
    },
    'clear-all': function clearAll() {
      localStorage.clear();
      return {};
    }
  };
  function formatLogMsg(str) {
    return "[WXLS] ".concat(str);
  }
  
  var LS = function () {
    function LS(func, evictionPolicy, logger) {
      _classCallCheck(this, LS);
      this.logger = function () {};
      if (!func) throw 'require function name.';
      this.evictionPolicy = 'noeviction';
      this.key = func;
      if (typeof logger === 'function') {
        this.logger = function (str, type) {
          return logger(formatLogMsg(str), type);
        };
      }
      if (evictionPolicy &amp;&amp; Object.keys(evictionPolicies).indexOf(evictionPolicy) !== -1) {
        this.evictionPolicy = evictionPolicy;
      }
      this.init();
    }
    _createClass(LS, [{
      key: "init",
      value: function init() {
        var _a, _b;
        this.check();
        if (Math.random() * 1000 &lt; 1) {
          (_a = this.logger) === null || _a === void 0 ? void 0 : _a.call(this, "LSlen: ".concat(((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length) || localStorage.length), 'report');
        }
      }
    }, {
      key: "getData",
      value: function getData() {
        var data = LS.getItem(this.key) || '{}';
        try {
          data = JSON.parse(data);
        } catch (e) {
          this.logger("getData error: ".concat(e), 'error');
          localStorage.removeItem(prefix + this.key);
          data = {};
        }
        return data;
      }
    }, {
      key: "check",
      value: function check(isReturn) {
        var data = this.getData();
        var temp = {};
        var now = +new Date();
        var key;
        var val;
        for (key in data) {
          val = data[key];
          if (+val.exp &gt; now) {
            temp[key] = val;
          }
        }
        this.logger("check info: isReturn:".concat(isReturn, " data:").concat(JSON.stringify(temp)), 'info');
        if (isReturn) return temp;
        LS.setItem(this.key, JSON.stringify(temp), this.logger);
      }
    }, {
      key: "set",
      value: function set(key, val, exp) {
        var _a, _b;
        var data = this.check(true);
        data[key] = {
          val: val,
          exp: exp || +new Date()
        };
        try {
          if (localStorage.getItem(prefix + this.key)) localStorage.removeItem(prefix + this.key);
          localStorage.setItem(prefix + this.key, JSON.stringify(data));
          this.logger("first set success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data)), 'success');
        } catch (e) {
          this.logger("first set error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data), " k:").concat(key, " v:").concat(val, " exp:").concat(exp), 'error');
          localStorage.clear();
          LS.setItem(this.key, JSON.stringify(_defineProperty({}, key, {
            val: val,
            exp: exp || +new Date()
          })), this.logger);
        }
      }
    }, {
      key: "get",
      value: function get(key) {
        var data = this.getData();
        data = data[key];
        return data ? data.val || null : null;
      }
    }, {
      key: "remove",
      value: function remove(key) {
        var data = this.getData();
        if (data[key]) delete data[key];
        LS.setItem(this.key, JSON.stringify(data), this.logger);
      }
    }], [{
      key: "getItem",
      value: function getItem(key) {
        key = prefix + key;
        return localStorage.getItem(key);
      }
    }, {
      key: "setItem",
      value: function setItem(key, val, logger) {
        var _a, _b;
        key = prefix + key;
        var n = 3;
        while (n--) {
          try {
            if (localStorage.getItem(key)) localStorage.removeItem(key);
            localStorage.setItem(key, val);
            typeof logger === 'function' &amp;&amp; logger("setItem success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(key, " val:").concat(val), 'success');
            break;
          } catch (e) {
            typeof logger === 'function' &amp;&amp; logger("setItem error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(key, " val:").concat(val), 'error');
            LS.clear();
          }
        }
      }
    }, {
      key: "clear",
      value: function clear() {
        var i;
        var k;
        for (i = localStorage.length - 1; i &gt;= 0; i--) {
          k = localStorage.key(i);
          if (k.indexOf(prefix) == 0) {
            localStorage.removeItem(k);
          }
        }
      }
    }, {
      key: "getSupportEvicationPolicy",
      value: function getSupportEvicationPolicy() {
        return Object.keys(evictionPolicies);
      }
    }]);
    return LS;
  }();

  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" &amp;&amp; o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike &amp;&amp; o &amp;&amp; typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i &gt;= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion &amp;&amp; it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
  function _arrayLikeToArray(arr, len) { if (len == null || len &gt; arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i]; return arr2; }
  
  
  var ua = navigator.userAgent;
  var is_ios = /(iPhone|iPad|iPod|iOS)/i.test(ua);
  var is_wp = /Windows\sPhone/i.test(ua);
  var is_android = /(Android)/i.test(ua);
  var is_wechat = /MicroMessenger\/([\d\.]+)/i.test(ua);
  var is_mac = /mac\sos/i.test(ua) &amp;&amp; !is_ios;
  var is_windows = /windows\snt/i.test(ua) &amp;&amp; !is_wp;
  var is_mpapp = /MPAPP\/([\d\.]+)/i.test(ua);
  var is_ipad = /iPad/i.test(ua);
  var is_windows_wechat = /WindowsWechat/i.test(ua);
  var is_mac_wechat = /MacWechat/i.test(ua) || /wechat.*mac os/i.test(ua);
  var is_prefetch = is_wechat &amp;&amp; window.WeixinPrefecherJSBridge;
  var is_donut_app = /SAAASDK/i.test(ua);
  var is_harmony = /OpenHarmony|ArkWeb/i.test(ua);
  var is_linux = /Linux\s/i.test(ua);
  var xweb_match = ua.match(/XWEB\/([\d.]+)/i);
  var xweb_version = xweb_match &amp;&amp; xweb_match[1] ? parseInt(xweb_match[1], 10) : 0;
  var is_unified_pc_wechat = /UnifiedPC\w+Wechat/i.test(ua);
  var is_in_miniProgram = is_android &amp;&amp; /miniprogram/.test(ua.toLowerCase()) || window.__wxjs_environment == 'miniprogram';
  var is_wx_work = /wxwork/i.test(ua);
  function getUrlParams() {
    var vars = location.search.substring(1).split('&amp;');
    var params = {};
    var _iterator = _createForOfIteratorHelper(vars),
      _step;
    try {
      for (_iterator.s(); !(_step = _iterator.n()).done;) {
        var ele = _step.value;
        var pair = ele.split('=');
        var key = decodeURIComponent(pair[0]);
        if (typeof params[key] === 'undefined') {
          params[key] = decodeURIComponent(pair[1]);
        }
      }
    } catch (err) {
      _iterator.e(err);
    } finally {
      _iterator.f();
    }
    return params;
  }
  function get() {
    var reg = /MicroMessenger\/([\d\.]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMac() {
    var reg = /MacWechat\/([\d\.]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMacOS() {
    var reg = /Mac OS X ([\d_]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1].replace(/_/g, '.');
    }
    return false;
  }
  function getWindows() {
    var reg = /WindowsWechat\(0x(.+?)\)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getWxWork() {
    var reg = /wxwork\/([\d\.]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMpApp() {
    var appVersion = [2, 4, 5];
    var match = navigator.userAgent.match(/MPAPP\/(\d+(\.\d+)*)/);
    if (match) {
      appVersion = match[1].split('.').map(function (v) {
        return Number(v);
      });
    }
    return appVersion.join('.');
  }
  function getUnifiedPcVer() {
    var versionInfo = navigator.userAgent.match(/UnifiedPC\w+Wechat\(0xf\w{2}(\w+?)\w{2}\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(0, 1));
      var subVersion = getVersionNumber(version.slice(1, 2));
      var subVersion2 = getVersionNumber(version.slice(2, 3));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
  }
  function getVersionNumber(hexStr) {
    return Number(Number("0x".concat(hexStr)).toString(10));
  }
  function getWindowsVersionFormat() {
    var versionInfo = navigator.userAgent.match(/WindowsWechat\(0x(\w+?)\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(1, 2));
      var subVersion = getVersionNumber(version.slice(2, 4));
      var subVersion2 = getVersionNumber(version.slice(4, 6));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
    return false;
  }
  function getInner() {
    var reg = /MicroMessenger\/[\d\.]+\(0x(.+?)\)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1] &amp;&amp; ret[1] != null) {
      return ret[1];
    }
    if (!ret &amp;&amp; /MicroMessenger\/[\d\.]+/i.test(ua)) {
      var urlParams = getUrlParams();
      if (urlParams.version) {
        return urlParams.version;
      }
    }
    return false;
  }
  var opfunc = {
    'cp-1': function cp1(a, b) {
      return a &lt; b;
    },
    cp0: function cp0(a, b) {
      return a === b;
    },
    cp1: function cp1(a, b) {
      return a &gt; b;
    }
  };
  function cpVersion(ver, op, canEq, type) {
    var mmver = false;
    switch (type) {
      case 'mac':
        mmver = getMac();
        break;
      case 'windows':
        mmver = getWindowsVersionFormat();
        break;
      case 'wxwork':
        mmver = getWxWork();
        break;
      case 'mpapp':
        mmver = getMpApp();
        break;
      case 'unifiedpc':
        mmver = getUnifiedPcVer();
        break;
      default:
        mmver = get();
        break;
    }
    if (!mmver) {
      return;
    }
    var mmversion = mmver.split('.');
    var version = ver.split('.');
    if (!/\d+/g.test(mmversion[mmversion.length - 1])) {
      mmversion.pop();
    }
    for (var i = 0, len = Math.max(mmversion.length, version.length); i &lt; len; ++i) {
      var mmv = mmversion[i] || '';
      var v = version[i] || '';
      var mmvn = parseInt(mmv, 10) || 0;
      var vn = parseInt(v, 10) || 0;
      var eq = opfunc.cp0(mmvn, vn);
      if (eq) {
        continue;
      }
      var cp = opfunc["cp".concat(op)];
      return cp(mmvn, vn);
    }
    return canEq || op === 0;
  }
  function eqVersion(version) {
    return cpVersion(version, 0);
  }
  function gtVersion(version, canEq) {
    return cpVersion(version, 1, canEq);
  }
  function ltVersion(version, canEq) {
    return cpVersion(version, -1, canEq);
  }
  function getPlatform() {
    if (is_ios) {
      return 'ios';
    }
    if (is_android) {
      return 'android';
    }
    if (is_mac) {
      return 'mac_os';
    }
    if (is_windows) {
      return 'windows';
    }
    return 'unknown';
  }
  var is_google_play = false;
  var inner_ver_for_google_play_check = getInner();
  if (is_android &amp;&amp; inner_ver_for_google_play_check) {
    var v = "0x".concat(inner_ver_for_google_play_check.substr(-2));
    if (parseInt(v) &gt;= 64 &amp;&amp; parseInt(v) &lt;= 79) {
      is_google_play = true;
    }
  }
  function compareHexVersion(hexNum) {
    var innerVersion = getInner();
    if (innerVersion &amp;&amp; hexNum) {
      if (typeof hexNum === 'string') {
        hexNum = parseInt(hexNum, 16);
      }
      var version = parseInt(innerVersion, 16);
      return version &gt;= hexNum;
    }
    return false;
  }
  var mmversion = {
    get: get,
    getMac: getMac,
    getMacOS: getMacOS,
    getWindows: getWindows,
    getInner: getInner,
    getWxWork: getWxWork,
    getMpApp: getMpApp,
    cpVersion: cpVersion,
    eqVersion: eqVersion,
    gtVersion: gtVersion,
    ltVersion: ltVersion,
    getPlatform: getPlatform,
    getVersionNumber: getVersionNumber,
    isWp: is_wp,
    isIOS: is_ios,
    isAndroid: is_android,
    isHarmony: is_harmony,
    isHarmonyWechat: is_harmony &amp;&amp; is_wechat &amp;&amp; cpVersion('1.0.0', 1, true),
    isInMiniProgram: is_in_miniProgram,
    isWechat: is_wechat,
    isMac: is_mac,
    isWindows: is_windows,
    isLinux: is_linux,
    isMacWechat: is_mac_wechat,
    isWindowsWechat: is_windows_wechat,
    isWxWork: is_wx_work,
    isOnlyWechat: is_wechat &amp;&amp; !is_wx_work,
    isMpapp: is_mpapp,
    isIPad: is_ipad,
    isGooglePlay: is_google_play,
    isPrefetch: is_prefetch,
    isDonutAPP: is_donut_app,
    compareHexVersion: compareHexVersion,
    isPcWechat: is_windows_wechat || is_mac_wechat,
    xwebVersion: xweb_version,
    isUnifiedPcWechat: is_unified_pc_wechat
  };

  function getInflightMap() {
    if (!window.__dedupe_promise_inflight__) {
      window.__dedupe_promise_inflight__ = new Map();
    }
    return window.__dedupe_promise_inflight__;
  }
  
  function dedupePromise(key, factory) {
    var inflightMap = getInflightMap();
    var existing = inflightMap.get(key);
    console.log("dedupePromise key=".concat(key, " existing=").concat(existing));
    if (existing) {
      return existing;
    }
    var promise = Promise.resolve().then(factory)["finally"](function () {
      inflightMap["delete"](key);
    });
    inflightMap.set(key, promise);
    return promise;
  }

  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
    try {
      var info = gen[key](arg);
      var value = info.value;
    } catch (error) {
      reject(error);
      return;
    }
    if (info.done) {
      resolve(value);
    } else {
      Promise.resolve(value).then(_next, _throw);
    }
  }
  function _asyncToGenerator(fn) {
    return function () {
      var self = this,
        args = arguments;
      return new Promise(function (resolve, reject) {
        var gen = fn.apply(self, args);
        function _next(value) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
        }
        function _throw(err) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
        }
        _next(undefined);
      });
    };
  }

  function _regeneratorRuntime() {  _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  
  var doc = {};
  var isAcrossOrigin = false;
  var notFoundedMPPageAction = [];
  var __moon_report = window.__moon_report || function () {};
  var MOON_JSAPI_KEY_OFFSET = 8;
  try {
    doc = top.window.document;
  } catch (e) {
    isAcrossOrigin = true;
  }
  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }
  function ready(onBridgeReady) {
    var bridgeReady = function bridgeReady() {
      try {
        if (onBridgeReady) {
          window.onBridgeReadyTime = window.onBridgeReadyTime || Date.now();
          onBridgeReady();
        }
      } catch (e) {
        __moon_report([{
          offset: MOON_JSAPI_KEY_OFFSET,
          log: 'ready',
          e: e
        }]);
        throw e;
      }
      window.jsapiReadyTime = Date.now();
    };
    if (!isAcrossOrigin &amp;&amp; (typeof top.window.WeixinJSBridge === 'undefined' || !top.window.WeixinJSBridge.invoke)) {
      if (doc.addEventListener) {
        doc.addEventListener('WeixinJSBridgeReady', bridgeReady, false);
      } else if (doc.attachEvent) {
        doc.attachEvent('WeixinJSBridgeReady', bridgeReady);
        doc.attachEvent('onWeixinJSBridgeReady', bridgeReady);
      }
    } else {
      bridgeReady();
    }
  }
  var invokeNotWaitA8key = ['notifyPageInfo', 'updatePageAuth'
  ];
  var checkNotFoundedInvoke = function checkNotFoundedInvoke(methodName, args) {
    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; notFoundedMPPageAction.includes(args === null || args === void 0 ? void 0 : args.action)) {
      return true;
    }
    return false;
  };
  function invoke(_x, _x2, _x3) {
    return _invoke.apply(this, arguments);
  }
  function _invoke() {
    _invoke = _asyncToGenerator( _regeneratorRuntime().mark(function _callee(methodName, args, callback) {
      return _regeneratorRuntime().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__ &amp;&amp; !invokeNotWaitA8key.includes(methodName))) {
              _context.next = 3;
              break;
            }
            _context.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                alert('请在微信中打开此链接');
                return false;
              }
              if (checkNotFoundedInvoke(methodName, args)) {
                setTimeout(function () {
                  if (callback) {
                    callback.apply(window, [{
                      err_msg: "".concat(methodName, ":fail"),
                      err_desc: 'action isn\'t supported'
                    }]);
                  }
                }, 0);
              } else {
                top.window.WeixinJSBridge.invoke(methodName, args, function () {
                  try {
                    for (var _len2 = arguments.length, rets = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
                      rets[_key2] = arguments[_key2];
                    }
                    var ret = rets[0];
                    var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
                    if (['handleMPPageAction', 'handleVideoAction', 'handleHaokanAction'].indexOf(methodName) !== -1) {
                      var action = (args === null || args === void 0 ? void 0 : args.action) || '';
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName, ", action-&gt;").concat(action).concat(errMsg));
                    } else {
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName).concat(errMsg));
                    }
                    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; ((ret === null || ret === void 0 ? void 0 : ret.err_desc) === 'action isn\'t supported' || (ret === null || ret === void 0 ? void 0 : ret.err_msg) === 'handleMPPageAction:fail action is not supported')) {
                      notFoundedMPPageAction.push(args === null || args === void 0 ? void 0 : args.action);
                    }
                    if (callback) {
                      callback.apply(window, rets);
                    }
                  } catch (e) {
                    __moon_report([{
                      offset: MOON_JSAPI_KEY_OFFSET,
                      log: "invoke;methodName:".concat(methodName),
                      e: e
                    }]);
                    throw e;
                  }
                });
              }
            });
          case 4:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return _invoke.apply(this, arguments);
  }
  function call(_x4) {
    return _call.apply(this, arguments);
  }
  function _call() {
    _call = _asyncToGenerator( _regeneratorRuntime().mark(function _callee2(methodName) {
      return _regeneratorRuntime().wrap(function _callee2$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__)) {
              _context2.next = 3;
              break;
            }
            _context2.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                return false;
              }
              try {
                top.window.WeixinJSBridge.call(methodName);
              } catch (e) {
                __moon_report([{
                  offset: MOON_JSAPI_KEY_OFFSET,
                  log: "call;methodName:".concat(methodName),
                  e: e
                }]);
                throw e;
              }
            });
          case 4:
          case "end":
            return _context2.stop();
        }
      }, _callee2);
    }));
    return _call.apply(this, arguments);
  }
  function on(eventName, callback) {
    ready(function () {
      if (isAcrossOrigin) return false;
      if (_typeof(top.window.WeixinJSBridge) !== 'object' || !top.window.WeixinJSBridge.on) {
        return false;
      }
      if (!window.JSAPIEventCallbackMap[eventName]) {
        window.JSAPIEventCallbackMap[eventName] = [];
      }
      window.JSAPIEventCallbackMap[eventName].push(callback);
      if (window.JSAPIEventCallbackMap[eventName].length &gt; 1) {
        return false;
      }
      top.window.WeixinJSBridge.on(eventName, function () {
        try {
          for (var _len = arguments.length, rets = new Array(_len), _key = 0; _key &lt; _len; _key++) {
            rets[_key] = arguments[_key];
          }
          var ret = rets[0];
          var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
          console.info('[system]', "[jsapi] event-&gt;".concat(eventName).concat(errMsg));
          if (window.JSAPIEventCallbackMap[eventName] &amp;&amp; window.JSAPIEventCallbackMap[eventName].length) {
            var result;
            for (var i = 0; i &lt; window.JSAPIEventCallbackMap[eventName].length; i++) {
              result = window.JSAPIEventCallbackMap[eventName][i].apply(window, rets);
            }
            return result;
          }
        } catch (e) {
          __moon_report([{
            offset: MOON_JSAPI_KEY_OFFSET,
            log: "on;eventName:".concat(eventName),
            e: e
          }]);
          throw e;
        }
      });
    });
  }
  function remove(eventName, callback) {
    ready(function () {
      if (!window.JSAPIEventCallbackMap[eventName]) {
        return false;
      }
      var result = false;
      for (var i = window.JSAPIEventCallbackMap[eventName].length - 1; i &gt;= 0; i--) {
        if (window.JSAPIEventCallbackMap[eventName][i] === callback) {
          window.JSAPIEventCallbackMap[eventName].splice(i, 1);
          result = true;
        }
      }
      return result;
    });
  }
  var JSAPI = {
    ready: ready,
    invoke: invoke,
    call: call,
    on: on,
    remove: remove
  };
  var innerVersion = (mmversion.getInner() || '').toUpperCase();
  var getBizLS = new LS('get_biz_result');
  function getBizMap() {
    if (!window.__get_biz_map__) {
      window.__get_biz_map__ = {};
    }
    return window.__get_biz_map__;
  }
  var isGetBizSupported = mmversion.isOnlyWechat &amp;&amp; mmversion.isIOS &amp;&amp; innerVersion &gt;= '18003C2A' || mmversion.isOnlyWechat &amp;&amp; mmversion.isAndroid &amp;&amp; innerVersion &gt;= '28003D3C' || mmversion.isUnifiedPcWechat &amp;&amp; mmversion.cpVersion('4.1.10', 1, true, 'unifiedpc');
  function invokeGetBiz(needCheckBiz, bizType) {
    return dedupePromise("getBiz:".concat(needCheckBiz, ":").concat(bizType), function () {
      return new Promise(function (resolve, reject) {
        if (!isGetBizSupported) {
          reject('Not support');
        } else {
          JSAPI.invoke('handleMPPageAction', {
            action: 'getBiz',
            needCheckBiz: needCheckBiz,
            bizType: bizType
          }, function (res) {
            console.log("getBiz needCheckBiz=".concat(needCheckBiz, " bizType=").concat(bizType, " res: ").concat(JSON.stringify(res)));
            if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf('ok') &gt; -1) {
              var bizMap = getBizMap();
              bizMap[bizType] = res.biz;
              resolve(res.biz);
              getBizLS.set("".concat(bizType, "_get_biz_result"), res.biz, +new Date() + 3 * 24 * 60 * 60 * 1000);
            } else {
              reject('Failed to get biz');
            }
          });
        }
      });
    });
  }
  function getBiz(needCheckBiz, bizType) {
    var _a;
    if (needCheckBiz === void 0) {
      needCheckBiz = false;
    }
    if (bizType === void 0) {
      bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
    }
    var bizMap = getBizMap();
    if (!needCheckBiz &amp;&amp; bizMap[bizType] !== undefined) {
      return Promise.resolve(bizMap[bizType]);
    }
    return invokeGetBiz(needCheckBiz, bizType);
  }
  mmversion.isOnlyWechat &amp;&amp; mmversion.isIOS || mmversion.isOnlyWechat &amp;&amp; mmversion.isAndroid || mmversion.isUnifiedPcWechat &amp;&amp; mmversion.cpVersion('4.1.10', 1, true, 'unifiedpc');
  function LsGetBiz(bizType) {
    var _a, _b, _c;
    if (bizType === void 0) {
      bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
    }
    var bizMap = getBizMap();
    return (_c = (_b = bizMap[bizType]) !== null &amp;&amp; _b !== void 0 ? _b : getBizLS.get("".concat(bizType, "_get_biz_result"))) !== null &amp;&amp; _c !== void 0 ? _c : '';
  }
  
  var getIsAuthorLs = function getIsAuthorLs(bizuin, bizType) {
    var _a;
    if (bizuin === void 0) {
      bizuin = window.biz;
    }
    if (bizType === void 0) {
      bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
    }
    return bizuin &amp;&amp; bizuin === LsGetBiz(bizType);
  };
  var getIsAuthor = function getIsAuthor(cb, bizuin, needCheckBiz, bizType) {
    var _a;
    if (bizuin === void 0) {
      bizuin = window.biz;
    }
    if (needCheckBiz === void 0) {
      needCheckBiz = false;
    }
    if (bizType === void 0) {
      bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
    }
    getBiz(needCheckBiz, bizType).then(function (biz) {
      cb(biz &amp;&amp; biz === bizuin);
    })["catch"](function () {
      cb(false);
    });
  };

  function parseUrl(url) {
    var len = url.length;
    var ques_pos = url.indexOf('?');
    var hash_pos = url.indexOf('#');
    hash_pos = hash_pos == -1 ? len : hash_pos;
    ques_pos = ques_pos == -1 ? hash_pos : ques_pos;
    var host = url.substring(0, ques_pos);
    var query_str = url.substring(ques_pos + 1, hash_pos);
    var hash = url.substring(hash_pos + 1);
    return {
      host: host,
      query_str: query_str,
      hash: hash
    };
  }
  function join(url, args, noEncode) {
    var ret = parseUrl(url);
    var query_str = ret.query_str;
    var args_arr = [];
    if (_typeof(args) === 'object') {
      for (var key in args) {
        if (args.hasOwnProperty(key)) {
          args_arr.push("".concat(key, "=").concat(noEncode ? args[key] : encodeURIComponent(args[key])));
        }
      }
    } else {
      args_arr.push(noEncode ? args : encodeURIComponent(args));
    }
    if (args_arr.length &gt; 0) {
      query_str += (query_str !== "" ? "&amp;" : "") + args_arr.join("&amp;");
    }
    return ret.host + (query_str !== "" ? "?".concat(query_str) : "") + (ret.hash !== "" ? "#".concat(ret.hash) : "");
  }
  
  function addParam(url, param, value, forceReplace) {
    url = url || location.href;
    var firstAndPos = url.indexOf("&amp;");
    var len = url.length;
    var reverseUrl = url.replace(/^[\w\d]+:[/\\]+/g, "").split("").reverse();
    if (!Array.prototype.indexOf) {
      Array.prototype.indexOf = function (searchElement, fromIndex) {
        var k;
        if (this == null) {
          throw new TypeError('"this" is null or not defined');
        }
        var O = Object(this);
        var len = O.length &gt;&gt;&gt; 0;
        if (len === 0) {
          return -1;
        }
        var n = fromIndex || 0;
        if (Math.abs(n) === Infinity) {
          n = 0;
        }
        if (n &gt;= len) {
          return -1;
        }
        k = Math.max(n &gt;= 0 ? n : len - Math.abs(n), 0);
        while (k &lt; len) {
          if (k in O &amp;&amp; O[k] === searchElement) {
            return k;
          }
          k++;
        }
        return -1;
      };
    }
    var lastSlashPos = len - 1 - reverseUrl.indexOf("/");
    if (firstAndPos !== -1 &amp;&amp; url.indexOf("?") == -1 &amp;&amp; firstAndPos &gt; lastSlashPos) {
      url = url.replace("&amp;", "?");
    }
    var reg = new RegExp("([\\?&amp;]".concat(param, "=)[^&amp;#]*"));
    if (!url.match(reg)) {
      var urlInfo = parseUrl(url);
      var hash = urlInfo.hash ? '#' + urlInfo.hash : '';
      url = url.replace(hash, '');
      var _pos = url.indexOf("?");
      if (_pos == -1) {
        return "".concat(url, "?").concat(param, "=").concat(value).concat(hash);
      }
      if (_pos == url.length - 1) {
        return "".concat(url + param, "=").concat(value).concat(hash);
      }
      return "".concat(url, "&amp;").concat(param, "=").concat(value).concat(hash);
    }
    if (forceReplace === true) {
      return url.replace(reg, "$1".concat(value));
    }
    return url;
  }
  function addWxfrom(src, wxfrom) {
    var offset = window.service_type === 1 ? 10000 : 0;
    return addParam(src, 'wxfrom', offset + Number(wxfrom), true);
  }
  function removeParam(url, param) {
    var _URL = new URL(url),
      protocol = _URL.protocol,
      host = _URL.host,
      pathname = _URL.pathname,
      search = _URL.search,
      hash = _URL.hash;
    var queryParams = new URLSearchParams(search);
    queryParams["delete"](param);
    var newSearch = queryParams.toString();
    var newUrl = new URL("".concat(protocol, "//").concat(host).concat(pathname).concat(newSearch ? "?".concat(decodeURIComponent(newSearch)) : "").concat(hash));
    return newUrl.toString();
  }
  function getQuery(name, url) {
    var u = url || window.location.search;
    var reg = new RegExp("(^|&amp;)".concat(name, "=([^&amp;]*)(&amp;|$)"));
    var r = u.substring(u.indexOf('?') + 1).match(reg);
    return r !== null ? r[2] : '';
  }
  function encodeBase64(value) {
    try {
      return window.btoa(value);
    } catch (e) {
      return '';
    }
  }
  function decodeBase64(value) {
    try {
      return window.atob(value);
    } catch (e) {
      return '';
    }
  }
  function joinUrl(url) {
    var obj = {};
    if (typeof window.uin !== 'undefined') {
      obj.uin = window.uin;
    }
    if (typeof window.key !== 'undefined') {
      obj.key = window.key;
    }
    if (typeof window.pass_ticket !== 'undefined') {
      obj.pass_ticket = window.pass_ticket;
    }
    if (typeof window.wxtoken !== 'undefined') {
      obj.wxtoken = window.wxtoken;
    }
    if (typeof window.devicetype !== 'undefined') {
      obj.devicetype = window.devicetype;
    }
    if (typeof window.clientversion !== 'undefined') {
      obj.clientversion = window.clientversion || mmversion.getInner();
    }
    obj.version = obj.clientversion;
    if (window.biz) {
      obj.__biz = window.biz;
    }
    if (getQuery('enterid')) {
      obj.enterid = getQuery('enterid');
    }
    if (typeof window.appmsg_token !== 'undefined') {
      obj.appmsg_token = window.appmsg_token;
    } else if (url.indexOf('advertisement_report') &gt; -1) {
      new Image().src = "".concat(location.protocol, "//mp.weixin.qq.com/mp/jsmonitor?idkey=68064_13_1&amp;r=").concat(Math.random());
    }
    obj.x5 = navigator.userAgent.indexOf('TBS/') !== -1 ? '1' : '0';
    obj.f = 'json';
    return join(url, obj);
  }
  function joinUserArticleRole(url, notJoin, cb) {
    var bizuin = arguments.length &gt; 3 &amp;&amp; arguments[3] !== undefined ? arguments[3] : window.biz;
    var needCheckBiz = arguments.length &gt; 5 &amp;&amp; arguments[5] !== undefined ? arguments[5] : false;
    if (notJoin) {
      cb(url);
    } else {
      getIsAuthor(function (isAuthor) {
        cb(addParam(url, 'user_article_role', isAuthor ? 1 : 0, true));
      }, bizuin, needCheckBiz);
    }
  }
  function getA8keyQuery(name, url) {
    return new Promise(function (resolve) {
      if (window.__secPageAuthPromise) {
        window.__secPageAuthPromise.then(function () {
          resolve(getQuery(name, url));
        });
      } else {
        resolve(getQuery(name, url));
      }
    });
  }
  function addHash(url, hash) {
    var isReplace = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    if (isReplace) {
      return "".concat(url.split('#')[0]).concat(hash);
    }
    return "".concat(url).concat(url.indexOf('#') === -1 ? '#' : '').concat(hash);
  }
  function decodeUrl(url) {
    var _url = url;
    while (_url.indexOf('&amp;amp;') !== -1) {
      _url = _url.htmlDecode();
    }
    return _url;
  }
  var Url = {
    parseUrl: parseUrl,
    join: join,
    addParam: addParam,
    addWxfrom: addWxfrom,
    addHash: addHash,
    getQuery: getQuery,
    getA8keyQuery: getA8keyQuery,
    encodeBase64: encodeBase64,
    decodeBase64: decodeBase64,
    joinUrl: joinUrl,
    joinUserArticleRole: joinUserArticleRole,
    removeParam: removeParam,
    decodeUrl: decodeUrl
  };

  
  
  var Device = {};
  function detect(ua) {
    var MQQBrowser = ua.match(/MQQBrowser\/(\d+\.\d+)/i);
    var MQQClient = ua.match(/QQ\/(\d+\.(\d+)\.(\d+)\.(\d+))/i) || ua.match(/V1_AND_SQ_([\d\.]+)/);
    var WeChat = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/) || ua.match(/MicroMessenger\/((\d+)\.(\d+))/);
    var MacOS = ua.match(/Mac\sOS\sX\s(\d+[\.|_]\d+)/);
    var WinOS = ua.match(/Windows(\s+\w+)?\s+?(\d+\.\d+)/);
    var Linux = ua.match(/Linux\s/);
    var MiuiBrowser = ua.match(/MiuiBrowser\/(\d+\.\d+)/i);
    var M1 = ua.match(/MI-ONE/);
    var MIPAD = ua.match(/MI PAD/);
    var UC = ua.match(/UCBrowser\/(\d+\.\d+(\.\d+\.\d+)?)/) || ua.match(/\sUC\s/);
    var IEMobile = ua.match(/IEMobile(\/|\s+)(\d+\.\d+)/) || ua.match(/WPDesktop/);
    var ipod = ua.match(/(ipod).*\s([\d_]+)/i);
    var ipad = ua.match(/(ipad).*\s([\d_]+)/i);
    var iphone = ua.match(/(iphone)\sos\s([\d_]+)/i);
    var Chrome = ua.match(/Chrome\/(\d+\.\d+)/);
    var AndriodBrowser = ua.match(/Mozilla.*Linux.*Android.*AppleWebKit.*Mobile Safari/);
    var android = ua.match(/(android)\s([\d\.]+)/i);
    var harmony = ua.match(/(OpenHarmony)\s([\d\.]+)/i);
    Device.browser = Device.browser || {}, Device.os = Device.os || {};
    Device.os.type = -1;
    Device.os.unifiedPC = ua.match(/UnifiedPC/);
    Device.os.unifiedMac = /UnifiedPCMac/i.test(ua);
    Device.os.unifiedWindows = /UnifiedPCWindows/i.test(ua);
    if (window.ActiveXObject) {
      var vie = 6;
      (window.XMLHttpRequest || ua.indexOf('MSIE 7.0') &gt; -1) &amp;&amp; (vie = 7);
      (window.XDomainRequest || ua.indexOf('Trident/4.0') &gt; -1) &amp;&amp; (vie = 8);
      ua.indexOf('Trident/5.0') &gt; -1 &amp;&amp; (vie = 9);
      ua.indexOf('Trident/6.0') &gt; -1 &amp;&amp; (vie = 10);
      Device.browser.ie = true, Device.browser.version = vie;
    } else if (ua.indexOf('Trident/7.0') &gt; -1) {
      Device.browser.ie = true, Device.browser.version = 11;
    }
    if (android) {
      Device.os.android = true;
      Device.os.version = android[2];
      Device.os.type = 2;
    }
    if (harmony) {
      Device.os.harmony = true;
      Device.os.version = harmony[2];
      Device.os.type = 42;
    }
    if (ipod) {
      Device.os.ios = Device.os.ipod = true;
      Device.os.version = ipod[2].replace(/_/g, '.');
    }
    if (ipad) {
      Device.os.ios = Device.os.ipad = true;
      Device.os.version = ipad[2].replace(/_/g, '.');
      Device.os.type = 13;
    }
    if (iphone) {
      Device.os.iphone = Device.os.ios = true;
      Device.os.version = iphone[2].replace(/_/g, '.');
      Device.os.type = 1;
    }
    if (WinOS) Device.os.windows = true, Device.os.version = WinOS[2], Device.os.type = 15;
    if (MacOS) Device.os.Mac = true, Device.os.version = MacOS[1], Device.os.type = 14;
    if (Linux) Device.os.Linux = true, Device.os.type = 33;
    if (ua.indexOf('lepad_hls') &gt; 0) Device.os.LePad = true;
    if (MIPAD) Device.os.MIPAD = true;
    if (MQQBrowser) Device.browser.MQQ = true, Device.browser.version = MQQBrowser[1];
    if (MQQClient) Device.browser.MQQClient = true, Device.browser.version = MQQClient[1];
    if (WeChat) Device.browser.WeChat = true, Device.browser.mmversion = Device.browser.version = WeChat[1];
    if (MiuiBrowser) Device.browser.MIUI = true, Device.browser.version = MiuiBrowser[1];
    if (UC) Device.browser.UC = true, Device.browser.version = UC[1] || NaN;
    if (IEMobile) Device.browser.IEMobile = true, Device.browser.version = IEMobile[2];
    if (AndriodBrowser) {
      Device.browser.AndriodBrowser = true;
    }
    if (M1) {
      Device.browser.M1 = true;
    }
    if (Chrome) {
      Device.browser.Chrome = true, Device.browser.version = Chrome[1];
    }
    if (Device.os.windows) {
      if (typeof navigator.platform !== "undefined" &amp;&amp; navigator.platform.toLowerCase() == "win64") {
        Device.os.win64 = true;
      } else {
        Device.os.win64 = false;
      }
    }
    if (Device.os.Mac || Device.os.windows || Device.os.Linux || Device.os.unifiedPC || /OpenHarmony/i.test(ua) &amp;&amp; /pc/i.test(ua)) {
      Device.os.pc = true;
    }
    var osType = {
      iPad7: 'iPad; CPU OS 7',
      LePad: 'lepad_hls',
      XiaoMi: 'MI-ONE',
      SonyDTV: "SonyDTV",
      SamSung: 'SAMSUNG',
      HTC: 'HTC',
      VIVO: 'vivo'
    };
    for (var os in osType) {
      Device.os[os] = ua.indexOf(osType[os]) !== -1;
    }
    Device.os.phone = Device.os.phone || /windows phone/i.test(ua);
    Device.os.getNumVersion = function () {
      return parseFloat(Device.os.version);
    };
    Device.os.hasTouch = 'ontouchstart' in window;
    if (Device.os.hasTouch &amp;&amp; Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 6) {
      Device.os.hasTouch = false;
    }
    if (Device.browser.WeChat &amp;&amp; Device.browser.version &lt; 5.0) {
      Device.os.hasTouch = false;
    }
    Device.browser.getNumVersion = function () {
      return parseFloat(Device.browser.version);
    };
    Device.browser.isFFCanOcx = function () {
      return !!Device.browser.firefox &amp;&amp; Device.browser.getNumVersion() &gt;= 3.0;
    };
    Device.browser.isCanOcx = function () {
      return !!Device.os.windows &amp;&amp; (!!Device.browser.ie || Device.browser.isFFCanOcx() || !!Device.browser.webkit);
    };
    Device.browser.isNotIESupport = function () {
      return !!Device.os.windows &amp;&amp; (!!Device.browser.webkit || Device.browser.isFFCanOcx());
    };
    Device.userAgent = {};
    Device.userAgent.browserVersion = Device.browser.version;
    Device.userAgent.osVersion = Device.os.version;
    if (Device.os.unifiedPC) {
      if (Device.os.unifiedWindows) Device.os.type = 37;else if (Device.os.unifiedMac) Device.os.type = 38;else Device.os.type = 39;
    }
    delete Device.userAgent.version;
  }
  detect(window.navigator.userAgent);
  function canSupportH5Video() {
    var ua = window.navigator.userAgent,
      m = null;
    if (!!Device.os.android) {
      if (Device.browser.MQQ &amp;&amp; Device.browser.getNumVersion() &gt;= 4.2) {
        return true;
      }
      if (ua.indexOf('MI2') != -1) {
        return true;
      }
      if (Device.os.version &gt;= '4' &amp;&amp; (m = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/))) {
        if (parseFloat(m[1]) &gt;= 4.2) {
          return true;
        }
      }
      if (Device.os.version &gt;= '4.1') {
        return true;
      }
    }
    return false;
  }
  function canSupportVideoMp4() {
    var video = document.createElement('video');
    if (typeof video.canPlayType === 'function') {
      if (video.canPlayType('video/mp4; codecs="mp4v.20.8"') === 'probably') {
        return true;
      }
      if (video.canPlayType('video/mp4; codecs="avc1.42E01E"') === 'probably' || video.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"') === 'probably') {
        return true;
      }
    }
    return false;
  }
  function canSupportAutoPlay() {
    if (Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 10) {
      return false;
    }
    return true;
  }
  function isLockdownMode() {
    if (!Device.os.ios || Device.os.getNumVersion() &lt; 16) {
      return false;
    }
    if (typeof WebAssembly === 'undefined' &amp;&amp; typeof OfflineAudioContext === 'undefined' &amp;&amp; typeof WebGLRenderingContext === 'undefined') {
      return true;
    }
    return false;
  }
  Device.canSupportVideo = canSupportVideoMp4 || canSupportH5Video;
  Device.canSupportVideoMp4 = canSupportVideoMp4;
  Device.canSupportH5Video = canSupportH5Video;
  Device.canSupportAutoPlay = canSupportAutoPlay;
  Device.isLockdownMode = isLockdownMode;
  
  Device.cpVersion = function (version) {
    var cp = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 0;
    var canEqual = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    var nowVersionStr = Device.os.version;
    if (!nowVersionStr) return false;
    var versionArr = version.split('.');
    var nowVersionArr = nowVersionStr.split('.');
    for (var i = 0; i &lt; Math.max(nowVersionArr.length, versionArr.length); i++) {
      var vi = +versionArr[i];
      var nvi = +nowVersionArr[i];
      if (vi === nvi) continue;
      if (cp &gt; 0) return vi &gt; nvi;
      if (cp &lt; 0) return vi &lt; nvi;
    }
    return canEqual || cp === 0;
  };

  var isIPadOS13 = Device.os.ipad &amp;&amp; Device.os.getNumVersion() &gt;= 13 &amp;&amp; Device.os.getNumVersion() &lt; 14;
  function isSupportTextSizeAdjust() {
    var _a, _b;
    if (mmversion.isIOS) {
      return true;
    }
    return mmversion.isAndroid &amp;&amp; !!((_b = (_a = window.xweb_wechat_extend) === null || _a === void 0 ? void 0 : _a.AvailableFeatures) === null || _b === void 0 ? void 0 : _b.includes('XWEB_SUPPORT_TEXT_SIZE_ADJUST'));
  }
  function getNativeFontScaleVar() {
    if (window.__nativeFontScale__) {
      return window.__nativeFontScale__;
    }
    setNativeFontScaleVar(getScaleByDom());
    return window.__nativeFontScale__;
  }
  function setNativeFontScaleVar(val) {
    window.__nativeFontScale__ = val || 1;
  }
  function getScaleByDPR() {
    var _a;
    if (window.__dprScale__ !== null &amp;&amp; window.__dprScale__ !== undefined) return window.__dprScale__;
    try {
      var scale = (_a = window.__wxWebEnv) === null || _a === void 0 ? void 0 : _a.getLayoutScale();
      if (typeof scale === 'number' &amp;&amp; scale &gt; 0 &amp;&amp; isFinite(scale)) {
        window.__dprScale__ = 1 / scale;
        return window.__dprScale__;
      }
    } catch (e) {
    }
    window.__dprScale__ = 1;
    return window.__dprScale__;
  }
  function getNativeFontScale() {
    return getNativeFontScaleVar() * getScaleByDPR();
  }
  function getScaleByDom() {
    if (typeof document === 'undefined' || !document.body) {
      return 1;
    }
    var fontDom = document.createElement('div');
    fontDom.style.fontSize = '16px';
    document.body.appendChild(fontDom);
    var originFontSize = parseFloat(fontDom.style.fontSize);
    var realFontSize = parseFloat(window.getComputedStyle(fontDom, null).getPropertyValue('font-size'));
    document.body.removeChild(fontDom);
    var percent = realFontSize / originFontSize;
    if (!percent || percent &lt;= 0 || !isFinite(percent)) {
      return 1;
    }
    return percent;
  }
  function getScaleFromParent(node) {
    var targetNode;
    if (node instanceof ShadowRoot) {
      targetNode = node.host;
    } else {
      targetNode = node;
    }
    var originScale = targetNode.getAttribute('mp-font-scale');
    if (originScale) {
      return parseFloat(originScale);
    }
    if (!targetNode.parentElement) return getNativeFontScale();
    return getScaleFromParent(targetNode.parentElement);
  }
  function setFontSize(root, percent, fontScale) {
    if (root === null || !percent || mmversion.isPcWechat || !mmversion.isWechat) return;
    if (isSupportTextSizeAdjust()) {
      var targetEl = root instanceof ShadowRoot ? root.host : root;
      targetEl.setAttribute('mp-font-scale', percent.toString());
      var adjustValue = mmversion.isIOS ? "".concat(percent * 100, "%") : "".concat(percent * 100 / getNativeFontScale(), "%");
      targetEl.style.setProperty('-webkit-text-size-adjust', adjustValue);
      targetEl.style.setProperty('text-size-adjust', adjustValue);
      return;
    }
    var nowFontScale = fontScale || getScaleFromParent(root);
    if (root instanceof ShadowRoot) {
      root.host.setAttribute('mp-font-scale', percent.toString());
    } else {
      root.setAttribute('mp-font-scale', percent.toString());
    }
    var setQueue = [];
    var textWalker = document.createTreeWalker(root, 1);
    do {
      var textContainer = textWalker.currentNode;
      if (textContainer.nodeType !== 1) continue;
      if (textContainer.tagName &amp;&amp; customElements.get(textContainer.tagName.toLowerCase()) &amp;&amp; textContainer.shadowRoot) {
        var shadowRoot = textContainer.shadowRoot;
        setFontSize(shadowRoot, percent, fontScale);
        continue;
      }
      var oriFontSize = textContainer.getAttribute('mp-original-font-size');
      if (!oriFontSize) {
        if (isIPadOS13) {
          oriFontSize = String(parseFloat(getComputedStyle(textContainer).fontSize));
        } else {
          oriFontSize = String(parseFloat(getComputedStyle(textContainer).fontSize) / nowFontScale);
        }
        textContainer.setAttribute('mp-original-font-size', oriFontSize);
      }
      var oriLineHeight = textContainer.getAttribute('mp-original-line-height');
      if (!oriLineHeight) {
        oriLineHeight = parseFloat(getComputedStyle(textContainer).lineHeight) / parseFloat(getComputedStyle(textContainer).fontSize);
        textContainer.setAttribute('mp-original-line-height', String(oriLineHeight));
      }
      setQueue.push([textContainer, oriFontSize, oriLineHeight]);
    } while (textWalker.nextNode());
    for (var _i = 0, _setQueue = setQueue; _i &lt; _setQueue.length; _i++) {
      var setPair = _setQueue[_i];
      var originalSize = parseFloat(setPair[1]);
      if (isNaN(originalSize) || originalSize &lt;= 0) {
        continue;
      }
      var calculatedSize = originalSize * (percent / getNativeFontScale());
      if (!isFinite(calculatedSize) || calculatedSize &lt;= 0 || calculatedSize &gt; 1000) {
        continue;
      }
      setPair[0].style.fontSize = "".concat(calculatedSize, "px");
      setPair[0].style.lineHeight = "".concat(setPair[2]);
    }
  }
  function limitFontSizePercent(el, maxPercent) {
    var nowFontScale = getScaleFromParent(el);
    var setPercent = Math.min(maxPercent, getNativeFontScale());
    if (isIPadOS13) {
      setFontSize(el, setPercent, nowFontScale);
    } else if (mmversion.isAndroid || mmversion.isHarmony) {
      setFontSize(el, setPercent, nowFontScale);
    } else if (mmversion.isIOS) {
      el.style.setProperty('-webkit-text-size-adjust', "".concat(Math.min(maxPercent, nowFontScale) * 100, "%"));
    }
  }
  function fixedFontSizePercent(el) {
    var nowFontScale = getScaleFromParent(el);
    var setPercent = 1;
    if (isIPadOS13) {
      setFontSize(el, setPercent, nowFontScale);
    } else if (mmversion.isAndroid) {
      setFontSize(el, setPercent, nowFontScale);
    } else if (mmversion.isIOS) {
      el.style.setProperty('-webkit-text-size-adjust', '100%');
    }
  }

  var key = 'stream_last_read_pos';
  new LS(key);
  var interactionStatusLS = new LS('bottom_interaction_status');
  function getInteractionStatus() {
    var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    var biz = opt.biz || window.biz;
    var sn = opt.sn || window.sn;
    var mid = opt.mid || window.mid;
    var idx = opt.idx || window.idx;
    var interactionStatusKey = [biz, sn, mid, idx].join('_');
    var interactionStatusInfo = interactionStatusLS.get(interactionStatusKey) || {};
    if (Object.prototype.toString.call(interactionStatusInfo) !== '[object Object]' || window.cgiData &amp;&amp; window.cgiData.trans_appmsg_info &amp;&amp; window.cgiData.trans_appmsg_info.trans_type === 1
    ) {
      interactionStatusInfo = {};
    }
    var interactionSubscribeInfo = interactionStatusLS.get(biz + 'interaction_subscribe') || {};
    interactionStatusInfo.is_subscribed = interactionSubscribeInfo.is_subscribed || false;
    return interactionStatusInfo;
  }

  function textOverflow(el, binding) {
    var _a, _b;
    if (!el || getComputedStyle(el).display === 'none') return;
    var text = el.innerHTML;
    if (!text || !text.length) return;
    var retainTail = [];
    if ((_a = binding.value) === null || _a === void 0 ? void 0 : _a.tailNum) {
      retainTail = Array.from(el.childNodes).slice(-binding.value.tailNum);
    }
    var count = 0;
    function needTextOverflow() {
      var _a;
      if ((_a = binding.value) === null || _a === void 0 ? void 0 : _a.lineClamp) {
        return binding.value.lineClamp &lt; computeLineNum(el);
      }
      return el.offsetHeight &lt; el.scrollHeight;
    }
    if (needTextOverflow()) {
      try {
        var getLeaf = function getLeaf(node) {
          var result = [];
          if (!node.childNodes || node.childNodes.length === 0) {
            return [node];
          }
          node.childNodes.forEach(function (child) {
            result = [].concat(_toConsumableArray(result), _toConsumableArray(getLeaf(child)));
          });
          return result;
        };
        var getFragmentHTML = function getFragmentHTML(frag) {
          var _a, _b;
          var div = document.createDocumentFragment();
          div.appendChild(frag);
          var span = document.createElement('span');
          span.innerHTML = ((_a = binding.value) === null || _a === void 0 ? void 0 : _a.html) || '...';
          if (div.lastElementChild) {
            div.lastElementChild.style.display = 'inline';
          }
          div.appendChild(span);
          el.extraElement = span;
          if ((_b = binding.value) === null || _b === void 0 ? void 0 : _b.tailNum) {
            retainTail.forEach(function (tail) {
              div.appendChild(tail);
            });
          }
          return div;
        };
        var findLastNode = function findLastNode(start, end) {
          if (end - start &lt;= 1) {
            range.setEndAfter(leaves[start]);
            setNewFrag(el, getFragmentHTML(range.cloneContents()));
            return needTextOverflow() ? start : end;
          }
          var mid = start + end &gt;&gt; 1;
          count++;
          range.setEndAfter(leaves[mid]);
          setNewFrag(el, getFragmentHTML(range.cloneContents()));
          return needTextOverflow() ? findLastNode(start, mid) : findLastNode(mid, end);
        };
        var findLastCharIndex = function findLastCharIndex(start, end) {
          if (end - start &lt;= 1) {
            if (start === 0) {
              range.setEndAfter(leaves[Math.max(lastNodeIndex - 1, 0)]);
            } else {
              range.setEnd(lastNode, start);
            }
            setNewFrag(el, getFragmentHTML(range.cloneContents()));
            return start;
          }
          var mid = start + end &gt;&gt; 1;
          count++;
          range.setEnd(lastNode, mid);
          setNewFrag(el, getFragmentHTML(range.cloneContents()));
          return needTextOverflow() ? findLastCharIndex(start, mid) : findLastCharIndex(mid, end);
        };
        var dom = document.createElement('div');
        dom.innerHTML = text;
        var leaves = getLeaf(dom);
        var range = document.createRange();
        range.setStartBefore(leaves[0]);
        var lastNodeIndex = findLastNode(0, leaves.length - 1);
        var lastNode = leaves[lastNodeIndex];
        findLastCharIndex(0, lastNode.textContent.length);
        ((_b = binding.value) === null || _b === void 0 ? void 0 : _b.processExtraElement) &amp;&amp; binding.value.processExtraElement(el.extraElement, el);
      } catch (error) {
        console.error(error);
      }
    }
  }
  function computeLineNum(el) {
    var computyStyle = getComputedStyle(el);
    return Math.round(el.offsetHeight / parseFloat(computyStyle.lineHeight));
  }
  function removeAllChild(el) {
    var childNodes = Array.from(el.childNodes);
    childNodes.forEach(function (child) {
      el.removeChild(child);
    });
  }
  function setNewFrag(el, frag) {
    removeAllChild(el);
    el.appendChild(frag);
  }

  var __setBarData = function __setBarData(appmsgBarData, cgiData, allData) {
    if (Url.getQuery('uninteractive') * 1 === 1) return;
    var barWarp = document.querySelector('#js_article_bottom_bar');
    var barMask = document.querySelector('#js_temp_bar_mask');
    var isImageType = (cgiData === null || cgiData === void 0 ? void 0 : cgiData.item_show_type) * 1 === 8;
    try {
      if (isImageType) {
        var imgPagePosLS = new LS('page_pos_image', 'clear-all');
        var imgPagePosKey = [cgiData.biz, cgiData.sn, cgiData.mid, cgiData.idx].join('_');
        var _ref = imgPagePosLS.get(imgPagePosKey) || {},
          barPostion = _ref.barPostion,
          barIsRelativeStyle = _ref.barIsRelativeStyle;
        if (document.body.classList.contains('pages_skin_pc') || barPostion === 2 &amp;&amp; barIsRelativeStyle) {
          window._has_not_render_bar_placeholder_ = true;
          return;
        }
      }
    } catch (err) {
      console.error(err);
    }
    var bottombar = document.getElementById('js_wx_follow_nickname_large_font');
    var fontScale = +Url.getQuery('fontScale');
    if (!fontScale) {
      try {
        var envData = JSON.parse(window.__wxWebEnv &amp;&amp; window.__wxWebEnv.getEnv());
        if (envData.fontScale) fontScale = +envData.fontScale;
      } catch (e) {}
    }
    if (!appmsgBarData) {
      return;
    }
    function formatReadNum(value) {
      var unit = '万';
      if (window.LANG === 'en') {
        unit = 'k';
      }
      var result = '';
      if (parseInt(value, 10) &gt; 100000) {
        result = 10 + unit + '+';
      } else if (parseInt(value, 10) &gt; 10000 &amp;&amp; parseInt(value, 10) &lt;= 100000) {
        var num = '' + parseInt(value, 10) / 10000;
        var dotIndex = num.indexOf('.');
        if (dotIndex === -1) {
          result = num + unit;
        } else {
          result = num.substr(0, dotIndex) + '.' + num.charAt(dotIndex + 1) + unit;
        }
      } else if (parseInt(value, 10) === 0) {
        result = '';
      } else {
        result = value || '';
      }
      return result;
    }
    try {
      var barOldlikeBtn = document.getElementById('js_bar_oldlike_btn');
      var barShareBtn = document.getElementById('js_bar_share_btn');
      var barLikeBtn = document.getElementById('js_bar_like_btn');
      var barCommentBtn = document.getElementById('js_bar_comment_btn');
      var barCollectBtn = document.getElementById('js_bar_collect_btn');
      var barSubscribeBtn = document.getElementById('js_bar_subscribe_btn');
      var barReadNum = document.getElementById('js_temp_bar_read_num');
      var tempBarToAnalysis = document.getElementById('js_temp_bar_to_analysis');
      var tempbarWriteCmt = document.getElementById('js_temp_bar_write_cmt');
      var tempBarProfile = document.getElementById('js_bar_profile');
      var barProfileHead = document.getElementById('js_bar_profile_head');
      var oldLikeEl = barOldlikeBtn &amp;&amp; barOldlikeBtn.parentElement;
      var likeEl = barLikeBtn &amp;&amp; barLikeBtn.parentElement;
      var isChanegeCommentBtnContext = false;
      try {
        var defaultText = '写留言';
        var fontSize = (barCommentBtn &amp;&amp; window.getComputedStyle(barCommentBtn).fontSize.split('px')[0] || 12) * Math.min(1.24, fontScale / 100);
        var offsetWidth = (barCommentBtn === null || barCommentBtn === void 0 ? void 0 : barCommentBtn.offsetWidth) || 39;
        isChanegeCommentBtnContext = fontSize * defaultText.length &gt;= offsetWidth;
      } catch (e) {
        console.error('=======compute comment width error ', e);
      }
      var interactionStatus = cgiData.isFinderMsg ? {} : getInteractionStatus({
        biz: cgiData.biz,
        mid: cgiData.mid,
        sn: cgiData.sn,
        idx: cgiData.idx
      });
      var isAuthorWx = getIsAuthorLs(cgiData.biz, allData.biz_type);
      if (interactionStatus.is_my_old_like &amp;&amp; !isAuthorWx) {
        oldLikeEl &amp;&amp; oldLikeEl.classList.add('praised');
      }
      if (interactionStatus.is_my_like &amp;&amp; !isAuthorWx) {
        likeEl &amp;&amp; (appmsgBarData.show_friend_seen === 2 ? likeEl.classList.add('love_btn_loved') : likeEl.classList.add('like_btn_liked'));
      }
      var old_like_count = interactionStatus.old_like_count * 1 ? Math.max(interactionStatus.old_like_count * 1, appmsgBarData.old_like_count) : appmsgBarData.old_like_count || 0;
      var share_count = interactionStatus.share_count * 1 ? Math.max(interactionStatus.share_count * 1, appmsgBarData.share_count) : appmsgBarData.share_count || 0;
      var like_count = interactionStatus.like_count * 1 ? Math.max(interactionStatus.like_count * 1, appmsgBarData.like_count) : appmsgBarData.like_count || 0;
      var comment_count = interactionStatus.comment_count * 1 ? Math.max(interactionStatus.comment_count * 1, appmsgBarData.comment_count) : appmsgBarData.comment_count || 0;
      var comment_enabled = (typeof interactionStatus.comment_enabled === 'number' ? interactionStatus.comment_enabled : appmsgBarData.comment_enabled || 0) * 1;
      var collect_count = appmsgBarData.collect_count || 0;
      var read_num = appmsgBarData.read_num || 0;

      
      if (barOldlikeBtn) {
        var defaultWd = isAuthorWx ? '0' : '赞';
        barOldlikeBtn.innerText = old_like_count ? formatReadNum(old_like_count) : defaultWd;
      }
      if (barShareBtn) {
        var _defaultWd = isAuthorWx ? '0' : '分享';
        barShareBtn.innerText = share_count ? formatReadNum(share_count) : _defaultWd;
      }
      if (barLikeBtn) {
        var _defaultWd2 = isAuthorWx ? '0' : allData &amp;&amp; allData.red_flower_like_info &amp;&amp; allData.red_flower_like_info.is_red_flower_like * 1 === 1 ? '助力' : '推荐';
        barLikeBtn.innerText = like_count ? formatReadNum(like_count) : _defaultWd2;
      }
      if (barCommentBtn) {
        var _defaultWd3 = isAuthorWx ? '0' : isChanegeCommentBtnContext ? '留言' : '写留言';
        barCommentBtn.innerText = comment_count ? formatReadNum(comment_count) : _defaultWd3;
      }
      if (barCollectBtn) {
        var _defaultWd4 = isAuthorWx ? '0' : '收藏';
        barCollectBtn.innerText = collect_count ? formatReadNum(collect_count) : _defaultWd4;
      }
      if (read_num &amp;&amp; barReadNum) {
        if (allData &amp;&amp; allData.private_info.private_type === 1) {
          barReadNum.innerText = '仅自己可见';
        } else {
          barReadNum.innerText = '阅读 ' + formatReadNum(read_num);
        }
      }
      if (mmversion.isInMiniProgram) {
        if (barShareBtn) {
          barShareBtn.style.display = 'none';
        }
        if (barLikeBtn) {
          barLikeBtn.style.display = 'none';
        }
      }
      var tempbarPraiseBtn = document.getElementById('js_temp_sns_sc_praise_btn');
      var tempbarShareBtn = document.getElementById('js_temp_sns_sc_share_btn');
      var tempbarCollectBtn = document.getElementById('js_temp_sns_sc_collect_btn');
      var tempbarLikeBtn = document.getElementById('js_temp_sns_sc_like_btn');
      var tempbarCommentBtn = document.getElementById('js_temp_sns_sc_comment_btn');
      var tempbarCommentBtnCon = document.getElementById('js_temp_sns_sc_comment_btn_con');
      var tempbarFriendSubscribe = document.getElementById('js_bar_friend_subscribe');
      var tempbarSubscribeBtn = document.getElementById('js_temp_bar_subscribe_btn');
      var tempbarFriendsList = document.getElementById('js_stream_friends_all');
      var tempLoadingInnerHtml = '&lt;span class="sns_opr_gap"&gt;&lt;span style="font-size: 12px" class="weui-primary-loading"&gt;&lt;i class="weui-primary-loading__dot"&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;';
      var handleTempClick = function handleTempClick(_ref2) {
        var type = _ref2.type,
          val = _ref2.val,
          sucCb = _ref2.sucCb,
          failCb = _ref2.failCb;
        if (typeof window.__click_temp_btm_bar_cb__ === 'function') {
          window.__click_temp_btm_bar_cb__({
            type: type,
            val: val,
            sucCb: sucCb,
            failCb: failCb
          });
        } else {
          if (!window.__wait_click_temp_btm_bar_cb__) window.__wait_click_temp_btm_bar_cb__ = [];
          window.__wait_click_temp_btm_bar_cb__.push(function () {
            window.__click_temp_btm_bar_cb__({
              type: type,
              val: val,
              sucCb: sucCb,
              failCb: failCb
            });
          });
        }
      };
      if (isAuthorWx) {
        tempbarPraiseBtn &amp;&amp; tempbarPraiseBtn.classList.add('author_praise_btn');
        tempbarLikeBtn &amp;&amp; tempbarLikeBtn.classList.add('author_love_btn');
        tempbarFriendSubscribe &amp;&amp; (tempbarFriendSubscribe.style.display = 'none');
        tempbarSubscribeBtn &amp;&amp; (tempbarSubscribeBtn.style.display = 'none');
        tempbarFriendsList &amp;&amp; (tempbarFriendsList.style.display = 'none');
      }
      if (interactionStatus &amp;&amp; interactionStatus.is_subscribed) {
        tempbarFriendSubscribe &amp;&amp; (tempbarFriendSubscribe.style.display = 'none');
        tempbarSubscribeBtn &amp;&amp; (tempbarSubscribeBtn.style.display = 'none');
      }
      tempbarPraiseBtn &amp;&amp; barOldlikeBtn &amp;&amp; oldLikeEl &amp;&amp; tempbarPraiseBtn.addEventListener('click', function () {
        if (isAuthorWx) {
          if (tempbarPraiseBtn.getAttribute('has_click') * 1 === 1) return;
          tempbarPraiseBtn.setAttribute('has_click', 1);
          var tempInnerHTML = tempbarPraiseBtn.innerHTML;
          tempbarPraiseBtn.innerHTML = tempLoadingInnerHtml;
          handleTempClick({
            type: 'author_praise',
            sucCb: function sucCb() {
              tempbarPraiseBtn.removeAttribute('has_click');
              tempbarPraiseBtn.innerHTML = tempInnerHTML;
            }
          });
          return;
        }
        var newPraiseStatus = !oldLikeEl.classList.contains('praised');
        var readNum = 0;
        if (newPraiseStatus) {
          oldLikeEl.classList.add('praised');
          readNum = formatReadNum(interactionStatus.is_my_old_like ? old_like_count : old_like_count + 1);
        } else {
          oldLikeEl.classList.remove('praised');
          readNum = formatReadNum(interactionStatus.is_my_old_like ? Math.max(0, old_like_count - 1) : old_like_count);
        }
        barOldlikeBtn.innerText = readNum ? readNum : '赞';
        handleTempClick({
          type: 'praise',
          val: newPraiseStatus
        });
      });
      tempbarLikeBtn &amp;&amp; barLikeBtn &amp;&amp; likeEl &amp;&amp; tempbarLikeBtn.addEventListener('click', function () {
        if (isAuthorWx) {
          if (tempbarLikeBtn.getAttribute('has_click') * 1 === 1) return;
          tempbarLikeBtn.setAttribute('has_click', 1);
          var tempInnerHTML = tempbarLikeBtn.innerHTML;
          tempbarLikeBtn.innerHTML = tempLoadingInnerHtml;
          handleTempClick({
            type: 'author_recommend',
            sucCb: function sucCb() {
              tempbarLikeBtn.removeAttribute('has_click');
              tempbarLikeBtn.innerHTML = tempInnerHTML;
            }
          });
          return;
        }
        var newRecommendStatus = appmsgBarData.show_friend_seen === 2 ? !likeEl.classList.contains('love_btn_loved') : !likeEl.classList.contains('like_btn_liked');
        var recommendNum = 0;
        if (newRecommendStatus) {
          appmsgBarData.show_friend_seen === 2 ? likeEl.classList.add('love_btn_loved') : likeEl.classList.add('like_btn_liked');
          recommendNum = formatReadNum(interactionStatus.is_my_like ? like_count : like_count + 1);
        } else {
          appmsgBarData.show_friend_seen === 2 ? likeEl.classList.remove('love_btn_loved') : likeEl.classList.remove('like_btn_liked');
          recommendNum = formatReadNum(interactionStatus.is_my_like ? Math.max(0, like_count - 1) : like_count);
        }
        if (recommendNum) {
          barLikeBtn.innerText = recommendNum;
        } else {
          barLikeBtn.innerText = appmsgBarData.show_friend_seen === 2 ? '推荐' : '在看';
        }
        handleTempClick({
          type: 'recommend',
          val: newRecommendStatus
        });
      });
      tempbarShareBtn &amp;&amp; barShareBtn &amp;&amp; tempbarShareBtn.addEventListener('click', function () {
        if (tempbarShareBtn.getAttribute('has_click') * 1 === 1) return;
        tempbarShareBtn.setAttribute('has_click', 1);
        var tempInnerHTML = tempbarShareBtn.innerHTML;
        tempbarShareBtn.innerHTML = tempLoadingInnerHtml;
        handleTempClick({
          type: 'share',
          sucCb: function sucCb() {
            tempbarShareBtn.removeAttribute('has_click');
            tempbarShareBtn.innerHTML = tempInnerHTML;
          }
        });
      });
      tempbarCommentBtn &amp;&amp; barCommentBtn &amp;&amp; tempbarCommentBtn.addEventListener('click', function () {
        if (barCommentBtn.getAttribute('has_click') * 1 === 1) return;
        barCommentBtn.setAttribute('has_click', 1);
        var tempInnerHTML = barCommentBtn.innerHTML;
        barCommentBtn.innerHTML = tempLoadingInnerHtml;
        handleTempClick({
          type: 'comment',
          sucCb: function sucCb() {
            barCommentBtn.removeAttribute('has_click');
            barCommentBtn.innerHTML = tempInnerHTML;
          }
        });
      });
      tempbarCollectBtn &amp;&amp; barCollectBtn &amp;&amp; tempbarCollectBtn.addEventListener('click', function () {
        handleTempClick({
          type: 'collect'
        });
      });
      barSubscribeBtn &amp;&amp; barSubscribeBtn.addEventListener('click', function () {
        handleTempClick({
          type: 'subscribe'
        });
      });
      tempBarToAnalysis &amp;&amp; tempBarToAnalysis.addEventListener('click', function () {
        handleTempClick({
          type: 'to_analysis'
        });
      });
      if (comment_enabled || isAuthorWx &amp;&amp; comment_count &gt; 0) {
        tempbarCommentBtnCon &amp;&amp; (tempbarCommentBtnCon.style.display = '');
        if (isAuthorWx &amp;&amp; comment_enabled * 1 === 0) {
          tempbarCommentBtn.classList.add('sns_sc_lock_comment_btn');
        }
      }
    } catch (error) {
      console.error(error);
    }
    try {
      try {
        var interactionBar = document.querySelectorAll('.interaction_bar_placeholder');
        var buttons = document.querySelectorAll('.wx_follow_button_placeholder');
        var fixedElements = _toConsumableArray(buttons);
        var maxSize = 1.24;
        var maxSizeElements = _toConsumableArray(interactionBar);
        for (var i = 0; i &lt; fixedElements.length; i++) {
          fixedFontSizePercent(fixedElements[i]);
        }
        for (var _i = 0; _i &lt; maxSizeElements.length; _i++) {
          limitFontSizePercent(maxSizeElements[_i], maxSize);
        }
      } catch (err) {
        console.error('limitFontSizePercent error', err);
      }
      if (fontScale &gt;= 116) {
        var bigBar = document.querySelector('.js_big_font_size_bottom_bar');
        var normalBar = document.querySelector('.js_normal_font_size_bottom_bar');
        var normalBarFt = document.querySelector('.js_normal_font_size_bottom_bar_ft');
        if (normalBar) normalBar.style.display = 'none';
        if (normalBarFt) normalBarFt.style.display = 'none';
        if (bigBar) bigBar.style.display = 'block';
        var bigTopBar = document.querySelector('.js_big_font_size_top_bar');
        var normalTopBar = document.querySelector('.js_normal_font_size_top_bar');
        var normalTopBarFt = document.querySelector('.js_normal_font_size_top_bar_ft');
        if (normalTopBar) normalTopBar.style.display = 'none';
        if (normalTopBarFt) normalTopBarFt.style.display = 'none';
        if (bigTopBar) bigTopBar.style.display = 'block';
        var js_bar_profile = document.getElementById('js_bar_profile');
        js_bar_profile &amp;&amp; js_bar_profile.classList.add('large_font_like_profile_bar');
        var topbar = document.getElementById('js_wx_follow_nickname_large_font_top');
        var topNickNameSpans = document.querySelectorAll('.js_big_font_size_top_bar .nickNameSpan');
        var bottomFollowFt = document.querySelectorAll('.js_big_font_size_bottom_bar .wx_follow_ft');
        var topFollowFt = document.querySelectorAll('.js_big_font_size_top_bar .wx_follow_ft');
        [].concat(_toConsumableArray(topNickNameSpans), _toConsumableArray(bottomFollowFt), _toConsumableArray(topFollowFt)).forEach(function (element) {
          fixedFontSizePercent(element);
        });
        if (bottombar) {
          textOverflow(bottombar, {
            value: {
              lineClamp: 2,
              tailNum: 3
            }
          });
        }
        if (topbar) {
          textOverflow(topbar, {
            value: {
              lineClamp: 1,
              tailNum: 2
            }
          });
        }
      } else {
        var _bigBar = document.querySelector('.js_big_font_size_bottom_bar');
        var _normalBar = document.querySelector('.js_normal_font_size_bottom_bar');
        var _normalBarFt = document.querySelector('.js_normal_font_size_bottom_bar_ft');
        if (_bigBar) _bigBar.style.display = 'none';
        if (_normalBar) _normalBar.style.display = 'block';
        if (_normalBarFt) _normalBarFt.style.display = 'block';
        var _bigTopBar = document.querySelector('.js_big_font_size_top_bar');
        var _normalTopBar = document.querySelector('.js_normal_font_size_top_bar');
        var _normalTopBarFt = document.querySelector('.js_normal_font_size_top_bar_ft');
        if (_bigTopBar) _bigTopBar.style.display = 'none';
        if (_normalTopBar) _normalTopBar.style.display = 'block';
        if (_normalTopBarFt) _normalTopBarFt.style.display = 'block';
        var normalNickname = document.getElementById('js_wx_follow_nickname_small_font');
        if (normalNickname) {
          var applyTextOverflow = function applyTextOverflow() {
            textOverflow(normalNickname, {
              value: {
                lineClamp: 1,
                tailNum: 2
              }
            });
          };
          if (Device.os.pc) {
            setTimeout(applyTextOverflow, 0);
          } else {
            applyTextOverflow();
          }
        }
      }
    } catch (error) {
      console.error('set like_profile style error', error);
    }
    barWarp &amp;&amp; barWarp.classList.remove('hide');
    barMask &amp;&amp; barMask.classList.remove('hide');
  };
  if (!window.__second_open__) {
    var tmpAppmsgBarData = {
      show_like: '' * 1,
      like_count: '' * 1,
      show_share: '' * 1,
      share_count: '' * 1,
      show_old_like: '' * 1,
      old_like_count: '' * 1,
      comment_enabled: '' * 1,
      comment_count: '' * 1,
      show_collect: '' * 1,
      collect_count: '' * 1,
      show_friend_seen: '' * 1,
      is_subscribed: '' * 1,
      verify_status: '' * 1,
      original_content_num: '$user_info.appmsg_bar_data.original_content_num.DATA$' * 1,
      friend_subscribe_count: '' * 1,
      read_num: '' * 1
    };
    var cgiData = {
      idx: ''  ,
      biz: '' ,
      mid: ''  ,
      sn: ''  ,
      subcount_version: '',
      isFinderMsg: '' * 1,
      export_id: '',
      source: '' * 1,
      item_show_type: '0' * 1,
      ori_create_time: '1781248239' * 1
    };
    __setBarData(tmpAppmsgBarData, cgiData, cgiDataNew);
    window.__setBarData = __setBarData;
  }

  return __setBarData;

})();
  &lt;/script&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   var __INLINE_SCRIPT__ = (function () {
  'use strict';

  function _typeof(obj) {
    "@babel/helpers - typeof";

    return _typeof = "function" == typeof Symbol &amp;&amp; "symbol" == typeof Symbol.iterator ? function (obj) {
      return typeof obj;
    } : function (obj) {
      return obj &amp;&amp; "function" == typeof Symbol &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj;
    }, _typeof(obj);
  }

  function _toPrimitive(input, hint) {
    if (_typeof(input) !== "object" || input === null) return input;
    var prim = input[Symbol.toPrimitive];
    if (prim !== undefined) {
      var res = prim.call(input, hint || "default");
      if (_typeof(res) !== "object") return res;
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return (hint === "string" ? String : Number)(input);
  }

  function _toPropertyKey(arg) {
    var key = _toPrimitive(arg, "string");
    return _typeof(key) === "symbol" ? key : String(key);
  }

  function _defineProperty(obj, key, value) {
    key = _toPropertyKey(key);
    if (key in obj) {
      Object.defineProperty(obj, key, {
        value: value,
        enumerable: true,
        configurable: true,
        writable: true
      });
    } else {
      obj[key] = value;
    }
    return obj;
  }

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  function _defineProperties(target, props) {
    for (var i = 0; i &lt; props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor) descriptor.writable = true;
      Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
    }
  }
  function _createClass(Constructor, protoProps, staticProps) {
    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
    if (staticProps) _defineProperties(Constructor, staticProps);
    Object.defineProperty(Constructor, "prototype", {
      writable: false
    });
    return Constructor;
  }

  
  var prefix = '__WXLS__';
  var localStorage = window.localStorage || {
    getItem: function getItem() {},
    setItem: function setItem() {},
    removeItem: function removeItem() {},
    key: function key() {},
    clear: function clear() {
      var _a, _b;
      (_b = (_a = window.localStorage) === null || _a === void 0 ? void 0 : _a.clear) === null || _b === void 0 ? void 0 : _b.call(_a);
    },
    length: 0
  };
  var evictionPolicies = {
    noeviction: function noeviction(data) {
      return data;
    },
    'allkeys-random': function allkeysRandom(data, size) {
      var keys = Object.keys(data);
      var memCnt = 0;
      while (memCnt &lt; size) {
        var len = keys.length;
        var randomKeyIdx = Math.floor(Math.random() * len);
        var randomKey = keys[randomKeyIdx];
        memCnt += JSON.stringify(data[randomKey]).length;
        delete data[randomKey];
        keys = Object.keys(data);
      }
      return data;
    },
    'volatile-ttl': function volatileTtl(data, size) {
      var keys = Object.keys(data);
      keys = keys.sort(function (key1, key2) {
        var d1 = data[key1];
        var d2 = data[key2];
        if (d1.exp &lt; d2.exp) return -1;
        if (d1.exp &gt; d2.exp) return 1;
        return 0;
      });
      var memCnt = 0;
      for (var i = 0; i &lt; keys.length; i++) {
        if (memCnt &gt;= size) break;
        var key = keys[i];
        memCnt += JSON.stringify(data[key]).length;
        delete data[key];
      }
      return data;
    },
    'clear-all': function clearAll() {
      localStorage.clear();
      return {};
    }
  };
  function formatLogMsg(str) {
    return "[WXLS] ".concat(str);
  }
  
  var LS = function () {
    function LS(func, evictionPolicy, logger) {
      _classCallCheck(this, LS);
      this.logger = function () {};
      if (!func) throw 'require function name.';
      this.evictionPolicy = 'noeviction';
      this.key = func;
      if (typeof logger === 'function') {
        this.logger = function (str, type) {
          return logger(formatLogMsg(str), type);
        };
      }
      if (evictionPolicy &amp;&amp; Object.keys(evictionPolicies).indexOf(evictionPolicy) !== -1) {
        this.evictionPolicy = evictionPolicy;
      }
      this.init();
    }
    _createClass(LS, [{
      key: "init",
      value: function init() {
        var _a, _b;
        this.check();
        if (Math.random() * 1000 &lt; 1) {
          (_a = this.logger) === null || _a === void 0 ? void 0 : _a.call(this, "LSlen: ".concat(((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length) || localStorage.length), 'report');
        }
      }
    }, {
      key: "getData",
      value: function getData() {
        var data = LS.getItem(this.key) || '{}';
        try {
          data = JSON.parse(data);
        } catch (e) {
          this.logger("getData error: ".concat(e), 'error');
          localStorage.removeItem(prefix + this.key);
          data = {};
        }
        return data;
      }
    }, {
      key: "check",
      value: function check(isReturn) {
        var data = this.getData();
        var temp = {};
        var now = +new Date();
        var key;
        var val;
        for (key in data) {
          val = data[key];
          if (+val.exp &gt; now) {
            temp[key] = val;
          }
        }
        this.logger("check info: isReturn:".concat(isReturn, " data:").concat(JSON.stringify(temp)), 'info');
        if (isReturn) return temp;
        LS.setItem(this.key, JSON.stringify(temp), this.logger);
      }
    }, {
      key: "set",
      value: function set(key, val, exp) {
        var _a, _b;
        var data = this.check(true);
        data[key] = {
          val: val,
          exp: exp || +new Date()
        };
        try {
          if (localStorage.getItem(prefix + this.key)) localStorage.removeItem(prefix + this.key);
          localStorage.setItem(prefix + this.key, JSON.stringify(data));
          this.logger("first set success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data)), 'success');
        } catch (e) {
          this.logger("first set error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data), " k:").concat(key, " v:").concat(val, " exp:").concat(exp), 'error');
          localStorage.clear();
          LS.setItem(this.key, JSON.stringify(_defineProperty({}, key, {
            val: val,
            exp: exp || +new Date()
          })), this.logger);
        }
      }
    }, {
      key: "get",
      value: function get(key) {
        var data = this.getData();
        data = data[key];
        return data ? data.val || null : null;
      }
    }, {
      key: "remove",
      value: function remove(key) {
        var data = this.getData();
        if (data[key]) delete data[key];
        LS.setItem(this.key, JSON.stringify(data), this.logger);
      }
    }], [{
      key: "getItem",
      value: function getItem(key) {
        key = prefix + key;
        return localStorage.getItem(key);
      }
    }, {
      key: "setItem",
      value: function setItem(key, val, logger) {
        var _a, _b;
        key = prefix + key;
        var n = 3;
        while (n--) {
          try {
            if (localStorage.getItem(key)) localStorage.removeItem(key);
            localStorage.setItem(key, val);
            typeof logger === 'function' &amp;&amp; logger("setItem success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(key, " val:").concat(val), 'success');
            break;
          } catch (e) {
            typeof logger === 'function' &amp;&amp; logger("setItem error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(key, " val:").concat(val), 'error');
            LS.clear();
          }
        }
      }
    }, {
      key: "clear",
      value: function clear() {
        var i;
        var k;
        for (i = localStorage.length - 1; i &gt;= 0; i--) {
          k = localStorage.key(i);
          if (k.indexOf(prefix) == 0) {
            localStorage.removeItem(k);
          }
        }
      }
    }, {
      key: "getSupportEvicationPolicy",
      value: function getSupportEvicationPolicy() {
        return Object.keys(evictionPolicies);
      }
    }]);
    return LS;
  }();

  var rewardLS = new LS('reward');
  var rewardLSData = null;
  function getRewardLS() {
    var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    rewardLSData === null &amp;&amp; (rewardLSData = rewardLS.get([opt.biz || window.biz, opt.mid || window.mid, opt.idx || window.idx].join('_')));
    return rewardLSData;
  }

  
  var __setReward = function __setReward(cgiData, opt) {
    var data = getRewardLS(opt);
    if (data) {
      data.canReward !== undefined &amp;&amp; (cgiData.can_reward = data.canReward);
      data.isNeedReward !== undefined &amp;&amp; (cgiData.is_need_reward = data.isNeedReward);
      data.closeReward !== undefined &amp;&amp; (cgiData.user_info.close_reward = data.closeReward);
      data.authorId !== undefined &amp;&amp; (cgiData.author_id = data.authorId);
      data.rewardAuthorHead !== undefined &amp;&amp; (cgiData.reward_author_head = data.rewardAuthorHead);
      data.author !== undefined &amp;&amp; (cgiData.author = data.author);
      data.rewardWording !== undefined &amp;&amp; (cgiData.reward_wording = data.rewardWording);
    }
  };
  if (!window.__second_open__) {
    var data = getRewardLS();
    if (data) {
      if (window.cgiData) {
        data.canReward !== undefined &amp;&amp; (window.cgiData.can_reward = data.canReward);
        data.isNeedReward !== undefined &amp;&amp; (window.cgiData.is_need_reward = data.isNeedReward);
        data.authorId !== undefined &amp;&amp; (window.cgiData.author_id = data.authorId);
        data.rewardAuthorHead !== undefined &amp;&amp; (window.cgiData.reward_author_head = data.rewardAuthorHead);
        data.author !== undefined &amp;&amp; (window.cgiData.author = data.author);
        data.rewardWording !== undefined &amp;&amp; (window.cgiData.reward_wording = data.rewardWording);
      } else {
        data.canReward !== undefined &amp;&amp; (window.can_reward = data.canReward);
        data.isNeedReward !== undefined &amp;&amp; (window.is_need_reward = data.isNeedReward);
        data.authorId !== undefined &amp;&amp; (window.author_id = data.authorId);
        data.rewardAuthorHead !== undefined &amp;&amp; (window.reward_author_head = data.rewardAuthorHead);
        data.author !== undefined &amp;&amp; (window.author = data.author);
        data.rewardWording !== undefined &amp;&amp; (window.reward_wording = data.rewardWording);
      }
      data.canReward !== undefined &amp;&amp; (window.cgiDataNew.can_reward = data.canReward);
      data.closeReward !== undefined &amp;&amp; (window.cgiDataNew.user_info.close_reward = data.closeReward);
    }
  }

  return __setReward;

})();
  &lt;/script&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   (function () {
  'use strict';

  function _arrayLikeToArray(arr, len) {
    if (len == null || len &gt; arr.length) len = arr.length;
    for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i];
    return arr2;
  }

  function _arrayWithoutHoles(arr) {
    if (Array.isArray(arr)) return _arrayLikeToArray(arr);
  }

  function _iterableToArray(iter) {
    if (typeof Symbol !== "undefined" &amp;&amp; iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
  }

  function _unsupportedIterableToArray(o, minLen) {
    if (!o) return;
    if (typeof o === "string") return _arrayLikeToArray(o, minLen);
    var n = Object.prototype.toString.call(o).slice(8, -1);
    if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name;
    if (n === "Map" || n === "Set") return Array.from(o);
    if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
  }

  function _nonIterableSpread() {
    throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }

  function _toConsumableArray(arr) {
    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
  }

  var containers = [document.getElementById('page-content')];
  var bgPlaceholder = 'url("data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==")';
  var isCareMode = window.a_value_which_never_exists || '' * 1 || 0;
  var isCartoonCopyright = window.a_value_which_never_exists || '0' * 1 || 0;
  if (!window.__second_open__ &amp;&amp; !isCareMode &amp;&amp; !isCartoonCopyright) {
    containers.forEach(function (dom) {
      var containsBackground = dom.querySelectorAll('[style*="background-image"]');
      _toConsumableArray(containsBackground).forEach(function (node) {
        if (node &amp;&amp; node.style &amp;&amp; typeof node.getAttribute === 'function' &amp;&amp; !node.getAttribute('data-lazy-bgimg') &amp;&amp; !window.__lazyload_detected) {
          var bgImg = node.style.backgroundImage;
          var bgImgUrl = bgImg &amp;&amp; bgImg.match(/url\(['"]?(.*?)['"]?\)/);
          if (bgImgUrl &amp;&amp; bgImgUrl[1]) {
            node.style.backgroundImage = bgImg.replace(/url\(['"]?.*?['"]?\)/, bgPlaceholder);
            node.setAttribute('data-lazy-bgimg', bgImgUrl[1]);
            node.classList.add('wx_imgbc_placeholder');
          }
        }
      });
    });
  }

})();
  &lt;/script&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   (function () {
  'use strict';

  

  if (typeof window.__emojiFormat === 'undefined' &amp;&amp; window.weEmoji) {
    var emoji_url = '//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/pic/pic_blank7ead77.gif';
    var emoji_wx_icon = '&lt;img src="' + emoji_url + '" class="#style#" alt="#name#" /&gt;';
    var dataMap = window.weEmoji.EmojiDataMap;
    try {
      var replaceRegex = new RegExp(Object.keys(dataMap).map(function (str) {
        return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&amp;');
      }).sort(function (a, b) {
        return b.length - a.length;
      }).join('|'), 'g');
      window.__emojiFormat = function (text) {
        if (!replaceRegex.test(text)) {
          return text;
        }
        return text.replace(replaceRegex, function (match) {
          if (dataMap[match] &amp;&amp; window.weEmoji.EmojiData[dataMap[match].index]) {
            var data = window.weEmoji.EmojiData[dataMap[match].index];
            return emoji_wx_icon.replace('#name#', match).replace('#style#', data.style + ' we-emoji');
          }
          return match;
        });
      };
    } catch (e) {
      window.__emojiFormat = function (text) {
        return text;
      };
    }
  } else if (typeof window.__emojiFormat === 'undefined') {
    window.__emojiFormat = function (text) {
      return text;
    };
  }

})();
  &lt;/script&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   var __INLINE_SCRIPT__ = (function () {
  'use strict';

  function _typeof(obj) {
    "@babel/helpers - typeof";

    return _typeof = "function" == typeof Symbol &amp;&amp; "symbol" == typeof Symbol.iterator ? function (obj) {
      return typeof obj;
    } : function (obj) {
      return obj &amp;&amp; "function" == typeof Symbol &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj;
    }, _typeof(obj);
  }

  function _arrayWithHoles(arr) {
    if (Array.isArray(arr)) return arr;
  }

  function _iterableToArrayLimit(arr, i) {
    var _i = null == arr ? null : "undefined" != typeof Symbol &amp;&amp; arr[Symbol.iterator] || arr["@@iterator"];
    if (null != _i) {
      var _s,
        _e,
        _x,
        _r,
        _arr = [],
        _n = !0,
        _d = !1;
      try {
        if (_x = (_i = _i.call(arr)).next, 0 === i) {
          if (Object(_i) !== _i) return;
          _n = !1;
        } else for (; !(_n = (_s = _x.call(_i)).done) &amp;&amp; (_arr.push(_s.value), _arr.length !== i); _n = !0);
      } catch (err) {
        _d = !0, _e = err;
      } finally {
        try {
          if (!_n &amp;&amp; null != _i["return"] &amp;&amp; (_r = _i["return"](), Object(_r) !== _r)) return;
        } finally {
          if (_d) throw _e;
        }
      }
      return _arr;
    }
  }

  function _arrayLikeToArray$1(arr, len) {
    if (len == null || len &gt; arr.length) len = arr.length;
    for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i];
    return arr2;
  }

  function _unsupportedIterableToArray$1(o, minLen) {
    if (!o) return;
    if (typeof o === "string") return _arrayLikeToArray$1(o, minLen);
    var n = Object.prototype.toString.call(o).slice(8, -1);
    if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name;
    if (n === "Map" || n === "Set") return Array.from(o);
    if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen);
  }

  function _nonIterableRest() {
    throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }

  function _slicedToArray(arr, i) {
    return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray$1(arr, i) || _nonIterableRest();
  }

  function _toPrimitive(input, hint) {
    if (_typeof(input) !== "object" || input === null) return input;
    var prim = input[Symbol.toPrimitive];
    if (prim !== undefined) {
      var res = prim.call(input, hint || "default");
      if (_typeof(res) !== "object") return res;
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return (hint === "string" ? String : Number)(input);
  }

  function _toPropertyKey(arg) {
    var key = _toPrimitive(arg, "string");
    return _typeof(key) === "symbol" ? key : String(key);
  }

  function _defineProperty(obj, key, value) {
    key = _toPropertyKey(key);
    if (key in obj) {
      Object.defineProperty(obj, key, {
        value: value,
        enumerable: true,
        configurable: true,
        writable: true
      });
    } else {
      obj[key] = value;
    }
    return obj;
  }

  
  
  var Device = {};
  function detect(ua) {
    var MQQBrowser = ua.match(/MQQBrowser\/(\d+\.\d+)/i);
    var MQQClient = ua.match(/QQ\/(\d+\.(\d+)\.(\d+)\.(\d+))/i) || ua.match(/V1_AND_SQ_([\d\.]+)/);
    var WeChat = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/) || ua.match(/MicroMessenger\/((\d+)\.(\d+))/);
    var MacOS = ua.match(/Mac\sOS\sX\s(\d+[\.|_]\d+)/);
    var WinOS = ua.match(/Windows(\s+\w+)?\s+?(\d+\.\d+)/);
    var Linux = ua.match(/Linux\s/);
    var MiuiBrowser = ua.match(/MiuiBrowser\/(\d+\.\d+)/i);
    var M1 = ua.match(/MI-ONE/);
    var MIPAD = ua.match(/MI PAD/);
    var UC = ua.match(/UCBrowser\/(\d+\.\d+(\.\d+\.\d+)?)/) || ua.match(/\sUC\s/);
    var IEMobile = ua.match(/IEMobile(\/|\s+)(\d+\.\d+)/) || ua.match(/WPDesktop/);
    var ipod = ua.match(/(ipod).*\s([\d_]+)/i);
    var ipad = ua.match(/(ipad).*\s([\d_]+)/i);
    var iphone = ua.match(/(iphone)\sos\s([\d_]+)/i);
    var Chrome = ua.match(/Chrome\/(\d+\.\d+)/);
    var AndriodBrowser = ua.match(/Mozilla.*Linux.*Android.*AppleWebKit.*Mobile Safari/);
    var android = ua.match(/(android)\s([\d\.]+)/i);
    var harmony = ua.match(/(OpenHarmony)\s([\d\.]+)/i);
    Device.browser = Device.browser || {}, Device.os = Device.os || {};
    Device.os.type = -1;
    Device.os.unifiedPC = ua.match(/UnifiedPC/);
    Device.os.unifiedMac = /UnifiedPCMac/i.test(ua);
    Device.os.unifiedWindows = /UnifiedPCWindows/i.test(ua);
    if (window.ActiveXObject) {
      var vie = 6;
      (window.XMLHttpRequest || ua.indexOf('MSIE 7.0') &gt; -1) &amp;&amp; (vie = 7);
      (window.XDomainRequest || ua.indexOf('Trident/4.0') &gt; -1) &amp;&amp; (vie = 8);
      ua.indexOf('Trident/5.0') &gt; -1 &amp;&amp; (vie = 9);
      ua.indexOf('Trident/6.0') &gt; -1 &amp;&amp; (vie = 10);
      Device.browser.ie = true, Device.browser.version = vie;
    } else if (ua.indexOf('Trident/7.0') &gt; -1) {
      Device.browser.ie = true, Device.browser.version = 11;
    }
    if (android) {
      Device.os.android = true;
      Device.os.version = android[2];
      Device.os.type = 2;
    }
    if (harmony) {
      Device.os.harmony = true;
      Device.os.version = harmony[2];
      Device.os.type = 42;
    }
    if (ipod) {
      Device.os.ios = Device.os.ipod = true;
      Device.os.version = ipod[2].replace(/_/g, '.');
    }
    if (ipad) {
      Device.os.ios = Device.os.ipad = true;
      Device.os.version = ipad[2].replace(/_/g, '.');
      Device.os.type = 13;
    }
    if (iphone) {
      Device.os.iphone = Device.os.ios = true;
      Device.os.version = iphone[2].replace(/_/g, '.');
      Device.os.type = 1;
    }
    if (WinOS) Device.os.windows = true, Device.os.version = WinOS[2], Device.os.type = 15;
    if (MacOS) Device.os.Mac = true, Device.os.version = MacOS[1], Device.os.type = 14;
    if (Linux) Device.os.Linux = true, Device.os.type = 33;
    if (ua.indexOf('lepad_hls') &gt; 0) Device.os.LePad = true;
    if (MIPAD) Device.os.MIPAD = true;
    if (MQQBrowser) Device.browser.MQQ = true, Device.browser.version = MQQBrowser[1];
    if (MQQClient) Device.browser.MQQClient = true, Device.browser.version = MQQClient[1];
    if (WeChat) Device.browser.WeChat = true, Device.browser.mmversion = Device.browser.version = WeChat[1];
    if (MiuiBrowser) Device.browser.MIUI = true, Device.browser.version = MiuiBrowser[1];
    if (UC) Device.browser.UC = true, Device.browser.version = UC[1] || NaN;
    if (IEMobile) Device.browser.IEMobile = true, Device.browser.version = IEMobile[2];
    if (AndriodBrowser) {
      Device.browser.AndriodBrowser = true;
    }
    if (M1) {
      Device.browser.M1 = true;
    }
    if (Chrome) {
      Device.browser.Chrome = true, Device.browser.version = Chrome[1];
    }
    if (Device.os.windows) {
      if (typeof navigator.platform !== "undefined" &amp;&amp; navigator.platform.toLowerCase() == "win64") {
        Device.os.win64 = true;
      } else {
        Device.os.win64 = false;
      }
    }
    if (Device.os.Mac || Device.os.windows || Device.os.Linux || Device.os.unifiedPC || /OpenHarmony/i.test(ua) &amp;&amp; /pc/i.test(ua)) {
      Device.os.pc = true;
    }
    var osType = {
      iPad7: 'iPad; CPU OS 7',
      LePad: 'lepad_hls',
      XiaoMi: 'MI-ONE',
      SonyDTV: "SonyDTV",
      SamSung: 'SAMSUNG',
      HTC: 'HTC',
      VIVO: 'vivo'
    };
    for (var os in osType) {
      Device.os[os] = ua.indexOf(osType[os]) !== -1;
    }
    Device.os.phone = Device.os.phone || /windows phone/i.test(ua);
    Device.os.getNumVersion = function () {
      return parseFloat(Device.os.version);
    };
    Device.os.hasTouch = 'ontouchstart' in window;
    if (Device.os.hasTouch &amp;&amp; Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 6) {
      Device.os.hasTouch = false;
    }
    if (Device.browser.WeChat &amp;&amp; Device.browser.version &lt; 5.0) {
      Device.os.hasTouch = false;
    }
    Device.browser.getNumVersion = function () {
      return parseFloat(Device.browser.version);
    };
    Device.browser.isFFCanOcx = function () {
      return !!Device.browser.firefox &amp;&amp; Device.browser.getNumVersion() &gt;= 3.0;
    };
    Device.browser.isCanOcx = function () {
      return !!Device.os.windows &amp;&amp; (!!Device.browser.ie || Device.browser.isFFCanOcx() || !!Device.browser.webkit);
    };
    Device.browser.isNotIESupport = function () {
      return !!Device.os.windows &amp;&amp; (!!Device.browser.webkit || Device.browser.isFFCanOcx());
    };
    Device.userAgent = {};
    Device.userAgent.browserVersion = Device.browser.version;
    Device.userAgent.osVersion = Device.os.version;
    if (Device.os.unifiedPC) {
      if (Device.os.unifiedWindows) Device.os.type = 37;else if (Device.os.unifiedMac) Device.os.type = 38;else Device.os.type = 39;
    }
    delete Device.userAgent.version;
  }
  detect(window.navigator.userAgent);
  function canSupportH5Video() {
    var ua = window.navigator.userAgent,
      m = null;
    if (!!Device.os.android) {
      if (Device.browser.MQQ &amp;&amp; Device.browser.getNumVersion() &gt;= 4.2) {
        return true;
      }
      if (ua.indexOf('MI2') != -1) {
        return true;
      }
      if (Device.os.version &gt;= '4' &amp;&amp; (m = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/))) {
        if (parseFloat(m[1]) &gt;= 4.2) {
          return true;
        }
      }
      if (Device.os.version &gt;= '4.1') {
        return true;
      }
    }
    return false;
  }
  function canSupportVideoMp4() {
    var video = document.createElement('video');
    if (typeof video.canPlayType === 'function') {
      if (video.canPlayType('video/mp4; codecs="mp4v.20.8"') === 'probably') {
        return true;
      }
      if (video.canPlayType('video/mp4; codecs="avc1.42E01E"') === 'probably' || video.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"') === 'probably') {
        return true;
      }
    }
    return false;
  }
  function canSupportAutoPlay() {
    if (Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 10) {
      return false;
    }
    return true;
  }
  function isLockdownMode() {
    if (!Device.os.ios || Device.os.getNumVersion() &lt; 16) {
      return false;
    }
    if (typeof WebAssembly === 'undefined' &amp;&amp; typeof OfflineAudioContext === 'undefined' &amp;&amp; typeof WebGLRenderingContext === 'undefined') {
      return true;
    }
    return false;
  }
  Device.canSupportVideo = canSupportVideoMp4 || canSupportH5Video;
  Device.canSupportVideoMp4 = canSupportVideoMp4;
  Device.canSupportH5Video = canSupportH5Video;
  Device.canSupportAutoPlay = canSupportAutoPlay;
  Device.isLockdownMode = isLockdownMode;
  
  Device.cpVersion = function (version) {
    var cp = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 0;
    var canEqual = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    var nowVersionStr = Device.os.version;
    if (!nowVersionStr) return false;
    var versionArr = version.split('.');
    var nowVersionArr = nowVersionStr.split('.');
    for (var i = 0; i &lt; Math.max(nowVersionArr.length, versionArr.length); i++) {
      var vi = +versionArr[i];
      var nvi = +nowVersionArr[i];
      if (vi === nvi) continue;
      if (cp &gt; 0) return vi &gt; nvi;
      if (cp &lt; 0) return vi &lt; nvi;
    }
    return canEqual || cp === 0;
  };

  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
    try {
      var info = gen[key](arg);
      var value = info.value;
    } catch (error) {
      reject(error);
      return;
    }
    if (info.done) {
      resolve(value);
    } else {
      Promise.resolve(value).then(_next, _throw);
    }
  }
  function _asyncToGenerator(fn) {
    return function () {
      var self = this,
        args = arguments;
      return new Promise(function (resolve, reject) {
        var gen = fn.apply(self, args);
        function _next(value) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
        }
        function _throw(err) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
        }
        _next(undefined);
      });
    };
  }

  function _regeneratorRuntime$1() {  _regeneratorRuntime$1 = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  
  var doc$1 = {};
  var isAcrossOrigin$1 = false;
  var notFoundedMPPageAction = [];
  var __moon_report$1 = window.__moon_report || function () {};
  var MOON_JSAPI_KEY_OFFSET = 8;
  try {
    doc$1 = top.window.document;
  } catch (e) {
    isAcrossOrigin$1 = true;
  }
  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }
  function ready(onBridgeReady) {
    var bridgeReady = function bridgeReady() {
      try {
        if (onBridgeReady) {
          window.onBridgeReadyTime = window.onBridgeReadyTime || Date.now();
          onBridgeReady();
        }
      } catch (e) {
        __moon_report$1([{
          offset: MOON_JSAPI_KEY_OFFSET,
          log: 'ready',
          e: e
        }]);
        throw e;
      }
      window.jsapiReadyTime = Date.now();
    };
    if (!isAcrossOrigin$1 &amp;&amp; (typeof top.window.WeixinJSBridge === 'undefined' || !top.window.WeixinJSBridge.invoke)) {
      if (doc$1.addEventListener) {
        doc$1.addEventListener('WeixinJSBridgeReady', bridgeReady, false);
      } else if (doc$1.attachEvent) {
        doc$1.attachEvent('WeixinJSBridgeReady', bridgeReady);
        doc$1.attachEvent('onWeixinJSBridgeReady', bridgeReady);
      }
    } else {
      bridgeReady();
    }
  }
  var invokeNotWaitA8key = ['notifyPageInfo', 'updatePageAuth'
  ];
  var checkNotFoundedInvoke = function checkNotFoundedInvoke(methodName, args) {
    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; notFoundedMPPageAction.includes(args === null || args === void 0 ? void 0 : args.action)) {
      return true;
    }
    return false;
  };
  function invoke$1(_x, _x2, _x3) {
    return _invoke.apply(this, arguments);
  }
  function _invoke() {
    _invoke = _asyncToGenerator( _regeneratorRuntime$1().mark(function _callee(methodName, args, callback) {
      return _regeneratorRuntime$1().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__ &amp;&amp; !invokeNotWaitA8key.includes(methodName))) {
              _context.next = 3;
              break;
            }
            _context.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin$1) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                alert('请在微信中打开此链接');
                return false;
              }
              if (checkNotFoundedInvoke(methodName, args)) {
                setTimeout(function () {
                  if (callback) {
                    callback.apply(window, [{
                      err_msg: "".concat(methodName, ":fail"),
                      err_desc: 'action isn\'t supported'
                    }]);
                  }
                }, 0);
              } else {
                top.window.WeixinJSBridge.invoke(methodName, args, function () {
                  try {
                    for (var _len2 = arguments.length, rets = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
                      rets[_key2] = arguments[_key2];
                    }
                    var ret = rets[0];
                    var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
                    if (['handleMPPageAction', 'handleVideoAction', 'handleHaokanAction'].indexOf(methodName) !== -1) {
                      var action = (args === null || args === void 0 ? void 0 : args.action) || '';
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName, ", action-&gt;").concat(action).concat(errMsg));
                    } else {
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName).concat(errMsg));
                    }
                    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; ((ret === null || ret === void 0 ? void 0 : ret.err_desc) === 'action isn\'t supported' || (ret === null || ret === void 0 ? void 0 : ret.err_msg) === 'handleMPPageAction:fail action is not supported')) {
                      notFoundedMPPageAction.push(args === null || args === void 0 ? void 0 : args.action);
                    }
                    if (callback) {
                      callback.apply(window, rets);
                    }
                  } catch (e) {
                    __moon_report$1([{
                      offset: MOON_JSAPI_KEY_OFFSET,
                      log: "invoke;methodName:".concat(methodName),
                      e: e
                    }]);
                    throw e;
                  }
                });
              }
            });
          case 4:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return _invoke.apply(this, arguments);
  }
  function call(_x4) {
    return _call.apply(this, arguments);
  }
  function _call() {
    _call = _asyncToGenerator( _regeneratorRuntime$1().mark(function _callee2(methodName) {
      return _regeneratorRuntime$1().wrap(function _callee2$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__)) {
              _context2.next = 3;
              break;
            }
            _context2.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin$1) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                return false;
              }
              try {
                top.window.WeixinJSBridge.call(methodName);
              } catch (e) {
                __moon_report$1([{
                  offset: MOON_JSAPI_KEY_OFFSET,
                  log: "call;methodName:".concat(methodName),
                  e: e
                }]);
                throw e;
              }
            });
          case 4:
          case "end":
            return _context2.stop();
        }
      }, _callee2);
    }));
    return _call.apply(this, arguments);
  }
  function on$1(eventName, callback) {
    ready(function () {
      if (isAcrossOrigin$1) return false;
      if (_typeof(top.window.WeixinJSBridge) !== 'object' || !top.window.WeixinJSBridge.on) {
        return false;
      }
      if (!window.JSAPIEventCallbackMap[eventName]) {
        window.JSAPIEventCallbackMap[eventName] = [];
      }
      window.JSAPIEventCallbackMap[eventName].push(callback);
      if (window.JSAPIEventCallbackMap[eventName].length &gt; 1) {
        return false;
      }
      top.window.WeixinJSBridge.on(eventName, function () {
        try {
          for (var _len = arguments.length, rets = new Array(_len), _key = 0; _key &lt; _len; _key++) {
            rets[_key] = arguments[_key];
          }
          var ret = rets[0];
          var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
          console.info('[system]', "[jsapi] event-&gt;".concat(eventName).concat(errMsg));
          if (window.JSAPIEventCallbackMap[eventName] &amp;&amp; window.JSAPIEventCallbackMap[eventName].length) {
            var result;
            for (var i = 0; i &lt; window.JSAPIEventCallbackMap[eventName].length; i++) {
              result = window.JSAPIEventCallbackMap[eventName][i].apply(window, rets);
            }
            return result;
          }
        } catch (e) {
          __moon_report$1([{
            offset: MOON_JSAPI_KEY_OFFSET,
            log: "on;eventName:".concat(eventName),
            e: e
          }]);
          throw e;
        }
      });
    });
  }
  function remove(eventName, callback) {
    ready(function () {
      if (!window.JSAPIEventCallbackMap[eventName]) {
        return false;
      }
      var result = false;
      for (var i = window.JSAPIEventCallbackMap[eventName].length - 1; i &gt;= 0; i--) {
        if (window.JSAPIEventCallbackMap[eventName][i] === callback) {
          window.JSAPIEventCallbackMap[eventName].splice(i, 1);
          result = true;
        }
      }
      return result;
    });
  }
  var JSAPI = {
    ready: ready,
    invoke: invoke$1,
    call: call,
    on: on$1,
    remove: remove
  };

  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" &amp;&amp; o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike &amp;&amp; o &amp;&amp; typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i &gt;= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion &amp;&amp; it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
  function _arrayLikeToArray(arr, len) { if (len == null || len &gt; arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i]; return arr2; }
  
  
  var ua$1 = navigator.userAgent;
  var is_ios = /(iPhone|iPad|iPod|iOS)/i.test(ua$1);
  var is_wp = /Windows\sPhone/i.test(ua$1);
  var is_android$1 = /(Android)/i.test(ua$1);
  var is_wechat = /MicroMessenger\/([\d\.]+)/i.test(ua$1);
  var is_mac = /mac\sos/i.test(ua$1) &amp;&amp; !is_ios;
  var is_windows = /windows\snt/i.test(ua$1) &amp;&amp; !is_wp;
  var is_mpapp = /MPAPP\/([\d\.]+)/i.test(ua$1);
  var is_ipad = /iPad/i.test(ua$1);
  var is_windows_wechat = /WindowsWechat/i.test(ua$1);
  var is_mac_wechat = /MacWechat/i.test(ua$1) || /wechat.*mac os/i.test(ua$1);
  var is_prefetch = is_wechat &amp;&amp; window.WeixinPrefecherJSBridge;
  var is_donut_app = /SAAASDK/i.test(ua$1);
  var is_harmony = /OpenHarmony|ArkWeb/i.test(ua$1);
  var is_linux = /Linux\s/i.test(ua$1);
  var xweb_match = ua$1.match(/XWEB\/([\d.]+)/i);
  var xweb_version = xweb_match &amp;&amp; xweb_match[1] ? parseInt(xweb_match[1], 10) : 0;
  var is_unified_pc_wechat = /UnifiedPC\w+Wechat/i.test(ua$1);
  var is_in_miniProgram = is_android$1 &amp;&amp; /miniprogram/.test(ua$1.toLowerCase()) || window.__wxjs_environment == 'miniprogram';
  var is_wx_work = /wxwork/i.test(ua$1);
  function getUrlParams() {
    var vars = location.search.substring(1).split('&amp;');
    var params = {};
    var _iterator = _createForOfIteratorHelper(vars),
      _step;
    try {
      for (_iterator.s(); !(_step = _iterator.n()).done;) {
        var ele = _step.value;
        var pair = ele.split('=');
        var key = decodeURIComponent(pair[0]);
        if (typeof params[key] === 'undefined') {
          params[key] = decodeURIComponent(pair[1]);
        }
      }
    } catch (err) {
      _iterator.e(err);
    } finally {
      _iterator.f();
    }
    return params;
  }
  function get() {
    var reg = /MicroMessenger\/([\d\.]+)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMac() {
    var reg = /MacWechat\/([\d\.]+)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMacOS() {
    var reg = /Mac OS X ([\d_]+)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1].replace(/_/g, '.');
    }
    return false;
  }
  function getWindows() {
    var reg = /WindowsWechat\(0x(.+?)\)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getWxWork() {
    var reg = /wxwork\/([\d\.]+)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMpApp() {
    var appVersion = [2, 4, 5];
    var match = navigator.userAgent.match(/MPAPP\/(\d+(\.\d+)*)/);
    if (match) {
      appVersion = match[1].split('.').map(function (v) {
        return Number(v);
      });
    }
    return appVersion.join('.');
  }
  function getUnifiedPcVer() {
    var versionInfo = navigator.userAgent.match(/UnifiedPC\w+Wechat\(0xf\w{2}(\w+?)\w{2}\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(0, 1));
      var subVersion = getVersionNumber(version.slice(1, 2));
      var subVersion2 = getVersionNumber(version.slice(2, 3));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
  }
  function getVersionNumber(hexStr) {
    return Number(Number("0x".concat(hexStr)).toString(10));
  }
  function getWindowsVersionFormat() {
    var versionInfo = navigator.userAgent.match(/WindowsWechat\(0x(\w+?)\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(1, 2));
      var subVersion = getVersionNumber(version.slice(2, 4));
      var subVersion2 = getVersionNumber(version.slice(4, 6));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
    return false;
  }
  function getInner() {
    var reg = /MicroMessenger\/[\d\.]+\(0x(.+?)\)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1] &amp;&amp; ret[1] != null) {
      return ret[1];
    }
    if (!ret &amp;&amp; /MicroMessenger\/[\d\.]+/i.test(ua$1)) {
      var urlParams = getUrlParams();
      if (urlParams.version) {
        return urlParams.version;
      }
    }
    return false;
  }
  var opfunc = {
    'cp-1': function cp1(a, b) {
      return a &lt; b;
    },
    cp0: function cp0(a, b) {
      return a === b;
    },
    cp1: function cp1(a, b) {
      return a &gt; b;
    }
  };
  function cpVersion(ver, op, canEq, type) {
    var mmver = false;
    switch (type) {
      case 'mac':
        mmver = getMac();
        break;
      case 'windows':
        mmver = getWindowsVersionFormat();
        break;
      case 'wxwork':
        mmver = getWxWork();
        break;
      case 'mpapp':
        mmver = getMpApp();
        break;
      case 'unifiedpc':
        mmver = getUnifiedPcVer();
        break;
      default:
        mmver = get();
        break;
    }
    if (!mmver) {
      return;
    }
    var mmversion = mmver.split('.');
    var version = ver.split('.');
    if (!/\d+/g.test(mmversion[mmversion.length - 1])) {
      mmversion.pop();
    }
    for (var i = 0, len = Math.max(mmversion.length, version.length); i &lt; len; ++i) {
      var mmv = mmversion[i] || '';
      var v = version[i] || '';
      var mmvn = parseInt(mmv, 10) || 0;
      var vn = parseInt(v, 10) || 0;
      var eq = opfunc.cp0(mmvn, vn);
      if (eq) {
        continue;
      }
      var cp = opfunc["cp".concat(op)];
      return cp(mmvn, vn);
    }
    return canEq || op === 0;
  }
  function eqVersion(version) {
    return cpVersion(version, 0);
  }
  function gtVersion(version, canEq) {
    return cpVersion(version, 1, canEq);
  }
  function ltVersion(version, canEq) {
    return cpVersion(version, -1, canEq);
  }
  function getPlatform() {
    if (is_ios) {
      return 'ios';
    }
    if (is_android$1) {
      return 'android';
    }
    if (is_mac) {
      return 'mac_os';
    }
    if (is_windows) {
      return 'windows';
    }
    return 'unknown';
  }
  var is_google_play = false;
  var inner_ver_for_google_play_check = getInner();
  if (is_android$1 &amp;&amp; inner_ver_for_google_play_check) {
    var v = "0x".concat(inner_ver_for_google_play_check.substr(-2));
    if (parseInt(v) &gt;= 64 &amp;&amp; parseInt(v) &lt;= 79) {
      is_google_play = true;
    }
  }
  function compareHexVersion(hexNum) {
    var innerVersion = getInner();
    if (innerVersion &amp;&amp; hexNum) {
      if (typeof hexNum === 'string') {
        hexNum = parseInt(hexNum, 16);
      }
      var version = parseInt(innerVersion, 16);
      return version &gt;= hexNum;
    }
    return false;
  }
  var mmversion = {
    get: get,
    getMac: getMac,
    getMacOS: getMacOS,
    getWindows: getWindows,
    getInner: getInner,
    getWxWork: getWxWork,
    getMpApp: getMpApp,
    cpVersion: cpVersion,
    eqVersion: eqVersion,
    gtVersion: gtVersion,
    ltVersion: ltVersion,
    getPlatform: getPlatform,
    getVersionNumber: getVersionNumber,
    isWp: is_wp,
    isIOS: is_ios,
    isAndroid: is_android$1,
    isHarmony: is_harmony,
    isHarmonyWechat: is_harmony &amp;&amp; is_wechat &amp;&amp; cpVersion('1.0.0', 1, true),
    isInMiniProgram: is_in_miniProgram,
    isWechat: is_wechat,
    isMac: is_mac,
    isWindows: is_windows,
    isLinux: is_linux,
    isMacWechat: is_mac_wechat,
    isWindowsWechat: is_windows_wechat,
    isWxWork: is_wx_work,
    isOnlyWechat: is_wechat &amp;&amp; !is_wx_work,
    isMpapp: is_mpapp,
    isIPad: is_ipad,
    isGooglePlay: is_google_play,
    isPrefetch: is_prefetch,
    isDonutAPP: is_donut_app,
    compareHexVersion: compareHexVersion,
    isPcWechat: is_windows_wechat || is_mac_wechat,
    xwebVersion: xweb_version,
    isUnifiedPcWechat: is_unified_pc_wechat
  };

  var initJsBridge = false;
  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }
  function connectWebViewJavascriptBridge(callback) {
    if (window.WebViewMPapp || window.WebViewJavascriptBridge) {
      return callback(window.WebViewMPapp || window.WebViewJavascriptBridge);
    }
    if (window.WVJBCallbacks) {
      return window.WVJBCallbacks.push(callback);
    }
    window.WVJBCallbacks = [callback];
    if (!mmversion.isMpapp) {
      return false;
    }
    if (!initJsBridge) {
      initJsBridge = true;
      var WVJBIframe = document.createElement('iframe');
      WVJBIframe.style.display = 'none';
      WVJBIframe.src = 'https://__bridge_loaded__';
      document.body.appendChild(WVJBIframe);
      setTimeout(function () {
        initJsBridge = false;
        document.body.removeChild(WVJBIframe);
      }, 0);
    }
    return false;
  }
  function invoke(jsapiName, opt, callback) {
    connectWebViewJavascriptBridge(function (bridge) {
      try {
        if (typeof opt === 'function') {
          callback = opt;
        }
        if (_typeof(opt) !== 'object' &amp;&amp; typeof opt !== 'string') {
          opt = {};
        }
        bridge.callHandler(jsapiName, opt, function (res) {
          try {
            var ret = _typeof(res) === 'object' ? res : JSON.parse(res);
            var errMsg = ret.err_msg || ret.errMsg;
            console.info("[mpapp jsapi] invoke-&gt;".concat(jsapiName, " ").concat(opt.action || '', " ").concat(errMsg));
            typeof callback === 'function' &amp;&amp; callback(ret);
          } catch (e) {
            window.WX_BJ_REPORT.BadJs.report('invoke', "callback ".concat(jsapiName, " error:"), {
              mid: 'mmbizwebapp:js_brridge',
              _info: e
            });
            console.error("[mpapp jsapi] ".concat(jsapiName, " ").concat(opt.action || ''), e, res);
          }
        });
      } catch (e) {
        window.WX_BJ_REPORT.BadJs.report('invoke', 'callback error:', {
          mid: 'mmbizwebapp:js_brridge',
          _info: e
        });
        console.error('[mpapp jsapi]', e);
      }
    });
  }

  
  function _log(level, msg) {
    if (level === 'log') {
      level = 'info';
      msg = "[WechatFe]".concat(msg);
    } else {
      var prefix = "__wap__".concat(window.__second_open__ ? ' (sec)' : '');
      msg = "".concat(prefix, " ").concat(msg, " location:[").concat(location.href, "]");
    }
    msg += new Error().stack;
    if (mmversion.isMpapp) {
      invoke('WNNativeCallbackLog', msg);
    } else if (mmversion.isWechat) {
      if (mmversion.isAndroid) {
        console.warn('[system]', "[MicroMsg.JsApiLog][".concat(level, "] jslog : ").concat(msg));
      } else if (mmversion.isIOS) {
        JSAPI.invoke('writeLog', {
          level: level,
          msg: msg
        });
      } else {
        JSAPI.invoke('log', {
          level: level,
          msg: msg
        });
      }
    }
  }
  var Log = {
    info: function info() {
      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key &lt; _len; _key++) {
        args[_key] = arguments[_key];
      }
      _log('info', args.join(' '));
    },
    warn: function warn() {
      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
        args[_key2] = arguments[_key2];
      }
      _log('warn', args.join(' '));
    },
    error: function error() {
      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 &lt; _len3; _key3++) {
        args[_key3] = arguments[_key3];
      }
      _log('error', args.join(' '));
    },
    debug: function debug() {
      for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 &lt; _len4; _key4++) {
        args[_key4] = arguments[_key4];
      }
      _log('debug', args.join(' '));
    },
    log: function log() {
      for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 &lt; _len5; _key5++) {
        args[_key5] = arguments[_key5];
      }
      _log('info', args.join(' '));
    }
  };

  
  
  var reportLogs = [];
  var reportExtraLogs = [];
  var sendUrl = '/mp/jsmonitor?#wechat_redirect';
  var monitor = {};
  monitor._reportOptions = {
    idkey: {}
  };
  function ObjWithoutProperty(source, exclude) {
    if (source === null) return {};
    var target = {};
    var sourceKeys = Object.keys(source);
    for (var i = 0; i &lt; sourceKeys.length; i++) {
      var key = sourceKeys[i];
      if (exclude.indexOf(key) &gt;= 0) continue;
      target[key] = source[key];
    }
    return target;
  }
  function formatDataToString(data) {
    var reportData = [];
    for (var key in data) {
      if (Object.prototype.hasOwnProperty.call(data, key)) {
        reportData.push(key + '=' + encodeURIComponent(data[key]));
      }
    }
    return reportData.join('&amp;');
  }
  monitor.getReportData = function (opt) {
    opt = opt || {};
    var idkey = monitor._reportOptions.idkey || {};
    var key = null;
    var reportData = {};
    var nextKey;
    try {
      for (key in idkey) {
        if (Object.prototype.hasOwnProperty.call(idkey, key) &amp;&amp; idkey[key]) {
          reportLogs.push(key + '_' + idkey[key]);
        }
      }
    } catch (e) {
      return false;
    }
    if (reportLogs.length === 0) {
      return false;
    }
    if (reportExtraLogs.length) {
      reportData.lc = reportExtraLogs.length;
      reportExtraLogs.forEach(function (extraLog, index) {
        reportData["log".concat(index)] = extraLog;
      });
    }
    try {
      var reportOptions = monitor._reportOptions;
      if (reportOptions !== null &amp;&amp; reportOptions !== undefined) {
        for (nextKey in reportOptions) {
          if (Object.prototype.hasOwnProperty.call(reportOptions, nextKey)) {
            reportData[nextKey] = reportOptions[nextKey];
          }
        }
      }
    } catch (e) {
      reportData = {};
    }
    reportData.idkey = reportLogs.join(';');
    reportData.t = Math.random();
    if (opt.remove !== false) {
      reportLogs = [];
      reportExtraLogs = [];
      monitor._reportOptions = {
        idkey: {}
      };
    }
    return reportData;
  };
  monitor.setLogs = function (opt) {
    var id = opt.id;
    var key = opt.key;
    var value = opt.value;
    var extraLog = opt.log;
    var others = ObjWithoutProperty(opt, ['id', 'key', 'value', 'log']);
    var idkey = monitor._reportOptions.idkey || {};
    var param = id + '_' + key;
    if (idkey[param]) {
      idkey[param] += value;
    } else {
      idkey[param] = value;
    }
    monitor._reportOptions.idkey = idkey;
    if (extraLog) {
      reportExtraLogs.push(extraLog);
    }
    try {
      if (others !== null &amp;&amp; others !== undefined) {
        for (var otherKey in others) {
          if (Object.prototype.hasOwnProperty.call(others, otherKey)) {
            monitor._reportOptions[otherKey] = others[otherKey];
          }
        }
      }
    } catch (e) {
      console.log(e);
    }
    return monitor;
  };
  monitor.setAvg = function (id, key, value) {
    var idkey = monitor._reportOptions.idkey || {};
    var param1 = id + '_' + key;
    var param2 = id + '_' + (key - 1);
    if (idkey[param1]) {
      idkey[param1] += value;
    } else {
      idkey[param1] = value;
    }
    if (idkey[param2]) {
      idkey[param2] += 1;
    } else {
      idkey[param2] = 1;
    }
    monitor._reportOptions.idkey = idkey;
    return monitor;
  };
  monitor.setSum = function (id, key) {
    var value = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : 1;
    var idkey = monitor._reportOptions.idkey;
    var param = id + '_' + key;
    if (idkey[param]) {
      idkey[param] += value;
    } else {
      idkey[param] = value;
    }
    monitor._reportOptions.idkey = idkey;
    return monitor;
  };
  monitor.send = function (async, ajax, origin) {
    if (async !== false) {
      async = true;
    }
    var data = monitor.getReportData();
    origin = origin || '';
    if (!data) {
      return;
    }
    if (!!ajax &amp;&amp; ajax instanceof Function) {
      ajax({
        url: origin + sendUrl,
        type: 'POST',
        mayAbort: true,
        data: data,
        async: async,
        timeout: 2000,
        dontReport: true
      });
    } else {
      new Image().src = origin + '/mp/jsmonitor?' + formatDataToString(data) + '#wechat_redirect';
    }
  };
  if (typeof window !== 'undefined' &amp;&amp; window.__monitor) {
    monitor = window.__monitor;
  } else {
    typeof window !== 'undefined' &amp;&amp; (window.__monitor = monitor);
  }
  var monitor$1 = monitor;

  
  var logList = [];
  var log = function log(msg) {
    logList.push(msg);
  };
  var printLog = function printLog() {
    for (var i = 0, len = logList.length; i &lt; len; ++i) {
      console.log("[RespType]".concat(logList[i]));
    }
  };
  var isArray = function isArray(val) {
    return Object.prototype.toString.call(val) === '[object Array]';
  };
  var getValueType = function getValueType(value) {
    if (isArray(value)) {
      return 'array';
    }
    return _typeof(value);
  };
  var parseRtDesc = function parseRtDesc(rtDesc, k) {
    var type = 'mix';
    var isRequired = false;
    var key = k;
    if (k) {
      var requireKeyWord = '_R';
      var pos = k.indexOf(requireKeyWord);
      var len = k.length - requireKeyWord.length;
      isRequired = pos !== -1 &amp;&amp; pos === len;
      key = isRequired ? k.substring(0, len) : k;
    }
    if (typeof rtDesc === 'string') {
      type = rtDesc;
    } else if (isArray(rtDesc)) {
      type = 'array';
    } else if (_typeof(rtDesc) === 'object') {
      type = 'object';
    }
    return {
      key: key,
      type: type,
      isRequired: isRequired
    };
  };
  var checkForArrayRtDesc = function checkForArrayRtDesc(arr, rtDescs) {
    if (!isArray(arr)) {
      return false;
    }
    for (var i = 0, len = arr.length; i &lt; len; ++i) {
      var value = arr[i];
      var rtDesc = void 0;
      var j = 0;
      var flag = rtDescs.length === 0;
      while (rtDesc = rtDescs[j++]) {
        if (checkForRtDesc(value, rtDesc)) {
          flag = true;
          break;
        }
      }
      if (!flag) {
        return false;
      }
    }
    return true;
  };
  var checkForStringRtDesc = function checkForStringRtDesc(value, rtDesc) {
    var valueType = getValueType(value);
    var desc = parseRtDesc(rtDesc);
    var ret = desc.type === valueType;
    if (!ret) {
      log("miss match type : ".concat(valueType, " !== ").concat(desc.type));
    }
    return ret;
  };
  var checkForObjectRtDesc = function checkForObjectRtDesc(json, rtDesc) {
    if (_typeof(json) !== 'object' || isArray(json)) {
      log('must be object');
      return false;
    }
    var rootJson = json;
    var nowCheckValue = json;
    for (var k in rtDesc) {
      if (rtDesc.hasOwnProperty(k)) {
        var nowCheckDesc = rtDesc[k];
        var desc = parseRtDesc(nowCheckDesc, k);
        var key = desc.key;
        nowCheckValue = rootJson[key];
        var valueType = getValueType(nowCheckValue);
        if (desc.isRequired &amp;&amp; nowCheckValue === undefined) {
          log("is required @key=".concat(key));
          return false;
        }
        if (nowCheckValue !== undefined) {
          if (valueType !== desc.type &amp;&amp; desc.type !== 'mix') {
            log("miss match type : ".concat(valueType, " !== ").concat(desc.type, " @key=").concat(key));
            return false;
          }
          if ((valueType === 'array' || valueType === 'object') &amp;&amp; desc.type !== 'mix') {
            if (!checkForRtDesc(nowCheckValue, nowCheckDesc)) {
              return false;
            }
          }
        }
      }
    }
    return true;
  };
  var checkForRtDesc = function checkForRtDesc(json, rtDesc) {
    if (isArray(rtDesc)) {
      return checkForArrayRtDesc(json, rtDesc);
    }
    if (_typeof(rtDesc) === 'object') {
      return checkForObjectRtDesc(json, rtDesc);
    }
    if (typeof rtDesc === 'string') {
      return checkForStringRtDesc(json, rtDesc);
    }
    return false;
  };
  var _check = function check(json, rtDescs) {
    if (typeof json === 'string') {
      try {
        json = eval("(".concat(json, ")"));
      } catch (e) {
        log('parse json error');
        return false;
      }
    }
    if (_typeof(json) !== 'object') {
      log('must be object');
      return false;
    }
    if (!isArray(rtDescs)) {
      rtDescs = [rtDescs];
    }
    var rtDesc;
    var i = 0;
    while (rtDesc = rtDescs[i++]) {
      if (checkForRtDesc(json, rtDesc)) {
        return true;
      }
    }
    return false;
  };
  var RespTypes = {
    check: function check(json, rtDesc) {
      logList = [];
      try {
        var ret = _check(json, rtDesc);
        if (!ret) {
          printLog();
        }
        return ret;
      } catch (e) {
        logList.push("[rtException]".concat(e.toString()));
        printLog();
        return false;
      }
    },
    getMsg: function getMsg() {
      return logList.join(';');
    }
  };

  function getInflightMap() {
    if (!window.__dedupe_promise_inflight__) {
      window.__dedupe_promise_inflight__ = new Map();
    }
    return window.__dedupe_promise_inflight__;
  }
  
  function dedupePromise(key, factory) {
    var inflightMap = getInflightMap();
    var existing = inflightMap.get(key);
    console.log("dedupePromise key=".concat(key, " existing=").concat(existing));
    if (existing) {
      return existing;
    }
    var promise = Promise.resolve().then(factory)["finally"](function () {
      inflightMap["delete"](key);
    });
    inflightMap.set(key, promise);
    return promise;
  }

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  function _defineProperties(target, props) {
    for (var i = 0; i &lt; props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor) descriptor.writable = true;
      Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
    }
  }
  function _createClass(Constructor, protoProps, staticProps) {
    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
    if (staticProps) _defineProperties(Constructor, staticProps);
    Object.defineProperty(Constructor, "prototype", {
      writable: false
    });
    return Constructor;
  }

  
  var prefix = '__WXLS__';
  var localStorage = window.localStorage || {
    getItem: function getItem() {},
    setItem: function setItem() {},
    removeItem: function removeItem() {},
    key: function key() {},
    clear: function clear() {
      var _a, _b;
      (_b = (_a = window.localStorage) === null || _a === void 0 ? void 0 : _a.clear) === null || _b === void 0 ? void 0 : _b.call(_a);
    },
    length: 0
  };
  var evictionPolicies = {
    noeviction: function noeviction(data) {
      return data;
    },
    'allkeys-random': function allkeysRandom(data, size) {
      var keys = Object.keys(data);
      var memCnt = 0;
      while (memCnt &lt; size) {
        var len = keys.length;
        var randomKeyIdx = Math.floor(Math.random() * len);
        var randomKey = keys[randomKeyIdx];
        memCnt += JSON.stringify(data[randomKey]).length;
        delete data[randomKey];
        keys = Object.keys(data);
      }
      return data;
    },
    'volatile-ttl': function volatileTtl(data, size) {
      var keys = Object.keys(data);
      keys = keys.sort(function (key1, key2) {
        var d1 = data[key1];
        var d2 = data[key2];
        if (d1.exp &lt; d2.exp) return -1;
        if (d1.exp &gt; d2.exp) return 1;
        return 0;
      });
      var memCnt = 0;
      for (var i = 0; i &lt; keys.length; i++) {
        if (memCnt &gt;= size) break;
        var key = keys[i];
        memCnt += JSON.stringify(data[key]).length;
        delete data[key];
      }
      return data;
    },
    'clear-all': function clearAll() {
      localStorage.clear();
      return {};
    }
  };
  function formatLogMsg(str) {
    return "[WXLS] ".concat(str);
  }
  
  var LS = function () {
    function LS(func, evictionPolicy, logger) {
      _classCallCheck(this, LS);
      this.logger = function () {};
      if (!func) throw 'require function name.';
      this.evictionPolicy = 'noeviction';
      this.key = func;
      if (typeof logger === 'function') {
        this.logger = function (str, type) {
          return logger(formatLogMsg(str), type);
        };
      }
      if (evictionPolicy &amp;&amp; Object.keys(evictionPolicies).indexOf(evictionPolicy) !== -1) {
        this.evictionPolicy = evictionPolicy;
      }
      this.init();
    }
    _createClass(LS, [{
      key: "init",
      value: function init() {
        var _a, _b;
        this.check();
        if (Math.random() * 1000 &lt; 1) {
          (_a = this.logger) === null || _a === void 0 ? void 0 : _a.call(this, "LSlen: ".concat(((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length) || localStorage.length), 'report');
        }
      }
    }, {
      key: "getData",
      value: function getData() {
        var data = LS.getItem(this.key) || '{}';
        try {
          data = JSON.parse(data);
        } catch (e) {
          this.logger("getData error: ".concat(e), 'error');
          localStorage.removeItem(prefix + this.key);
          data = {};
        }
        return data;
      }
    }, {
      key: "check",
      value: function check(isReturn) {
        var data = this.getData();
        var temp = {};
        var now = +new Date();
        var key;
        var val;
        for (key in data) {
          val = data[key];
          if (+val.exp &gt; now) {
            temp[key] = val;
          }
        }
        this.logger("check info: isReturn:".concat(isReturn, " data:").concat(JSON.stringify(temp)), 'info');
        if (isReturn) return temp;
        LS.setItem(this.key, JSON.stringify(temp), this.logger);
      }
    }, {
      key: "set",
      value: function set(key, val, exp) {
        var _a, _b;
        var data = this.check(true);
        data[key] = {
          val: val,
          exp: exp || +new Date()
        };
        try {
          if (localStorage.getItem(prefix + this.key)) localStorage.removeItem(prefix + this.key);
          localStorage.setItem(prefix + this.key, JSON.stringify(data));
          this.logger("first set success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data)), 'success');
        } catch (e) {
          this.logger("first set error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data), " k:").concat(key, " v:").concat(val, " exp:").concat(exp), 'error');
          localStorage.clear();
          LS.setItem(this.key, JSON.stringify(_defineProperty({}, key, {
            val: val,
            exp: exp || +new Date()
          })), this.logger);
        }
      }
    }, {
      key: "get",
      value: function get(key) {
        var data = this.getData();
        data = data[key];
        return data ? data.val || null : null;
      }
    }, {
      key: "remove",
      value: function remove(key) {
        var data = this.getData();
        if (data[key]) delete data[key];
        LS.setItem(this.key, JSON.stringify(data), this.logger);
      }
    }], [{
      key: "getItem",
      value: function getItem(key) {
        key = prefix + key;
        return localStorage.getItem(key);
      }
    }, {
      key: "setItem",
      value: function setItem(key, val, logger) {
        var _a, _b;
        key = prefix + key;
        var n = 3;
        while (n--) {
          try {
            if (localStorage.getItem(key)) localStorage.removeItem(key);
            localStorage.setItem(key, val);
            typeof logger === 'function' &amp;&amp; logger("setItem success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(key, " val:").concat(val), 'success');
            break;
          } catch (e) {
            typeof logger === 'function' &amp;&amp; logger("setItem error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(key, " val:").concat(val), 'error');
            LS.clear();
          }
        }
      }
    }, {
      key: "clear",
      value: function clear() {
        var i;
        var k;
        for (i = localStorage.length - 1; i &gt;= 0; i--) {
          k = localStorage.key(i);
          if (k.indexOf(prefix) == 0) {
            localStorage.removeItem(k);
          }
        }
      }
    }, {
      key: "getSupportEvicationPolicy",
      value: function getSupportEvicationPolicy() {
        return Object.keys(evictionPolicies);
      }
    }]);
    return LS;
  }();
  var innerVersion = (mmversion.getInner() || '').toUpperCase();
  var getBizLS = new LS('get_biz_result');
  function getBizMap() {
    if (!window.__get_biz_map__) {
      window.__get_biz_map__ = {};
    }
    return window.__get_biz_map__;
  }
  var isGetBizSupported = mmversion.isOnlyWechat &amp;&amp; mmversion.isIOS &amp;&amp; innerVersion &gt;= '18003C2A' || mmversion.isOnlyWechat &amp;&amp; mmversion.isAndroid &amp;&amp; innerVersion &gt;= '28003D3C' || mmversion.isUnifiedPcWechat &amp;&amp; mmversion.cpVersion('4.1.10', 1, true, 'unifiedpc');
  function invokeGetBiz(needCheckBiz, bizType) {
    return dedupePromise("getBiz:".concat(needCheckBiz, ":").concat(bizType), function () {
      return new Promise(function (resolve, reject) {
        if (!isGetBizSupported) {
          reject('Not support');
        } else {
          JSAPI.invoke('handleMPPageAction', {
            action: 'getBiz',
            needCheckBiz: needCheckBiz,
            bizType: bizType
          }, function (res) {
            console.log("getBiz needCheckBiz=".concat(needCheckBiz, " bizType=").concat(bizType, " res: ").concat(JSON.stringify(res)));
            if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf('ok') &gt; -1) {
              var bizMap = getBizMap();
              bizMap[bizType] = res.biz;
              resolve(res.biz);
              getBizLS.set("".concat(bizType, "_get_biz_result"), res.biz, +new Date() + 3 * 24 * 60 * 60 * 1000);
            } else {
              reject('Failed to get biz');
            }
          });
        }
      });
    });
  }
  function getBiz(needCheckBiz, bizType) {
    var _a;
    if (needCheckBiz === void 0) {
      needCheckBiz = false;
    }
    if (bizType === void 0) {
      bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
    }
    var bizMap = getBizMap();
    if (!needCheckBiz &amp;&amp; bizMap[bizType] !== undefined) {
      return Promise.resolve(bizMap[bizType]);
    }
    return invokeGetBiz(needCheckBiz, bizType);
  }
  mmversion.isOnlyWechat &amp;&amp; mmversion.isIOS || mmversion.isOnlyWechat &amp;&amp; mmversion.isAndroid || mmversion.isUnifiedPcWechat &amp;&amp; mmversion.cpVersion('4.1.10', 1, true, 'unifiedpc');
  var getIsAuthor = function getIsAuthor(cb, bizuin, needCheckBiz, bizType) {
    var _a;
    if (bizuin === void 0) {
      bizuin = window.biz;
    }
    if (needCheckBiz === void 0) {
      needCheckBiz = false;
    }
    if (bizType === void 0) {
      bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
    }
    getBiz(needCheckBiz, bizType).then(function (biz) {
      cb(biz &amp;&amp; biz === bizuin);
    })["catch"](function () {
      cb(false);
    });
  };

  function parseUrl(url) {
    var len = url.length;
    var ques_pos = url.indexOf('?');
    var hash_pos = url.indexOf('#');
    hash_pos = hash_pos == -1 ? len : hash_pos;
    ques_pos = ques_pos == -1 ? hash_pos : ques_pos;
    var host = url.substring(0, ques_pos);
    var query_str = url.substring(ques_pos + 1, hash_pos);
    var hash = url.substring(hash_pos + 1);
    return {
      host: host,
      query_str: query_str,
      hash: hash
    };
  }
  function join(url, args, noEncode) {
    var ret = parseUrl(url);
    var query_str = ret.query_str;
    var args_arr = [];
    if (_typeof(args) === 'object') {
      for (var key in args) {
        if (args.hasOwnProperty(key)) {
          args_arr.push("".concat(key, "=").concat(noEncode ? args[key] : encodeURIComponent(args[key])));
        }
      }
    } else {
      args_arr.push(noEncode ? args : encodeURIComponent(args));
    }
    if (args_arr.length &gt; 0) {
      query_str += (query_str !== "" ? "&amp;" : "") + args_arr.join("&amp;");
    }
    return ret.host + (query_str !== "" ? "?".concat(query_str) : "") + (ret.hash !== "" ? "#".concat(ret.hash) : "");
  }
  
  function addParam(url, param, value, forceReplace) {
    url = url || location.href;
    var firstAndPos = url.indexOf("&amp;");
    var len = url.length;
    var reverseUrl = url.replace(/^[\w\d]+:[/\\]+/g, "").split("").reverse();
    if (!Array.prototype.indexOf) {
      Array.prototype.indexOf = function (searchElement, fromIndex) {
        var k;
        if (this == null) {
          throw new TypeError('"this" is null or not defined');
        }
        var O = Object(this);
        var len = O.length &gt;&gt;&gt; 0;
        if (len === 0) {
          return -1;
        }
        var n = fromIndex || 0;
        if (Math.abs(n) === Infinity) {
          n = 0;
        }
        if (n &gt;= len) {
          return -1;
        }
        k = Math.max(n &gt;= 0 ? n : len - Math.abs(n), 0);
        while (k &lt; len) {
          if (k in O &amp;&amp; O[k] === searchElement) {
            return k;
          }
          k++;
        }
        return -1;
      };
    }
    var lastSlashPos = len - 1 - reverseUrl.indexOf("/");
    if (firstAndPos !== -1 &amp;&amp; url.indexOf("?") == -1 &amp;&amp; firstAndPos &gt; lastSlashPos) {
      url = url.replace("&amp;", "?");
    }
    var reg = new RegExp("([\\?&amp;]".concat(param, "=)[^&amp;#]*"));
    if (!url.match(reg)) {
      var urlInfo = parseUrl(url);
      var hash = urlInfo.hash ? '#' + urlInfo.hash : '';
      url = url.replace(hash, '');
      var _pos = url.indexOf("?");
      if (_pos == -1) {
        return "".concat(url, "?").concat(param, "=").concat(value).concat(hash);
      }
      if (_pos == url.length - 1) {
        return "".concat(url + param, "=").concat(value).concat(hash);
      }
      return "".concat(url, "&amp;").concat(param, "=").concat(value).concat(hash);
    }
    if (forceReplace === true) {
      return url.replace(reg, "$1".concat(value));
    }
    return url;
  }
  function addWxfrom(src, wxfrom) {
    var offset = window.service_type === 1 ? 10000 : 0;
    return addParam(src, 'wxfrom', offset + Number(wxfrom), true);
  }
  function removeParam(url, param) {
    var _URL = new URL(url),
      protocol = _URL.protocol,
      host = _URL.host,
      pathname = _URL.pathname,
      search = _URL.search,
      hash = _URL.hash;
    var queryParams = new URLSearchParams(search);
    queryParams["delete"](param);
    var newSearch = queryParams.toString();
    var newUrl = new URL("".concat(protocol, "//").concat(host).concat(pathname).concat(newSearch ? "?".concat(decodeURIComponent(newSearch)) : "").concat(hash));
    return newUrl.toString();
  }
  function getQuery(name, url) {
    var u = url || window.location.search;
    var reg = new RegExp("(^|&amp;)".concat(name, "=([^&amp;]*)(&amp;|$)"));
    var r = u.substring(u.indexOf('?') + 1).match(reg);
    return r !== null ? r[2] : '';
  }
  function encodeBase64(value) {
    try {
      return window.btoa(value);
    } catch (e) {
      return '';
    }
  }
  function decodeBase64(value) {
    try {
      return window.atob(value);
    } catch (e) {
      return '';
    }
  }
  function joinUrl$1(url) {
    var obj = {};
    if (typeof window.uin !== 'undefined') {
      obj.uin = window.uin;
    }
    if (typeof window.key !== 'undefined') {
      obj.key = window.key;
    }
    if (typeof window.pass_ticket !== 'undefined') {
      obj.pass_ticket = window.pass_ticket;
    }
    if (typeof window.wxtoken !== 'undefined') {
      obj.wxtoken = window.wxtoken;
    }
    if (typeof window.devicetype !== 'undefined') {
      obj.devicetype = window.devicetype;
    }
    if (typeof window.clientversion !== 'undefined') {
      obj.clientversion = window.clientversion || mmversion.getInner();
    }
    obj.version = obj.clientversion;
    if (window.biz) {
      obj.__biz = window.biz;
    }
    if (getQuery('enterid')) {
      obj.enterid = getQuery('enterid');
    }
    if (typeof window.appmsg_token !== 'undefined') {
      obj.appmsg_token = window.appmsg_token;
    } else if (url.indexOf('advertisement_report') &gt; -1) {
      new Image().src = "".concat(location.protocol, "//mp.weixin.qq.com/mp/jsmonitor?idkey=68064_13_1&amp;r=").concat(Math.random());
    }
    obj.x5 = navigator.userAgent.indexOf('TBS/') !== -1 ? '1' : '0';
    obj.f = 'json';
    return join(url, obj);
  }
  function joinUserArticleRole(url, notJoin, cb) {
    var bizuin = arguments.length &gt; 3 &amp;&amp; arguments[3] !== undefined ? arguments[3] : window.biz;
    var needCheckBiz = arguments.length &gt; 5 &amp;&amp; arguments[5] !== undefined ? arguments[5] : false;
    if (notJoin) {
      cb(url);
    } else {
      getIsAuthor(function (isAuthor) {
        cb(addParam(url, 'user_article_role', isAuthor ? 1 : 0, true));
      }, bizuin, needCheckBiz);
    }
  }
  function getA8keyQuery(name, url) {
    return new Promise(function (resolve) {
      if (window.__secPageAuthPromise) {
        window.__secPageAuthPromise.then(function () {
          resolve(getQuery(name, url));
        });
      } else {
        resolve(getQuery(name, url));
      }
    });
  }
  function addHash(url, hash) {
    var isReplace = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    if (isReplace) {
      return "".concat(url.split('#')[0]).concat(hash);
    }
    return "".concat(url).concat(url.indexOf('#') === -1 ? '#' : '').concat(hash);
  }
  function decodeUrl(url) {
    var _url = url;
    while (_url.indexOf('&amp;amp;') !== -1) {
      _url = _url.htmlDecode();
    }
    return _url;
  }
  var Url = {
    parseUrl: parseUrl,
    join: join,
    addParam: addParam,
    addWxfrom: addWxfrom,
    addHash: addHash,
    getQuery: getQuery,
    getA8keyQuery: getA8keyQuery,
    encodeBase64: encodeBase64,
    decodeBase64: decodeBase64,
    joinUrl: joinUrl$1,
    joinUserArticleRole: joinUserArticleRole,
    removeParam: removeParam,
    decodeUrl: decodeUrl
  };

  var _a;
  var doc;
  var isAcrossOrigin = false;
  try {
    doc = (_a = window.top) === null || _a === void 0 ? void 0 : _a.window.document;
  } catch (e) {
    isAcrossOrigin = true;
  }
  var StatusTextMap = {
    200: 'OK',
    302: 'Found',
    400: 'Bad Request',
    500: 'Internal Server Error'
  };
  function getIsAcrossOrigin() {
    return isAcrossOrigin;
  }
  function networkStartLog(item) {
    var _a, _b, _c, _d, _e;
    console.log('[system]', "&lt; [request ".concat(item.requestType, "]"), item.url, item.method, item);
    var rdevRequestId;
    var requestTime = performance.now() / 1000;
    if ((_b = (_a = window.RemoteDevSdk) === null || _a === void 0 ? void 0 : _a.instance) === null || _b === void 0 ? void 0 : _b.Network) {
      try {
        var willBeSentOptions = {
          url: item.url,
          method: item.method,
          requestHeaders: Object.assign({}, item.requestHeader || {}, {
            RDEV_REQUEST_TYPE: item.requestType
          }),
          requestBody: item.postData,
          requestTime: requestTime
        };
        rdevRequestId = window.RemoteDevSdk.instance.Network.customRequestWillBeSent(willBeSentOptions);
      } catch (err) {}
    }
    if ((_c = window.vConsole) === null || _c === void 0 ? void 0 : _c.network) {
      try {
        var vconsoleNetworkItem = (_e = (_d = window.vConsole.network).add) === null || _e === void 0 ? void 0 : _e.call(_d, Object.assign({}, item, {
          startTime: Date.now(),
          endTime: Date.now(),
          status: 0,
          readyState: 2,
          response: ''
        }));
        vconsoleNetworkItem.rdevRequestId = rdevRequestId;
        vconsoleNetworkItem.requestTime = requestTime;
        return vconsoleNetworkItem;
      } catch (err) {}
    }
    if (rdevRequestId) {
      return Object.assign(Object.assign({}, item), {
        id: '__only_rdev_log__',
        rdevRequestId: rdevRequestId,
        requestTime: requestTime
      });
    }
    return Object.assign({}, item, {
      id: '__system_log__'
    });
  }
  function networkEndLog(item) {
    var _a, _b, _c, _d, _e;
    console.log('[system]', "&gt; [response ".concat(item.requestType, "]"), item.url, item.response, item);
    if (item.rdevRequestId &amp;&amp; ((_b = (_a = window.RemoteDevSdk) === null || _a === void 0 ? void 0 : _a.instance) === null || _b === void 0 ? void 0 : _b.Network) &amp;&amp; item.id !== '__system_log__') {
      try {
        var finishedOptions = {
          requestId: item.rdevRequestId,
          url: item.url,
          status: +(item.status || '500'),
          statusText: StatusTextMap[+(item.status || '500')] || 'Error',
          responseHeaders: {
            RDEV_RESPONSE_TYPE: item.requestType
          },
          responseBody: item.response,
          requestTime: item.requestTime || 0,
          duration: item.costTime || (item.endTime &amp;&amp; item.startTime ? item.endTime - item.startTime : performance.now() / 1000 - (item.requestTime || 0))
        };
        window.RemoteDevSdk.instance.Network.customRequestFinished(finishedOptions);
      } catch (err) {}
    }
    if (((_c = window.vConsole) === null || _c === void 0 ? void 0 : _c.network) &amp;&amp; item.id !== '__system_log__') {
      try {
        item.statusText = "".concat(item.status);
        item.responseSize = item.response.length;
        item.responseSizeText = "".concat(item.response.length);
        return (_e = (_d = window.vConsole.network).update) === null || _e === void 0 ? void 0 : _e.call(_d, item.id, Object.assign({}, item, {
          readyState: 4
        }));
      } catch (err) {}
    }
  }
  function reqType(obj, path) {
    return obj.url.indexOf(path) &gt; -1 &amp;&amp; obj.url.indexOf('action=') === -1 &amp;&amp; (!obj.data || !obj.data.action);
  }
  function findAjaxScopeByConfig(url, config) {
    var pathname = new URL(url, location.href).pathname || '';
    var scope = config[pathname.slice(1)];
    if (scope) {
      return scope;
    }
  }
  function getAjaxScope(ajaxUrl) {
    if (Url.getQuery('no_transfer', location.href) !== '1' &amp;&amp; mmversion.isWechat &amp;&amp; !mmversion.isInMiniProgram &amp;&amp; !mmversion.isWxWork &amp;&amp; !mmversion.isMpapp &amp;&amp; !isAcrossOrigin &amp;&amp; window.__ajaxTransferConfig &amp;&amp; _typeof(window.__ajaxTransferConfig) === 'object' &amp;&amp; (
    mmversion.isIOS &amp;&amp; mmversion.compareHexVersion('1800282F') || mmversion.isAndroid &amp;&amp; mmversion.compareHexVersion('28002234') || mmversion.isWindowsWechat &amp;&amp; mmversion.cpVersion('3.9.5', 1, true, 'windows') || mmversion.isMacWechat &amp;&amp; mmversion.cpVersion('3.8.4', 1, true, 'mac') || mmversion.isHarmonyWechat &amp;&amp; mmversion.compareHexVersion('0xf3100b00') &amp;&amp; !mmversion.compareHexVersion('0xf3100c00') || mmversion.compareHexVersion('0xf3800b00'))) {
      try {
        return findAjaxScopeByConfig(ajaxUrl, window.__ajaxTransferConfig);
      } catch (err) {
        
      }
    }
  }
  function getActionByData(data) {
    var _a, _b;
    if (_typeof(data) === 'object' &amp;&amp; !(data instanceof Blob)) {
      if (data.hasOwnProperty('data') &amp;&amp; typeof data.data === 'string') {
        try {
          var workedData = JSON.parse(data.data);
          return workedData.action || '';
        } catch (e) {}
      }
      return data.action || '';
    }
    if (typeof data === 'string') {
      return ((_b = (_a = data.split(/[?&amp;]/).find(function (x) {
        return x.indexOf('action=') &gt;= 0;
      })) === null || _a === void 0 ? void 0 : _a.split('=')) === null || _b === void 0 ? void 0 : _b[1]) || '';
    }
    return '';
  }

  var METHOD_ENUM = {
    GET: 0,
    POST: 1
  };
  var __moon_report = window.__moon_report || function () {};
  var MOON_AJAX_SUCCESS_OFFSET = 3;
  var MOON_AJAX_NETWORK_OFFSET = 4;
  var MOON_AJAX_ERROR_OFFSET = 5;
  var MOON_AJAX_TIMEOUT_OFFSET = 6;
  var MOON_AJAX_COMPLETE_OFFSET = 7;
  var LENGTH_LIMIT = 4096;
  function reportRtError(type, id, key, content) {
    var log = '';
    var prefix = type === 'rt' ? 'rtCheckError' : 'Ajax Length Limit';
    if (content === null || content === void 0 ? void 0 : content.length) {
      var loglen = 1000;
      var len = content.length;
      var lc = Math.ceil(len / loglen);
      log = ["&amp;lc=".concat(lc)];
      for (var i = 0; i &lt; lc; ++i) {
        log.push("&amp;log".concat(i, "=") + "[".concat(prefix, "][").concat(i, "]").concat(encodeURIComponent(content.substring(i * loglen, i * loglen + loglen))));
      }
      log = log.join('');
    }
    var data = "idkey=".concat(id, "_").concat(key, "_1").concat(log, "&amp;r=").concat(Math.random());
    var xmlobj = new XMLHttpRequest();
    xmlobj.open('POST', "".concat(location.protocol, "//").concat(location.host, "/mp/jsmonitor?"), true);
    xmlobj.setRequestHeader('cache-control', 'no-cache');
    xmlobj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    xmlobj.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    xmlobj.send(data);
    if (type === 'ajaxLen') {
      monitor$1.setLogs({
        id: id,
        key: key,
        value: 1,
        log: log
      });
    }
  }
  function reportRt(id, key, content) {
    reportRtError('rt', id, key, content);
  }
  function reportAjaxLength(id, key, content) {
    reportRtError('ajaxLen', id, key, content);
  }
  function setXhrHeader(xhr, type, opt) {
    if (opt.contentType) {
      xhr.setRequestHeader('Content-Type', opt.contentType);
    } else if (type === 'POST') {
      xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    }
    if (!opt.noXRequestedWidthHeader) {
      xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    }
  }
  function Ajax(obj) {
    var report36408 = typeof obj.report36408 === 'function' ? obj.report36408 : function () {};
    if (obj.usePb) {
      obj.type = 'POST';
      obj.data = {
        data: JSON.stringify(obj.data)
      };
    }
    var ajaxScope = getAjaxScope(obj.url);
    var type = (obj.type || 'GET').toUpperCase();
    var timer;
    var _url;
    if (obj.notJoinUrl) {
      _url = obj.url;
    } else {
      _url = Url.joinUrl(obj.url);
    }
    Url.joinUserArticleRole(_url, !!obj.notJoinUrl, function (url) {
      var urlObj = new URL(url, location.origin);
      if (obj.f === 'html') {
        url = url.replace('&amp;f=json', '');
      }
      var data = null;
      if (obj.data instanceof Blob) {
        data = obj.data;
      } else if (_typeof(obj.data) === 'object') {
        var d = obj.data;
        var ds = [];
        for (var k in d) {
          if (d.hasOwnProperty(k)) {
            ds.push("".concat(k, "=").concat(encodeURIComponent(d[k])));
          }
        }
        data = ds.join('&amp;');
      } else {
        data = typeof obj.data === 'string' ? obj.data : null;
      }
      var beginTs;
      var beforeReq = function beforeReq() {
        if (reqType(obj, '/mp/getappmsgext')) {
          window.startGetAppmsgExtTime = Date.now();
          Log.log('start get appmsgext, url: ', obj.url);
        }
        if (reqType(obj, '/mp/getappmsgad')) {
          window.startGetAppmsgAdTime = Date.now();
          Log.log('start get appmsgad, url: ', obj.url);
        }
        beginTs = Date.now();
      };
      var beforeResp = function beforeResp(xhr) {
        if (reqType(obj, '/mp/getappmsgext')) {
          window.receiveGetAppmsgExt = "".concat(xhr.status, "|").concat(Date.now());
          Log.log("receive appmsgext response, status: ".concat(xhr.status));
        }
        if (reqType(obj, '/mp/getappmsgad')) {
          window.receiveGetAppmsgAd = "".concat(xhr.status, "|").concat(Date.now());
          Log.log("receive appmsgad response, status: ".concat(xhr.status));
        }
        if (Math.random() &lt; 0.001 &amp;&amp; window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs) {
          try {
            var key = ajaxScope ? 'transfer' : 'xhr';
            var interval = 250;
            var time = Date.now() - beginTs;
            var range = Math.floor(time / interval) * interval;
            var pathname = new URL(obj.url, location.href).pathname || '';
            window.WX_BJ_REPORT.BadJs.report("".concat(key, "_perf:").concat(pathname), JSON.stringify({
              status: xhr.status,
              time: "[".concat(range, "-").concat(range + interval, ")")
            }), {
              mid: 'mmbizwap:ajaxtransfer',
              view: 'wap_business'
            });
          } catch (err) {}
        }
      };
      var handleRespSucc = function handleRespSucc(xhr, requestType) {
        var _a, _b, _c, _d;
        try {
          var responseText = xhr.responseText;
          var resp = responseText;
          if (obj.dataType === 'json') {
            try {
              if (JSON &amp;&amp; JSON.parse) {
                resp = JSON.parse(resp);
              } else {
                resp = eval("(".concat(resp, ")"));
                monitor$1.setSum(523105, 127, 1).send();
              }
              var rtId = obj.rtId;
              var rtKey = obj.rtKey || 0;
              var rtDesc = obj.rtDesc;
              if (rtId &amp;&amp; rtDesc &amp;&amp; RespTypes &amp;&amp; !RespTypes.check(resp, rtDesc)) {
                reportRt(+rtId, +rtKey, "".concat(RespTypes.getMsg(), "[detail]").concat(responseText, ";").concat(obj.url));
              }
              if (resp &amp;&amp; resp.base_resp &amp;&amp; ((_a = resp.base_resp) === null || _a === void 0 ? void 0 : _a.ret) !== 0 &amp;&amp; typeof window.WX_BJ_REPORT !== 'undefined' &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; Math.random() &lt; 0.001) {
                var reportUrl = url;
                if (url.indexOf('?') !== -1) {
                  reportUrl = url.substring(0, url.indexOf('?'));
                  if (Url.getQuery('action', url)) {
                    reportUrl = "".concat(reportUrl, "?action=").concat(Url.getQuery('action', url));
                  }
                }
                if (!((reportUrl === '/mp/getappmsgext' || reportUrl === '/mp/getappmsgad') &amp;&amp; typeof resp.base_resp.ret === 'undefined')) {
                  window.WX_BJ_REPORT.BadJs.report(reportUrl, "ret=".concat(resp.base_resp.ret), {
                    mid: window.PAGE_MID,
                    view: 'wap_retcode'
                  });
                }
              }
            } catch (e) {
              obj.error &amp;&amp; obj.error(xhr, {
                type: 1,
                error: e,
                status: xhr.status
              });
              if (!obj.dontReport) {
                report36408({
                  CgiPath: urlObj.pathname || '',
                  Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                  Query: urlObj.search || '',
                  PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                  Method: type || '',
                  RequestType: requestType || 0,
                  RetType: 1,
                  HttpCode: xhr.status || 0,
                  Ret: 0
                });
              }
              return;
            }
          }
          if (_typeof(resp) === 'object' &amp;&amp; ((_b = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _b === void 0 ? void 0 : _b.ret) !== 0) {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                Method: type || '',
                RequestType: requestType || 0,
                RetType: 4,
                HttpCode: xhr.status || 0,
                Ret: ((_c = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _c === void 0 ? void 0 : _c.ret) || 0
              });
            }
          } else {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                Method: type || '',
                RequestType: requestType || 0,
                RetType: 0,
                HttpCode: xhr.status || 0,
                Ret: ((_d = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _d === void 0 ? void 0 : _d.ret) || 0
              });
            }
          }
          obj.success &amp;&amp; obj.success(resp);
        } catch (e) {
          __moon_report({
            offset: MOON_AJAX_SUCCESS_OFFSET,
            e: e
          });
          throw e;
        }
      };
      var handleRespErr = function handleRespErr(xhr, error, requestType) {
        try {
          obj.error &amp;&amp; obj.error(xhr, {
            type: 2,
            error: error,
            status: xhr.status
          });
          if (!obj.dontReport) {
            report36408({
              CgiPath: urlObj.pathname || '',
              Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
              Query: urlObj.search || '',
              PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
              Method: type,
              RequestType: requestType,
              RetType: 2,
              HttpCode: xhr.status,
              Ret: 0
            });
          }
        } catch (e) {
          __moon_report({
            offset: MOON_AJAX_ERROR_OFFSET,
            e: e
          });
          throw e;
        }
      };
      var handleRespComplete = function handleRespComplete() {
        clearTimeout(timer);
        try {
          obj.complete &amp;&amp; obj.complete();
        } catch (e) {
          __moon_report({
            offset: MOON_AJAX_COMPLETE_OFFSET,
            e: e
          });
          throw e;
        }
        obj.complete = null;
      };
      var handleReqTimeout = function handleReqTimeout(xhr) {
        if (typeof obj.timeout !== 'undefined') {
          timer = setTimeout(function () {
            xhr.abort();
            try {
              obj.complete &amp;&amp; obj.complete();
            } catch (e) {
              __moon_report({
                offset: MOON_AJAX_COMPLETE_OFFSET,
                e: e
              });
              throw e;
            }
            obj.complete = null;
            __moon_report({
              offset: MOON_AJAX_TIMEOUT_OFFSET,
              log: "ajax_timeout_error: ".concat(url),
              e: ''
            });
          }, obj.timeout);
        }
      };
      var retryXhrFn = function retryXhrFn(res, isTimeout, reqLogItem) {
        var retryXhr = new XMLHttpRequest();
        try {
          retryXhr._noVConsole = true;
        } catch (err) {}
        retryXhr.open(type, url);
        retryXhr.onreadystatechange = function () {
          if (isTimeout) return;
          if (retryXhr.readyState === 3) {
            obj.received &amp;&amp; obj.received(retryXhr);
          }
          if (retryXhr.readyState === 4) {
            beforeResp(retryXhr);
            var retryStatus = retryXhr.status;
            if (retryStatus &gt;= 200 &amp;&amp; retryStatus &lt; 400) {
              handleRespSucc(retryXhr, 1);
            } else {
              handleRespErr(retryXhr, res, 1);
              window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; window.WX_BJ_REPORT.BadJs.report('req_failure', JSON.stringify({
                retryXhrStatus: retryStatus,
                transferRes: res
              }), {
                mid: 'mmbizwap:ajaxtransfer',
                view: 'wap_business'
              });
            }
            reqLogItem.status = retryStatus;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = retryXhr.responseText;
            handleRespComplete();
            networkEndLog(reqLogItem);
          }
        };
        setXhrHeader(retryXhr, type, obj);
        retryXhr.send(data);
      };
      if (ajaxScope &amp;&amp; !obj.pureHttp) {
        var header = {
          'User-Agent': navigator.userAgent,
          'Cookie': (window.__test_env__ ? 'uniproxy_route=1; ' : '') + document.cookie,
          'Referer': location.href
        };
        if (obj.contentType) {
          header['Content-Type'] = obj.contentType;
        } else if (type === 'POST') {
          header['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
        }
        if (!obj.noXRequestedWidthHeader) {
          header['X-Requested-With'] = 'XMLHttpRequest';
        }
        var reqUrl = new URL(url, location.href).href;
        var method = METHOD_ENUM[type] || 0;
        var params = Device.os.pc ? {
          url: reqUrl,
          req_json: data || '',
          scope: ajaxScope,
          webcgi_method: method,
          webcgi_header: Object.keys(header).map(function (headerItemKey) {
            return Device.os.Mac ? _defineProperty({}, headerItemKey, header[headerItemKey]) : {
              key: headerItemKey,
              value: header[headerItemKey]
            };
          }),
          cgi_type: 1
        } : {
          reqUrl: reqUrl,
          reqBody: data,
          scope: ajaxScope,
          method: method,
          header: header
        };
        var reqLogItem = networkStartLog({
          method: type,
          url: url,
          postData: obj.data || {},
          requestHeader: header,
          requestType: 'transfer',
          startTime: Date.now(),
          responseType: url.indexOf('f=json') &gt; 0 ? 'json' : undefined
        });
        var isTimeout = false;
        handleReqTimeout({
          abort: function abort() {
            isTimeout = true;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = 'timeout';
            networkEndLog(reqLogItem);
          }
        });
        Device.os.pc &amp;&amp; monitor$1.setSum(115849, 69, 1);
        JSAPI.invoke(Device.os.pc ? 'H5ExtTransfer' : 'webTransfer', params, function (res) {
          var _a, _b, _c, _d, _e, _f;
          if (isTimeout) return;
          var status = 400;
          var result = '';
          if (Device.os.pc) {
            try {
              var retFlag = res.base_resp.ret === 0 &amp;&amp; res.jsapi_resp.ret === 0 &amp;&amp; res.err_msg.indexOf(':ok') &gt; -1;
              var respJsonFlag = res.jsapi_resp.resp_json;
              status = retFlag &amp;&amp; respJsonFlag ? 200 : 400;
              result = res.jsapi_resp.resp_json;
            } catch (err) {
              console.error(err);
            }
          } else {
            status = res &amp;&amp; res.errCode * 1 === 0 &amp;&amp; typeof res.result === 'string' &amp;&amp; res.result ? 200 : 400;
            result = res.result;
          }
          try {
            Log.log("ajax transfer, status: ".concat(status, ", reqUrl: ").concat(reqUrl));
          } catch (err) {
            console.error(err);
          }
          if (status &gt;= 200 &amp;&amp; status &lt; 400) {
            obj.received &amp;&amp; obj.received(null);
            beforeResp({
              status: status
            });
            handleRespSucc({
              status: status,
              responseText: result
            }, 10);
            reqLogItem.status = status;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = result;
            handleRespComplete();
            networkEndLog(reqLogItem);
          } else if (window.__second_open__) {
            JSAPI.invoke('request', {
              url: reqUrl,
              method: type,
              data: data,
              header: header
            }, function (retryRes) {
              try {
                Log.log("ajax retry request, retryStatus: ".concat((retryRes === null || retryRes === void 0 ? void 0 : retryRes.statusCode) || '', ", reqUrl: ").concat(reqUrl));
              } catch (err) {
                console.error(err);
              }
              if (isTimeout) return;
              var retryStatus = retryRes.statusCode;
              obj.received &amp;&amp; obj.received(null);
              beforeResp({
                status: retryStatus
              });
              if (retryRes.err_msg.indexOf(':ok') &gt; -1 &amp;&amp; retryStatus &gt;= 200 &amp;&amp; retryStatus &lt; 400) {
                handleRespSucc({
                  status: retryStatus,
                  responseText: retryRes.data
                }, 20);
              } else {
                retryXhrFn(res, isTimeout, reqLogItem);
                handleRespErr({
                  status: retryStatus
                }, res, 20);
                window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; window.WX_BJ_REPORT.BadJs.report('req_failure_sec_open', JSON.stringify({
                  retryReqJsapiRes: retryRes,
                  transferRes: res,
                  url: reqUrl
                }), {
                  mid: 'mmbizwap:ajaxtransfer',
                  view: 'wap_business'
                });
              }
              reqLogItem.status = retryStatus;
              reqLogItem.endTime = Date.now();
              reqLogItem.response = retryRes.data;
              handleRespComplete();
              networkEndLog(reqLogItem);
            });
          } else {
            retryXhrFn(res, isTimeout, reqLogItem);
          }
          if (Device.os.pc) {
            if (!res.err_msg.includes(':ok')) {
              (_b = (_a = window.WX_BJ_REPORT) === null || _a === void 0 ? void 0 : _a.BadJs) === null || _b === void 0 ? void 0 : _b.report("pc transfer res no ok: ".concat(res.err_msg), params.url || '', {
                mid: window.PAGE_MID,
                _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
              });
            }
            try {
              if (res.jsapi_resp.resp_json &amp;&amp; JSON.parse(res.jsapi_resp.resp_json).base_resp.ret !== 0 &amp;&amp; JSON.parse(res.jsapi_resp.resp_json).base_resp.ret !== 190001 || res.base_resp.ret !== 0 || res.jsapi_resp.ret !== 0) {
                (_d = (_c = window.WX_BJ_REPORT) === null || _c === void 0 ? void 0 : _c.BadJs) === null || _d === void 0 ? void 0 : _d.report("pc transfer res invalid ret", params.url || '', {
                  mid: window.PAGE_MID,
                  _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
                });
              }
            } catch (err) {}
          } else {
            try {
              if (res.errCode !== 0) {
                (_f = (_e = window.WX_BJ_REPORT) === null || _e === void 0 ? void 0 : _e.BadJs) === null || _f === void 0 ? void 0 : _f.report("mobile transfer res invalid ret", params.url || '', {
                  mid: window.PAGE_MID,
                  _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
                });
              }
            } catch (err) {}
          }
        });
        beforeReq();
        return;
      }
      var xhr = new XMLHttpRequest();
      var mayAbort = !!obj.mayAbort;
      var async = typeof obj.async === 'undefined' ? true : obj.async;
      var _onreadystatechange = xhr.onreadystatechange;
      xhr.open(type, url, async);
      xhr.onreadystatechange = function () {
        if (typeof _onreadystatechange === 'function') {
          _onreadystatechange.apply(xhr);
        }
        if (xhr.readyState === 3) {
          obj.received &amp;&amp; obj.received(xhr);
        }
        if (xhr.readyState === 4) {
          beforeResp(xhr);
          xhr.onreadystatechange = null;
          var status = xhr.status;
          if (status &gt;= 200 &amp;&amp; status &lt; 400) {
            handleRespSucc(xhr, 1);
          } else {
            handleRespErr(xhr, 'status error', 1);
            if (!!status || !mayAbort) {
              var __ajaxtest = window.__ajaxtest || '0';
              __moon_report({
                offset: MOON_AJAX_NETWORK_OFFSET,
                log: "ajax_network_error[".concat(status, "][").concat(__ajaxtest, "]: ").concat(url, ";host:").concat(location.host),
                e: ''
              });
            }
          }
          handleRespComplete();
        }
      };
      setXhrHeader(xhr, type, obj);
      handleReqTimeout(xhr);
      try {
        xhr.send(data);
        try {
          if (url &amp;&amp; url.length &gt; LENGTH_LIMIT) {
            reportAjaxLength(27613, 17, "ajax get limit[length: ".concat(url.length, "]").concat(url.substring(0, 1024)));
          }
          if (data &amp;&amp; !(data instanceof Blob) &amp;&amp; data.length &gt; LENGTH_LIMIT) {
            reportAjaxLength(27613, 18, "ajax post limit[length: ".concat(data.length, "]").concat(data.substring(0, 1024)));
          }
          if (data &amp;&amp; data instanceof Blob &amp;&amp; data.size &gt; LENGTH_LIMIT) {
            reportAjaxLength(27613, 18, "ajax post limit[length: ".concat(data.size, "]blob"));
          }
        } catch (e) {
        }
      } catch (e) {
        obj.error &amp;&amp; obj.error(xhr, {
          type: 3,
          error: e,
          status: 0
        });
      }
      beforeReq();
    });
  }

  
  mmversion.isWindowsWechat &amp;&amp; mmversion.compareHexVersion('0xf2550000') || mmversion.isMacWechat &amp;&amp; mmversion.compareHexVersion('0xf2650000');

  
  var getBrandServiceType = function getBrandServiceType() {
    var serviceType = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : window.service_type;
    var _a, _b;
    var brandServiceType = 0;
    if (serviceType !== undefined) brandServiceType = serviceType + 1;
    if (((_b = (_a = window.cgiData) === null || _a === void 0 ? void 0 : _a.trans_appmsg_info) === null || _b === void 0 ? void 0 : _b.trans_type) * 1 === 1) brandServiceType = 3;
    return brandServiceType;
  };

  function setCurrentMpInfo(ifShow) {
    var supportNewTopBar = mmversion.isIOS &amp;&amp; mmversion.gtVersion('7.0.10', true) || mmversion.isAndroid &amp;&amp; mmversion.gtVersion('7.0.12', true);
    var supportLiveStatus = mmversion.isIOS &amp;&amp; mmversion.gtVersion('8.0.46', true) || mmversion.isAndroid &amp;&amp; mmversion.gtVersion('8.0.46', true);
    JSAPI.invoke('currentMpInfo', {
      userName: window.user_name,
      brandName: !!supportNewTopBar &amp;&amp; window.nickname === '' ? '未命名账号' : window.title,
      title: window.msg_title || '',
      brandIcon: window.hd_head_img.replace(/\/0$/, '/132'),
      itemShowType: window.item_show_type,
      isPaySubscribe: window.isPaySubscribe,
      topBarStyle: supportNewTopBar ? 1 : 0,
      topBarShowed: ifShow,
      disableShowFinderLiveTopBar: !ifShow &amp;&amp; supportLiveStatus ? 1 : 0,
      brandServiceType: getBrandServiceType()
    }, function () {});
  }
  function AjaxWx(obj) {
    var report36408 = typeof obj.report36408 === 'function' ? obj.report36408 : function () {};
    obj.url += obj.url.indexOf('?') === -1 ? '?fasttmplajax=1' : '&amp;fasttmplajax=1';
    if (getAjaxScope(obj.url)) {
      Ajax(obj);
      return;
    }
    if (obj.usePb) {
      obj.type = 'POST';
      obj.data = {
        data: JSON.stringify(obj.data)
      };
    }
    if (!/^(http:\/\/|https:\/\/|\/\/)/.test(obj.url)) {
      obj.url = "https://mp.weixin.qq.com/".concat(obj.url.replace(/^\//, ''));
    } else if (/^\/\//.test(obj.url)) {
      obj.url = "https:".concat(obj.url);
    }
    if (obj.f !== 'html' &amp;&amp; (obj.url.indexOf('?f=json') === -1 || obj.url.indexOf('&amp;f=json') === -1)) {
      obj.url += '&amp;f=json';
    }
    if (!obj.notJoinUrl &amp;&amp; obj.f !== 'html') {
      obj.url = Url.joinUrl(obj.url);
    }
    Url.joinUserArticleRole(obj.url, !!obj.notJoinUrl, function (url) {
      obj.url = url;
      var urlObj = new URL(url, location.origin);
      var data = null;
      if (_typeof(obj.data) === 'object') {
        var d = obj.data;
        var ds = [];
        for (var k in d) {
          if (d.hasOwnProperty(k)) {
            ds.push("".concat(k, "=").concat(encodeURIComponent(d[k])));
          }
        }
        data = ds.join('&amp;');
      } else {
        data = typeof obj.data === 'string' ? obj.data : null;
      }
      var header = {
        Cookie: document.cookie,
        referer: location.href
      };
      if (obj.contentType) {
        header['Content-Type'] = obj.contentType;
      } else if ((obj.type || 'GET').toUpperCase() === 'POST') {
        header['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
      }
      var reqLogItem = networkStartLog({
        method: obj.type || 'GET',
        url: obj.url,
        postData: obj.data || {},
        requestHeader: header,
        requestType: 'jsapi',
        startTime: Date.now()
      });
      var retryTime = 1;
      var jsapiRequest = function jsapiRequest(obj, data) {
        return JSAPI.invoke('request', {
          url: obj.url,
          method: obj.type,
          data: data,
          header: header
        }, function (res) {
          var _a, _b, _c, _d, _e, _f;
          if (res.err_msg.indexOf(':ok') &gt; -1 &amp;&amp; (!res.statusCode || res.statusCode &gt;= 200 &amp;&amp; res.statusCode &lt; 400)) {
            if (reqType(obj, '/mp/getappmsgext')) {
              window.receiveGetAppmsgExt = "".concat(res.statusCode, "|").concat(Date.now());
            }
            if (reqType(obj, '/mp/getappmsgad')) {
              window.receiveGetAppmsgAd = "".concat(res.statusCode, "|").concat(Date.now());
            }
            if (retryTime === 1) {
              obj.received &amp;&amp; obj.received(null);
            }
            var resData = {};
            if (res.data) {
              try {
                if (obj.dataType === 'json') {
                  resData = JSON.parse(res.data);
                } else {
                  resData = res.data;
                }
                if (resData &amp;&amp; resData.base_resp &amp;&amp; ((_a = resData.base_resp) === null || _a === void 0 ? void 0 : _a.ret) !== 0 &amp;&amp; typeof window.WX_BJ_REPORT !== 'undefined' &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; Math.random() &lt; 0.001) {
                  var reportUrl = obj.url;
                  if (obj.url.indexOf('?') !== -1) {
                    reportUrl = obj.url.substring(0, obj.url.indexOf('?'));
                    if (Url.getQuery('action', obj.url)) {
                      reportUrl = "".concat(reportUrl, "?action=").concat(Url.getQuery('action', obj.url));
                    }
                  }
                  if (!((reportUrl === '/mp/getappmsgext' || reportUrl === '/mp/getappmsgad') &amp;&amp; typeof resData.base_resp.ret === 'undefined')) {
                    window.WX_BJ_REPORT.BadJs.report(reportUrl, "ret=".concat(resData.base_resp.ret), {
                      mid: window.PAGE_MID,
                      view: 'wap_retcode'
                    });
                  }
                }
              } catch (e) {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 1,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_b = resData === null || resData === void 0 ? void 0 : resData.base_resp) === null || _b === void 0 ? void 0 : _b.ret) || 0
                  });
                }
                console.error(e);
                obj.error &amp;&amp; obj.error(null, {
                  type: 1,
                  error: e,
                  status: res.statusCode
                });
                obj.complete &amp;&amp; obj.complete();
                reqLogItem.endTime = Date.now();
                reqLogItem.response = res;
                networkEndLog(reqLogItem);
                return;
              }
            }
            var tmpResData = {};
            try {
              tmpResData = JSON.parse(res.data);
            } catch (e) {}
            if (tmpResData &amp;&amp; tmpResData.base_resp &amp;&amp; tmpResData.base_resp.ret === -3 &amp;&amp; retryTime &lt; 2 &amp;&amp; (mmversion.isIOS || mmversion.isAndroid &amp;&amp; mmversion.getInner() &gt; '27000600')) {
              if (!obj.dontReport) {
                report36408({
                  CgiPath: urlObj.pathname || '',
                  Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                  Query: urlObj.search || '',
                  PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                  Method: obj.type || '',
                  RequestType: 20,
                  RetType: 1,
                  HttpCode: res.statusCode || 0,
                  Ret: ((_c = resData === null || resData === void 0 ? void 0 : resData.base_resp) === null || _c === void 0 ? void 0 : _c.ret) || 0
                });
              }
              var _retryTime = retryTime++;
              JSAPI.invoke('updatePageAuth', {}, function (res) {
                console.log('[skeleton] updatePageAuth', res);
                monitor$1.setSum(112287, 3, 1);
                if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf(':ok') &gt; -1) {
                  window.top.pass_ticket = encodeURIComponent(Url.getQuery('pass_ticket', res.fullUrl).html(false).replace(/\s/g, '+'));
                  if (obj.pass_ticket) {
                    obj.pass_ticket = window.top.pass_ticket;
                  }
                  console.warn('[skeleton] updatePageAuth resetTopbar');
                  var supportNewTopBar = mmversion.isIOS &amp;&amp; mmversion.gtVersion('7.0.10', true);
                  var showBottomBar = !!window.is_login;
                  if (window.top.item_show_type === '0' &amp;&amp; supportNewTopBar) {
                    var top = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop || 0;
                    setCurrentMpInfo(top &gt; 40 &amp;&amp; !showBottomBar);
                  }
                  try {
                    obj.url = Url.addParam(obj.url, 'retry', _retryTime, true);
                  } catch (err) {
                    console.error(err);
                  }
                  jsapiRequest(obj, data);
                  monitor$1.setSum(112287, 4, 1);
                } else {
                  obj.success &amp;&amp; obj.success(resData);
                  obj.complete &amp;&amp; obj.complete();
                  if (mmversion.isIOS) {
                    monitor$1.setSum(112287, 35, 1);
                  } else {
                    monitor$1.setSum(112287, 36, 1);
                  }
                  reqLogItem.status = 200;
                  reqLogItem.endTime = Date.now();
                  reqLogItem.response = resData;
                  networkEndLog(reqLogItem);
                }
              });
            } else {
              if (((_d = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _d === void 0 ? void 0 : _d.ret) !== 0) {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 4,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_e = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _e === void 0 ? void 0 : _e.ret) || 0
                  });
                }
              } else {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 0,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_f = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _f === void 0 ? void 0 : _f.ret) || 0
                  });
                }
              }
              obj.success &amp;&amp; obj.success(resData);
              obj.complete &amp;&amp; obj.complete();
              reqLogItem.status = 200;
              reqLogItem.endTime = Date.now();
              reqLogItem.response = resData;
              networkEndLog(reqLogItem);
            }
          } else if (res.err_msg.indexOf('no permission') &gt; -1 || !mmversion.isOnlyWechat) {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                Method: obj.type || '',
                RequestType: 20,
                RetType: 1,
                HttpCode: res.statusCode || 0,
                Ret: 0
              });
            }
            Ajax(obj);
            if (res.err_msg.indexOf('no permission') &gt; -1) {
              console.warn('[JSAPI Request] No permission');
              monitor$1.setSum(112287, 31, 1);
            }
            reqLogItem.status = 302;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = res;
            networkEndLog(reqLogItem);
          } else {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                Method: obj.type || '',
                RequestType: 20,
                RetType: 2,
                HttpCode: res.statusCode || 0,
                Ret: 0
              });
            }
            obj.error &amp;&amp; obj.error(null, {
              type: 3,
              error: res,
              status: 0
            });
            obj.complete &amp;&amp; obj.complete();
            monitor$1.setSum(112287, 32, 1);
            var sample = 0.001;
            if (Math.random() &lt; sample) {
              var msg = "request: ".concat(JSON.stringify(obj.type), " ").concat(JSON.stringify(obj.url), " ;;;; cookie: ").concat(JSON.stringify(document.cookie), " ;;;; data: ").concat(JSON.stringify(data), " ;;;; resp: ").concat(JSON.stringify(res));
              if (window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs) {
                window.WX_BJ_REPORT.BadJs.report('ajax_wx_request_error', msg, {
                  mid: 'mmbizwap:Monitor'
                });
              }
            }
            reqLogItem.status = 400;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = res;
            networkEndLog(reqLogItem);
          }
        });
      };
      if (reqType(obj, '/mp/getappmsgext')) {
        window.startGetAppmsgExtTime = Date.now();
      }
      if (reqType(obj, '/mp/getappmsgad')) {
        window.startGetAppmsgAdTime = Date.now();
      }
      jsapiRequest(obj, data);
    });
  }

  function _regeneratorRuntime() {  _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  var AjaxRouter = function () {
    var _ref = _asyncToGenerator( _regeneratorRuntime().mark(function _callee(obj) {
      return _regeneratorRuntime().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            if (!window.__secPageAuthPromise) {
              _context.next = 3;
              break;
            }
            _context.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            if (!(!mmversion.isWxWork &amp;&amp; (window.__second_open__ || !getIsAcrossOrigin() &amp;&amp; top.window.__second_open__) &amp;&amp; window.__is_page_auth_return__ &amp;&amp; !obj.pureHttp)) {
              _context.next = 5;
              break;
            }
            return _context.abrupt("return", AjaxWx(obj));
          case 5:
            return _context.abrupt("return", Ajax(obj));
          case 6:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return function AjaxRouter(_x) {
      return _ref.apply(this, arguments);
    };
  }();

  var isx5 = navigator.userAgent.indexOf('TBS/') !== -1;
  var getDataFunc = [];
  var reportData = [];
  
  var specificData = {};
  function joinUrl(url) {
    var obj = {};
    if (typeof window.uin !== 'undefined') {
      obj.uin = window.uin;
    }
    if (typeof window.key !== 'undefined') {
      obj.key = window.key;
    }
    if (typeof window.pass_ticket !== 'undefined') {
      obj.pass_ticket = window.pass_ticket;
    }
    if (typeof window.wxtoken !== 'undefined') {
      obj.wxtoken = window.wxtoken;
    }
    if (typeof window.devicetype !== 'undefined') {
      obj.devicetype = window.devicetype;
    }
    if (typeof window.clientversion !== 'undefined') {
      obj.clientversion = window.clientversion;
    }
    if (typeof window.appmsg_token !== 'undefined') {
      obj.appmsg_token = window.appmsg_token;
    } else if (url.indexOf('advertisement_report') &gt; -1) {
      new Image().src = "".concat(location.protocol, "//mp.weixin.qq.com/mp/jsmonitor?idkey=68064_13_1&amp;r=").concat(Math.random());
    }
    obj.x5 = isx5 ? '1' : '0';
    obj.f = 'json';
    return Url.join(url, obj);
  }
  function isObj(obj) {
    return obj &amp;&amp; _typeof(obj) === 'object';
  }
  function assign(target, source) {
    if (isObj(target) &amp;&amp; isObj(source)) {
      for (var key in source) {
        if (Object.prototype.hasOwnProperty.call(source, key)) {
          target[key] = source[key];
        }
      }
    }
  }
  function assembleReportData(initiative) {
    var leaveReportLog = [];
    leaveReportLog.push({
      content: "[LeaveReport] specificData keys: ".concat(Object.keys(specificData)),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] specificData keys: ".concat(Object.keys(specificData)));
    console.log("[LeaveReport] specificData keys: ".concat(Object.keys(specificData)));
    var allReportData = {};
    for (var reportField in specificData) {
      if (!allReportData[reportField]) {
        allReportData[reportField] = {};
      }
      for (var i = 0; i &lt; specificData[reportField].length; i++) {
        var param = specificData[reportField][i];
        if (typeof param === 'function') {
          try {
            assign(allReportData[reportField], param(initiative));
          } catch (err) {
            leaveReportLog.push({
              content: "[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)),
              timestamp: Date.now()
            });
            Log.error("[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)));
            console.error("[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)));
          }
        } else if (isObj(param)) {
          assign(allReportData[reportField], param);
        }
      }
    }
    leaveReportLog.push({
      content: "[LeaveReport] reportData.length: ".concat(reportData.length),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] reportData.length: ".concat(reportData.length));
    console.log("[LeaveReport] reportData.length: ".concat(reportData.length));
    leaveReportLog.push({
      content: "[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length));
    console.log("[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length));
    for (var _i = 0; _i &lt; getDataFunc.length; _i++) {
      try {
        var data = getDataFunc[_i](initiative);
        if (isObj(data)) {
          reportData.push(data);
        }
      } catch (err) {
        leaveReportLog.push({
          content: "[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)),
          timestamp: Date.now()
        });
        Log.error("[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)));
        console.error("[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)));
      }
    }
    for (var _i2 = 0; _i2 &lt; reportData.length; _i2++) {
      if (reportData[_i2].reportUrl) {
        reportData[_i2].reportUrl = joinUrl(reportData[_i2].reportUrl);
      }
    }
    allReportData.data = {
      'requestList': reportData
    };
    leaveReportLog.push({
      content: "[LeaveReport] final reportData.length: ".concat(reportData.length, ", data=").concat(JSON.stringify(reportData)),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] final reportData.length: ".concat(reportData.length));
    console.log("[LeaveReport] final reportData.length: ".concat(reportData.length));
    allReportData.info = leaveReportLog;
    return allReportData;
  }
  function addReport(param) {
    if (typeof param === 'function') {
      getDataFunc.push(param);
    } else if (isObj(param)) {
      reportData.push(param);
    }
  }
  
  function addSpecificReport(reportField, param) {
    if (!specificData[reportField]) {
      specificData[reportField] = [];
    }
    specificData[reportField].push(param);
  }
  
  function reportNow(callback) {
    var allReportData = assembleReportData(true);
    JSAPI.invoke('handleMPPageAction', {
      action: 'reportByLeaveForMPGateway',
      reportData: allReportData
    }, function (res) {
      if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf(':ok') !== -1) {
        getDataFunc = [];
        reportData = [];
        specificData = {};
        typeof callback === 'function' &amp;&amp; callback(res);
      } else {
        getDataFunc = [];
        reportData = [];
        var len = allReportData.data.requestList.length;
        allReportData.data.requestList.forEach(function (req) {
          if (req.reportUrl) {
            AjaxRouter({
              type: req.method || 'GET',
              url: req.reportUrl,
              data: req.reportData,
              async: false,
              success: function success(resp) {
                if (--len &lt; 0) {
                  typeof callback === 'function' &amp;&amp; callback({
                    err_msg: 'handleMPPageAction:ok',
                    fallback: true,
                    resp: resp
                  });
                }
              },
              error: function error(xhr, err) {
                if (--len &lt; 0) {
                  typeof callback === 'function' &amp;&amp; callback({
                    err_msg: 'handleMPPageAction:fail',
                    fallback: true,
                    err: err
                  });
                }
              }
            });
          }
        });
      }
    });
  }
  var leaveReport = {
    reportNow: reportNow,
    addReport: addReport,
    addSpecificReport: addSpecificReport
  };
  var _leaveReport = (function () {
    var doc = {};
    var isCrossOrigin = false;
    try {
      doc = top.window.document;
    } catch (e) {
      isCrossOrigin = true;
    }
    if (!isCrossOrigin &amp;&amp; top.window.__leaveReport) {
      return top.window.__leaveReport;
    }
    if (window.__leaveReport) {
      return window.__leaveReport;
    }
    JSAPI.on('reportOnLeaveForMP', function () {
      return assembleReportData(false);
    });
    return window.__leaveReport = leaveReport;
  })();

  var getReportJson = function getReportJson(logId, rawData) {
    var data = JSON.parse(JSON.stringify(rawData));
    data.log_id = Number(logId);
    data.TimeStamp = Math.round(Date.now() / 1000);
    console.log('[comm_report] reportjson: ', data);
    return JSON.stringify(data);
  };
  var getSuccessHandler = function getSuccessHandler(logId, data, opt) {
    return function (res) {
      if (res &amp;&amp; res.err_code !== 0) {
        console.warn("[comm_report] report ".concat(logId, " fail: "), res.err_msg, data);
      }
      if (typeof opt.success === 'function') {
        opt.success(res);
      }
    };
  };
  var getErrorHandler = function getErrorHandler(logId, data, opt) {
    return function (xhr, info) {
      console.error("[comm_report] report ".concat(logId, " error: "), info, data);
      if (typeof opt.error === 'function') {
        opt.error(xhr, info);
      }
    };
  };
  var batchReportDataArr = [];
  var blackLogId = [25587, 18832, 28208, 25574, 29139, 10945];
  var BATCH_SIZE = 4;
  var BATCH_TIME = 1000;
  var getRepeatedReportJson = function getRepeatedReportJson() {
    if (!batchReportDataArr || !batchReportDataArr.length) return false;
    var reportData = {
      count: 0
    };
    reportData.count = batchReportDataArr.length;
    batchReportDataArr.forEach(function (data, index) {
      reportData["reportjson".concat(index)] = data;
    });
    batchReportDataArr = [];
    console.log('[reportData]: ', reportData);
    return reportData;
  };
  var timeOutId;
  function batchReport() {
    if (!batchReportDataArr || !batchReportDataArr.length) return;
    var repeatedReportJson = getRepeatedReportJson();
    if (!repeatedReportJson) return;
    AjaxRouter({
      type: 'POST',
      dataType: 'json',
      url: '/mp/wapcommreport?action=batch_report',
      data: repeatedReportJson,
      dontReport: true,
      success: function success(res) {
        if (res &amp;&amp; res.err_code) {
          console.warn("[comm_report] batch report fail: ", res.err_msg, batchReportDataArr);
        }
      },
      error: function error(xhr, info) {
        console.error("[comm_report] batch report error: ", info, batchReportDataArr);
      }
    });
  }
  function batchReportThrottle(logId, rawData) {
    var reportJsonData = getReportJson(logId, rawData);
    if (!reportJsonData) return;
    batchReportDataArr.push(reportJsonData);
    if (batchReportDataArr.length &gt;= BATCH_SIZE) {
      batchReport();
    } else {
      if (!timeOutId) {
        timeOutId = setTimeout(function () {
          batchReport();
          clearTimeout(timeOutId);
          timeOutId = null;
        }, BATCH_TIME);
      }
    }
  }
  _leaveReport.addReport(function () {
    var repeatedReportJson = getRepeatedReportJson();
    if (!repeatedReportJson) return false;
    var reportData = [];
    for (var _i = 0, _Object$entries = Object.entries(repeatedReportJson); _i &lt; _Object$entries.length; _i++) {
      var _Object_i = _slicedToArray(_Object$entries[_i], 2),
        key = _Object_i[0],
        value = _Object_i[1];
      reportData.push("".concat(key, "=").concat(encodeURIComponent(value)));
    }
    return {
      reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport?action=batch_report',
      reportData: reportData.join('&amp;'),
      method: 'POST'
    };
  });
  var WapReport = {
    report: function report(logId, rawData, rawOpt) {
      var opt = rawOpt || {};
      if (!opt.realTime &amp;&amp; !blackLogId.includes(logId)) {
        batchReportThrottle(logId, rawData);
      } else {
        AjaxRouter({
          type: 'POST',
          dataType: 'json',
          url: '/mp/wapcommreport',
          data: {
            reportjson: getReportJson(logId, rawData)
          },
          async: opt.async,
          success: getSuccessHandler(logId, rawData, opt),
          error: getErrorHandler(logId, rawData, opt)
        });
      }
    },
    leaveReport: function leaveReport(logId, rawData) {
      _leaveReport.addReport(function () {
        var data = typeof rawData === 'function' ? rawData() : rawData;
        if (!data) {
          return false;
        }
        return {
          reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport',
          reportData: "reportjson=".concat(encodeURIComponent(getReportJson(logId, data))),
          method: 'POST'
        };
      });
    },
    reportByBeacon: function reportByBeacon(logId, rawData) {
      try {
        if (!Device.os.android &amp;&amp; !Device.os.ios &amp;&amp; !Device.os.harmony) {
          var data = typeof rawData === 'function' ? rawData() : rawData;
          if (!data) {
            return false;
          }
          var url = '/mp/wapcommreport';
          var reportJsonData = encodeURIComponent(getReportJson(logId, data));
          console.log("reportByBeacon", JSON.stringify(reportJsonData));
          navigator.sendBeacon(Url.joinUrl(url), "reportjson=".concat(reportJsonData));
        } else {
          _leaveReport.addReport(function () {
            var data = typeof rawData === 'function' ? rawData() : rawData;
            if (!data) {
              return false;
            }
            return {
              reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport',
              reportData: "reportjson=".concat(encodeURIComponent(getReportJson(logId, data))),
              method: 'POST'
            };
          });
        }
      } catch (error) {
        console.log(error);
      }
    }
  };

  
  var ua = navigator.userAgent;
  var is_android = /(Android)/i.test(ua);
  var g = {
    x: 0,
    y: 0,
    isPc: /(WindowsNT)|(Windows NT)|(Macintosh)|Linux|UnifiedPCOHOSWechat/i.test(navigator.userAgent) &amp;&amp; !is_android,
    isWp: /Windows\sPhone/i.test(ua),
    tsTime: -1
  };
  var prefixes = ['webkit', 'moz', 'ms', 'o'];
  if (isUseTap()) {
    on(document, "touchstart", function (e) {
      if (e.touches.length === 1) {
        var st = e.touches[0];
        g.x = st.clientX;
        g.y = st.clientY;
        g.tsTime = +new Date();
      } else {
        g.tsTime = -1;
      }
    });
  }
  var scrolling;
  function isScrolling() {
    if (scrolling &amp;&amp; new Date().getTime() - scrolling &lt; 200) return true;
    return false;
  }
  window.addEventListener('scroll', function () {
    scrolling = new Date().getTime();
  }, true);
  function isUseTap() {
    if (g.isPc || g.isWp) {
      return false;
    }
    return true;
  }
  
  function tap(el, cb, flag, className) {
    if (!isUseTap()) {
      on(el, "click", className, cb, flag);
    } else {
      cb.tap_handler = function (e) {
        if (g.tsTime == -1 || +new Date() - g.tsTime &gt; 200 || isScrolling()) {
          return;
        }
        var st = e.changedTouches[0];
        if (Math.abs(g.y - st.clientY) &lt;= 5 &amp;&amp; Math.abs(g.x - st.clientX) &lt;= 5) {
          return cb.call(this, e);
          
        }
      };
      on(el, "touchend", className, cb.tap_handler, flag);
    }
  }
  
  function longtap(el, cb, _flag, className, cancelCb) {
    var self = this;
    var timeOutEvent;
    if (g.isPc || g.isWp) {
      var mousedown = false;
      var x;
      var y;
      var triggerLongClick;
      on(el, 'mousedown', className, function (e) {
        triggerLongClick = false;
        mousedown = true;
        x = e.clientX;
        y = e.clientY;
        timeOutEvent = setTimeout(function () {
          triggerLongClick = true;
          timeOutEvent = undefined;
          cb.call(this, e);
        }, 500);
        e.preventDefault();
      });
      on(el, 'mousemove', className, function (e) {
        if (!mousedown) return;
        if (timeOutEvent &amp;&amp; (Math.abs(y - e.clientY) &gt; 5 || Math.abs(x - e.clientX) &gt; 5)) {
          clearTimeout(timeOutEvent);
          timeOutEvent = undefined;
          typeof cancelCb === 'function' &amp;&amp; cancelCb.call(self, e);
        }
      });
      on(el, 'mouseup', className, function () {
        mousedown = false;
        clearTimeout(timeOutEvent);
      });
      on(el, 'click', className, function () {
        if (triggerLongClick) return false;
      });
    } else {
      on(el, 'touchstart', className, function (e) {
        e.touches.length === 1 &amp;&amp; (timeOutEvent = setTimeout(function () {
          timeOutEvent = undefined;
          cb.call(self, e);
        }, 500));
      });
      on(el, 'touchmove', className, function (e) {
        if (!timeOutEvent) return;
        var st = e.changedTouches[0];
        if (Math.abs(g.y - st.clientY) &gt; 5 || Math.abs(g.x - st.clientX) &gt; 5) {
          clearTimeout(timeOutEvent);
          timeOutEvent = undefined;
          typeof cancelCb === 'function' &amp;&amp; cancelCb.call(self, e);
        }
      });
      on(el, 'touchend', className, function (e) {
        if (timeOutEvent) {
          clearTimeout(timeOutEvent);
          timeOutEvent = undefined;
        } else {
          e.preventDefault();
        }
      }, true);
    }
  }
  function doubletap(el, cb) {
    var _this = this;
    var __lastTouchVideoTs = 0;
    var realCb = function realCb(e) {
      if (Date.now() - __lastTouchVideoTs &lt; 300) {
        cb.call(_this, e);
      }
      __lastTouchVideoTs = Date.now();
    };
    tap(el, realCb);
    return function () {
      return off(el, 'touchend', realCb);
    };
  }
  function matches(ele, className) {
    if (!ele || !className || ele.nodeType != ele.ELEMENT_NODE) return false;
    var matchesSelector = ele.webkitMatchesSelector || ele.msMatchesSelector || ele.matchesSelector;
    if (matchesSelector) return matchesSelector.call(ele, className);
    className = className.substr(1);
    return ele.className.indexOf(className) &gt; -1;
  }
  function closest(target, className, context) {
    while (target &amp;&amp; !matches(target, className)) {
      target = target !== context &amp;&amp; target.nodeType !== target.DOCUMENT_NODE &amp;&amp; target.parentNode;
    }
    return target;
  }
  function on(el, type, className, cb, flag, extra) {
    var callback;
    var handler;
    var delegator;
    if (!el) return;
    if (typeof className === 'function') {
      extra = flag;
      flag = cb;
      cb = className;
      className = '';
    }
    if (typeof className !== 'string') {
      className = '';
    }
    if (el == window &amp;&amp; type == "load" &amp;&amp; /complete|loaded/.test(document.readyState)) {
      return cb({
        type: "load"
      });
    }
    if (type == 'tap') return tap(el, cb, flag, className);
    if (type === 'longtap') return longtap(el, cb, flag, className, extra);
    if (type == "unload" &amp;&amp; "onpagehide" in window) {
      type = "pagehide";
    }
    callback = function callback(e) {
      var ret = cb(e);
      if (ret === false) {
        e.stopPropagation &amp;&amp; e.stopPropagation();
        e.preventDefault &amp;&amp; e.preventDefault();
      }
      return ret;
    };
    if (className &amp;&amp; className.charAt(0) == '.') delegator = function delegator(e) {
      var target = e.target || e.srcElement;
      var match = closest(target, className, el);
      if (match) {
        e.delegatedTarget = match;
        return callback(e);
      }
    };
    handler = delegator || callback;
    cb["".concat(type, "_handler")] = handler;
    if (el.addEventListener) {
      el.addEventListener(type, handler, !!flag);
      return;
    }
    if (el.attachEvent) {
      el.attachEvent("on".concat(type), handler, !!flag);
      return;
    }
  }
  function off(el, type, cb, flag) {
    if (!el) return;
    var handlerType = type;
    var handler;
    if (handlerType == 'tap') {
      if (isUseTap()) {
        handlerType = 'touchend';
        handler = cb.tap_handler &amp;&amp; cb.tap_handler.touchend_handler ? cb.tap_handler.touchend_handler : cb;
      } else {
        handlerType = 'click';
      }
    }
    if (!handler) {
      handler = cb["".concat(handlerType, "_handler")] || cb;
    }
    if (el.removeEventListener) {
      el.removeEventListener(handlerType, handler, !!flag);
      return;
    }
    if (el.detachEvent) {
      el.detachEvent("on".concat(handlerType), handler, !!flag);
      return;
    }
    if (handlerType == 'tap' &amp;&amp; isUseTap()) {
      if (cb.tap_handler) {
        cb.tap_handler.touchend_handler = null;
      }
      cb.tap_handler = null;
    } else {
      cb["".concat(handlerType, "_handler")] = null;
    }
  }
  function getHiddenProp() {
    if ('hidden' in document) {
      return 'hidden';
    }
    for (var i = 0; i &lt; prefixes.length; i++) {
      if ("".concat(prefixes[i], "Hidden") in document) {
        return "".concat(prefixes[i], "Hidden");
      }
    }
    return null;
  }
  function getVisibilityState() {
    if ('visibilityState' in document) {
      return 'visibilityState';
    }
    for (var i = 0; i &lt; prefixes.length; i++) {
      if ("".concat(prefixes[i], "VisibilityState") in document) {
        return "".concat(prefixes[i], "VisibilityState");
      }
    }
    return null;
  }
  function bindVisibilityChangeEvt(cb) {
    var visProp = getHiddenProp();
    if (visProp) {
      var evtname = "".concat(visProp.replace(/[H|h]idden/, ''), "visibilitychange");
      var handler = function handler() {
        var isShow = document[getVisibilityState()] !== 'hidden';
        typeof cb === 'function' &amp;&amp; cb(isShow);
      };
      document.addEventListener(evtname, handler, false);
      return function () {
        document.removeEventListener(evtname, handler, false);
      };
    }
    return function () {};
  }
  var DomEvent = {
    on: on,
    off: off,
    tap: tap,
    longtap: longtap,
    bindVisibilityChangeEvt: bindVisibilityChangeEvt,
    doubletap: doubletap
  };

  var html = function html(_str, encode) {
    if (!_str) return '';
    var replace = ['&amp;#96;', '`', '&amp;#39;', '\'', '&amp;quot;', '"', '&amp;nbsp;', ' ', '&amp;gt;', '&gt;', '&amp;lt;', '&lt;', '&amp;yen;', '¥', '&amp;amp;', '&amp;', '&amp;#60;', '&lt;', '&amp;#62;', '&gt;'];
    
    var replaceReverse = ['&amp;', '&amp;amp;', '¥', '&amp;yen;', '&lt;', '&amp;lt;', '&gt;', '&amp;gt;', ' ', '&amp;nbsp;', '"', '&amp;quot;', '\'', '&amp;#39;', '`', '&amp;#96;'];
    var str = _str;
    var target;
    if (encode) {
      target = replaceReverse;
    } else {
      target = replace;
    }
    for (var i = 0; i &lt; target.length; i += 2) {
      str = str.replace(new RegExp(target[i], 'g'), target[i + 1]);
    }
    return str;
  };
  var htmlLite = function htmlLite(_str, encode) {
    if (!_str) return '';
    var replace = ['&amp;#96;', '`', '&amp;#39;', '\'', '&amp;quot;', '"', '&amp;gt;', '&gt;', '&amp;lt;', '&lt;', '&amp;amp;', '&amp;'];
    
    var replaceReverse = ['&amp;', '&amp;amp;', '&lt;', '&amp;lt;', '&gt;', '&amp;gt;', '"', '&amp;quot;', '\'', '&amp;#39;', '`', '&amp;#96;'];
    var str = _str;
    var target;
    if (encode) {
      target = replaceReverse;
    } else {
      target = replace;
    }
    for (var i = 0; i &lt; target.length; i += 2) {
      str = str.replace(new RegExp(target[i], 'g'), target[i + 1]);
    }
    return str;
  };
  var htmlEncode = function htmlEncode(str) {
    return html(str, true);
  };
  var htmlDecode = function htmlDecode(str) {
    return html(str, false);
  };
  var htmlEncodeLite = function htmlEncodeLite(str) {
    return htmlLite(str, true);
  };
  var htmlDecodeLite = function htmlDecodeLite(str) {
    return htmlLite(str, false);
  };
  String.prototype.html = function (encode) {
    return html(this.toString(), encode);
  };
  String.prototype.htmlEncode = function () {
    return htmlEncode(this.toString());
  };
  String.prototype.htmlDecode = function () {
    return htmlDecode(this.toString());
  };
  String.prototype.htmlLite = function (encode) {
    return htmlLite(this.toString(), encode);
  };
  String.prototype.htmlEncodeLite = function () {
    return htmlEncodeLite(this.toString());
  };
  String.prototype.htmlDecodeLite = function () {
    return htmlDecodeLite(this.toString());
  };

  function getCommonReportData() {
    return {
      Referer: location.href,
      UserAgent: navigator.userAgent,
      Protocol: location.protocol || '',
      Origin: location.host || ''
    };
  }
  var report36408 = function report36408(data) {
    WapReport.report(36408, Object.assign(Object.assign({}, data), getCommonReportData()));
  };

  
  var ajax = function ajax(obj) {
    obj.report36408 = report36408;
    AjaxRouter(obj);
  };

  
  var timer = null;
  var jsmonitorReport = {
    setSum: function setSum(id, key, value) {
      throw new Error('Function not implemented.');
    },
    setAvg: function setAvg(id, key, value) {
      throw new Error('Function not implemented.');
    },
    setLogs: function setLogs(opt) {
      throw new Error('Function not implemented.');
    },
    send: function send(async) {
      throw new Error('Function not implemented.');
    }
  };
  window.__monitor_unload_has_done__ = false;
  jsmonitorReport.setSum = function (id, key, value) {
    monitor$1.setSum(id, key, value);
    return jsmonitorReport;
  };
  jsmonitorReport.setAvg = function (id, key, value) {
    monitor$1.setAvg(id, key, value);
    return jsmonitorReport;
  };
  jsmonitorReport.setLogs = function (opt) {
    monitor$1.setLogs(opt);
    return jsmonitorReport;
  };
  jsmonitorReport.send = function (async) {
    if (async !== false) {
      async = true;
    }
    monitor$1.send(async, ajax);
    return jsmonitorReport;
  };
  function reportInterval(fn, delay) {
    timer = window.setTimeout(function () {
      fn();
      reportInterval(fn, delay);
    }, delay);
  }
  reportInterval(function () {
    jsmonitorReport.send();
  }, 1 * 1000);
  window.addEventListener('unload', function () {
    if (window.__monitor_report_has_done__) return;
    window.__ajaxtest = '2';
    if (timer) {
      window.clearTimeout(timer);
      timer = null;
    }
    jsmonitorReport.send(false);
    window.__monitor_unload_has_done__ = true;
  }, false);
  if (window.__jsmonitorReport) {
    jsmonitorReport = window.__jsmonitorReport;
  } else {
    window.__jsmonitorReport = jsmonitorReport;
  }
  var jsmonitorReport$1 = jsmonitorReport;

  
  try {
    if (typeof parent.window.hasListenMpPageAction === 'undefined') {
      parent.window.hasListenMpPageAction = false;
    }
    if (typeof parent.window.hasListenStateChange === 'undefined') {
      parent.window.hasListenStateChange = false;
    }
  } catch (error) {
  }
  var mpPageActionCb = [];
  var stateChangeCb = [];
  var HistoryLS = new LS('history4secondopen');
  var HistoryKey = 'from';
  var hasListenPopstateForSecOpenReload = false;
  
  var webComptStatus = {
    status: 'loading'
  };
  var webComptInitCb = [];
  var directionHandlerId = 0;
  var directionChangeHandlersMap = {};
  function isNativePage() {
    return Url.getQuery('isNativePage') === '1' || Url.getQuery('isNativePage') === '2';
  }
  
  function debounce(func) {
    var wait = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 50;
    var timeout;
    return function () {
      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key &lt; _len; _key++) {
        args[_key] = arguments[_key];
      }
      var context = this;
      var later = function later() {
        timeout = null;
        func.apply(context, args);
      };
      if (timeout) {
        return;
      }
      timeout = setTimeout(later, wait);
    };
  }
  
  function checkIntersect(rectA, rectB) {
    return !(rectB.right &lt; rectA.left || rectB.left &gt; rectA.right || rectB.bottom &lt; rectA.top || rectB.top &gt; rectA.bottom);
  }
  var utils = {
    isNativePage: isNativePage,
    isNewNativePage: function isNewNativePage() {
      return Url.getQuery('isNativePage') === '2';
    },
    isOldNativePage: function isOldNativePage() {
      return Url.getQuery('isNativePage') === '1';
    },
    __useWcSlPlayer: false,
    isWcSlPage: function isWcSlPage() {
      return utils.__useWcSlPlayer;
    },
    getPlayerType: function getPlayerType() {
      if (isNativePage()) {
        return 2;
      }
      return 1;
    },
    getParam: function getParam(key) {
      if (!key) return null;
      var m = location.href.match(new RegExp("(\\?|&amp;)".concat(key, "=([^&amp;]+)")));
      return m ? m[2] : null;
    },
    
    insertAfter: function insertAfter(newElement, targetElement) {
      var parentElement = targetElement.parentNode;
      if (parentElement.lastChild === targetElement) {
        parentElement.appendChild(newElement);
      } else {
        parentElement.insertBefore(newElement, targetElement.nextSibling);
      }
    },
    getInnerHeight: function getInnerHeight() {
      var innerHeightFromApp = window.getInnerHeight &amp;&amp; window.getInnerHeight();
      return innerHeightFromApp || window.innerHeight || document.documentElement.clientHeight;
    },
    getInnerWidth: function getInnerWidth() {
      return window.innerWidth || document.documentElement.clientWidth;
    },
    getScrollTop: function getScrollTop() {
      return document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
    },
    getDocumentHeight: function getDocumentHeight() {
      return document.body.scrollHeight;
    },
    getElementActualTop: function getElementActualTop(element) {
      var elRect = element.getBoundingClientRect();
      var actualTop = elRect.top + this.getScrollTop();
      return actualTop;
    },
    getElementTop: function getElementTop(element) {
      return element.getBoundingClientRect().top;
    },
    getElementHeight: function getElementHeight(element) {
      return element.getBoundingClientRect().height;
    },
    getOrientation: function getOrientation() {
      var _a, _b;
      return (_b = (_a = window.screen.orientation) === null || _a === void 0 ? void 0 : _a.angle) !== null &amp;&amp; _b !== void 0 ? _b : window.orientation;
    },
    getDirection: function getDirection() {
      var orientation = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : utils.getOrientation();
      return (mmversion.isIPad ? [90, 270] : [0, 180]).indexOf(orientation) &gt; -1 ? 'vertical' : 'horizontal';
    },
    listenDirectionChange: function listenDirectionChange(cb) {
      var _a, _b;
      if ((_b = (_a = window.screen) === null || _a === void 0 ? void 0 : _a.orientation) === null || _b === void 0 ? void 0 : _b.addEventListener) {
        directionChangeHandlersMap[directionHandlerId] = function (e) {
          cb === null || cb === void 0 ? void 0 : cb(utils.getDirection(e.target.angle), e.target.angle);
        };
        window.screen.orientation.addEventListener('change', directionChangeHandlersMap[directionHandlerId]);
      } else {
        directionChangeHandlersMap[directionHandlerId] = function () {
          var orientation = utils.getOrientation();
          cb === null || cb === void 0 ? void 0 : cb(utils.getDirection(orientation), orientation);
        };
        window.addEventListener('orientationchange', directionChangeHandlersMap[directionHandlerId]);
      }
      return directionHandlerId++;
    },
    unlistenDirectionChange: function unlistenDirectionChange(handlerId) {
      var _a, _b;
      if ((_b = (_a = window.screen) === null || _a === void 0 ? void 0 : _a.orientation) === null || _b === void 0 ? void 0 : _b.removeEventListener) {
        window.screen.orientation.removeEventListener('change', directionChangeHandlersMap[handlerId]);
      } else {
        window.removeEventListener('orientationchange', directionChangeHandlersMap[handlerId]);
      }
      delete directionChangeHandlersMap[handlerId];
    },
    isScrollEnd: function isScrollEnd(threshold) {
      return this.getScrollTop() + this.getInnerHeight() + threshold &gt;= this.getDocumentHeight();
    },
    
    listenStateChange: function listenStateChange() {
      var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
      stateChangeCb.push(opt.cb);
      try {
        if (parent.window.hasListenStateChange) {
          return;
        }
      } catch (error) {
      }
      JSAPI.on('activity:state_change', function (res) {
        stateChangeCb.forEach(function (callback) {
          callback(res);
        });
      });
      try {
        parent.window.hasListenStateChange = true;
      } catch (error) {
      }
    },
    
    listenMpPageAction: function listenMpPageAction(cb) {
      mpPageActionCb.push(cb);
      try {
        if (parent.window.hasListenMpPageAction) {
          return;
        }
      } catch (error) {
      }
      JSAPI.on('onMPPageAction', function (res) {
        mpPageActionCb.forEach(function (callback) {
          callback(res);
        });
      });
      try {
        parent.window.hasListenMpPageAction = true;
      } catch (error) {
      }
    },
    getIosMainVersion: function getIosMainVersion() {
      var versionInfo = navigator.userAgent.toLowerCase().match(/cpu iphone os (.*?) like mac os/);
      return versionInfo &amp;&amp; versionInfo[1] &amp;&amp; parseInt(versionInfo[1].split('_')[0], 10);
    },
    
    report120081: function report120081(key, times) {
      jsmonitorReport$1.setSum(120081, key, times);
      jsmonitorReport$1.send();
    },
    loadNewPageKeepingHistoryStackIfSecOpen: function loadNewPageKeepingHistoryStackIfSecOpen(url) {
      if (window.__second_open__ &amp;&amp; typeof url === 'string' &amp;&amp; /^https?:\/\/mp.weixin.qq.com\//.test(url)) {
        HistoryLS.set(HistoryKey, location.href, Date.now() + 10000);
      }
      location.href = "".concat(url.replace(/#.*$/, ''), "#wechat_redirect");
    },
    initNewPageHistoryStackFromSecOpen: function initNewPageHistoryStackFromSecOpen() {
      var fromUrl = HistoryLS.get(HistoryKey);
      if (fromUrl &amp;&amp; typeof fromUrl === 'string' &amp;&amp; /^https?:\/\/mp.weixin.qq.com\//.test(fromUrl)) {
        HistoryLS.remove(HistoryKey);
        if (history &amp;&amp; history.replaceState &amp;&amp; history.pushState) {
          var curUrl = location.href;
          try {
            history.replaceState({
              __mock_secopen_history_stack_reload__: 1
            }, '', fromUrl);
            history.pushState({
              __mock_secopen_history_stack_reload__: 1
            }, '', curUrl);
          } catch (e) {
            console.error('[initNewPageHistoryStackFromSecOpen]', e);
          }
        }
      }
      if (!hasListenPopstateForSecOpenReload) {
        hasListenPopstateForSecOpenReload = true;
        window.addEventListener('popstate', function (e) {
          if (e.state &amp;&amp; e.state.__mock_secopen_history_stack_reload__ === 1) {
            location.reload();
          }
        });
      }
    },
    initWebCompt: function initWebCompt(webComptList, callback) {
      var flushCb = function flushCb() {
        while (webComptInitCb.length) {
          var cb = webComptInitCb.shift();
          cb(webComptStatus);
        }
      };
      if (mmversion.isWechat &amp;&amp; !mmversion.isInMiniProgram &amp;&amp; (Device.os.iphone &amp;&amp; Device.os.getNumVersion() &gt;= 10.3 &amp;&amp; (mmversion.gtVersion('7.0.14', 1) &amp;&amp; Device.os.getNumVersion() &lt; 15 || mmversion.gtVersion('8.0.7')) || Device.os.android &amp;&amp; mmversion.gtVersion('7.0.15', 1) &amp;&amp; Device.os.getNumVersion() &gt;= 5 || Device.os.harmony &amp;&amp; mmversion.compareHexVersion('0xf3800c00'))) {
        document.addEventListener('WeixinOpenTagsReady', function () {
          webComptStatus = {
            status: 'ready'
          };
          flushCb();
        });
        document.addEventListener('WeixinOpenTagsError', function (e) {
          webComptStatus = {
            status: 'error',
            error: e &amp;&amp; e.detail &amp;&amp; e.detail.errMsg
          };
          flushCb();
        });
        JSAPI.invoke('handleMPPageAction', {
          action: 'wxConfig',
          appid: 'wxmpfakeid',
          webComptList: webComptList,
          url: location.href
        }, function (res) {
          console.log('wx config web compt result', webComptList, res);
          Log.info('wx config web compt result', webComptList, JSON.stringify(res));
          if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf(':ok') === -1) {
            webComptStatus = {
              status: 'error',
              error: res.err_msg
            };
            flushCb();
          }
          if (typeof callback === 'function') {
            callback(res);
          }
        });
      } else {
        var res = {
          err_msg: 'handleMPPageAction:fail_webcompt unsupported'
        };
        console.log('wx config web compt result', webComptList, res);
        Log.info('wx config web compt result', webComptList, JSON.stringify(res));
        webComptStatus = {
          status: 'error',
          error: res.err_msg
        };
        flushCb();
        if (typeof callback === 'function') {
          callback(res);
        }
      }
    },
    initWebComptForWcSlVideoSharePage: function initWebComptForWcSlVideoSharePage() {
      var initAfterConfWxOpen = function initAfterConfWxOpen(res) {
        if (res.err_msg.indexOf(':ok') !== -1) {
          utils.initNewPageHistoryStackFromSecOpen();
        } else {
          window.__failConfigWxOpen = true;
          Log.info('failed to config wxopen: res not ok');
          jsmonitorReport$1.setSum(221515, Device.os.iphone ? 7 : 8, 1);
          window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; res &amp;&amp; window.WX_BJ_REPORT.BadJs.report('WcSlPlayer:CfgError', (window.__second_open__ ? 'secopen:' : 'h5:') + JSON.stringify(res));
        }
      };
      if (mmversion.isAndroid) {
        var clientVer = mmversion.getInner();
        if (clientVer &gt; '27001037' &amp;&amp; clientVer &lt; '27001060' || clientVer &gt;= '27001100') {
          utils.initWebCompt(['wxOpen' ], initAfterConfWxOpen);
        } else if (mmversion.gtVersion('7.0.15', 1)) {
          window.__failConfigWxOpen = true;
          Log.info('failed to config wxopen: android version check failed (gt 7.0.15)');
        } else {
          window.__failConfigWxOpen = true;
          Log.info('failed to config wxopen: android version check failed');
        }
      } else if (mmversion.isIOS) {
        if (mmversion.gtVersion('7.0.15', 1)) {
          utils.initWebCompt(['wxOpen' ], initAfterConfWxOpen);
        } else {
          window.__failConfigWxOpen = true;
          Log.info('failed to config wxopen: ios version check failed');
        }
      } else {
        window.__failConfigWxOpen = true;
      }
    },
    
    getWebComptStatus: function getWebComptStatus(cb) {
      if (typeof cb !== 'function') {
        return webComptStatus;
      }
      if (webComptStatus.status === 'loading') {
        webComptInitCb.push(cb);
      } else {
        cb(webComptStatus);
      }
      return true;
    },
    
    supportImmersiveMode: mmversion.isWechat &amp;&amp; !mmversion.isInMiniProgram &amp;&amp; (mmversion.isIOS &amp;&amp; mmversion.gtVersion('8.0.9', 1) || mmversion.isAndroid &amp;&amp; mmversion.gtVersion('8.0.9', 1)),
    debounce: debounce,
    
    bindDebounceScrollEvent: function bindDebounceScrollEvent(fn) {
      var scrollEle = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : window;
      var wait = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : 50;
      var useCapture = arguments.length &gt; 3 &amp;&amp; arguments[3] !== undefined ? arguments[3] : false;
      var debounceFn = debounce(fn, wait);
      DomEvent.on(scrollEle, 'scroll', '', debounceFn, useCapture);
    },
    checkIntersect: checkIntersect,
    
    clickRange: function clickRange(evt) {
      var selection = window.getSelection();
      var range = selection.rangeCount &amp;&amp; selection.getRangeAt(0);
      if (!range || range.collapsed || !range.intersectsNode(evt.target)) {
        return false;
      }
      var rangeClientRects = range.getClientRects();
      var targetLineHeight = parseFloat(getComputedStyle(evt.target).lineHeight, 10);
      var targetRect = evt.target.getBoundingClientRect();
      for (var i in rangeClientRects) {
        if (rangeClientRects.hasOwnProperty(i)) {
          var rect = rangeClientRects[i];
          var extraHeight = targetLineHeight ? (targetLineHeight - rect.height) / 2 : 0;
          if (rect.width &amp;&amp; checkIntersect(rect, targetRect) &amp;&amp; evt.clientX &gt;= rect.left &amp;&amp; evt.clientX &lt;= rect.right &amp;&amp; evt.clientY &gt;= rect.top - extraHeight &amp;&amp; evt.clientY &lt;= rect.bottom + extraHeight) {
            return true;
          }
        }
      }
    },
    once: function once(fn) {
      return function () {
        if (fn) {
          for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
            args[_key2] = arguments[_key2];
          }
          var ret = fn.apply(this, args);
          fn = null;
          return ret;
        }
      };
    },
    getRealHeightOfIOSNativePanel: function getRealHeightOfIOSNativePanel(oriHeight, callback) {
      if (mmversion.isIOS) {
        JSAPI.invoke('handleDeviceInfo', {
          action: 'getUIParams'
        }, function (res) {
          var realHeight = oriHeight;
          if (res.isShowBottomBar) {
            realHeight -= res.bottomBarHeight;
          }
          realHeight = Math.max(realHeight, 0);
          typeof callback === 'function' &amp;&amp; callback(realHeight);
        });
      } else {
        typeof callback === 'function' &amp;&amp; callback(oriHeight);
      }
    }
  };
  var getOriginExpVal = function getOriginExpVal(key) {
    var _a, _b, _c;
    return ((_c = (_b = (_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.user_info) === null || _b === void 0 ? void 0 : _b.frontend_exp) === null || _c === void 0 ? void 0 : _c.list) &amp;&amp; window.cgiDataNew.user_info.frontend_exp.list.reduce(function (res, item) {
      if (item.key === key) res = (item === null || item === void 0 ? void 0 : item.value) || '';
      return res;
    }, '');
  };

  mmversion.isIOS &amp;&amp; mmversion.compareHexVersion('18003C31') || mmversion.isAndroid &amp;&amp; mmversion.compareHexVersion('28003E11');
  mmversion.isIOS &amp;&amp; mmversion.compareHexVersion('18003622') || mmversion.isAndroid &amp;&amp; mmversion.compareHexVersion('2800353C') || Device.os.unifiedPC &amp;&amp; mmversion.cpVersion('4.0.6', 1, true, 'unifiedpc') &amp;&amp; getOriginExpVal('unified_share_card_style_pc') !== '0'
;

  var e = {
      d: function d(t, r) {
        for (var i in r) e.o(r, i) &amp;&amp; !e.o(t, i) &amp;&amp; Object.defineProperty(t, i, {
          enumerable: !0,
          get: r[i]
        });
      },
      o: function o(e, t) {
        return Object.prototype.hasOwnProperty.call(e, t);
      }
    },
    t = {};
  e.d(t, {
    A: function A() {
      return s;
    },
    Q: function Q() {
      return a;
    }
  });
  var r = function r(e, t) {
      var r = {};
      for (var i in e) Object.prototype.hasOwnProperty.call(e, i) &amp;&amp; t.indexOf(i) &lt; 0 &amp;&amp; (r[i] = e[i]);
      if (null != e &amp;&amp; "function" == typeof Object.getOwnPropertySymbols) {
        var n = 0;
        for (i = Object.getOwnPropertySymbols(e); n &lt; i.length; n++) t.indexOf(i[n]) &lt; 0 &amp;&amp; Object.prototype.propertyIsEnumerable.call(e, i[n]) &amp;&amp; (r[i[n]] = e[i[n]]);
      }
      return r;
    },
    i = function i(e, t, r) {
      if (r || 2 === arguments.length) for (var i, n = 0, o = t.length; n &lt; o; n++) !i &amp;&amp; n in t || (i || (i = Array.prototype.slice.call(t, 0, n)), i[n] = t[n]);
      return e.concat(i || Array.prototype.slice.call(t));
    },
    n = function n(e) {
      if ("object" == _typeof(e) &amp;&amp; e) return e;
      if ("string" == typeof e) try {
        return JSON.parse(e);
      } catch (e) {
        return;
      }
    },
    o = function o(e) {
      return 173 === e ? 95 : 166 === e ? 147 : [205, 207, 206].includes(e) ? 135 : 78;
    };
  function a(e) {
    var t,
      a,
      s = e.thirdExtParam,
      d = void 0 === s ? "" : s,
      m = e.kvItems,
      p = void 0 === m ? [] : m,
      l = e.sessionKvItems,
      c = void 0 === l ? [] : l,
      u = e.scene,
      x = void 0 === u ? -1 : u,
      y = (e.query, e.parentType),
      h = r(e, ["thirdExtParam", "kvItems", "sessionKvItems", "scene", "query", "parentType"]),
      g = {
        crossExtReqParams: [],
        sessionExtReqParams: [],
        originThirdExtParam: ""
      };
    try {
      if (console.warn("mpThirdExtParamToSearchExtParam init extReqParams:", g), !d) throw new Error("mpThirdExtParamToSearchExtParam thirdExtParam 不存在");
      var _ = JSON.parse(decodeURIComponent(d));
      if (_) {
        if (g.originThirdExtParam = JSON.stringify({
          s1sKeywordsData: null == _ ? void 0 : _.s1sKeywordsData,
          mp_bizuin_msgid_msgidx: null == _ ? void 0 : _.mp_bizuin_msgid_msgidx,
          mp_finger_search_query_pos: null == _ ? void 0 : _.mp_finger_search_query_pos
        }), null == _ ? void 0 : _.s1sKeywordsData) {
          var v = (_ || {}).s1sKeywordsData,
            P = void 0 === v ? {} : v,
            f = P.enterId,
            E = void 0 === f ? 0 : f,
            S = P.s1sContextInfo,
            q = void 0 === S ? "{}" : S,
            T = P.s1sStatInfo,
            I = void 0 === T ? "{}" : T,
            R = P.sessionId,
            O = void 0 === R ? "" : R,
            b = P.postype,
            C = n(decodeURIComponent(q)) || {},
            k = n(decodeURIComponent(I)) || {},
            w = k.bizuin,
            j = void 0 === w ? 0 : w,
            z = k.msgid,
            J = void 0 === z ? 0 : z,
            N = k.msgidx,
            V = void 0 === N ? 0 : N,
            A = C.mixerCommonContext,
            D = void 0 === A ? "" : A,
            U = (C.isNeedUpdateGPTInfo, C.S1SPageType);
          if ([2, 5].includes(void 0 === U ? 1 : U)) return {
            thirdExtParam: d
          };
          g.crossExtReqParams.push({
            key: "parentSearchID",
            textValue: [y || o(x), E || k.enterId, "", "".concat(j, "_").concat(J, "_").concat(V), encodeURIComponent(JSON.stringify({
              enterId: E || k.enterId,
              sessionId: O,
              s1sStatInfo: k,
              postype: b,
              mpBizuinMsgidMsgidx: (null == _ ? void 0 : _.mp_bizuin_msgid_msgidx) || "".concat(j, "_").concat(J, "_").concat(V),
              mpFingerSearchQueryPos: null == _ ? void 0 : _.mp_finger_search_query_pos,
              docid: null == h ? void 0 : h.docid
            }))].join(":").replace(/,/g, ";")
          }), D &amp;&amp; g.crossExtReqParams.push({
            key: "mixerCommonContext",
            textValue: D
          });
        } else g.crossExtReqParams.push({
          key: "parentSearchID",
          textValue: [y || o(x), 0, "", "", encodeURIComponent(JSON.stringify({
            mpBizuinMsgidMsgidx: null == _ ? void 0 : _.mp_bizuin_msgid_msgidx,
            mpFingerSearchQueryPos: null == _ ? void 0 : _.mp_finger_search_query_pos,
            docid: null == h ? void 0 : h.docid
          }))].join(":").replace(/,/g, ";")
        });
        (null == _ ? void 0 : _.mpSelectedContent) &amp;&amp; g.sessionExtReqParams.push({
          key: "mpSelectedContent",
          textValue: _.mpSelectedContent
        }), (null == _ ? void 0 : _.mpSelectActionType) &amp;&amp; g.sessionExtReqParams.push({
          key: "mpSelectActionType",
          textValue: String(_.mpSelectActionType)
        }), (null == _ ? void 0 : _.mp_bizuin_msgid_msgidx) &amp;&amp; g.sessionExtReqParams.push({
          key: "mpBizuinMsgidMsgidx",
          textValue: _.mp_bizuin_msgid_msgidx
        }), (null == _ ? void 0 : _.mp_finger_search_query_context) &amp;&amp; g.sessionExtReqParams.push({
          key: "mpFingerSearchQueryContext",
          textValue: _.mp_finger_search_query_context
        }), (null == _ ? void 0 : _.mp_finger_search_query_pos) &amp;&amp; g.sessionExtReqParams.push({
          key: "mpFingerSearchQueryPos",
          textValue: String(_.mp_finger_search_query_pos)
        }), !(null == _ ? void 0 : _.aiH5Link) &amp;&amp; !(null == _ ? void 0 : _.aiH5Title) || [206].includes(x) || g.sessionExtReqParams.push({
          key: "aiSearchUploadInfo",
          textValue: JSON.stringify({
            uploadFiles: [{
              fileType: 4,
              fileContentDetail: {
                mpContentDetail: {
                  title: null == _ ? void 0 : _.aiH5Title
                }
              },
              url: String(null == _ ? void 0 : _.aiH5Link)
            }],
            contentType: 4,
            allowedContentType: 4
          })
        });
      }
      return (null == p ? void 0 : p.length) &amp;&amp; (t = g.crossExtReqParams).push.apply(t, p), (null == c ? void 0 : c.length) &amp;&amp; (a = g.sessionExtReqParams).push.apply(a, c), h &amp;&amp; Object.keys(h).length &amp;&amp; (g.otherJsApiParams = h), console.warn("mpThirdExtParamToSearchExtParam extReqParams:", g), {
        thirdExtParam: encodeURIComponent(JSON.stringify(g)),
        extReqParams: JSON.stringify(i(i([], g.crossExtReqParams, !0), g.sessionExtReqParams, !0))
      };
    } catch (e) {
      return console.error("mpThirdExtParamToSearchExtParam err:", e), {
        thirdExtParam: d
      };
    }
  }
  var s = {
    mpThirdExtParamToSearchExtParam: a
  };
  t.A;
    t.Q;

  utils.getInnerHeight();
  utils.getInnerWidth();
  (function () {
      var style = document.createElement('style');
      style.innerHTML = '*:not(input):not(textarea):not([contenteditable="true"]) { -webkit-touch-callout: none !important; -webkit-user-select: none !important; -khtml-user-select: none !important; -moz-user-select: none !important; -ms-user-select: none !important; user-select: none !important; }';
      return {
        enableSelect: function enableSelect() {
          document.head.contains(style) &amp;&amp; document.head.removeChild(style);
        },
        disableSelect: function disableSelect() {
          Log.log('disableSelect');
          document.head.appendChild(style);
        }
      };
    })();
  
  var setPubTimeNew = function setPubTimeNew(svrTime, oriCreateTime) {
    var withoutZero = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    var oriTimestamp = oriCreateTime * 1;
    var dateObj = new Date(oriTimestamp * 1000);
    var now = new Date(svrTime * 1000);
    var padStart = function padStart(v) {
      return "0".concat(v).slice(-2);
    };
    var year = dateObj.getFullYear();
    var month = withoutZero ? dateObj.getMonth() + 1 : padStart(dateObj.getMonth() + 1);
    var date = withoutZero ? dateObj.getDate() : padStart(dateObj.getDate());
    var hour = padStart(dateObj.getHours());
    var minute = padStart(dateObj.getMinutes());
    var diffMs = now - dateObj;
    var diffMinutes = Math.floor(diffMs / (1000 * 60));
    var today = new Date(now);
    today.setHours(0, 0, 0, 0);
    var yesterday = new Date(today);
    yesterday.setDate(yesterday.getDate() - 1);
    var yearStart = new Date(now.getFullYear(), 0, 1);
    var showDate = '';
    if (dateObj &gt;= today) {
      if (diffMinutes &lt; 60) {
        if (diffMinutes === 0) {
          showDate = '刚刚';
        } else {
          showDate = "".concat(diffMinutes, "\u5206\u949F\u524D");
        }
      } else {
        showDate = "\u4ECA\u5929".concat(hour, ":").concat(minute);
      }
    } else if (dateObj &gt;= yesterday) {
      showDate = "\u6628\u5929".concat(hour, ":").concat(minute);
    } else if (dateObj &gt;= yearStart) {
      showDate = "".concat(parseInt(month, 10), "\u6708").concat(parseInt(date, 10), "\u65E5").concat(hour, ":").concat(minute);
    } else {
      showDate = "".concat(year, "\u5E74").concat(parseInt(month, 10), "\u6708").concat(parseInt(date, 10), "\u65E5").concat(hour, ":").concat(minute);
    }
    return showDate;
  };

  
  var __setPubTime = function __setPubTime(svrTime, oriCreateTime, createTime, dom, itemShowType) {
    var oriTimestamp = oriCreateTime * 1;
    var dateObj = new Date(oriTimestamp * 1000);
    var padStart = function padStart(v) {
      return "0".concat(v).slice(-2);
    };
    var year = dateObj.getFullYear();
    var month = dateObj.getMonth() + 1;
    var date = dateObj.getDate();
    var hour = padStart(dateObj.getHours());
    var minute = padStart(dateObj.getMinutes());
    var timeString = "".concat(hour, ":").concat(minute);
    var dateString = "".concat(year, "年").concat(month, "月").concat(date, "日");
    var showDate = "".concat(dateString, " ").concat(timeString);

    if (itemShowType == '10' || itemShowType == '8') {
      showDate = setPubTimeNew(svrTime, oriCreateTime, true);
    }
    if (dom) {
      dom.innerText = showDate;
    }
  };
  if (!window.__second_open__) {
    var svrDate = '1781521305';
    var oriCreateTime = '1781248239';
    var createTime = '2026-06-12 15:10';
    var itemShowType = window.a_value_which_never_exists || '0';
    __setPubTime(svrDate, oriCreateTime, createTime, document.getElementById('publish_time'), itemShowType);
    window.__setPubTime = __setPubTime;
  }

  return __setPubTime;

})();
  &lt;/script&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   if (!window.console) window.console = { log: function() {} };
if (typeof getComputedStyle == 'undefined') {
  if (document.body.currentStyle) {
    window.getComputedStyle = function(el) {
      return el.currentStyle;
    }
  } else {
    window.getComputedStyle = {};
  }
}
(function(){
  window.__zoom = 1;

  var ua = navigator.userAgent.toLowerCase();
  var re = new RegExp("msie ([0-9]+[\.0-9]*)");
  var version;
  if (re.exec(ua) != null) {
    version = parseInt(RegExp.$1);
  }
  var isIE = false;
  if (typeof version != 'undefined' &amp;&amp; version &gt;= 6 &amp;&amp; version &lt;= 9) {
    isIE = true;
  }
  var isAccessibilityKey = 'isMpUserAccessibility';
  var isAccessMode = window.localStorage.getItem(isAccessibilityKey);
  var isCarton = isIE || '0' === '1' || '' === '1' || isAccessMode === '1';
  var bodyWidth = '' * 1;
  if (bodyWidth) {
    var styles = getComputedStyle(document.getElementById('page-content'));
    bodyWidth - parseFloat(styles.paddingLeft) - parseFloat(styles.paddingRight);
  }
  var getMaxWith = function () {
    var container = document.getElementById('img-content');
    var max_width = container.offsetWidth;
    !max_width &amp;&amp; bodyWidth &amp;&amp; (max_width = bodyWidth);
    var container_padding = 0;
    var container_style = getComputedStyle(container);
    container_padding = parseFloat(container_style.paddingLeft) + parseFloat(container_style.paddingRight);
    max_width -= container_padding;
    if (!max_width) {
      max_width = window.innerWidth - 30;     
    }
    return max_width;
  };
  var getParentWidth = function (dom) {
    var parent_width = 0;
    var parent = dom.parentNode;
    var outerWidth = 0;
    while (true) {
      if (!parent || parent.nodeType != 1) break;
      var parent_style = getComputedStyle(parent);
      if (!parent_style) break;
      parent_width = parent.clientWidth - parseFloat(parent_style.paddingLeft) - parseFloat(parent_style.paddingRight) - outerWidth;
      if (parent_width &gt; 0) break;
      outerWidth += parseFloat(parent_style.paddingLeft) + parseFloat(parent_style.paddingRight) + parseFloat(parent_style.marginLeft) + parseFloat(parent_style.marginRight) + parseFloat(parent_style.borderLeftWidth) + parseFloat(parent_style.borderRightWidth);
      parent = parent.parentNode;
    }
    return parent_width;
  }
  var getOuterW = function (dom) {
    var style = getComputedStyle(dom),
      w = 0;
    if (!!style) {
      w = parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);
    }
    return w;
  };
  var getOuterH = function (dom) {
    var style = getComputedStyle(dom),
      h = 0;
    if (!!style) {
      h = parseFloat(style.paddingTop) + parseFloat(style.paddingBottom);
    }
    return h;
  };
  var insertAfter = function (dom, afterDom) {
    var _p = afterDom.parentNode;
    if (!_p) {
      return;
    }
    if (_p.lastChild === afterDom) {
      _p.appendChild(dom);
    } else {
      _p.insertBefore(dom, afterDom.nextSibling);
    }
  };
  var getQuery = function (name, url) {
   
    var u = arguments[1] || window.location.search,
      reg = new RegExp("(^|&amp;)" + name + "=([^&amp;]*)(&amp;|$)"),
      r = u.substr(u.indexOf("\?") + 1).match(reg);
    return r != null ? r[2] : "";
  };

  
  function setImgSize(item, widthNum, widthUnit, ratio, breakParentWidth) {
    setTimeout(function () {
      var img_padding_border = getOuterW(item) || 0;
      var img_padding_border_top_bottom = getOuterH(item) || 0;

     
      if (widthNum &gt; getParentWidth(item) &amp;&amp; !breakParentWidth) {
        widthNum = getParentWidth(item);
      }

      var height = (widthNum - img_padding_border) * ratio + img_padding_border_top_bottom;

      if (isCarton) {
        var url = item.getAttribute('data-src');
        item.src = url;

       
        item.style.height = 'auto';
      } else {
       
       
       
       
        widthNum !== 'auto' &amp;&amp; (item.style.cssText += ";width: " + widthNum + widthUnit + " !important;");
        widthNum !== 'auto' &amp;&amp; (item.style.cssText += ";height: " + height + widthUnit + " !important;");
      }
    }, 10);
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 

 
 
 
 
 
 
 
 
 

 
 
 
 
 
 

 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 

 
 
 
 
 
 

 

 
 
 
 
 
 
 
 
 
 
 
 
  window.__videoDefaultRatio = 16 / 9;//默认值是16/9
  window.__getVideoWh = function (dom) {
    var max_width = getMaxWith(),
      width = max_width,
      ratio_ = dom.getAttribute('data-ratio') * 1,//mark16/9
      arr = [4 / 3, 16 / 9],
      ret = arr[0],
      abs = Math.abs(ret - ratio_);
    if (!ratio_) {
      ratio_ = 4 / 3;
    } else {
      for (var j = 1, jl = arr.length; j &lt; jl; j++) {
        var _abs = Math.abs(arr[j] - ratio_);
        if (_abs &lt; abs) {
          abs = _abs;
          ret = arr[j];
        }
      }
      ratio_ = ret;
    }

    var parent_width = getParentWidth(dom) || max_width,
      width = width &gt; parent_width ? parent_width : width,
      outerW = getOuterW(dom) || 0,
      outerH = getOuterH(dom) || 0,
      videoW = width - outerW,
      videoH = videoW / ratio_,
      speedDotH = 12,
      height = videoH + outerH + speedDotH;

    return { w: Math.ceil(width), h: Math.ceil(height), vh: videoH, vw: videoW, ratio: ratio_, sdh: speedDotH };
  };

 
  (function () {
    var iframe = document.getElementsByTagName('iframe');
    for (var i = 0, il = iframe.length; i &lt; il; i++) {
      if (window.__second_open__ &amp;&amp; iframe[i].getAttribute('__sec_open_place_holder__')) {
        continue;
      }
      var a = iframe[i];
      var src_ = a.getAttribute('src') || a.getAttribute('data-src') || "";

      
      var vid = getQuery("vid", src_) || a.getAttribute('data-mpvid');
      if (!vid) {
        continue;
      }
      vid = vid.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "");//清除前后空格
      a.removeAttribute('src');
      a.style.display = "none";
      var obj = window.__getVideoWh(a),
        videoPlaceHolderSpan = document.createElement('span');

      videoPlaceHolderSpan.className = "js_img_placeholder wx_widget_placeholder";
      videoPlaceHolderSpan.setAttribute("data-vid", vid);
      videoPlaceHolderSpan.innerHTML = '&lt;span class="weui-primary-loading"&gt;&lt;span class="weui-primary-loading__dot"&gt;&lt;/span&gt;&lt;/span&gt;';
      videoPlaceHolderSpan.style.cssText = "width: " + obj.w + "px !important;";

      insertAfter(videoPlaceHolderSpan, a);

      

      var mid = "" || "" || "2247512771";
      var biz = "" || "Mzg3NzU0NzIxMA==";
      var sessionid = "" || "svr_ce921cc4f6b";
      var idx = "" || "1";
      var hitInfos = [
              ];

      (function setHitStyle(parentNode, copyIframe, index, vid) {
        var ret = (hitInfos || []).find(function (info) { return info.video_id === vid; } );
        if (!ret) return;
        var ori = ret.ori_status;
        var hit_biz_headimg = ret.hit_biz_headimg + '/64';
        var hit_nickname = ret.hit_nickname;
        var hit_username = ret.hit_username;
        var sourceBiz = ret.hit_bizuin;

        var selfUserName = "gh_b2bc148c1cf8";

        if (ori === 2 &amp;&amp; selfUserName !== hit_username) {
          var videoBar = document.createElement('div');
          var videoBarHtml = '&lt;div class="wx-edui-video_source_link js_wx_tap_highlight wx_tap_card" id="' + (hit_username + index) + '" data-hit-username="' + hit_username + '" data-hit-biz="' + sourceBiz + '"&gt;';
          videoBarHtml += '&lt;div class="wx-edui-video_source_word"&gt;以下视频来源于&lt;/div&gt;';
          videoBarHtml += '&lt;div class="wx-edui-video_account_info"&gt;';
          videoBarHtml += '&lt;div class="wx-edui-video_account_avatar" id="' + (hit_biz_headimg + index) + '" data-src="' + hit_biz_headimg + '"&gt;&lt;/div&gt;';
          videoBarHtml += '&lt;div class="wx-edui-video_account_name"&gt;' + hit_nickname + '&lt;/div&gt;';
          videoBarHtml += '&lt;i class="wx-edui-video_account_arrow"&gt;&lt;/i&gt;';
          videoBarHtml += '&lt;/div&gt;';
          videoBarHtml += '&lt;div class="wx-edui-video_source_link__layer_mask"&gt;&lt;/div&gt;';
          videoBarHtml += '&lt;/div&gt;';
          videoBar.innerHTML = videoBarHtml;
          var spanContainer = document.getElementById('js_mp_video_container_' + index);
          if (spanContainer) {
            spanContainer.parentNode.insertBefore(videoBar, spanContainer);
          } else if (parentNode.contains &amp;&amp; parentNode.contains(copyIframe)) {
            parentNode.insertBefore(videoBar, copyIframe);
          } else {
            parentNode.insertBefore(videoBar, parentNode.firstElementChild);
          }
          var avatorEle = document.getElementById(hit_biz_headimg + index);
          var avatorSrc = avatorEle.dataset.src;
          console.log('avatorSrc' + avatorSrc);
          if (ret.hit_biz_headimg) {
            avatorEle.style.backgroundImage = 'url(' + avatorSrc + ')';
          }
        }
      })(a.parentNode, a, i, vid);

      a.style.cssText += ";width: " + obj.w + "px !important;";
      a.setAttribute("width", obj.w);
      if (window.__zoom != 1) {
        a.style.display = "block";
        videoPlaceHolderSpan.style.display = "none";
        a.setAttribute("_ratio", obj.ratio);
        a.setAttribute("_vid", vid);
      } else {
        videoPlaceHolderSpan.style.cssText += "height: " + (obj.h - obj.sdh) + "px !important;margin-bottom: " + obj.sdh + "px !important;";
        a.style.cssText += "height: " + obj.h + "px !important;";
        a.setAttribute("height", obj.h);
      }
      a.setAttribute("data-vh", obj.vh);
      a.setAttribute("data-vw", obj.vw);
      if (a.getAttribute("data-mpvid")) {
        a.setAttribute("data-src", location.protocol + "//mp.weixin.qq.com/mp/readtemplate?t=pages/video_player_tmpl&amp;auto=0&amp;vid=" + vid);
      } else {
        a.setAttribute("data-src", location.protocol + "//v.qq.com/iframe/player.html?vid=" + vid + "&amp;width=" + obj.vw + "&amp;height=" + obj.vh + "&amp;auto=0");
      }
    }
  })();

  (function () {
    if (window.__zoom != 1) {
      if (!window.__second_open__) {
        document.getElementById('page-content').style.zoom = window.__zoom;
        var a = document.getElementById('activity-name');
        var b = document.getElementById('meta_content');
        if (!!a) {
          a.style.zoom = 1 / window.__zoom;
        }
        if (!!b) {
          b.style.zoom = 1 / window.__zoom;
        }
      }
      var images = document.getElementsByTagName('img');
      for (var i = 0, il = images.length; i &lt; il; i++) {
        if (window.__second_open__ &amp;&amp; images[i].getAttribute('__sec_open_place_holder__')) {
          continue;
        }
        images[i].style.zoom = 1 / window.__zoom;
      }
      var iframe = document.getElementsByTagName('iframe');
      for (var i = 0, il = iframe.length; i &lt; il; i++) {
        if (window.__second_open__ &amp;&amp; iframe[i].getAttribute('__sec_open_place_holder__')) {
          continue;
        }
        var a = iframe[i];
        a.style.zoom = 1 / window.__zoom;
        var src_ = a.getAttribute('data-src') || "";
        if (!/^http(s)*\:\/\/v\.qq\.com\/iframe\/(preview|player)\.html\?/.test(src_)
          &amp;&amp; !/^http(s)*\:\/\/mp\.weixin\.qq\.com\/mp\/readtemplate\?t=pages\/video_player_tmpl/.test(src_)
        ) {
          continue;
        }
        var ratio = a.getAttribute("_ratio");
        var vid = a.getAttribute("_vid");
        a.removeAttribute("_ratio");
        a.removeAttribute("_vid");
        var vw = a.offsetWidth - (getOuterW(a) || 0);
        var vh = vw / ratio;
        var h = vh + (getOuterH(a) || 0)
        a.style.cssText += "height: " + h + "px !important;"
        a.setAttribute("height", h);
        if (/^http(s)*\:\/\/v\.qq\.com\/iframe\/(preview|player)\.html\?/.test(src_)) {
          a.setAttribute("data-src", location.protocol + "//v.qq.com/iframe/player.html?vid=" + vid + "&amp;width=" + vw + "&amp;height=" + vh + "&amp;auto=0");
        }
        a.style.display = "none";
        var parent = a.parentNode;
        if (!parent) {
          continue;
        }
        for (var j = 0, jl = parent.children.length; j &lt; jl; j++) {
          var child = parent.children[j];
          if (child.className.indexOf("js_img_placeholder") &gt;= 0 &amp;&amp; child.getAttribute("data-vid") == vid) {
            child.style.cssText += "height: " + h + "px !important;";
            child.style.display = "";
          }
        }
      }
    }
  })();
})();
var anchor_tree_msg = '';
  &lt;/script&gt;
  &lt;script h5only="" nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   var __INLINE_SCRIPT__ = (function (exports, o$7) {
  'use strict';

  function _interopDefaultLegacy (e) { return e &amp;&amp; typeof e === 'object' &amp;&amp; 'default' in e ? e : { 'default': e }; }

  var o__default = _interopDefaultLegacy(o$7);
  var setImmersiveMode = function setImmersiveMode(itemShowType) {
    var envStr = window.__wxWebEnv &amp;&amp; typeof window.__wxWebEnv.getEnv === 'function' &amp;&amp; window.__wxWebEnv.getEnv();
    if (!envStr) return;
    var envObj = {};
    if (!envStr) return;
    try {
      envObj = JSON.parse(envStr);
    } catch (err) {
      console.info(err);
    }
    var immersiveListMode = envObj.immersiveListMode || 0;
    window.__immersiveListMode = Number(immersiveListMode) === 1 ? 1 : 0;
    window.__test_immersive_list = 0;
    if (window.__test_immersive_list) {
      window.__immersiveListMode = 1;
    }
    var wxExpandArticleEle = document.getElementById('wx_expand_article');
    document.getElementById('js_article');
    var bottomLoadingTip = document.getElementById('js_network_msg_wrp');
    if (!itemShowType &amp;&amp; itemShowType !== 0) {
      itemShowType = window.item_show_type;
    }
    itemShowType = Number(itemShowType);

    if (window.__immersiveListMode) {
      try {
        var immersiveSafeBottom = localStorage.getItem('__immersivefeed_safe_bottom__');
        if (immersiveSafeBottom) {
          document.documentElement.style.setProperty('--immersive-safe-bottom', immersiveSafeBottom);
        }
      } catch (error) {
        console.log(error);
      }
      if (wxExpandArticleEle) {
        wxExpandArticleEle.style.display = 'block';
      }
      if (bottomLoadingTip) {
        bottomLoadingTip.style.display = 'none';
      }
      if (itemShowType === 10 || itemShowType === 7) {
        document.body.classList.add('ellapse_short_content');
      } else {
        document.body.classList.add('ellapse_stream_article');
      }
      if (itemShowType === 0) {
        document.body.classList.add('article_extensive_background');
      } else {
        document.body.classList.add('media_content_extensive_background');
      }
      var interactionPlaceholderEle = document.getElementById('js_interaction_placeholder');
      if (interactionPlaceholderEle) {
        interactionPlaceholderEle.style.display = 'block';
      }
    }
  };

  function _typeof$3(obj) {
    "@babel/helpers - typeof";

    return _typeof$3 = "function" == typeof Symbol &amp;&amp; "symbol" == typeof Symbol.iterator ? function (obj) {
      return typeof obj;
    } : function (obj) {
      return obj &amp;&amp; "function" == typeof Symbol &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj;
    }, _typeof$3(obj);
  }

  function asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, key, arg) {
    try {
      var info = gen[key](arg);
      var value = info.value;
    } catch (error) {
      reject(error);
      return;
    }
    if (info.done) {
      resolve(value);
    } else {
      Promise.resolve(value).then(_next, _throw);
    }
  }
  function _asyncToGenerator$1(fn) {
    return function () {
      var self = this,
        args = arguments;
      return new Promise(function (resolve, reject) {
        var gen = fn.apply(self, args);
        function _next(value) {
          asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, "next", value);
        }
        function _throw(err) {
          asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, "throw", err);
        }
        _next(undefined);
      });
    };
  }

  function _regeneratorRuntime$6() {  _regeneratorRuntime$6 = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof$3(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof$3(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  
  var doc$1 = {};
  var isAcrossOrigin$1 = false;
  var notFoundedMPPageAction = [];
  var __moon_report$1 = window.__moon_report || function () {};
  var MOON_JSAPI_KEY_OFFSET = 8;
  try {
    doc$1 = top.window.document;
  } catch (e) {
    isAcrossOrigin$1 = true;
  }
  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }
  function ready(onBridgeReady) {
    var bridgeReady = function bridgeReady() {
      try {
        if (onBridgeReady) {
          window.onBridgeReadyTime = window.onBridgeReadyTime || Date.now();
          onBridgeReady();
        }
      } catch (e) {
        __moon_report$1([{
          offset: MOON_JSAPI_KEY_OFFSET,
          log: 'ready',
          e: e
        }]);
        throw e;
      }
      window.jsapiReadyTime = Date.now();
    };
    if (!isAcrossOrigin$1 &amp;&amp; (typeof top.window.WeixinJSBridge === 'undefined' || !top.window.WeixinJSBridge.invoke)) {
      if (doc$1.addEventListener) {
        doc$1.addEventListener('WeixinJSBridgeReady', bridgeReady, false);
      } else if (doc$1.attachEvent) {
        doc$1.attachEvent('WeixinJSBridgeReady', bridgeReady);
        doc$1.attachEvent('onWeixinJSBridgeReady', bridgeReady);
      }
    } else {
      bridgeReady();
    }
  }
  var invokeNotWaitA8key = ['notifyPageInfo', 'updatePageAuth'
  ];
  var checkNotFoundedInvoke = function checkNotFoundedInvoke(methodName, args) {
    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; notFoundedMPPageAction.includes(args === null || args === void 0 ? void 0 : args.action)) {
      return true;
    }
    return false;
  };
  function invoke$1(_x, _x2, _x3) {
    return _invoke.apply(this, arguments);
  }
  function _invoke() {
    _invoke = _asyncToGenerator$1( _regeneratorRuntime$6().mark(function _callee(methodName, args, callback) {
      return _regeneratorRuntime$6().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__ &amp;&amp; !invokeNotWaitA8key.includes(methodName))) {
              _context.next = 3;
              break;
            }
            _context.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin$1) return false;
              if (_typeof$3(top.window.WeixinJSBridge) !== 'object') {
                alert('请在微信中打开此链接');
                return false;
              }
              if (checkNotFoundedInvoke(methodName, args)) {
                setTimeout(function () {
                  if (callback) {
                    callback.apply(window, [{
                      err_msg: "".concat(methodName, ":fail"),
                      err_desc: 'action isn\'t supported'
                    }]);
                  }
                }, 0);
              } else {
                top.window.WeixinJSBridge.invoke(methodName, args, function () {
                  try {
                    for (var _len2 = arguments.length, rets = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
                      rets[_key2] = arguments[_key2];
                    }
                    var ret = rets[0];
                    var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
                    if (['handleMPPageAction', 'handleVideoAction', 'handleHaokanAction'].indexOf(methodName) !== -1) {
                      var action = (args === null || args === void 0 ? void 0 : args.action) || '';
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName, ", action-&gt;").concat(action).concat(errMsg));
                    } else {
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName).concat(errMsg));
                    }
                    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; ((ret === null || ret === void 0 ? void 0 : ret.err_desc) === 'action isn\'t supported' || (ret === null || ret === void 0 ? void 0 : ret.err_msg) === 'handleMPPageAction:fail action is not supported')) {
                      notFoundedMPPageAction.push(args === null || args === void 0 ? void 0 : args.action);
                    }
                    if (callback) {
                      callback.apply(window, rets);
                    }
                  } catch (e) {
                    __moon_report$1([{
                      offset: MOON_JSAPI_KEY_OFFSET,
                      log: "invoke;methodName:".concat(methodName),
                      e: e
                    }]);
                    throw e;
                  }
                });
              }
            });
          case 4:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return _invoke.apply(this, arguments);
  }
  function call(_x4) {
    return _call.apply(this, arguments);
  }
  function _call() {
    _call = _asyncToGenerator$1( _regeneratorRuntime$6().mark(function _callee2(methodName) {
      return _regeneratorRuntime$6().wrap(function _callee2$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__)) {
              _context2.next = 3;
              break;
            }
            _context2.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin$1) return false;
              if (_typeof$3(top.window.WeixinJSBridge) !== 'object') {
                return false;
              }
              try {
                top.window.WeixinJSBridge.call(methodName);
              } catch (e) {
                __moon_report$1([{
                  offset: MOON_JSAPI_KEY_OFFSET,
                  log: "call;methodName:".concat(methodName),
                  e: e
                }]);
                throw e;
              }
            });
          case 4:
          case "end":
            return _context2.stop();
        }
      }, _callee2);
    }));
    return _call.apply(this, arguments);
  }
  function on$2(eventName, callback) {
    ready(function () {
      if (isAcrossOrigin$1) return false;
      if (_typeof$3(top.window.WeixinJSBridge) !== 'object' || !top.window.WeixinJSBridge.on) {
        return false;
      }
      if (!window.JSAPIEventCallbackMap[eventName]) {
        window.JSAPIEventCallbackMap[eventName] = [];
      }
      window.JSAPIEventCallbackMap[eventName].push(callback);
      if (window.JSAPIEventCallbackMap[eventName].length &gt; 1) {
        return false;
      }
      top.window.WeixinJSBridge.on(eventName, function () {
        try {
          for (var _len = arguments.length, rets = new Array(_len), _key = 0; _key &lt; _len; _key++) {
            rets[_key] = arguments[_key];
          }
          var ret = rets[0];
          var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
          console.info('[system]', "[jsapi] event-&gt;".concat(eventName).concat(errMsg));
          if (window.JSAPIEventCallbackMap[eventName] &amp;&amp; window.JSAPIEventCallbackMap[eventName].length) {
            var result;
            for (var i = 0; i &lt; window.JSAPIEventCallbackMap[eventName].length; i++) {
              result = window.JSAPIEventCallbackMap[eventName][i].apply(window, rets);
            }
            return result;
          }
        } catch (e) {
          __moon_report$1([{
            offset: MOON_JSAPI_KEY_OFFSET,
            log: "on;eventName:".concat(eventName),
            e: e
          }]);
          throw e;
        }
      });
    });
  }
  function remove$1(eventName, callback) {
    ready(function () {
      if (!window.JSAPIEventCallbackMap[eventName]) {
        return false;
      }
      var result = false;
      for (var i = window.JSAPIEventCallbackMap[eventName].length - 1; i &gt;= 0; i--) {
        if (window.JSAPIEventCallbackMap[eventName][i] === callback) {
          window.JSAPIEventCallbackMap[eventName].splice(i, 1);
          result = true;
        }
      }
      return result;
    });
  }
  var R$4 = {
    ready: ready,
    invoke: invoke$1,
    call: call,
    on: on$2,
    remove: remove$1
  };

  function initBodyStyle() {
    window.scrollTo({
      top: 0,
      behavior: 'smooth'
    });
    setTimeout(function () {
      document.body.scrollTop = document.documentElement.scrollTop = 0;
      document.body.style.overflow = 'hidden';
    }, 100);
  }
  var setRowImmersiveMode = function setRowImmersiveMode(itemShowType) {
    var envStr = window.__wxWebEnv &amp;&amp; typeof window.__wxWebEnv.getEnv === 'function' &amp;&amp; window.__wxWebEnv.getEnv();
    if (!envStr) return;
    var envObj = {};
    try {
      envObj = JSON.parse(envStr);
    } catch (err) {
      console.info(err);
    }
    var immersiveListMode = envObj.immersiveListMode || 0;
    window.__immersiveListMode = Number(immersiveListMode) === 1 ? 1 : 0;
    window.__rowImmersiveStream = Number(immersiveListMode) === 2 ? 1 : 0;
    console.log("iiiiiiimmersiveListMode", immersiveListMode, window.__immersiveListMode, window.__rowImmersiveStream);
    window.__test_row_immersive_list = 0;
    if (window.__test_row_immersive_list) {
      window.__rowImmersiveStream = 1;
    }
    if (window.__rowImmersiveStream) {
      initBodyStyle();
      var rowImmersiveStreamWrap = document.getElementById('js_row_immersive_stream_wrap');
      if (rowImmersiveStreamWrap) {
        rowImmersiveStreamWrap.style.display = 'block';
      }
      var bottomBar = document.getElementById('js_article_bottom_bar');
      if (bottomBar) {
        bottomBar.classList.add('row_immersive_bottom_bar');
      }
      var immersiveStreamMask = document.getElementById('js_row_immersive_stream_mask');
      var enterBigWebview = function enterBigWebview() {
        immersiveStreamMask.style.display = 'none';
        document.body.style.overflow = 'auto';
        if (bottomBar) {
          bottomBar.classList.add('row_immersive_bigview_bottom_bar');
        }
      };
      var exitBigWebview = function exitBigWebview() {
        initBodyStyle();
        immersiveStreamMask.style.display = 'block';
        if (bottomBar) {
          bottomBar.classList.remove('row_immersive_bigview_bottom_bar');
        }
      };
      immersiveStreamMask.addEventListener('click', function (e) {
        e.preventDefault();
        e.stopPropagation();
        R$4.invoke('handleImmersiveStream', {
          action: 'enterFullArticle',
          params: {
            enterTime: Date.now()
          }
        }, function (res) {
          console.log("[immersive] handleImmersiveStream:", res);
          if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.includes('ok')) {
            enterBigWebview();
          }
          if (window.__test_row_immersive_list) {
            setTimeout(function () {
              console.log("xxxxx ok");
              enterBigWebview();
            }, 2000);
          }
        });
      });
      R$4.on('immersiveStreamExposeArticle', function (res) {
        console.log("[immersive] immersiveStreamExposeArticle", res);
      });
      R$4.on('immersiveStreamExitFullArticle', function (res) {
        console.log("[immersive] immersiveStreamExitFullArticle", res);
        exitBigWebview();
      });
      R$4.on('immersiveStreamEnterFullArticle', function (res) {
        console.log("[immersive] immersiveStreamEnterFullArticle", res);
        enterBigWebview();
      });
      R$4.on('immersiveStreamSlideOutArticle', function (res) {
        console.log("[immersive] immersiveStreamSlideOutArticle", res);
        exitBigWebview();
      });
    }
  };

  

  

  var getIpWoridng = function getIpWoridng(ipConfig) {
    var ipWording = '';
    if (parseInt(ipConfig.countryId, 10) === 156) {
      ipWording = ipConfig.provinceName;
    } else if (ipConfig.countryId) {
      ipWording = ipConfig.countryName;
    }
    return ipWording;
  };
  var __setIpWording = function __setIpWording(ipConfig, userInfo, itemShowType) {
    var ipWrp = document.getElementById('js_ip_wording_wrp');
    var ipWording = document.getElementById('js_ip_wording');
    if (ipConfig) {
      window.ip_wording = {
        countryName: ipConfig.country_name,
        countryId: ipConfig.country_id,
        provinceName: ipConfig.province_name
      };
    }
    if (userInfo &amp;&amp; userInfo.isoversea) {
      window.is_over_sea = parseInt(userInfo.isoversea, 10);
    }
    if (window.ip_wording &amp;&amp; ipWrp &amp;&amp; ipWording &amp;&amp; window.is_over_sea !== 1) {
      var ipWordingDisplay = getIpWoridng(window.ip_wording);
      if (ipWordingDisplay !== '') {
        ipWording.innerHTML = ipWordingDisplay;
        ipWrp.setAttribute('aria-label', ipWordingDisplay);
        ipWrp.style.display = 'inline-block';
      }
    }
    if (+itemShowType === 0) ipWrp &amp;&amp; ipWrp.style.display == 'none' &amp;&amp; ipWrp.parentNode.removeChild(ipWrp);
  };

  
  var __setTitleModify = function __setTitleModify(isTitleModified) {
    var wrp = document.getElementById('js_title_modify_wrp');
    var titleModifyNode = document.getElementById('js_title_modify');
    if (!wrp) return;
    if (isTitleModified || window.is_title_modified) {
      titleModifyNode.innerHTML = '标题已修改';
      wrp.style.display = 'inline-block';
    } else {
      wrp.parentNode.removeChild(wrp);
    }
  };
  function setProfileName() {
    var ua = window.navigator.userAgent;
    if (/wxwork/i.test(ua)) {
      var profileName = document.getElementById('js_name');
      var authorName = document.getElementById('js_author_name');
      var accountNames = document.getElementsByClassName('account_nickname_inner');
      if (profileName) {
        profileName.classList.add('tips_global_primary');
      }
      if (authorName) {
        authorName.classList.add('tips_global_primary');
      }
      if (accountNames &amp;&amp; accountNames.length) {
        accountNames[0].classList.add('tips_global_primary');
      }
    }
  }

  

  

  var __setTitle = function __setTitle(showTitle, itemShowType) {
    var dom = document.getElementById('activity-name');
    if (+itemShowType === 5) dom = document.getElementById('js_video_page_title');else if (+itemShowType === 7) dom = document.getElementById('js_audio_title');else if (+itemShowType === 10) dom = document.getElementById('js_text_title');
    if (!dom) return;
    var title = showTitle;
    if (showTitle.indexOf('——') &gt; -1) {
      var replaceHtml = '&lt;span style="letter-spacing:normal"&gt;——&lt;/span&gt;';
      showTitle = showTitle.replace(/——/g, replaceHtml);
    }
    if (typeof window.__emojiFormat === 'function') {
      var emojiTitle = window.__emojiFormat(showTitle);
      showTitle = emojiTitle;
    }
    if (dom) {
      if (dom.innerHTML) dom.innerHTML = dom.innerHTML.replace(title, showTitle);else dom.innerHTML = showTitle;
    }
  };
  var getOriginExpVal = function getOriginExpVal(key) {
    var _a, _b, _c;
    return ((_c = (_b = (_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.user_info) === null || _b === void 0 ? void 0 : _b.frontend_exp) === null || _c === void 0 ? void 0 : _c.list) &amp;&amp; window.cgiDataNew.user_info.frontend_exp.list.reduce(function (res, item) {
      if (item.key === key) res = (item === null || item === void 0 ? void 0 : item.value) || '';
      return res;
    }, '');
  };

  
  var parseCardWording = function parseCardWording(val) {
    if (!val) return null;
    var idx = val.indexOf('|');
    if (idx === -1) return {
      title: val,
      subtitle: ''
    };
    return {
      title: val.slice(0, idx),
      subtitle: val.slice(idx + 1)
    };
  };
  var __isNewNovelCardStyle = function __isNewNovelCardStyle() {
    return true;
  };
  var __setNovelCard = function __setNovelCard(novelCardInfo, userInfo, uin) {
    var dom = document.getElementById('js_novel_card');
    if (!dom) return;
    try {
      var cardData;
      if (typeof novelCardInfo === 'string') {
        cardData = JSON.parse(novelCardInfo);
      } else {
        cardData = novelCardInfo;
      }
      if (!cardData || cardData.is_wxa_novel === 0 || cardData.is_wxa_novel === 'false' || !userInfo.show_novel_link) {
        dom.style.display = 'none';
        return;
      }
      var _titleDom, _coverDom; if (__isNewNovelCardStyle(uin)) {
        var titleDom = dom.querySelector('#js_novel_title');
        var subtitleDom = dom.querySelector('#js_novel_subtitle');
        var expCopy = parseCardWording(getOriginExpVal('novel_card_wording'));
        if (expCopy &amp;&amp; expCopy.title) {
          var _window$cgiDataNew;
          if (titleDom) titleDom.textContent = expCopy.title;
          if (subtitleDom) subtitleDom.textContent = expCopy.subtitle || (((_window$cgiDataNew = window.cgiDataNew) === null || _window$cgiDataNew === void 0 ? void 0 : _window$cgiDataNew.title) || '').htmlDecode();
        } else if (subtitleDom) {
          var _window$cgiDataNew2;
          subtitleDom.textContent = (((_window$cgiDataNew2 = window.cgiDataNew) === null || _window$cgiDataNew2 === void 0 ? void 0 : _window$cgiDataNew2.title) || '').htmlDecode();
        }
        var coverDom = dom.querySelector('#js_novel_cover img');
        if (coverDom) {
          coverDom.src = cardData.novel_cover;
        }
      }
      dom.style.display = 'flex';
    } catch (error) {
      console.error('设置小说卡片失败:', error);
      dom.style.display = 'none';
    }
  };

  var _Speed = {};
  var _userDefine;
  var _imgurl = 'https://badjs.weixinbridge.com/frontend/reportspeed?';
  function saveSpeeds$1(obj) {
    if (!obj.pid || !obj.speeds) {
      return -1;
    }
    if (!Array.isArray(obj.speeds)) {
      obj.speeds = [obj.speeds];
    }
    if (obj.user_define) {
      _userDefine = obj.user_define;
    }
    var pid_uin_rid = _conbinUPRid(obj);
    for (var i = 0; i &lt; obj.speeds.length; i++) {
      var os = obj.speeds[i];
      os.time = Math.floor(+os.time);
      if (os.sid &gt; 20 &amp;&amp; os.time &gt;= 0) _setSidTime(pid_uin_rid, os.sid, os.time);
    }
  }
  function send$1() {
    _doFunc(function () {
      setTimeout(function () {
        for (var item in _Speed) {
          _get({
            pid_uin_rid: item,
            speeds: _Speed[item],
            user_define: _userDefine
          }, _imgurl);
        }
        _Speed = {};
      }, 100);
    });
  }
  function setFirstViewTime(obj) {
    _doFunc(function () {
      if (!obj.pid || !obj.time) return -1;
      var pid_uin_rid = _conbinUPRid(obj);
      _setSidTime(pid_uin_rid, 9, obj.time);
    });
  }
  function setBasicTime$1(obj) {
    _doFunc(function () {
      var pid_uin_rid = _conbinUPRid(obj);
      if (!_Speed[pid_uin_rid]) _Speed[pid_uin_rid] = [];
      var performance = window.performance || window.msPerformance || window.webkitPerformance || {};
      if (!!performance &amp;&amp; !!performance.timing) {
        var timing = performance.timing || {};
        _setSidTime(pid_uin_rid, 1, timing.domainLookupEnd - timing.domainLookupStart);
        _setSidTime(pid_uin_rid, 2, location.protocol == "https:" &amp;&amp; timing.secureConnectionStart != 0 ? timing.connectEnd - timing.secureConnectionStart : 0);
        _setSidTime(pid_uin_rid, 3, timing.connectEnd - timing.connectStart);
        _setSidTime(pid_uin_rid, 4, timing.responseStart - timing.requestStart);
        _setSidTime(pid_uin_rid, 5, timing.responseEnd - timing.responseStart);
        _setSidTime(pid_uin_rid, 6, timing.domContentLoadedEventStart - timing.domLoading);
        _setSidTime(pid_uin_rid, 7, timing.domComplete == 0 ? 0 : timing.domComplete - timing.domLoading);
        _setSidTime(pid_uin_rid, 8, timing.loadEventEnd == 0 ? 0 : timing.loadEventEnd - timing.loadEventStart);
        (function (_Speed) {
          setTimeout(function () {
            if (timing.loadEventEnd) {
              _setSidTime(pid_uin_rid, 7, timing.domComplete == 0 ? 0 : timing.domComplete - timing.domLoading);
              _setSidTime(pid_uin_rid, 8, timing.loadEventEnd == 0 ? 0 : timing.loadEventEnd - timing.loadEventStart);
            }
          }, 0);
        })();
        if (!_Speed[pid_uin_rid][9])
          _setSidTime(pid_uin_rid, 9, timing.domContentLoadedEventStart - timing.navigationStart);
        _setSidTime(pid_uin_rid, 10, timing.redirectEnd - timing.redirectStart);
        _setSidTime(pid_uin_rid, 11, timing.domainLookupStart - timing.fetchStart);
        _setSidTime(pid_uin_rid, 12, timing.domLoading - timing.responseStart);
      }
    });
  }
  function _setSidTime(pid_uin_rid, sid, time) {
    _Speed[pid_uin_rid] = _Speed[pid_uin_rid] || [];
    _Speed[pid_uin_rid][sid] = _Speed[pid_uin_rid][sid] || [];
    if (time &lt; 0) return;
    if (sid &lt; 21) _Speed[pid_uin_rid][sid][0] = time;else _Speed[pid_uin_rid][sid].push(time);
  }
  function _conbinUPRid(obj) {
    if (!obj || !obj.pid) {
      console &amp;&amp; console.error('Must provide a pid');
      return '';
    }
    return "".concat(obj.pid, "_").concat(obj.uin || 0, "_").concat(obj.rid || 0);
  }
  function _get(obj, url) {
    var apur = obj.pid_uin_rid.split('_');
    var spur = '';
    if (apur.length == 3) {
      spur = "pid=".concat(apur[0], "&amp;uin=").concat(apur[1], "&amp;rid=").concat(apur[2]);
    } else {
      console &amp;&amp; console.error('pid,uin,rid, invalid args');
      return;
    }
    if (obj.user_define) {
      spur += "&amp;user_define=".concat(obj.user_define);
    }
    var url1 = "".concat(url + spur, "&amp;speeds=");
    var url2 = '';
    var urlarr = [];
    for (var i = 1; i &lt; obj.speeds.length; i++) {
      if (obj.speeds[i]) {
        for (var j = 0; j &lt; obj.speeds[i].length; j++) {
          var s = "".concat(i, "_").concat(obj.speeds[i][j]);
          if (url1.length + url2.length + s.length &lt; 1024) {
            url2 = "".concat(url2 + s, ";");
          } else {
            if (url2.length)
              urlarr.push(url1 + url2.substring(0, url2.length - 1));
            url2 = "".concat(s, ";");
          }
        }
        if (i == obj.speeds.length - 1) {
          urlarr.push(url1 + url2.substring(0, url2.length - 1));
        }
      }
    }
    for (var _i = 0; _i &lt; urlarr.length; _i++) {
      new Image().src = urlarr[_i];
    }
  }
  var cblist = [];
  function _doFunc(fnc) {
    if (document.readyState == "complete") {
      fnc();
    } else {
      cblist.push(fnc);
    }
  }
  window.addEventListener('load', onLoad, false);
  function onLoad() {
    for (var i = 0; i &lt; cblist.length; i++) {
      cblist[i]();
    }
    cblist = [];
  }
  var wxgsdk = {
    saveSpeeds: saveSpeeds$1,
    send: send$1,
    setFirstViewTime: setFirstViewTime,
    setBasicTime: setBasicTime$1
  };

  
  
  var reportLogs = [];
  var reportExtraLogs = [];
  var sendUrl = '/mp/jsmonitor?#wechat_redirect';
  var monitor = {};
  monitor._reportOptions = {
    idkey: {}
  };
  function ObjWithoutProperty(source, exclude) {
    if (source === null) return {};
    var target = {};
    var sourceKeys = Object.keys(source);
    for (var i = 0; i &lt; sourceKeys.length; i++) {
      var key = sourceKeys[i];
      if (exclude.indexOf(key) &gt;= 0) continue;
      target[key] = source[key];
    }
    return target;
  }
  function formatDataToString(data) {
    var reportData = [];
    for (var key in data) {
      if (Object.prototype.hasOwnProperty.call(data, key)) {
        reportData.push(key + '=' + encodeURIComponent(data[key]));
      }
    }
    return reportData.join('&amp;');
  }
  monitor.getReportData = function (opt) {
    opt = opt || {};
    var idkey = monitor._reportOptions.idkey || {};
    var key = null;
    var reportData = {};
    var nextKey;
    try {
      for (key in idkey) {
        if (Object.prototype.hasOwnProperty.call(idkey, key) &amp;&amp; idkey[key]) {
          reportLogs.push(key + '_' + idkey[key]);
        }
      }
    } catch (e) {
      return false;
    }
    if (reportLogs.length === 0) {
      return false;
    }
    if (reportExtraLogs.length) {
      reportData.lc = reportExtraLogs.length;
      reportExtraLogs.forEach(function (extraLog, index) {
        reportData["log".concat(index)] = extraLog;
      });
    }
    try {
      var reportOptions = monitor._reportOptions;
      if (reportOptions !== null &amp;&amp; reportOptions !== undefined) {
        for (nextKey in reportOptions) {
          if (Object.prototype.hasOwnProperty.call(reportOptions, nextKey)) {
            reportData[nextKey] = reportOptions[nextKey];
          }
        }
      }
    } catch (e) {
      reportData = {};
    }
    reportData.idkey = reportLogs.join(';');
    reportData.t = Math.random();
    if (opt.remove !== false) {
      reportLogs = [];
      reportExtraLogs = [];
      monitor._reportOptions = {
        idkey: {}
      };
    }
    return reportData;
  };
  monitor.setLogs = function (opt) {
    var id = opt.id;
    var key = opt.key;
    var value = opt.value;
    var extraLog = opt.log;
    var others = ObjWithoutProperty(opt, ['id', 'key', 'value', 'log']);
    var idkey = monitor._reportOptions.idkey || {};
    var param = id + '_' + key;
    if (idkey[param]) {
      idkey[param] += value;
    } else {
      idkey[param] = value;
    }
    monitor._reportOptions.idkey = idkey;
    if (extraLog) {
      reportExtraLogs.push(extraLog);
    }
    try {
      if (others !== null &amp;&amp; others !== undefined) {
        for (var otherKey in others) {
          if (Object.prototype.hasOwnProperty.call(others, otherKey)) {
            monitor._reportOptions[otherKey] = others[otherKey];
          }
        }
      }
    } catch (e) {
      console.log(e);
    }
    return monitor;
  };
  monitor.setAvg = function (id, key, value) {
    var idkey = monitor._reportOptions.idkey || {};
    var param1 = id + '_' + key;
    var param2 = id + '_' + (key - 1);
    if (idkey[param1]) {
      idkey[param1] += value;
    } else {
      idkey[param1] = value;
    }
    if (idkey[param2]) {
      idkey[param2] += 1;
    } else {
      idkey[param2] = 1;
    }
    monitor._reportOptions.idkey = idkey;
    return monitor;
  };
  monitor.setSum = function (id, key) {
    var value = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : 1;
    var idkey = monitor._reportOptions.idkey;
    var param = id + '_' + key;
    if (idkey[param]) {
      idkey[param] += value;
    } else {
      idkey[param] = value;
    }
    monitor._reportOptions.idkey = idkey;
    return monitor;
  };
  monitor.send = function (async, ajax, origin) {
    if (async !== false) {
      async = true;
    }
    var data = monitor.getReportData();
    origin = origin || '';
    if (!data) {
      return;
    }
    if (!!ajax &amp;&amp; ajax instanceof Function) {
      ajax({
        url: origin + sendUrl,
        type: 'POST',
        mayAbort: true,
        data: data,
        async: async,
        timeout: 2000,
        dontReport: true
      });
    } else {
      new Image().src = origin + '/mp/jsmonitor?' + formatDataToString(data) + '#wechat_redirect';
    }
  };
  if (typeof window !== 'undefined' &amp;&amp; window.__monitor) {
    monitor = window.__monitor;
  } else {
    typeof window !== 'undefined' &amp;&amp; (window.__monitor = monitor);
  }
  var monitor$1 = monitor;

  function _toPrimitive(input, hint) {
    if (_typeof$3(input) !== "object" || input === null) return input;
    var prim = input[Symbol.toPrimitive];
    if (prim !== undefined) {
      var res = prim.call(input, hint || "default");
      if (_typeof$3(res) !== "object") return res;
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return (hint === "string" ? String : Number)(input);
  }

  function _toPropertyKey(arg) {
    var key = _toPrimitive(arg, "string");
    return _typeof$3(key) === "symbol" ? key : String(key);
  }

  function _defineProperty$1(obj, key, value) {
    key = _toPropertyKey(key);
    if (key in obj) {
      Object.defineProperty(obj, key, {
        value: value,
        enumerable: true,
        configurable: true,
        writable: true
      });
    } else {
      obj[key] = value;
    }
    return obj;
  }

  
  
  var Device = {};
  function detect(ua) {
    var MQQBrowser = ua.match(/MQQBrowser\/(\d+\.\d+)/i);
    var MQQClient = ua.match(/QQ\/(\d+\.(\d+)\.(\d+)\.(\d+))/i) || ua.match(/V1_AND_SQ_([\d\.]+)/);
    var WeChat = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/) || ua.match(/MicroMessenger\/((\d+)\.(\d+))/);
    var MacOS = ua.match(/Mac\sOS\sX\s(\d+[\.|_]\d+)/);
    var WinOS = ua.match(/Windows(\s+\w+)?\s+?(\d+\.\d+)/);
    var Linux = ua.match(/Linux\s/);
    var MiuiBrowser = ua.match(/MiuiBrowser\/(\d+\.\d+)/i);
    var M1 = ua.match(/MI-ONE/);
    var MIPAD = ua.match(/MI PAD/);
    var UC = ua.match(/UCBrowser\/(\d+\.\d+(\.\d+\.\d+)?)/) || ua.match(/\sUC\s/);
    var IEMobile = ua.match(/IEMobile(\/|\s+)(\d+\.\d+)/) || ua.match(/WPDesktop/);
    var ipod = ua.match(/(ipod).*\s([\d_]+)/i);
    var ipad = ua.match(/(ipad).*\s([\d_]+)/i);
    var iphone = ua.match(/(iphone)\sos\s([\d_]+)/i);
    var Chrome = ua.match(/Chrome\/(\d+\.\d+)/);
    var AndriodBrowser = ua.match(/Mozilla.*Linux.*Android.*AppleWebKit.*Mobile Safari/);
    var android = ua.match(/(android)\s([\d\.]+)/i);
    var harmony = ua.match(/(OpenHarmony)\s([\d\.]+)/i);
    Device.browser = Device.browser || {}, Device.os = Device.os || {};
    Device.os.type = -1;
    Device.os.unifiedPC = ua.match(/UnifiedPC/);
    Device.os.unifiedMac = /UnifiedPCMac/i.test(ua);
    Device.os.unifiedWindows = /UnifiedPCWindows/i.test(ua);
    if (window.ActiveXObject) {
      var vie = 6;
      (window.XMLHttpRequest || ua.indexOf('MSIE 7.0') &gt; -1) &amp;&amp; (vie = 7);
      (window.XDomainRequest || ua.indexOf('Trident/4.0') &gt; -1) &amp;&amp; (vie = 8);
      ua.indexOf('Trident/5.0') &gt; -1 &amp;&amp; (vie = 9);
      ua.indexOf('Trident/6.0') &gt; -1 &amp;&amp; (vie = 10);
      Device.browser.ie = true, Device.browser.version = vie;
    } else if (ua.indexOf('Trident/7.0') &gt; -1) {
      Device.browser.ie = true, Device.browser.version = 11;
    }
    if (android) {
      Device.os.android = true;
      Device.os.version = android[2];
      Device.os.type = 2;
    }
    if (harmony) {
      Device.os.harmony = true;
      Device.os.version = harmony[2];
      Device.os.type = 42;
    }
    if (ipod) {
      Device.os.ios = Device.os.ipod = true;
      Device.os.version = ipod[2].replace(/_/g, '.');
    }
    if (ipad) {
      Device.os.ios = Device.os.ipad = true;
      Device.os.version = ipad[2].replace(/_/g, '.');
      Device.os.type = 13;
    }
    if (iphone) {
      Device.os.iphone = Device.os.ios = true;
      Device.os.version = iphone[2].replace(/_/g, '.');
      Device.os.type = 1;
    }
    if (WinOS) Device.os.windows = true, Device.os.version = WinOS[2], Device.os.type = 15;
    if (MacOS) Device.os.Mac = true, Device.os.version = MacOS[1], Device.os.type = 14;
    if (Linux) Device.os.Linux = true, Device.os.type = 33;
    if (ua.indexOf('lepad_hls') &gt; 0) Device.os.LePad = true;
    if (MIPAD) Device.os.MIPAD = true;
    if (MQQBrowser) Device.browser.MQQ = true, Device.browser.version = MQQBrowser[1];
    if (MQQClient) Device.browser.MQQClient = true, Device.browser.version = MQQClient[1];
    if (WeChat) Device.browser.WeChat = true, Device.browser.mmversion = Device.browser.version = WeChat[1];
    if (MiuiBrowser) Device.browser.MIUI = true, Device.browser.version = MiuiBrowser[1];
    if (UC) Device.browser.UC = true, Device.browser.version = UC[1] || NaN;
    if (IEMobile) Device.browser.IEMobile = true, Device.browser.version = IEMobile[2];
    if (AndriodBrowser) {
      Device.browser.AndriodBrowser = true;
    }
    if (M1) {
      Device.browser.M1 = true;
    }
    if (Chrome) {
      Device.browser.Chrome = true, Device.browser.version = Chrome[1];
    }
    if (Device.os.windows) {
      if (typeof navigator.platform !== "undefined" &amp;&amp; navigator.platform.toLowerCase() == "win64") {
        Device.os.win64 = true;
      } else {
        Device.os.win64 = false;
      }
    }
    if (Device.os.Mac || Device.os.windows || Device.os.Linux || Device.os.unifiedPC || /OpenHarmony/i.test(ua) &amp;&amp; /pc/i.test(ua)) {
      Device.os.pc = true;
    }
    var osType = {
      iPad7: 'iPad; CPU OS 7',
      LePad: 'lepad_hls',
      XiaoMi: 'MI-ONE',
      SonyDTV: "SonyDTV",
      SamSung: 'SAMSUNG',
      HTC: 'HTC',
      VIVO: 'vivo'
    };
    for (var os in osType) {
      Device.os[os] = ua.indexOf(osType[os]) !== -1;
    }
    Device.os.phone = Device.os.phone || /windows phone/i.test(ua);
    Device.os.getNumVersion = function () {
      return parseFloat(Device.os.version);
    };
    Device.os.hasTouch = 'ontouchstart' in window;
    if (Device.os.hasTouch &amp;&amp; Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 6) {
      Device.os.hasTouch = false;
    }
    if (Device.browser.WeChat &amp;&amp; Device.browser.version &lt; 5.0) {
      Device.os.hasTouch = false;
    }
    Device.browser.getNumVersion = function () {
      return parseFloat(Device.browser.version);
    };
    Device.browser.isFFCanOcx = function () {
      return !!Device.browser.firefox &amp;&amp; Device.browser.getNumVersion() &gt;= 3.0;
    };
    Device.browser.isCanOcx = function () {
      return !!Device.os.windows &amp;&amp; (!!Device.browser.ie || Device.browser.isFFCanOcx() || !!Device.browser.webkit);
    };
    Device.browser.isNotIESupport = function () {
      return !!Device.os.windows &amp;&amp; (!!Device.browser.webkit || Device.browser.isFFCanOcx());
    };
    Device.userAgent = {};
    Device.userAgent.browserVersion = Device.browser.version;
    Device.userAgent.osVersion = Device.os.version;
    if (Device.os.unifiedPC) {
      if (Device.os.unifiedWindows) Device.os.type = 37;else if (Device.os.unifiedMac) Device.os.type = 38;else Device.os.type = 39;
    }
    delete Device.userAgent.version;
  }
  detect(window.navigator.userAgent);
  function canSupportH5Video() {
    var ua = window.navigator.userAgent,
      m = null;
    if (!!Device.os.android) {
      if (Device.browser.MQQ &amp;&amp; Device.browser.getNumVersion() &gt;= 4.2) {
        return true;
      }
      if (ua.indexOf('MI2') != -1) {
        return true;
      }
      if (Device.os.version &gt;= '4' &amp;&amp; (m = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/))) {
        if (parseFloat(m[1]) &gt;= 4.2) {
          return true;
        }
      }
      if (Device.os.version &gt;= '4.1') {
        return true;
      }
    }
    return false;
  }
  function canSupportVideoMp4() {
    var video = document.createElement('video');
    if (typeof video.canPlayType === 'function') {
      if (video.canPlayType('video/mp4; codecs="mp4v.20.8"') === 'probably') {
        return true;
      }
      if (video.canPlayType('video/mp4; codecs="avc1.42E01E"') === 'probably' || video.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"') === 'probably') {
        return true;
      }
    }
    return false;
  }
  function canSupportAutoPlay() {
    if (Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 10) {
      return false;
    }
    return true;
  }
  function isLockdownMode() {
    if (!Device.os.ios || Device.os.getNumVersion() &lt; 16) {
      return false;
    }
    if (typeof WebAssembly === 'undefined' &amp;&amp; typeof OfflineAudioContext === 'undefined' &amp;&amp; typeof WebGLRenderingContext === 'undefined') {
      return true;
    }
    return false;
  }
  Device.canSupportVideo = canSupportVideoMp4 || canSupportH5Video;
  Device.canSupportVideoMp4 = canSupportVideoMp4;
  Device.canSupportH5Video = canSupportH5Video;
  Device.canSupportAutoPlay = canSupportAutoPlay;
  Device.isLockdownMode = isLockdownMode;
  
  Device.cpVersion = function (version) {
    var cp = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 0;
    var canEqual = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    var nowVersionStr = Device.os.version;
    if (!nowVersionStr) return false;
    var versionArr = version.split('.');
    var nowVersionArr = nowVersionStr.split('.');
    for (var i = 0; i &lt; Math.max(nowVersionArr.length, versionArr.length); i++) {
      var vi = +versionArr[i];
      var nvi = +nowVersionArr[i];
      if (vi === nvi) continue;
      if (cp &gt; 0) return vi &gt; nvi;
      if (cp &lt; 0) return vi &lt; nvi;
    }
    return canEqual || cp === 0;
  };

  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" &amp;&amp; o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$2(o)) || allowArrayLike &amp;&amp; o &amp;&amp; typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i &gt;= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion &amp;&amp; it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
  function _unsupportedIterableToArray$2(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$2(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$2(o, minLen); }
  function _arrayLikeToArray$2(arr, len) { if (len == null || len &gt; arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i]; return arr2; }
  
  
  var ua$1 = navigator.userAgent;
  var is_ios = /(iPhone|iPad|iPod|iOS)/i.test(ua$1);
  var is_wp = /Windows\sPhone/i.test(ua$1);
  var is_android$1 = /(Android)/i.test(ua$1);
  var is_wechat = /MicroMessenger\/([\d\.]+)/i.test(ua$1);
  var is_mac = /mac\sos/i.test(ua$1) &amp;&amp; !is_ios;
  var is_windows = /windows\snt/i.test(ua$1) &amp;&amp; !is_wp;
  var is_mpapp = /MPAPP\/([\d\.]+)/i.test(ua$1);
  var is_ipad = /iPad/i.test(ua$1);
  var is_windows_wechat = /WindowsWechat/i.test(ua$1);
  var is_mac_wechat = /MacWechat/i.test(ua$1) || /wechat.*mac os/i.test(ua$1);
  var is_prefetch = is_wechat &amp;&amp; window.WeixinPrefecherJSBridge;
  var is_donut_app = /SAAASDK/i.test(ua$1);
  var is_harmony = /OpenHarmony|ArkWeb/i.test(ua$1);
  var is_linux = /Linux\s/i.test(ua$1);
  var xweb_match = ua$1.match(/XWEB\/([\d.]+)/i);
  var xweb_version = xweb_match &amp;&amp; xweb_match[1] ? parseInt(xweb_match[1], 10) : 0;
  var is_unified_pc_wechat = /UnifiedPC\w+Wechat/i.test(ua$1);
  var is_in_miniProgram = is_android$1 &amp;&amp; /miniprogram/.test(ua$1.toLowerCase()) || window.__wxjs_environment == 'miniprogram';
  var is_wx_work = /wxwork/i.test(ua$1);
  function getUrlParams() {
    var vars = location.search.substring(1).split('&amp;');
    var params = {};
    var _iterator = _createForOfIteratorHelper(vars),
      _step;
    try {
      for (_iterator.s(); !(_step = _iterator.n()).done;) {
        var ele = _step.value;
        var pair = ele.split('=');
        var key = decodeURIComponent(pair[0]);
        if (typeof params[key] === 'undefined') {
          params[key] = decodeURIComponent(pair[1]);
        }
      }
    } catch (err) {
      _iterator.e(err);
    } finally {
      _iterator.f();
    }
    return params;
  }
  function get() {
    var reg = /MicroMessenger\/([\d\.]+)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMac() {
    var reg = /MacWechat\/([\d\.]+)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMacOS() {
    var reg = /Mac OS X ([\d_]+)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1].replace(/_/g, '.');
    }
    return false;
  }
  function getWindows() {
    var reg = /WindowsWechat\(0x(.+?)\)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getWxWork() {
    var reg = /wxwork\/([\d\.]+)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMpApp() {
    var appVersion = [2, 4, 5];
    var match = navigator.userAgent.match(/MPAPP\/(\d+(\.\d+)*)/);
    if (match) {
      appVersion = match[1].split('.').map(function (v) {
        return Number(v);
      });
    }
    return appVersion.join('.');
  }
  function getUnifiedPcVer() {
    var versionInfo = navigator.userAgent.match(/UnifiedPC\w+Wechat\(0xf\w{2}(\w+?)\w{2}\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(0, 1));
      var subVersion = getVersionNumber(version.slice(1, 2));
      var subVersion2 = getVersionNumber(version.slice(2, 3));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
  }
  function getVersionNumber(hexStr) {
    return Number(Number("0x".concat(hexStr)).toString(10));
  }
  function getWindowsVersionFormat() {
    var versionInfo = navigator.userAgent.match(/WindowsWechat\(0x(\w+?)\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(1, 2));
      var subVersion = getVersionNumber(version.slice(2, 4));
      var subVersion2 = getVersionNumber(version.slice(4, 6));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
    return false;
  }
  function getInner() {
    var reg = /MicroMessenger\/[\d\.]+\(0x(.+?)\)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1] &amp;&amp; ret[1] != null) {
      return ret[1];
    }
    if (!ret &amp;&amp; /MicroMessenger\/[\d\.]+/i.test(ua$1)) {
      var urlParams = getUrlParams();
      if (urlParams.version) {
        return urlParams.version;
      }
    }
    return false;
  }
  var opfunc = {
    'cp-1': function cp1(a, b) {
      return a &lt; b;
    },
    cp0: function cp0(a, b) {
      return a === b;
    },
    cp1: function cp1(a, b) {
      return a &gt; b;
    }
  };
  function cpVersion(ver, op, canEq, type) {
    var mmver = false;
    switch (type) {
      case 'mac':
        mmver = getMac();
        break;
      case 'windows':
        mmver = getWindowsVersionFormat();
        break;
      case 'wxwork':
        mmver = getWxWork();
        break;
      case 'mpapp':
        mmver = getMpApp();
        break;
      case 'unifiedpc':
        mmver = getUnifiedPcVer();
        break;
      default:
        mmver = get();
        break;
    }
    if (!mmver) {
      return;
    }
    var mmversion = mmver.split('.');
    var version = ver.split('.');
    if (!/\d+/g.test(mmversion[mmversion.length - 1])) {
      mmversion.pop();
    }
    for (var i = 0, len = Math.max(mmversion.length, version.length); i &lt; len; ++i) {
      var mmv = mmversion[i] || '';
      var v = version[i] || '';
      var mmvn = parseInt(mmv, 10) || 0;
      var vn = parseInt(v, 10) || 0;
      var eq = opfunc.cp0(mmvn, vn);
      if (eq) {
        continue;
      }
      var cp = opfunc["cp".concat(op)];
      return cp(mmvn, vn);
    }
    return canEq || op === 0;
  }
  function eqVersion(version) {
    return cpVersion(version, 0);
  }
  function gtVersion(version, canEq) {
    return cpVersion(version, 1, canEq);
  }
  function ltVersion(version, canEq) {
    return cpVersion(version, -1, canEq);
  }
  function getPlatform() {
    if (is_ios) {
      return 'ios';
    }
    if (is_android$1) {
      return 'android';
    }
    if (is_mac) {
      return 'mac_os';
    }
    if (is_windows) {
      return 'windows';
    }
    return 'unknown';
  }
  var is_google_play = false;
  var inner_ver_for_google_play_check = getInner();
  if (is_android$1 &amp;&amp; inner_ver_for_google_play_check) {
    var v$4 = "0x".concat(inner_ver_for_google_play_check.substr(-2));
    if (parseInt(v$4) &gt;= 64 &amp;&amp; parseInt(v$4) &lt;= 79) {
      is_google_play = true;
    }
  }
  function compareHexVersion(hexNum) {
    var innerVersion = getInner();
    if (innerVersion &amp;&amp; hexNum) {
      if (typeof hexNum === 'string') {
        hexNum = parseInt(hexNum, 16);
      }
      var version = parseInt(innerVersion, 16);
      return version &gt;= hexNum;
    }
    return false;
  }
  var MMVersion = {
    get: get,
    getMac: getMac,
    getMacOS: getMacOS,
    getWindows: getWindows,
    getInner: getInner,
    getWxWork: getWxWork,
    getMpApp: getMpApp,
    cpVersion: cpVersion,
    eqVersion: eqVersion,
    gtVersion: gtVersion,
    ltVersion: ltVersion,
    getPlatform: getPlatform,
    getVersionNumber: getVersionNumber,
    isWp: is_wp,
    isIOS: is_ios,
    isAndroid: is_android$1,
    isHarmony: is_harmony,
    isHarmonyWechat: is_harmony &amp;&amp; is_wechat &amp;&amp; cpVersion('1.0.0', 1, true),
    isInMiniProgram: is_in_miniProgram,
    isWechat: is_wechat,
    isMac: is_mac,
    isWindows: is_windows,
    isLinux: is_linux,
    isMacWechat: is_mac_wechat,
    isWindowsWechat: is_windows_wechat,
    isWxWork: is_wx_work,
    isOnlyWechat: is_wechat &amp;&amp; !is_wx_work,
    isMpapp: is_mpapp,
    isIPad: is_ipad,
    isGooglePlay: is_google_play,
    isPrefetch: is_prefetch,
    isDonutAPP: is_donut_app,
    compareHexVersion: compareHexVersion,
    isPcWechat: is_windows_wechat || is_mac_wechat,
    xwebVersion: xweb_version,
    isUnifiedPcWechat: is_unified_pc_wechat
  };

  var initJsBridge = false;
  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }
  function connectWebViewJavascriptBridge(callback) {
    if (window.WebViewMPapp || window.WebViewJavascriptBridge) {
      return callback(window.WebViewMPapp || window.WebViewJavascriptBridge);
    }
    if (window.WVJBCallbacks) {
      return window.WVJBCallbacks.push(callback);
    }
    window.WVJBCallbacks = [callback];
    if (!MMVersion.isMpapp) {
      return false;
    }
    if (!initJsBridge) {
      initJsBridge = true;
      var WVJBIframe = document.createElement('iframe');
      WVJBIframe.style.display = 'none';
      WVJBIframe.src = 'https://__bridge_loaded__';
      document.body.appendChild(WVJBIframe);
      setTimeout(function () {
        initJsBridge = false;
        document.body.removeChild(WVJBIframe);
      }, 0);
    }
    return false;
  }
  function invoke(jsapiName, opt, callback) {
    connectWebViewJavascriptBridge(function (bridge) {
      try {
        if (typeof opt === 'function') {
          callback = opt;
        }
        if (_typeof$3(opt) !== 'object' &amp;&amp; typeof opt !== 'string') {
          opt = {};
        }
        bridge.callHandler(jsapiName, opt, function (res) {
          try {
            var ret = _typeof$3(res) === 'object' ? res : JSON.parse(res);
            var errMsg = ret.err_msg || ret.errMsg;
            console.info("[mpapp jsapi] invoke-&gt;".concat(jsapiName, " ").concat(opt.action || '', " ").concat(errMsg));
            typeof callback === 'function' &amp;&amp; callback(ret);
          } catch (e) {
            window.WX_BJ_REPORT.BadJs.report('invoke', "callback ".concat(jsapiName, " error:"), {
              mid: 'mmbizwebapp:js_brridge',
              _info: e
            });
            console.error("[mpapp jsapi] ".concat(jsapiName, " ").concat(opt.action || ''), e, res);
          }
        });
      } catch (e) {
        window.WX_BJ_REPORT.BadJs.report('invoke', 'callback error:', {
          mid: 'mmbizwebapp:js_brridge',
          _info: e
        });
        console.error('[mpapp jsapi]', e);
      }
    });
  }

  
  function _log(level, msg) {
    if (level === 'log') {
      level = 'info';
      msg = "[WechatFe]".concat(msg);
    } else {
      var prefix = "__wap__".concat(window.__second_open__ ? ' (sec)' : '');
      msg = "".concat(prefix, " ").concat(msg, " location:[").concat(location.href, "]");
    }
    msg += new Error().stack;
    if (MMVersion.isMpapp) {
      invoke('WNNativeCallbackLog', msg);
    } else if (MMVersion.isWechat) {
      if (MMVersion.isAndroid) {
        console.warn('[system]', "[MicroMsg.JsApiLog][".concat(level, "] jslog : ").concat(msg));
      } else if (MMVersion.isIOS) {
        R$4.invoke('writeLog', {
          level: level,
          msg: msg
        });
      } else {
        R$4.invoke('log', {
          level: level,
          msg: msg
        });
      }
    }
  }
  var Log = {
    info: function info() {
      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key &lt; _len; _key++) {
        args[_key] = arguments[_key];
      }
      _log('info', args.join(' '));
    },
    warn: function warn() {
      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
        args[_key2] = arguments[_key2];
      }
      _log('warn', args.join(' '));
    },
    error: function error() {
      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 &lt; _len3; _key3++) {
        args[_key3] = arguments[_key3];
      }
      _log('error', args.join(' '));
    },
    debug: function debug() {
      for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 &lt; _len4; _key4++) {
        args[_key4] = arguments[_key4];
      }
      _log('debug', args.join(' '));
    },
    log: function log() {
      for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 &lt; _len5; _key5++) {
        args[_key5] = arguments[_key5];
      }
      _log('info', args.join(' '));
    }
  };

  
  var logList = [];
  var log = function log(msg) {
    logList.push(msg);
  };
  var printLog = function printLog() {
    for (var i = 0, len = logList.length; i &lt; len; ++i) {
      console.log("[RespType]".concat(logList[i]));
    }
  };
  var isArray = function isArray(val) {
    return Object.prototype.toString.call(val) === '[object Array]';
  };
  var getValueType = function getValueType(value) {
    if (isArray(value)) {
      return 'array';
    }
    return _typeof$3(value);
  };
  var parseRtDesc = function parseRtDesc(rtDesc, k) {
    var type = 'mix';
    var isRequired = false;
    var key = k;
    if (k) {
      var requireKeyWord = '_R';
      var pos = k.indexOf(requireKeyWord);
      var len = k.length - requireKeyWord.length;
      isRequired = pos !== -1 &amp;&amp; pos === len;
      key = isRequired ? k.substring(0, len) : k;
    }
    if (typeof rtDesc === 'string') {
      type = rtDesc;
    } else if (isArray(rtDesc)) {
      type = 'array';
    } else if (_typeof$3(rtDesc) === 'object') {
      type = 'object';
    }
    return {
      key: key,
      type: type,
      isRequired: isRequired
    };
  };
  var checkForArrayRtDesc = function checkForArrayRtDesc(arr, rtDescs) {
    if (!isArray(arr)) {
      return false;
    }
    for (var i = 0, len = arr.length; i &lt; len; ++i) {
      var value = arr[i];
      var rtDesc = void 0;
      var j = 0;
      var flag = rtDescs.length === 0;
      while (rtDesc = rtDescs[j++]) {
        if (checkForRtDesc(value, rtDesc)) {
          flag = true;
          break;
        }
      }
      if (!flag) {
        return false;
      }
    }
    return true;
  };
  var checkForStringRtDesc = function checkForStringRtDesc(value, rtDesc) {
    var valueType = getValueType(value);
    var desc = parseRtDesc(rtDesc);
    var ret = desc.type === valueType;
    if (!ret) {
      log("miss match type : ".concat(valueType, " !== ").concat(desc.type));
    }
    return ret;
  };
  var checkForObjectRtDesc = function checkForObjectRtDesc(json, rtDesc) {
    if (_typeof$3(json) !== 'object' || isArray(json)) {
      log('must be object');
      return false;
    }
    var rootJson = json;
    var nowCheckValue = json;
    for (var k in rtDesc) {
      if (rtDesc.hasOwnProperty(k)) {
        var nowCheckDesc = rtDesc[k];
        var desc = parseRtDesc(nowCheckDesc, k);
        var key = desc.key;
        nowCheckValue = rootJson[key];
        var valueType = getValueType(nowCheckValue);
        if (desc.isRequired &amp;&amp; nowCheckValue === undefined) {
          log("is required @key=".concat(key));
          return false;
        }
        if (nowCheckValue !== undefined) {
          if (valueType !== desc.type &amp;&amp; desc.type !== 'mix') {
            log("miss match type : ".concat(valueType, " !== ").concat(desc.type, " @key=").concat(key));
            return false;
          }
          if ((valueType === 'array' || valueType === 'object') &amp;&amp; desc.type !== 'mix') {
            if (!checkForRtDesc(nowCheckValue, nowCheckDesc)) {
              return false;
            }
          }
        }
      }
    }
    return true;
  };
  var checkForRtDesc = function checkForRtDesc(json, rtDesc) {
    if (isArray(rtDesc)) {
      return checkForArrayRtDesc(json, rtDesc);
    }
    if (_typeof$3(rtDesc) === 'object') {
      return checkForObjectRtDesc(json, rtDesc);
    }
    if (typeof rtDesc === 'string') {
      return checkForStringRtDesc(json, rtDesc);
    }
    return false;
  };
  var _check = function check(json, rtDescs) {
    if (typeof json === 'string') {
      try {
        json = eval("(".concat(json, ")"));
      } catch (e) {
        log('parse json error');
        return false;
      }
    }
    if (_typeof$3(json) !== 'object') {
      log('must be object');
      return false;
    }
    if (!isArray(rtDescs)) {
      rtDescs = [rtDescs];
    }
    var rtDesc;
    var i = 0;
    while (rtDesc = rtDescs[i++]) {
      if (checkForRtDesc(json, rtDesc)) {
        return true;
      }
    }
    return false;
  };
  var RespTypes = {
    check: function check(json, rtDesc) {
      logList = [];
      try {
        var ret = _check(json, rtDesc);
        if (!ret) {
          printLog();
        }
        return ret;
      } catch (e) {
        logList.push("[rtException]".concat(e.toString()));
        printLog();
        return false;
      }
    },
    getMsg: function getMsg() {
      return logList.join(';');
    }
  };

  function _arrayWithHoles$1(arr) {
    if (Array.isArray(arr)) return arr;
  }

  function _iterableToArrayLimit$1(arr, i) {
    var _i = null == arr ? null : "undefined" != typeof Symbol &amp;&amp; arr[Symbol.iterator] || arr["@@iterator"];
    if (null != _i) {
      var _s,
        _e,
        _x,
        _r,
        _arr = [],
        _n = !0,
        _d = !1;
      try {
        if (_x = (_i = _i.call(arr)).next, 0 === i) {
          if (Object(_i) !== _i) return;
          _n = !1;
        } else for (; !(_n = (_s = _x.call(_i)).done) &amp;&amp; (_arr.push(_s.value), _arr.length !== i); _n = !0);
      } catch (err) {
        _d = !0, _e = err;
      } finally {
        try {
          if (!_n &amp;&amp; null != _i["return"] &amp;&amp; (_r = _i["return"](), Object(_r) !== _r)) return;
        } finally {
          if (_d) throw _e;
        }
      }
      return _arr;
    }
  }

  function _arrayLikeToArray$1(arr, len) {
    if (len == null || len &gt; arr.length) len = arr.length;
    for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i];
    return arr2;
  }

  function _unsupportedIterableToArray$1(o, minLen) {
    if (!o) return;
    if (typeof o === "string") return _arrayLikeToArray$1(o, minLen);
    var n = Object.prototype.toString.call(o).slice(8, -1);
    if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name;
    if (n === "Map" || n === "Set") return Array.from(o);
    if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen);
  }

  function _nonIterableRest$1() {
    throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }

  function _slicedToArray$1(arr, i) {
    return _arrayWithHoles$1(arr) || _iterableToArrayLimit$1(arr, i) || _unsupportedIterableToArray$1(arr, i) || _nonIterableRest$1();
  }

  function getInflightMap() {
    if (!window.__dedupe_promise_inflight__) {
      window.__dedupe_promise_inflight__ = new Map();
    }
    return window.__dedupe_promise_inflight__;
  }
  
  function dedupePromise(key, factory) {
    var inflightMap = getInflightMap();
    var existing = inflightMap.get(key);
    console.log("dedupePromise key=".concat(key, " existing=").concat(existing));
    if (existing) {
      return existing;
    }
    var promise = Promise.resolve().then(factory)["finally"](function () {
      inflightMap["delete"](key);
    });
    inflightMap.set(key, promise);
    return promise;
  }

  function _classCallCheck$1(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  function _defineProperties$1(target, props) {
    for (var i = 0; i &lt; props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor) descriptor.writable = true;
      Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
    }
  }
  function _createClass$1(Constructor, protoProps, staticProps) {
    if (protoProps) _defineProperties$1(Constructor.prototype, protoProps);
    if (staticProps) _defineProperties$1(Constructor, staticProps);
    Object.defineProperty(Constructor, "prototype", {
      writable: false
    });
    return Constructor;
  }

  
  var prefix = '__WXLS__';
  var localStorage$1 = window.localStorage || {
    getItem: function getItem() {},
    setItem: function setItem() {},
    removeItem: function removeItem() {},
    key: function key() {},
    clear: function clear() {
      var _a, _b;
      (_b = (_a = window.localStorage) === null || _a === void 0 ? void 0 : _a.clear) === null || _b === void 0 ? void 0 : _b.call(_a);
    },
    length: 0
  };
  var evictionPolicies = {
    noeviction: function noeviction(data) {
      return data;
    },
    'allkeys-random': function allkeysRandom(data, size) {
      var keys = Object.keys(data);
      var memCnt = 0;
      while (memCnt &lt; size) {
        var len = keys.length;
        var randomKeyIdx = Math.floor(Math.random() * len);
        var randomKey = keys[randomKeyIdx];
        memCnt += JSON.stringify(data[randomKey]).length;
        delete data[randomKey];
        keys = Object.keys(data);
      }
      return data;
    },
    'volatile-ttl': function volatileTtl(data, size) {
      var keys = Object.keys(data);
      keys = keys.sort(function (key1, key2) {
        var d1 = data[key1];
        var d2 = data[key2];
        if (d1.exp &lt; d2.exp) return -1;
        if (d1.exp &gt; d2.exp) return 1;
        return 0;
      });
      var memCnt = 0;
      for (var i = 0; i &lt; keys.length; i++) {
        if (memCnt &gt;= size) break;
        var key = keys[i];
        memCnt += JSON.stringify(data[key]).length;
        delete data[key];
      }
      return data;
    },
    'clear-all': function clearAll() {
      localStorage$1.clear();
      return {};
    }
  };
  function formatLogMsg(str) {
    return "[WXLS] ".concat(str);
  }
  
  var LS = function () {
    function LS(func, evictionPolicy, logger) {
      _classCallCheck$1(this, LS);
      this.logger = function () {};
      if (!func) throw 'require function name.';
      this.evictionPolicy = 'noeviction';
      this.key = func;
      if (typeof logger === 'function') {
        this.logger = function (str, type) {
          return logger(formatLogMsg(str), type);
        };
      }
      if (evictionPolicy &amp;&amp; Object.keys(evictionPolicies).indexOf(evictionPolicy) !== -1) {
        this.evictionPolicy = evictionPolicy;
      }
      this.init();
    }
    _createClass$1(LS, [{
      key: "init",
      value: function init() {
        var _a, _b;
        this.check();
        if (Math.random() * 1000 &lt; 1) {
          (_a = this.logger) === null || _a === void 0 ? void 0 : _a.call(this, "LSlen: ".concat(((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length) || localStorage$1.length), 'report');
        }
      }
    }, {
      key: "getData",
      value: function getData() {
        var data = LS.getItem(this.key) || '{}';
        try {
          data = JSON.parse(data);
        } catch (e) {
          this.logger("getData error: ".concat(e), 'error');
          localStorage$1.removeItem(prefix + this.key);
          data = {};
        }
        return data;
      }
    }, {
      key: "check",
      value: function check(isReturn) {
        var data = this.getData();
        var temp = {};
        var now = +new Date();
        var key;
        var val;
        for (key in data) {
          val = data[key];
          if (+val.exp &gt; now) {
            temp[key] = val;
          }
        }
        this.logger("check info: isReturn:".concat(isReturn, " data:").concat(JSON.stringify(temp)), 'info');
        if (isReturn) return temp;
        LS.setItem(this.key, JSON.stringify(temp), this.logger);
      }
    }, {
      key: "set",
      value: function set(key, val, exp) {
        var _a, _b;
        var data = this.check(true);
        data[key] = {
          val: val,
          exp: exp || +new Date()
        };
        try {
          if (localStorage$1.getItem(prefix + this.key)) localStorage$1.removeItem(prefix + this.key);
          localStorage$1.setItem(prefix + this.key, JSON.stringify(data));
          this.logger("first set success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data)), 'success');
        } catch (e) {
          this.logger("first set error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data), " k:").concat(key, " v:").concat(val, " exp:").concat(exp), 'error');
          localStorage$1.clear();
          LS.setItem(this.key, JSON.stringify(_defineProperty$1({}, key, {
            val: val,
            exp: exp || +new Date()
          })), this.logger);
        }
      }
    }, {
      key: "get",
      value: function get(key) {
        var data = this.getData();
        data = data[key];
        return data ? data.val || null : null;
      }
    }, {
      key: "remove",
      value: function remove(key) {
        var data = this.getData();
        if (data[key]) delete data[key];
        LS.setItem(this.key, JSON.stringify(data), this.logger);
      }
    }], [{
      key: "getItem",
      value: function getItem(key) {
        key = prefix + key;
        return localStorage$1.getItem(key);
      }
    }, {
      key: "setItem",
      value: function setItem(key, val, logger) {
        var _a, _b;
        key = prefix + key;
        var n = 3;
        while (n--) {
          try {
            if (localStorage$1.getItem(key)) localStorage$1.removeItem(key);
            localStorage$1.setItem(key, val);
            typeof logger === 'function' &amp;&amp; logger("setItem success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(key, " val:").concat(val), 'success');
            break;
          } catch (e) {
            typeof logger === 'function' &amp;&amp; logger("setItem error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(key, " val:").concat(val), 'error');
            LS.clear();
          }
        }
      }
    }, {
      key: "clear",
      value: function clear() {
        var i;
        var k;
        for (i = localStorage$1.length - 1; i &gt;= 0; i--) {
          k = localStorage$1.key(i);
          if (k.indexOf(prefix) == 0) {
            localStorage$1.removeItem(k);
          }
        }
      }
    }, {
      key: "getSupportEvicationPolicy",
      value: function getSupportEvicationPolicy() {
        return Object.keys(evictionPolicies);
      }
    }]);
    return LS;
  }();
  var innerVersion = (MMVersion.getInner() || '').toUpperCase();
  var getBizLS = new LS('get_biz_result');
  function getBizMap() {
    if (!window.__get_biz_map__) {
      window.__get_biz_map__ = {};
    }
    return window.__get_biz_map__;
  }
  var isGetBizSupported = MMVersion.isOnlyWechat &amp;&amp; MMVersion.isIOS &amp;&amp; innerVersion &gt;= '18003C2A' || MMVersion.isOnlyWechat &amp;&amp; MMVersion.isAndroid &amp;&amp; innerVersion &gt;= '28003D3C' || MMVersion.isUnifiedPcWechat &amp;&amp; MMVersion.cpVersion('4.1.10', 1, true, 'unifiedpc');
  function invokeGetBiz(needCheckBiz, bizType) {
    return dedupePromise("getBiz:".concat(needCheckBiz, ":").concat(bizType), function () {
      return new Promise(function (resolve, reject) {
        if (!isGetBizSupported) {
          reject('Not support');
        } else {
          R$4.invoke('handleMPPageAction', {
            action: 'getBiz',
            needCheckBiz: needCheckBiz,
            bizType: bizType
          }, function (res) {
            console.log("getBiz needCheckBiz=".concat(needCheckBiz, " bizType=").concat(bizType, " res: ").concat(JSON.stringify(res)));
            if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf('ok') &gt; -1) {
              var bizMap = getBizMap();
              bizMap[bizType] = res.biz;
              resolve(res.biz);
              getBizLS.set("".concat(bizType, "_get_biz_result"), res.biz, +new Date() + 3 * 24 * 60 * 60 * 1000);
            } else {
              reject('Failed to get biz');
            }
          });
        }
      });
    });
  }
  function getBiz(needCheckBiz, bizType) {
    var _a;
    if (needCheckBiz === void 0) {
      needCheckBiz = false;
    }
    if (bizType === void 0) {
      bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
    }
    var bizMap = getBizMap();
    if (!needCheckBiz &amp;&amp; bizMap[bizType] !== undefined) {
      return Promise.resolve(bizMap[bizType]);
    }
    return invokeGetBiz(needCheckBiz, bizType);
  }
  MMVersion.isOnlyWechat &amp;&amp; MMVersion.isIOS || MMVersion.isOnlyWechat &amp;&amp; MMVersion.isAndroid || MMVersion.isUnifiedPcWechat &amp;&amp; MMVersion.cpVersion('4.1.10', 1, true, 'unifiedpc');
  var getIsAuthor = function getIsAuthor(cb, bizuin, needCheckBiz, bizType) {
    var _a;
    if (bizuin === void 0) {
      bizuin = window.biz;
    }
    if (needCheckBiz === void 0) {
      needCheckBiz = false;
    }
    if (bizType === void 0) {
      bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
    }
    getBiz(needCheckBiz, bizType).then(function (biz) {
      cb(biz &amp;&amp; biz === bizuin);
    })["catch"](function () {
      cb(false);
    });
  };

  function parseUrl$1(url) {
    var len = url.length;
    var ques_pos = url.indexOf('?');
    var hash_pos = url.indexOf('#');
    hash_pos = hash_pos == -1 ? len : hash_pos;
    ques_pos = ques_pos == -1 ? hash_pos : ques_pos;
    var host = url.substring(0, ques_pos);
    var query_str = url.substring(ques_pos + 1, hash_pos);
    var hash = url.substring(hash_pos + 1);
    return {
      host: host,
      query_str: query_str,
      hash: hash
    };
  }
  function join(url, args, noEncode) {
    var ret = parseUrl$1(url);
    var query_str = ret.query_str;
    var args_arr = [];
    if (_typeof$3(args) === 'object') {
      for (var key in args) {
        if (args.hasOwnProperty(key)) {
          args_arr.push("".concat(key, "=").concat(noEncode ? args[key] : encodeURIComponent(args[key])));
        }
      }
    } else {
      args_arr.push(noEncode ? args : encodeURIComponent(args));
    }
    if (args_arr.length &gt; 0) {
      query_str += (query_str !== "" ? "&amp;" : "") + args_arr.join("&amp;");
    }
    return ret.host + (query_str !== "" ? "?".concat(query_str) : "") + (ret.hash !== "" ? "#".concat(ret.hash) : "");
  }
  
  function addParam(url, param, value, forceReplace) {
    url = url || location.href;
    var firstAndPos = url.indexOf("&amp;");
    var len = url.length;
    var reverseUrl = url.replace(/^[\w\d]+:[/\\]+/g, "").split("").reverse();
    if (!Array.prototype.indexOf) {
      Array.prototype.indexOf = function (searchElement, fromIndex) {
        var k;
        if (this == null) {
          throw new TypeError('"this" is null or not defined');
        }
        var O = Object(this);
        var len = O.length &gt;&gt;&gt; 0;
        if (len === 0) {
          return -1;
        }
        var n = fromIndex || 0;
        if (Math.abs(n) === Infinity) {
          n = 0;
        }
        if (n &gt;= len) {
          return -1;
        }
        k = Math.max(n &gt;= 0 ? n : len - Math.abs(n), 0);
        while (k &lt; len) {
          if (k in O &amp;&amp; O[k] === searchElement) {
            return k;
          }
          k++;
        }
        return -1;
      };
    }
    var lastSlashPos = len - 1 - reverseUrl.indexOf("/");
    if (firstAndPos !== -1 &amp;&amp; url.indexOf("?") == -1 &amp;&amp; firstAndPos &gt; lastSlashPos) {
      url = url.replace("&amp;", "?");
    }
    var reg = new RegExp("([\\?&amp;]".concat(param, "=)[^&amp;#]*"));
    if (!url.match(reg)) {
      var urlInfo = parseUrl$1(url);
      var hash = urlInfo.hash ? '#' + urlInfo.hash : '';
      url = url.replace(hash, '');
      var _pos = url.indexOf("?");
      if (_pos == -1) {
        return "".concat(url, "?").concat(param, "=").concat(value).concat(hash);
      }
      if (_pos == url.length - 1) {
        return "".concat(url + param, "=").concat(value).concat(hash);
      }
      return "".concat(url, "&amp;").concat(param, "=").concat(value).concat(hash);
    }
    if (forceReplace === true) {
      return url.replace(reg, "$1".concat(value));
    }
    return url;
  }
  function addWxfrom(src, wxfrom) {
    var offset = window.service_type === 1 ? 10000 : 0;
    return addParam(src, 'wxfrom', offset + Number(wxfrom), true);
  }
  function removeParam(url, param) {
    var _URL = new URL(url),
      protocol = _URL.protocol,
      host = _URL.host,
      pathname = _URL.pathname,
      search = _URL.search,
      hash = _URL.hash;
    var queryParams = new URLSearchParams(search);
    queryParams["delete"](param);
    var newSearch = queryParams.toString();
    var newUrl = new URL("".concat(protocol, "//").concat(host).concat(pathname).concat(newSearch ? "?".concat(decodeURIComponent(newSearch)) : "").concat(hash));
    return newUrl.toString();
  }
  function getQuery$1(name, url) {
    var u = url || window.location.search;
    var reg = new RegExp("(^|&amp;)".concat(name, "=([^&amp;]*)(&amp;|$)"));
    var r = u.substring(u.indexOf('?') + 1).match(reg);
    return r !== null ? r[2] : '';
  }
  function encodeBase64(value) {
    try {
      return window.btoa(value);
    } catch (e) {
      return '';
    }
  }
  function decodeBase64(value) {
    try {
      return window.atob(value);
    } catch (e) {
      return '';
    }
  }
  function joinUrl$1(url) {
    var obj = {};
    if (typeof window.uin !== 'undefined') {
      obj.uin = window.uin;
    }
    if (typeof window.key !== 'undefined') {
      obj.key = window.key;
    }
    if (typeof window.pass_ticket !== 'undefined') {
      obj.pass_ticket = window.pass_ticket;
    }
    if (typeof window.wxtoken !== 'undefined') {
      obj.wxtoken = window.wxtoken;
    }
    if (typeof window.devicetype !== 'undefined') {
      obj.devicetype = window.devicetype;
    }
    if (typeof window.clientversion !== 'undefined') {
      obj.clientversion = window.clientversion || MMVersion.getInner();
    }
    obj.version = obj.clientversion;
    if (window.biz) {
      obj.__biz = window.biz;
    }
    if (getQuery$1('enterid')) {
      obj.enterid = getQuery$1('enterid');
    }
    if (typeof window.appmsg_token !== 'undefined') {
      obj.appmsg_token = window.appmsg_token;
    } else if (url.indexOf('advertisement_report') &gt; -1) {
      new Image().src = "".concat(location.protocol, "//mp.weixin.qq.com/mp/jsmonitor?idkey=68064_13_1&amp;r=").concat(Math.random());
    }
    obj.x5 = navigator.userAgent.indexOf('TBS/') !== -1 ? '1' : '0';
    obj.f = 'json';
    return join(url, obj);
  }
  function joinUserArticleRole(url, notJoin, cb) {
    var bizuin = arguments.length &gt; 3 &amp;&amp; arguments[3] !== undefined ? arguments[3] : window.biz;
    var needCheckBiz = arguments.length &gt; 5 &amp;&amp; arguments[5] !== undefined ? arguments[5] : false;
    if (notJoin) {
      cb(url);
    } else {
      getIsAuthor(function (isAuthor) {
        cb(addParam(url, 'user_article_role', isAuthor ? 1 : 0, true));
      }, bizuin, needCheckBiz);
    }
  }
  function getA8keyQuery(name, url) {
    return new Promise(function (resolve) {
      if (window.__secPageAuthPromise) {
        window.__secPageAuthPromise.then(function () {
          resolve(getQuery$1(name, url));
        });
      } else {
        resolve(getQuery$1(name, url));
      }
    });
  }
  function addHash(url, hash) {
    var isReplace = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    if (isReplace) {
      return "".concat(url.split('#')[0]).concat(hash);
    }
    return "".concat(url).concat(url.indexOf('#') === -1 ? '#' : '').concat(hash);
  }
  function decodeUrl(url) {
    var _url = url;
    while (_url.indexOf('&amp;amp;') !== -1) {
      _url = _url.htmlDecode();
    }
    return _url;
  }
  var Url = {
    parseUrl: parseUrl$1,
    join: join,
    addParam: addParam,
    addWxfrom: addWxfrom,
    addHash: addHash,
    getQuery: getQuery$1,
    getA8keyQuery: getA8keyQuery,
    encodeBase64: encodeBase64,
    decodeBase64: decodeBase64,
    joinUrl: joinUrl$1,
    joinUserArticleRole: joinUserArticleRole,
    removeParam: removeParam,
    decodeUrl: decodeUrl
  };

  var _a;
  var doc;
  var isAcrossOrigin = false;
  try {
    doc = (_a = window.top) === null || _a === void 0 ? void 0 : _a.window.document;
  } catch (e) {
    isAcrossOrigin = true;
  }
  var StatusTextMap = {
    200: 'OK',
    302: 'Found',
    400: 'Bad Request',
    500: 'Internal Server Error'
  };
  function getIsAcrossOrigin() {
    return isAcrossOrigin;
  }
  function networkStartLog(item) {
    var _a, _b, _c, _d, _e;
    console.log('[system]', "&lt; [request ".concat(item.requestType, "]"), item.url, item.method, item);
    var rdevRequestId;
    var requestTime = performance.now() / 1000;
    if ((_b = (_a = window.RemoteDevSdk) === null || _a === void 0 ? void 0 : _a.instance) === null || _b === void 0 ? void 0 : _b.Network) {
      try {
        var willBeSentOptions = {
          url: item.url,
          method: item.method,
          requestHeaders: Object.assign({}, item.requestHeader || {}, {
            RDEV_REQUEST_TYPE: item.requestType
          }),
          requestBody: item.postData,
          requestTime: requestTime
        };
        rdevRequestId = window.RemoteDevSdk.instance.Network.customRequestWillBeSent(willBeSentOptions);
      } catch (err) {}
    }
    if ((_c = window.vConsole) === null || _c === void 0 ? void 0 : _c.network) {
      try {
        var vconsoleNetworkItem = (_e = (_d = window.vConsole.network).add) === null || _e === void 0 ? void 0 : _e.call(_d, Object.assign({}, item, {
          startTime: Date.now(),
          endTime: Date.now(),
          status: 0,
          readyState: 2,
          response: ''
        }));
        vconsoleNetworkItem.rdevRequestId = rdevRequestId;
        vconsoleNetworkItem.requestTime = requestTime;
        return vconsoleNetworkItem;
      } catch (err) {}
    }
    if (rdevRequestId) {
      return Object.assign(Object.assign({}, item), {
        id: '__only_rdev_log__',
        rdevRequestId: rdevRequestId,
        requestTime: requestTime
      });
    }
    return Object.assign({}, item, {
      id: '__system_log__'
    });
  }
  function networkEndLog(item) {
    var _a, _b, _c, _d, _e;
    console.log('[system]', "&gt; [response ".concat(item.requestType, "]"), item.url, item.response, item);
    if (item.rdevRequestId &amp;&amp; ((_b = (_a = window.RemoteDevSdk) === null || _a === void 0 ? void 0 : _a.instance) === null || _b === void 0 ? void 0 : _b.Network) &amp;&amp; item.id !== '__system_log__') {
      try {
        var finishedOptions = {
          requestId: item.rdevRequestId,
          url: item.url,
          status: +(item.status || '500'),
          statusText: StatusTextMap[+(item.status || '500')] || 'Error',
          responseHeaders: {
            RDEV_RESPONSE_TYPE: item.requestType
          },
          responseBody: item.response,
          requestTime: item.requestTime || 0,
          duration: item.costTime || (item.endTime &amp;&amp; item.startTime ? item.endTime - item.startTime : performance.now() / 1000 - (item.requestTime || 0))
        };
        window.RemoteDevSdk.instance.Network.customRequestFinished(finishedOptions);
      } catch (err) {}
    }
    if (((_c = window.vConsole) === null || _c === void 0 ? void 0 : _c.network) &amp;&amp; item.id !== '__system_log__') {
      try {
        item.statusText = "".concat(item.status);
        item.responseSize = item.response.length;
        item.responseSizeText = "".concat(item.response.length);
        return (_e = (_d = window.vConsole.network).update) === null || _e === void 0 ? void 0 : _e.call(_d, item.id, Object.assign({}, item, {
          readyState: 4
        }));
      } catch (err) {}
    }
  }
  function reqType(obj, path) {
    return obj.url.indexOf(path) &gt; -1 &amp;&amp; obj.url.indexOf('action=') === -1 &amp;&amp; (!obj.data || !obj.data.action);
  }
  function findAjaxScopeByConfig(url, config) {
    var pathname = new URL(url, location.href).pathname || '';
    var scope = config[pathname.slice(1)];
    if (scope) {
      return scope;
    }
  }
  function getAjaxScope(ajaxUrl) {
    if (Url.getQuery('no_transfer', location.href) !== '1' &amp;&amp; MMVersion.isWechat &amp;&amp; !MMVersion.isInMiniProgram &amp;&amp; !MMVersion.isWxWork &amp;&amp; !MMVersion.isMpapp &amp;&amp; !isAcrossOrigin &amp;&amp; window.__ajaxTransferConfig &amp;&amp; _typeof$3(window.__ajaxTransferConfig) === 'object' &amp;&amp; (
    MMVersion.isIOS &amp;&amp; MMVersion.compareHexVersion('1800282F') || MMVersion.isAndroid &amp;&amp; MMVersion.compareHexVersion('28002234') || MMVersion.isWindowsWechat &amp;&amp; MMVersion.cpVersion('3.9.5', 1, true, 'windows') || MMVersion.isMacWechat &amp;&amp; MMVersion.cpVersion('3.8.4', 1, true, 'mac') || MMVersion.isHarmonyWechat &amp;&amp; MMVersion.compareHexVersion('0xf3100b00') &amp;&amp; !MMVersion.compareHexVersion('0xf3100c00') || MMVersion.compareHexVersion('0xf3800b00'))) {
      try {
        return findAjaxScopeByConfig(ajaxUrl, window.__ajaxTransferConfig);
      } catch (err) {
        
      }
    }
  }
  function getActionByData(data) {
    var _a, _b;
    if (_typeof$3(data) === 'object' &amp;&amp; !(data instanceof Blob)) {
      if (data.hasOwnProperty('data') &amp;&amp; typeof data.data === 'string') {
        try {
          var workedData = JSON.parse(data.data);
          return workedData.action || '';
        } catch (e) {}
      }
      return data.action || '';
    }
    if (typeof data === 'string') {
      return ((_b = (_a = data.split(/[?&amp;]/).find(function (x) {
        return x.indexOf('action=') &gt;= 0;
      })) === null || _a === void 0 ? void 0 : _a.split('=')) === null || _b === void 0 ? void 0 : _b[1]) || '';
    }
    return '';
  }

  var METHOD_ENUM = {
    GET: 0,
    POST: 1
  };
  var __moon_report = window.__moon_report || function () {};
  var MOON_AJAX_SUCCESS_OFFSET = 3;
  var MOON_AJAX_NETWORK_OFFSET = 4;
  var MOON_AJAX_ERROR_OFFSET = 5;
  var MOON_AJAX_TIMEOUT_OFFSET = 6;
  var MOON_AJAX_COMPLETE_OFFSET = 7;
  var LENGTH_LIMIT = 4096;
  function reportRtError(type, id, key, content) {
    var log = '';
    var prefix = type === 'rt' ? 'rtCheckError' : 'Ajax Length Limit';
    if (content === null || content === void 0 ? void 0 : content.length) {
      var loglen = 1000;
      var len = content.length;
      var lc = Math.ceil(len / loglen);
      log = ["&amp;lc=".concat(lc)];
      for (var i = 0; i &lt; lc; ++i) {
        log.push("&amp;log".concat(i, "=") + "[".concat(prefix, "][").concat(i, "]").concat(encodeURIComponent(content.substring(i * loglen, i * loglen + loglen))));
      }
      log = log.join('');
    }
    var data = "idkey=".concat(id, "_").concat(key, "_1").concat(log, "&amp;r=").concat(Math.random());
    var xmlobj = new XMLHttpRequest();
    xmlobj.open('POST', "".concat(location.protocol, "//").concat(location.host, "/mp/jsmonitor?"), true);
    xmlobj.setRequestHeader('cache-control', 'no-cache');
    xmlobj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    xmlobj.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    xmlobj.send(data);
    if (type === 'ajaxLen') {
      monitor$1.setLogs({
        id: id,
        key: key,
        value: 1,
        log: log
      });
    }
  }
  function reportRt(id, key, content) {
    reportRtError('rt', id, key, content);
  }
  function reportAjaxLength(id, key, content) {
    reportRtError('ajaxLen', id, key, content);
  }
  function setXhrHeader(xhr, type, opt) {
    if (opt.contentType) {
      xhr.setRequestHeader('Content-Type', opt.contentType);
    } else if (type === 'POST') {
      xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    }
    if (!opt.noXRequestedWidthHeader) {
      xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    }
  }
  function Ajax(obj) {
    var report36408 = typeof obj.report36408 === 'function' ? obj.report36408 : function () {};
    if (obj.usePb) {
      obj.type = 'POST';
      obj.data = {
        data: JSON.stringify(obj.data)
      };
    }
    var ajaxScope = getAjaxScope(obj.url);
    var type = (obj.type || 'GET').toUpperCase();
    var timer;
    var _url;
    if (obj.notJoinUrl) {
      _url = obj.url;
    } else {
      _url = Url.joinUrl(obj.url);
    }
    Url.joinUserArticleRole(_url, !!obj.notJoinUrl, function (url) {
      var urlObj = new URL(url, location.origin);
      if (obj.f === 'html') {
        url = url.replace('&amp;f=json', '');
      }
      var data = null;
      if (obj.data instanceof Blob) {
        data = obj.data;
      } else if (_typeof$3(obj.data) === 'object') {
        var d = obj.data;
        var ds = [];
        for (var k in d) {
          if (d.hasOwnProperty(k)) {
            ds.push("".concat(k, "=").concat(encodeURIComponent(d[k])));
          }
        }
        data = ds.join('&amp;');
      } else {
        data = typeof obj.data === 'string' ? obj.data : null;
      }
      var beginTs;
      var beforeReq = function beforeReq() {
        if (reqType(obj, '/mp/getappmsgext')) {
          window.startGetAppmsgExtTime = Date.now();
          Log.log('start get appmsgext, url: ', obj.url);
        }
        if (reqType(obj, '/mp/getappmsgad')) {
          window.startGetAppmsgAdTime = Date.now();
          Log.log('start get appmsgad, url: ', obj.url);
        }
        beginTs = Date.now();
      };
      var beforeResp = function beforeResp(xhr) {
        if (reqType(obj, '/mp/getappmsgext')) {
          window.receiveGetAppmsgExt = "".concat(xhr.status, "|").concat(Date.now());
          Log.log("receive appmsgext response, status: ".concat(xhr.status));
        }
        if (reqType(obj, '/mp/getappmsgad')) {
          window.receiveGetAppmsgAd = "".concat(xhr.status, "|").concat(Date.now());
          Log.log("receive appmsgad response, status: ".concat(xhr.status));
        }
        if (Math.random() &lt; 0.001 &amp;&amp; window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs) {
          try {
            var key = ajaxScope ? 'transfer' : 'xhr';
            var interval = 250;
            var time = Date.now() - beginTs;
            var range = Math.floor(time / interval) * interval;
            var pathname = new URL(obj.url, location.href).pathname || '';
            window.WX_BJ_REPORT.BadJs.report("".concat(key, "_perf:").concat(pathname), JSON.stringify({
              status: xhr.status,
              time: "[".concat(range, "-").concat(range + interval, ")")
            }), {
              mid: 'mmbizwap:ajaxtransfer',
              view: 'wap_business'
            });
          } catch (err) {}
        }
      };
      var handleRespSucc = function handleRespSucc(xhr, requestType) {
        var _a, _b, _c, _d;
        try {
          var responseText = xhr.responseText;
          var resp = responseText;
          if (obj.dataType === 'json') {
            try {
              if (JSON &amp;&amp; JSON.parse) {
                resp = JSON.parse(resp);
              } else {
                resp = eval("(".concat(resp, ")"));
                monitor$1.setSum(523105, 127, 1).send();
              }
              var rtId = obj.rtId;
              var rtKey = obj.rtKey || 0;
              var rtDesc = obj.rtDesc;
              if (rtId &amp;&amp; rtDesc &amp;&amp; RespTypes &amp;&amp; !RespTypes.check(resp, rtDesc)) {
                reportRt(+rtId, +rtKey, "".concat(RespTypes.getMsg(), "[detail]").concat(responseText, ";").concat(obj.url));
              }
              if (resp &amp;&amp; resp.base_resp &amp;&amp; ((_a = resp.base_resp) === null || _a === void 0 ? void 0 : _a.ret) !== 0 &amp;&amp; typeof window.WX_BJ_REPORT !== 'undefined' &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; Math.random() &lt; 0.001) {
                var reportUrl = url;
                if (url.indexOf('?') !== -1) {
                  reportUrl = url.substring(0, url.indexOf('?'));
                  if (Url.getQuery('action', url)) {
                    reportUrl = "".concat(reportUrl, "?action=").concat(Url.getQuery('action', url));
                  }
                }
                if (!((reportUrl === '/mp/getappmsgext' || reportUrl === '/mp/getappmsgad') &amp;&amp; typeof resp.base_resp.ret === 'undefined')) {
                  window.WX_BJ_REPORT.BadJs.report(reportUrl, "ret=".concat(resp.base_resp.ret), {
                    mid: window.PAGE_MID,
                    view: 'wap_retcode'
                  });
                }
              }
            } catch (e) {
              obj.error &amp;&amp; obj.error(xhr, {
                type: 1,
                error: e,
                status: xhr.status
              });
              if (!obj.dontReport) {
                report36408({
                  CgiPath: urlObj.pathname || '',
                  Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                  Query: urlObj.search || '',
                  PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                  Method: type || '',
                  RequestType: requestType || 0,
                  RetType: 1,
                  HttpCode: xhr.status || 0,
                  Ret: 0
                });
              }
              return;
            }
          }
          if (_typeof$3(resp) === 'object' &amp;&amp; ((_b = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _b === void 0 ? void 0 : _b.ret) !== 0) {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                Method: type || '',
                RequestType: requestType || 0,
                RetType: 4,
                HttpCode: xhr.status || 0,
                Ret: ((_c = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _c === void 0 ? void 0 : _c.ret) || 0
              });
            }
          } else {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                Method: type || '',
                RequestType: requestType || 0,
                RetType: 0,
                HttpCode: xhr.status || 0,
                Ret: ((_d = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _d === void 0 ? void 0 : _d.ret) || 0
              });
            }
          }
          obj.success &amp;&amp; obj.success(resp);
        } catch (e) {
          __moon_report({
            offset: MOON_AJAX_SUCCESS_OFFSET,
            e: e
          });
          throw e;
        }
      };
      var handleRespErr = function handleRespErr(xhr, error, requestType) {
        try {
          obj.error &amp;&amp; obj.error(xhr, {
            type: 2,
            error: error,
            status: xhr.status
          });
          if (!obj.dontReport) {
            report36408({
              CgiPath: urlObj.pathname || '',
              Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
              Query: urlObj.search || '',
              PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
              Method: type,
              RequestType: requestType,
              RetType: 2,
              HttpCode: xhr.status,
              Ret: 0
            });
          }
        } catch (e) {
          __moon_report({
            offset: MOON_AJAX_ERROR_OFFSET,
            e: e
          });
          throw e;
        }
      };
      var handleRespComplete = function handleRespComplete() {
        clearTimeout(timer);
        try {
          obj.complete &amp;&amp; obj.complete();
        } catch (e) {
          __moon_report({
            offset: MOON_AJAX_COMPLETE_OFFSET,
            e: e
          });
          throw e;
        }
        obj.complete = null;
      };
      var handleReqTimeout = function handleReqTimeout(xhr) {
        if (typeof obj.timeout !== 'undefined') {
          timer = setTimeout(function () {
            xhr.abort();
            try {
              obj.complete &amp;&amp; obj.complete();
            } catch (e) {
              __moon_report({
                offset: MOON_AJAX_COMPLETE_OFFSET,
                e: e
              });
              throw e;
            }
            obj.complete = null;
            __moon_report({
              offset: MOON_AJAX_TIMEOUT_OFFSET,
              log: "ajax_timeout_error: ".concat(url),
              e: ''
            });
          }, obj.timeout);
        }
      };
      var retryXhrFn = function retryXhrFn(res, isTimeout, reqLogItem) {
        var retryXhr = new XMLHttpRequest();
        try {
          retryXhr._noVConsole = true;
        } catch (err) {}
        retryXhr.open(type, url);
        retryXhr.onreadystatechange = function () {
          if (isTimeout) return;
          if (retryXhr.readyState === 3) {
            obj.received &amp;&amp; obj.received(retryXhr);
          }
          if (retryXhr.readyState === 4) {
            beforeResp(retryXhr);
            var retryStatus = retryXhr.status;
            if (retryStatus &gt;= 200 &amp;&amp; retryStatus &lt; 400) {
              handleRespSucc(retryXhr, 1);
            } else {
              handleRespErr(retryXhr, res, 1);
              window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; window.WX_BJ_REPORT.BadJs.report('req_failure', JSON.stringify({
                retryXhrStatus: retryStatus,
                transferRes: res
              }), {
                mid: 'mmbizwap:ajaxtransfer',
                view: 'wap_business'
              });
            }
            reqLogItem.status = retryStatus;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = retryXhr.responseText;
            handleRespComplete();
            networkEndLog(reqLogItem);
          }
        };
        setXhrHeader(retryXhr, type, obj);
        retryXhr.send(data);
      };
      if (ajaxScope &amp;&amp; !obj.pureHttp) {
        var header = {
          'User-Agent': navigator.userAgent,
          'Cookie': (window.__test_env__ ? 'uniproxy_route=1; ' : '') + document.cookie,
          'Referer': location.href
        };
        if (obj.contentType) {
          header['Content-Type'] = obj.contentType;
        } else if (type === 'POST') {
          header['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
        }
        if (!obj.noXRequestedWidthHeader) {
          header['X-Requested-With'] = 'XMLHttpRequest';
        }
        var reqUrl = new URL(url, location.href).href;
        var method = METHOD_ENUM[type] || 0;
        var params = Device.os.pc ? {
          url: reqUrl,
          req_json: data || '',
          scope: ajaxScope,
          webcgi_method: method,
          webcgi_header: Object.keys(header).map(function (headerItemKey) {
            return Device.os.Mac ? _defineProperty$1({}, headerItemKey, header[headerItemKey]) : {
              key: headerItemKey,
              value: header[headerItemKey]
            };
          }),
          cgi_type: 1
        } : {
          reqUrl: reqUrl,
          reqBody: data,
          scope: ajaxScope,
          method: method,
          header: header
        };
        var reqLogItem = networkStartLog({
          method: type,
          url: url,
          postData: obj.data || {},
          requestHeader: header,
          requestType: 'transfer',
          startTime: Date.now(),
          responseType: url.indexOf('f=json') &gt; 0 ? 'json' : undefined
        });
        var isTimeout = false;
        handleReqTimeout({
          abort: function abort() {
            isTimeout = true;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = 'timeout';
            networkEndLog(reqLogItem);
          }
        });
        Device.os.pc &amp;&amp; monitor$1.setSum(115849, 69, 1);
        R$4.invoke(Device.os.pc ? 'H5ExtTransfer' : 'webTransfer', params, function (res) {
          var _a, _b, _c, _d, _e, _f;
          if (isTimeout) return;
          var status = 400;
          var result = '';
          if (Device.os.pc) {
            try {
              var retFlag = res.base_resp.ret === 0 &amp;&amp; res.jsapi_resp.ret === 0 &amp;&amp; res.err_msg.indexOf(':ok') &gt; -1;
              var respJsonFlag = res.jsapi_resp.resp_json;
              status = retFlag &amp;&amp; respJsonFlag ? 200 : 400;
              result = res.jsapi_resp.resp_json;
            } catch (err) {
              console.error(err);
            }
          } else {
            status = res &amp;&amp; res.errCode * 1 === 0 &amp;&amp; typeof res.result === 'string' &amp;&amp; res.result ? 200 : 400;
            result = res.result;
          }
          try {
            Log.log("ajax transfer, status: ".concat(status, ", reqUrl: ").concat(reqUrl));
          } catch (err) {
            console.error(err);
          }
          if (status &gt;= 200 &amp;&amp; status &lt; 400) {
            obj.received &amp;&amp; obj.received(null);
            beforeResp({
              status: status
            });
            handleRespSucc({
              status: status,
              responseText: result
            }, 10);
            reqLogItem.status = status;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = result;
            handleRespComplete();
            networkEndLog(reqLogItem);
          } else if (window.__second_open__) {
            R$4.invoke('request', {
              url: reqUrl,
              method: type,
              data: data,
              header: header
            }, function (retryRes) {
              try {
                Log.log("ajax retry request, retryStatus: ".concat((retryRes === null || retryRes === void 0 ? void 0 : retryRes.statusCode) || '', ", reqUrl: ").concat(reqUrl));
              } catch (err) {
                console.error(err);
              }
              if (isTimeout) return;
              var retryStatus = retryRes.statusCode;
              obj.received &amp;&amp; obj.received(null);
              beforeResp({
                status: retryStatus
              });
              if (retryRes.err_msg.indexOf(':ok') &gt; -1 &amp;&amp; retryStatus &gt;= 200 &amp;&amp; retryStatus &lt; 400) {
                handleRespSucc({
                  status: retryStatus,
                  responseText: retryRes.data
                }, 20);
              } else {
                retryXhrFn(res, isTimeout, reqLogItem);
                handleRespErr({
                  status: retryStatus
                }, res, 20);
                window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; window.WX_BJ_REPORT.BadJs.report('req_failure_sec_open', JSON.stringify({
                  retryReqJsapiRes: retryRes,
                  transferRes: res,
                  url: reqUrl
                }), {
                  mid: 'mmbizwap:ajaxtransfer',
                  view: 'wap_business'
                });
              }
              reqLogItem.status = retryStatus;
              reqLogItem.endTime = Date.now();
              reqLogItem.response = retryRes.data;
              handleRespComplete();
              networkEndLog(reqLogItem);
            });
          } else {
            retryXhrFn(res, isTimeout, reqLogItem);
          }
          if (Device.os.pc) {
            if (!res.err_msg.includes(':ok')) {
              (_b = (_a = window.WX_BJ_REPORT) === null || _a === void 0 ? void 0 : _a.BadJs) === null || _b === void 0 ? void 0 : _b.report("pc transfer res no ok: ".concat(res.err_msg), params.url || '', {
                mid: window.PAGE_MID,
                _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
              });
            }
            try {
              if (res.jsapi_resp.resp_json &amp;&amp; JSON.parse(res.jsapi_resp.resp_json).base_resp.ret !== 0 &amp;&amp; JSON.parse(res.jsapi_resp.resp_json).base_resp.ret !== 190001 || res.base_resp.ret !== 0 || res.jsapi_resp.ret !== 0) {
                (_d = (_c = window.WX_BJ_REPORT) === null || _c === void 0 ? void 0 : _c.BadJs) === null || _d === void 0 ? void 0 : _d.report("pc transfer res invalid ret", params.url || '', {
                  mid: window.PAGE_MID,
                  _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
                });
              }
            } catch (err) {}
          } else {
            try {
              if (res.errCode !== 0) {
                (_f = (_e = window.WX_BJ_REPORT) === null || _e === void 0 ? void 0 : _e.BadJs) === null || _f === void 0 ? void 0 : _f.report("mobile transfer res invalid ret", params.url || '', {
                  mid: window.PAGE_MID,
                  _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
                });
              }
            } catch (err) {}
          }
        });
        beforeReq();
        return;
      }
      var xhr = new XMLHttpRequest();
      var mayAbort = !!obj.mayAbort;
      var async = typeof obj.async === 'undefined' ? true : obj.async;
      var _onreadystatechange = xhr.onreadystatechange;
      xhr.open(type, url, async);
      xhr.onreadystatechange = function () {
        if (typeof _onreadystatechange === 'function') {
          _onreadystatechange.apply(xhr);
        }
        if (xhr.readyState === 3) {
          obj.received &amp;&amp; obj.received(xhr);
        }
        if (xhr.readyState === 4) {
          beforeResp(xhr);
          xhr.onreadystatechange = null;
          var status = xhr.status;
          if (status &gt;= 200 &amp;&amp; status &lt; 400) {
            handleRespSucc(xhr, 1);
          } else {
            handleRespErr(xhr, 'status error', 1);
            if (!!status || !mayAbort) {
              var __ajaxtest = window.__ajaxtest || '0';
              __moon_report({
                offset: MOON_AJAX_NETWORK_OFFSET,
                log: "ajax_network_error[".concat(status, "][").concat(__ajaxtest, "]: ").concat(url, ";host:").concat(location.host),
                e: ''
              });
            }
          }
          handleRespComplete();
        }
      };
      setXhrHeader(xhr, type, obj);
      handleReqTimeout(xhr);
      try {
        xhr.send(data);
        try {
          if (url &amp;&amp; url.length &gt; LENGTH_LIMIT) {
            reportAjaxLength(27613, 17, "ajax get limit[length: ".concat(url.length, "]").concat(url.substring(0, 1024)));
          }
          if (data &amp;&amp; !(data instanceof Blob) &amp;&amp; data.length &gt; LENGTH_LIMIT) {
            reportAjaxLength(27613, 18, "ajax post limit[length: ".concat(data.length, "]").concat(data.substring(0, 1024)));
          }
          if (data &amp;&amp; data instanceof Blob &amp;&amp; data.size &gt; LENGTH_LIMIT) {
            reportAjaxLength(27613, 18, "ajax post limit[length: ".concat(data.size, "]blob"));
          }
        } catch (e) {
        }
      } catch (e) {
        obj.error &amp;&amp; obj.error(xhr, {
          type: 3,
          error: e,
          status: 0
        });
      }
      beforeReq();
    });
  }

  
  var photoAccountsEnv = null;
  var getEnv = function getEnv() {
    var forceUpdate = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : false;
    if (window.__wxWebEnv &amp;&amp; (!photoAccountsEnv || forceUpdate)) {
      try {
        photoAccountsEnv = window.__wxWebEnv &amp;&amp; typeof window.__wxWebEnv.getEnv === 'function' &amp;&amp; window.__wxWebEnv.getEnv();
        photoAccountsEnv = photoAccountsEnv ? JSON.parse(photoAccountsEnv) : undefined;
      } catch (error) {
        photoAccountsEnv = undefined;
        console.error('photo accounts env error', error);
      }
    }
    return photoAccountsEnv;
  };
  var isPcDebugVersion = MMVersion.isWindowsWechat &amp;&amp; MMVersion.compareHexVersion('0xf2550000') || MMVersion.isMacWechat &amp;&amp; MMVersion.compareHexVersion('0xf2650000');
  var photoAccountsEnableforC = function photoAccountsEnableforC() {
    var _a, _b, _c, _d;
    return ((_b = (_a = getEnv()) === null || _a === void 0 ? void 0 : _a.photoAccount) === null || _b === void 0 ? void 0 : _b.supportViewPhotoAcct) === 1 || MMVersion.isPcWechat &amp;&amp; ((_d = (_c = window.cgiDataNew) === null || _c === void 0 ? void 0 : _c.user_info) === null || _d === void 0 ? void 0 : _d.support_view_photo_acct) || isPcDebugVersion || MMVersion.isWxWork;
  };
  var photoAccountsEnableProfileExt = function photoAccountsEnableProfileExt() {
    var _a, _b, _c, _d;
    return ((_b = (_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.user_info) === null || _b === void 0 ? void 0 : _b.support_view_photo_profileext) || ((_d = (_c = window.cgiData) === null || _c === void 0 ? void 0 : _c.user_info) === null || _d === void 0 ? void 0 : _d.support_view_photo_profileext) || MMVersion.isWxWork;
  };
  var notSupportPhotoAccountsToast = function notSupportPhotoAccountsToast() {
    R$4.invoke('openUrlWithExtraWebview', {
      url: 'https://mp.weixin.qq.com/mp/readtemplate?t=wxversion/index&amp;for=photoAccount#wechat_redirect',
      openType: 1
    });
  };
  var supportPhotoAccounts = function supportPhotoAccounts() {
    var needTips = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : true;
    if (photoAccountsEnableforC()) {
      return true;
    } else {
      needTips &amp;&amp; notSupportPhotoAccountsToast();
      return false;
    }
  };

  
  var getBizAttrName = function getBizAttrName(serviceType, platform, phAccountDefault) {
    var _a;
    if (serviceType === void 0) {
      serviceType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.new_service_type) || 0;
    }
    if (platform === void 0) {
      platform = 'wechat';
    }
    if (serviceType === 8) {
      if (platform === 'wechat') {
        return '贴图号' ;
      } else {
        return '贴图号';
      }
    }
    if (serviceType === 2) return '服务号';
    return '公众号';
  };
  
  var getBrandServiceType = function getBrandServiceType() {
    var serviceType = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : window.service_type;
    var _a, _b;
    var brandServiceType = 0;
    if (serviceType !== undefined) brandServiceType = serviceType + 1;
    if (((_b = (_a = window.cgiData) === null || _a === void 0 ? void 0 : _a.trans_appmsg_info) === null || _b === void 0 ? void 0 : _b.trans_type) * 1 === 1) brandServiceType = 3;
    return brandServiceType;
  };

  function setCurrentMpInfo(ifShow) {
    var supportNewTopBar = MMVersion.isIOS &amp;&amp; MMVersion.gtVersion('7.0.10', true) || MMVersion.isAndroid &amp;&amp; MMVersion.gtVersion('7.0.12', true);
    var supportLiveStatus = MMVersion.isIOS &amp;&amp; MMVersion.gtVersion('8.0.46', true) || MMVersion.isAndroid &amp;&amp; MMVersion.gtVersion('8.0.46', true);
    R$4.invoke('currentMpInfo', {
      userName: window.user_name,
      brandName: !!supportNewTopBar &amp;&amp; window.nickname === '' ? '未命名账号' : window.title,
      title: window.msg_title || '',
      brandIcon: window.hd_head_img.replace(/\/0$/, '/132'),
      itemShowType: window.item_show_type,
      isPaySubscribe: window.isPaySubscribe,
      topBarStyle: supportNewTopBar ? 1 : 0,
      topBarShowed: ifShow,
      disableShowFinderLiveTopBar: !ifShow &amp;&amp; supportLiveStatus ? 1 : 0,
      brandServiceType: getBrandServiceType()
    }, function () {});
  }
  function AjaxWx(obj) {
    var report36408 = typeof obj.report36408 === 'function' ? obj.report36408 : function () {};
    obj.url += obj.url.indexOf('?') === -1 ? '?fasttmplajax=1' : '&amp;fasttmplajax=1';
    if (getAjaxScope(obj.url)) {
      Ajax(obj);
      return;
    }
    if (obj.usePb) {
      obj.type = 'POST';
      obj.data = {
        data: JSON.stringify(obj.data)
      };
    }
    if (!/^(http:\/\/|https:\/\/|\/\/)/.test(obj.url)) {
      obj.url = "https://mp.weixin.qq.com/".concat(obj.url.replace(/^\//, ''));
    } else if (/^\/\//.test(obj.url)) {
      obj.url = "https:".concat(obj.url);
    }
    if (obj.f !== 'html' &amp;&amp; (obj.url.indexOf('?f=json') === -1 || obj.url.indexOf('&amp;f=json') === -1)) {
      obj.url += '&amp;f=json';
    }
    if (!obj.notJoinUrl &amp;&amp; obj.f !== 'html') {
      obj.url = Url.joinUrl(obj.url);
    }
    Url.joinUserArticleRole(obj.url, !!obj.notJoinUrl, function (url) {
      obj.url = url;
      var urlObj = new URL(url, location.origin);
      var data = null;
      if (_typeof$3(obj.data) === 'object') {
        var d = obj.data;
        var ds = [];
        for (var k in d) {
          if (d.hasOwnProperty(k)) {
            ds.push("".concat(k, "=").concat(encodeURIComponent(d[k])));
          }
        }
        data = ds.join('&amp;');
      } else {
        data = typeof obj.data === 'string' ? obj.data : null;
      }
      var header = {
        Cookie: document.cookie,
        referer: location.href
      };
      if (obj.contentType) {
        header['Content-Type'] = obj.contentType;
      } else if ((obj.type || 'GET').toUpperCase() === 'POST') {
        header['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
      }
      var reqLogItem = networkStartLog({
        method: obj.type || 'GET',
        url: obj.url,
        postData: obj.data || {},
        requestHeader: header,
        requestType: 'jsapi',
        startTime: Date.now()
      });
      var retryTime = 1;
      var jsapiRequest = function jsapiRequest(obj, data) {
        return R$4.invoke('request', {
          url: obj.url,
          method: obj.type,
          data: data,
          header: header
        }, function (res) {
          var _a, _b, _c, _d, _e, _f;
          if (res.err_msg.indexOf(':ok') &gt; -1 &amp;&amp; (!res.statusCode || res.statusCode &gt;= 200 &amp;&amp; res.statusCode &lt; 400)) {
            if (reqType(obj, '/mp/getappmsgext')) {
              window.receiveGetAppmsgExt = "".concat(res.statusCode, "|").concat(Date.now());
            }
            if (reqType(obj, '/mp/getappmsgad')) {
              window.receiveGetAppmsgAd = "".concat(res.statusCode, "|").concat(Date.now());
            }
            if (retryTime === 1) {
              obj.received &amp;&amp; obj.received(null);
            }
            var resData = {};
            if (res.data) {
              try {
                if (obj.dataType === 'json') {
                  resData = JSON.parse(res.data);
                } else {
                  resData = res.data;
                }
                if (resData &amp;&amp; resData.base_resp &amp;&amp; ((_a = resData.base_resp) === null || _a === void 0 ? void 0 : _a.ret) !== 0 &amp;&amp; typeof window.WX_BJ_REPORT !== 'undefined' &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; Math.random() &lt; 0.001) {
                  var reportUrl = obj.url;
                  if (obj.url.indexOf('?') !== -1) {
                    reportUrl = obj.url.substring(0, obj.url.indexOf('?'));
                    if (Url.getQuery('action', obj.url)) {
                      reportUrl = "".concat(reportUrl, "?action=").concat(Url.getQuery('action', obj.url));
                    }
                  }
                  if (!((reportUrl === '/mp/getappmsgext' || reportUrl === '/mp/getappmsgad') &amp;&amp; typeof resData.base_resp.ret === 'undefined')) {
                    window.WX_BJ_REPORT.BadJs.report(reportUrl, "ret=".concat(resData.base_resp.ret), {
                      mid: window.PAGE_MID,
                      view: 'wap_retcode'
                    });
                  }
                }
              } catch (e) {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 1,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_b = resData === null || resData === void 0 ? void 0 : resData.base_resp) === null || _b === void 0 ? void 0 : _b.ret) || 0
                  });
                }
                console.error(e);
                obj.error &amp;&amp; obj.error(null, {
                  type: 1,
                  error: e,
                  status: res.statusCode
                });
                obj.complete &amp;&amp; obj.complete();
                reqLogItem.endTime = Date.now();
                reqLogItem.response = res;
                networkEndLog(reqLogItem);
                return;
              }
            }
            var tmpResData = {};
            try {
              tmpResData = JSON.parse(res.data);
            } catch (e) {}
            if (tmpResData &amp;&amp; tmpResData.base_resp &amp;&amp; tmpResData.base_resp.ret === -3 &amp;&amp; retryTime &lt; 2 &amp;&amp; (MMVersion.isIOS || MMVersion.isAndroid &amp;&amp; MMVersion.getInner() &gt; '27000600')) {
              if (!obj.dontReport) {
                report36408({
                  CgiPath: urlObj.pathname || '',
                  Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                  Query: urlObj.search || '',
                  PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                  Method: obj.type || '',
                  RequestType: 20,
                  RetType: 1,
                  HttpCode: res.statusCode || 0,
                  Ret: ((_c = resData === null || resData === void 0 ? void 0 : resData.base_resp) === null || _c === void 0 ? void 0 : _c.ret) || 0
                });
              }
              var _retryTime = retryTime++;
              R$4.invoke('updatePageAuth', {}, function (res) {
                console.log('[skeleton] updatePageAuth', res);
                monitor$1.setSum(112287, 3, 1);
                if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf(':ok') &gt; -1) {
                  window.top.pass_ticket = encodeURIComponent(Url.getQuery('pass_ticket', res.fullUrl).html(false).replace(/\s/g, '+'));
                  if (obj.pass_ticket) {
                    obj.pass_ticket = window.top.pass_ticket;
                  }
                  console.warn('[skeleton] updatePageAuth resetTopbar');
                  var supportNewTopBar = MMVersion.isIOS &amp;&amp; MMVersion.gtVersion('7.0.10', true);
                  var showBottomBar = !!window.is_login;
                  if (window.top.item_show_type === '0' &amp;&amp; supportNewTopBar) {
                    var top = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop || 0;
                    setCurrentMpInfo(top &gt; 40 &amp;&amp; !showBottomBar);
                  }
                  try {
                    obj.url = Url.addParam(obj.url, 'retry', _retryTime, true);
                  } catch (err) {
                    console.error(err);
                  }
                  jsapiRequest(obj, data);
                  monitor$1.setSum(112287, 4, 1);
                } else {
                  obj.success &amp;&amp; obj.success(resData);
                  obj.complete &amp;&amp; obj.complete();
                  if (MMVersion.isIOS) {
                    monitor$1.setSum(112287, 35, 1);
                  } else {
                    monitor$1.setSum(112287, 36, 1);
                  }
                  reqLogItem.status = 200;
                  reqLogItem.endTime = Date.now();
                  reqLogItem.response = resData;
                  networkEndLog(reqLogItem);
                }
              });
            } else {
              if (((_d = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _d === void 0 ? void 0 : _d.ret) !== 0) {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 4,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_e = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _e === void 0 ? void 0 : _e.ret) || 0
                  });
                }
              } else {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 0,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_f = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _f === void 0 ? void 0 : _f.ret) || 0
                  });
                }
              }
              obj.success &amp;&amp; obj.success(resData);
              obj.complete &amp;&amp; obj.complete();
              reqLogItem.status = 200;
              reqLogItem.endTime = Date.now();
              reqLogItem.response = resData;
              networkEndLog(reqLogItem);
            }
          } else if (res.err_msg.indexOf('no permission') &gt; -1 || !MMVersion.isOnlyWechat) {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                Method: obj.type || '',
                RequestType: 20,
                RetType: 1,
                HttpCode: res.statusCode || 0,
                Ret: 0
              });
            }
            Ajax(obj);
            if (res.err_msg.indexOf('no permission') &gt; -1) {
              console.warn('[JSAPI Request] No permission');
              monitor$1.setSum(112287, 31, 1);
            }
            reqLogItem.status = 302;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = res;
            networkEndLog(reqLogItem);
          } else {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                Method: obj.type || '',
                RequestType: 20,
                RetType: 2,
                HttpCode: res.statusCode || 0,
                Ret: 0
              });
            }
            obj.error &amp;&amp; obj.error(null, {
              type: 3,
              error: res,
              status: 0
            });
            obj.complete &amp;&amp; obj.complete();
            monitor$1.setSum(112287, 32, 1);
            var sample = 0.001;
            if (Math.random() &lt; sample) {
              var msg = "request: ".concat(JSON.stringify(obj.type), " ").concat(JSON.stringify(obj.url), " ;;;; cookie: ").concat(JSON.stringify(document.cookie), " ;;;; data: ").concat(JSON.stringify(data), " ;;;; resp: ").concat(JSON.stringify(res));
              if (window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs) {
                window.WX_BJ_REPORT.BadJs.report('ajax_wx_request_error', msg, {
                  mid: 'mmbizwap:Monitor'
                });
              }
            }
            reqLogItem.status = 400;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = res;
            networkEndLog(reqLogItem);
          }
        });
      };
      if (reqType(obj, '/mp/getappmsgext')) {
        window.startGetAppmsgExtTime = Date.now();
      }
      if (reqType(obj, '/mp/getappmsgad')) {
        window.startGetAppmsgAdTime = Date.now();
      }
      jsapiRequest(obj, data);
    });
  }

  function _regeneratorRuntime$5() {  _regeneratorRuntime$5 = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof$3(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof$3(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  var AjaxRouter = function () {
    var _ref = _asyncToGenerator$1( _regeneratorRuntime$5().mark(function _callee(obj) {
      return _regeneratorRuntime$5().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            if (!window.__secPageAuthPromise) {
              _context.next = 3;
              break;
            }
            _context.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            if (!(!MMVersion.isWxWork &amp;&amp; (window.__second_open__ || !getIsAcrossOrigin() &amp;&amp; top.window.__second_open__) &amp;&amp; window.__is_page_auth_return__ &amp;&amp; !obj.pureHttp)) {
              _context.next = 5;
              break;
            }
            return _context.abrupt("return", AjaxWx(obj));
          case 5:
            return _context.abrupt("return", Ajax(obj));
          case 6:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return function AjaxRouter(_x) {
      return _ref.apply(this, arguments);
    };
  }();

  var html$1 = function html(_str, encode) {
    if (!_str) return '';
    var replace = ['&amp;#96;', '`', '&amp;#39;', '\'', '&amp;quot;', '"', '&amp;nbsp;', ' ', '&amp;gt;', '&gt;', '&amp;lt;', '&lt;', '&amp;yen;', '¥', '&amp;amp;', '&amp;', '&amp;#60;', '&lt;', '&amp;#62;', '&gt;'];
    
    var replaceReverse = ['&amp;', '&amp;amp;', '¥', '&amp;yen;', '&lt;', '&amp;lt;', '&gt;', '&amp;gt;', ' ', '&amp;nbsp;', '"', '&amp;quot;', '\'', '&amp;#39;', '`', '&amp;#96;'];
    var str = _str;
    var target;
    if (encode) {
      target = replaceReverse;
    } else {
      target = replace;
    }
    for (var i = 0; i &lt; target.length; i += 2) {
      str = str.replace(new RegExp(target[i], 'g'), target[i + 1]);
    }
    return str;
  };
  var htmlLite = function htmlLite(_str, encode) {
    if (!_str) return '';
    var replace = ['&amp;#96;', '`', '&amp;#39;', '\'', '&amp;quot;', '"', '&amp;gt;', '&gt;', '&amp;lt;', '&lt;', '&amp;amp;', '&amp;'];
    
    var replaceReverse = ['&amp;', '&amp;amp;', '&lt;', '&amp;lt;', '&gt;', '&amp;gt;', '"', '&amp;quot;', '\'', '&amp;#39;', '`', '&amp;#96;'];
    var str = _str;
    var target;
    if (encode) {
      target = replaceReverse;
    } else {
      target = replace;
    }
    for (var i = 0; i &lt; target.length; i += 2) {
      str = str.replace(new RegExp(target[i], 'g'), target[i + 1]);
    }
    return str;
  };
  var htmlEncode = function htmlEncode(str) {
    return html$1(str, true);
  };
  var htmlDecode$1 = function htmlDecode(str) {
    return html$1(str, false);
  };
  var htmlEncodeLite = function htmlEncodeLite(str) {
    return htmlLite(str, true);
  };
  var htmlDecodeLite = function htmlDecodeLite(str) {
    return htmlLite(str, false);
  };
  String.prototype.html = function (encode) {
    return html$1(this.toString(), encode);
  };
  String.prototype.htmlEncode = function () {
    return htmlEncode(this.toString());
  };
  String.prototype.htmlDecode = function () {
    return htmlDecode$1(this.toString());
  };
  String.prototype.htmlLite = function (encode) {
    return htmlLite(this.toString(), encode);
  };
  String.prototype.htmlEncodeLite = function () {
    return htmlEncodeLite(this.toString());
  };
  String.prototype.htmlDecodeLite = function () {
    return htmlDecodeLite(this.toString());
  };

  var isx5 = navigator.userAgent.indexOf('TBS/') !== -1;
  var getDataFunc = [];
  var reportData = [];
  
  var specificData = {};
  function joinUrl(url) {
    var obj = {};
    if (typeof window.uin !== 'undefined') {
      obj.uin = window.uin;
    }
    if (typeof window.key !== 'undefined') {
      obj.key = window.key;
    }
    if (typeof window.pass_ticket !== 'undefined') {
      obj.pass_ticket = window.pass_ticket;
    }
    if (typeof window.wxtoken !== 'undefined') {
      obj.wxtoken = window.wxtoken;
    }
    if (typeof window.devicetype !== 'undefined') {
      obj.devicetype = window.devicetype;
    }
    if (typeof window.clientversion !== 'undefined') {
      obj.clientversion = window.clientversion;
    }
    if (typeof window.appmsg_token !== 'undefined') {
      obj.appmsg_token = window.appmsg_token;
    } else if (url.indexOf('advertisement_report') &gt; -1) {
      new Image().src = "".concat(location.protocol, "//mp.weixin.qq.com/mp/jsmonitor?idkey=68064_13_1&amp;r=").concat(Math.random());
    }
    obj.x5 = isx5 ? '1' : '0';
    obj.f = 'json';
    return Url.join(url, obj);
  }
  function isObj(obj) {
    return obj &amp;&amp; _typeof$3(obj) === 'object';
  }
  function assign(target, source) {
    if (isObj(target) &amp;&amp; isObj(source)) {
      for (var key in source) {
        if (Object.prototype.hasOwnProperty.call(source, key)) {
          target[key] = source[key];
        }
      }
    }
  }
  function assembleReportData(initiative) {
    var leaveReportLog = [];
    leaveReportLog.push({
      content: "[LeaveReport] specificData keys: ".concat(Object.keys(specificData)),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] specificData keys: ".concat(Object.keys(specificData)));
    console.log("[LeaveReport] specificData keys: ".concat(Object.keys(specificData)));
    var allReportData = {};
    for (var reportField in specificData) {
      if (!allReportData[reportField]) {
        allReportData[reportField] = {};
      }
      for (var i = 0; i &lt; specificData[reportField].length; i++) {
        var param = specificData[reportField][i];
        if (typeof param === 'function') {
          try {
            assign(allReportData[reportField], param(initiative));
          } catch (err) {
            leaveReportLog.push({
              content: "[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)),
              timestamp: Date.now()
            });
            Log.error("[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)));
            console.error("[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)));
          }
        } else if (isObj(param)) {
          assign(allReportData[reportField], param);
        }
      }
    }
    leaveReportLog.push({
      content: "[LeaveReport] reportData.length: ".concat(reportData.length),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] reportData.length: ".concat(reportData.length));
    console.log("[LeaveReport] reportData.length: ".concat(reportData.length));
    leaveReportLog.push({
      content: "[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length));
    console.log("[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length));
    for (var _i = 0; _i &lt; getDataFunc.length; _i++) {
      try {
        var data = getDataFunc[_i](initiative);
        if (isObj(data)) {
          reportData.push(data);
        }
      } catch (err) {
        leaveReportLog.push({
          content: "[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)),
          timestamp: Date.now()
        });
        Log.error("[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)));
        console.error("[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)));
      }
    }
    for (var _i2 = 0; _i2 &lt; reportData.length; _i2++) {
      if (reportData[_i2].reportUrl) {
        reportData[_i2].reportUrl = joinUrl(reportData[_i2].reportUrl);
      }
    }
    allReportData.data = {
      'requestList': reportData
    };
    leaveReportLog.push({
      content: "[LeaveReport] final reportData.length: ".concat(reportData.length, ", data=").concat(JSON.stringify(reportData)),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] final reportData.length: ".concat(reportData.length));
    console.log("[LeaveReport] final reportData.length: ".concat(reportData.length));
    allReportData.info = leaveReportLog;
    return allReportData;
  }
  function addReport(param) {
    if (typeof param === 'function') {
      getDataFunc.push(param);
    } else if (isObj(param)) {
      reportData.push(param);
    }
  }
  
  function addSpecificReport(reportField, param) {
    if (!specificData[reportField]) {
      specificData[reportField] = [];
    }
    specificData[reportField].push(param);
  }
  
  function reportNow(callback) {
    var allReportData = assembleReportData(true);
    R$4.invoke('handleMPPageAction', {
      action: 'reportByLeaveForMPGateway',
      reportData: allReportData
    }, function (res) {
      if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf(':ok') !== -1) {
        getDataFunc = [];
        reportData = [];
        specificData = {};
        typeof callback === 'function' &amp;&amp; callback(res);
      } else {
        getDataFunc = [];
        reportData = [];
        var len = allReportData.data.requestList.length;
        allReportData.data.requestList.forEach(function (req) {
          if (req.reportUrl) {
            AjaxRouter({
              type: req.method || 'GET',
              url: req.reportUrl,
              data: req.reportData,
              async: false,
              success: function success(resp) {
                if (--len &lt; 0) {
                  typeof callback === 'function' &amp;&amp; callback({
                    err_msg: 'handleMPPageAction:ok',
                    fallback: true,
                    resp: resp
                  });
                }
              },
              error: function error(xhr, err) {
                if (--len &lt; 0) {
                  typeof callback === 'function' &amp;&amp; callback({
                    err_msg: 'handleMPPageAction:fail',
                    fallback: true,
                    err: err
                  });
                }
              }
            });
          }
        });
      }
    });
  }
  var leaveReport = {
    reportNow: reportNow,
    addReport: addReport,
    addSpecificReport: addSpecificReport
  };
  var _leaveReport = (function () {
    var doc = {};
    var isCrossOrigin = false;
    try {
      doc = top.window.document;
    } catch (e) {
      isCrossOrigin = true;
    }
    if (!isCrossOrigin &amp;&amp; top.window.__leaveReport) {
      return top.window.__leaveReport;
    }
    if (window.__leaveReport) {
      return window.__leaveReport;
    }
    R$4.on('reportOnLeaveForMP', function () {
      return assembleReportData(false);
    });
    return window.__leaveReport = leaveReport;
  })();

  var getReportJson = function getReportJson(logId, rawData) {
    var data = JSON.parse(JSON.stringify(rawData));
    data.log_id = Number(logId);
    data.TimeStamp = Math.round(Date.now() / 1000);
    console.log('[comm_report] reportjson: ', data);
    return JSON.stringify(data);
  };
  var getSuccessHandler = function getSuccessHandler(logId, data, opt) {
    return function (res) {
      if (res &amp;&amp; res.err_code !== 0) {
        console.warn("[comm_report] report ".concat(logId, " fail: "), res.err_msg, data);
      }
      if (typeof opt.success === 'function') {
        opt.success(res);
      }
    };
  };
  var getErrorHandler = function getErrorHandler(logId, data, opt) {
    return function (xhr, info) {
      console.error("[comm_report] report ".concat(logId, " error: "), info, data);
      if (typeof opt.error === 'function') {
        opt.error(xhr, info);
      }
    };
  };
  var batchReportDataArr = [];
  var blackLogId = [25587, 18832, 28208, 25574, 29139, 10945];
  var BATCH_SIZE = 4;
  var BATCH_TIME = 1000;
  var getRepeatedReportJson = function getRepeatedReportJson() {
    if (!batchReportDataArr || !batchReportDataArr.length) return false;
    var reportData = {
      count: 0
    };
    reportData.count = batchReportDataArr.length;
    batchReportDataArr.forEach(function (data, index) {
      reportData["reportjson".concat(index)] = data;
    });
    batchReportDataArr = [];
    console.log('[reportData]: ', reportData);
    return reportData;
  };
  var timeOutId;
  function batchReport() {
    if (!batchReportDataArr || !batchReportDataArr.length) return;
    var repeatedReportJson = getRepeatedReportJson();
    if (!repeatedReportJson) return;
    AjaxRouter({
      type: 'POST',
      dataType: 'json',
      url: '/mp/wapcommreport?action=batch_report',
      data: repeatedReportJson,
      dontReport: true,
      success: function success(res) {
        if (res &amp;&amp; res.err_code) {
          console.warn("[comm_report] batch report fail: ", res.err_msg, batchReportDataArr);
        }
      },
      error: function error(xhr, info) {
        console.error("[comm_report] batch report error: ", info, batchReportDataArr);
      }
    });
  }
  function batchReportThrottle(logId, rawData) {
    var reportJsonData = getReportJson(logId, rawData);
    if (!reportJsonData) return;
    batchReportDataArr.push(reportJsonData);
    if (batchReportDataArr.length &gt;= BATCH_SIZE) {
      batchReport();
    } else {
      if (!timeOutId) {
        timeOutId = setTimeout(function () {
          batchReport();
          clearTimeout(timeOutId);
          timeOutId = null;
        }, BATCH_TIME);
      }
    }
  }
  _leaveReport.addReport(function () {
    var repeatedReportJson = getRepeatedReportJson();
    if (!repeatedReportJson) return false;
    var reportData = [];
    for (var _i = 0, _Object$entries = Object.entries(repeatedReportJson); _i &lt; _Object$entries.length; _i++) {
      var _Object$entries$_i = _slicedToArray$1(_Object$entries[_i], 2),
        key = _Object$entries$_i[0],
        value = _Object$entries$_i[1];
      reportData.push("".concat(key, "=").concat(encodeURIComponent(value)));
    }
    return {
      reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport?action=batch_report',
      reportData: reportData.join('&amp;'),
      method: 'POST'
    };
  });
  var w$5 = {
    report: function report(logId, rawData, rawOpt) {
      var opt = rawOpt || {};
      if (!opt.realTime &amp;&amp; !blackLogId.includes(logId)) {
        batchReportThrottle(logId, rawData);
      } else {
        AjaxRouter({
          type: 'POST',
          dataType: 'json',
          url: '/mp/wapcommreport',
          data: {
            reportjson: getReportJson(logId, rawData)
          },
          async: opt.async,
          success: getSuccessHandler(logId, rawData, opt),
          error: getErrorHandler(logId, rawData, opt)
        });
      }
    },
    leaveReport: function leaveReport(logId, rawData) {
      _leaveReport.addReport(function () {
        var data = typeof rawData === 'function' ? rawData() : rawData;
        if (!data) {
          return false;
        }
        return {
          reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport',
          reportData: "reportjson=".concat(encodeURIComponent(getReportJson(logId, data))),
          method: 'POST'
        };
      });
    },
    reportByBeacon: function reportByBeacon(logId, rawData) {
      try {
        if (!Device.os.android &amp;&amp; !Device.os.ios &amp;&amp; !Device.os.harmony) {
          var data = typeof rawData === 'function' ? rawData() : rawData;
          if (!data) {
            return false;
          }
          var url = '/mp/wapcommreport';
          var reportJsonData = encodeURIComponent(getReportJson(logId, data));
          console.log("reportByBeacon", JSON.stringify(reportJsonData));
          navigator.sendBeacon(Url.joinUrl(url), "reportjson=".concat(reportJsonData));
        } else {
          _leaveReport.addReport(function () {
            var data = typeof rawData === 'function' ? rawData() : rawData;
            if (!data) {
              return false;
            }
            return {
              reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport',
              reportData: "reportjson=".concat(encodeURIComponent(getReportJson(logId, data))),
              method: 'POST'
            };
          });
        }
      } catch (error) {
        console.log(error);
      }
    }
  };

  function getCommonReportData() {
    return {
      Referer: location.href,
      UserAgent: navigator.userAgent,
      Protocol: location.protocol || '',
      Origin: location.host || ''
    };
  }
  var report36408 = function report36408(data) {
    w$5.report(36408, Object.assign(Object.assign({}, data), getCommonReportData()));
  };

  
  var ajax = function ajax(obj) {
    obj.report36408 = report36408;
    AjaxRouter(obj);
  };

  
  var timer = null;
  var jsmonitorReport = {
    setSum: function setSum(id, key, value) {
      throw new Error('Function not implemented.');
    },
    setAvg: function setAvg(id, key, value) {
      throw new Error('Function not implemented.');
    },
    setLogs: function setLogs(opt) {
      throw new Error('Function not implemented.');
    },
    send: function send(async) {
      throw new Error('Function not implemented.');
    }
  };
  window.__monitor_unload_has_done__ = false;
  jsmonitorReport.setSum = function (id, key, value) {
    monitor$1.setSum(id, key, value);
    return jsmonitorReport;
  };
  jsmonitorReport.setAvg = function (id, key, value) {
    monitor$1.setAvg(id, key, value);
    return jsmonitorReport;
  };
  jsmonitorReport.setLogs = function (opt) {
    monitor$1.setLogs(opt);
    return jsmonitorReport;
  };
  jsmonitorReport.send = function (async) {
    if (async !== false) {
      async = true;
    }
    monitor$1.send(async, ajax);
    return jsmonitorReport;
  };
  function reportInterval(fn, delay) {
    timer = window.setTimeout(function () {
      fn();
      reportInterval(fn, delay);
    }, delay);
  }
  reportInterval(function () {
    jsmonitorReport.send();
  }, 1 * 1000);
  window.addEventListener('unload', function () {
    if (window.__monitor_report_has_done__) return;
    window.__ajaxtest = '2';
    if (timer) {
      window.clearTimeout(timer);
      timer = null;
    }
    jsmonitorReport.send(false);
    window.__monitor_unload_has_done__ = true;
  }, false);
  if (window.__jsmonitorReport) {
    jsmonitorReport = window.__jsmonitorReport;
  } else {
    window.__jsmonitorReport = jsmonitorReport;
  }
  var jsmonitorReport$1 = jsmonitorReport;
  
  function saveSpeeds(opt) {
    var sample = 0.001;
    if (typeof opt.sample === 'number') {
      sample = opt.sample;
    }
    var rand = Math.random();
    if (rand &lt; sample) {
      wxgsdk.saveSpeeds(opt);
    }
  }
  function setBasicTime(opt) {
    var sample = opt.sample || 0.001;
    var rand = Math.random();
    if (rand &lt; sample) {
      wxgsdk.setBasicTime(opt);
    }
  }
  function send() {
    wxgsdk.send();
  }
  function jsmonitor(opt) {
    opt = opt || [];
    if (!Array.isArray(opt)) {
      var item = opt;
      opt = [];
      opt.push(item);
    }
    for (var i = 0; i &lt; opt.length; i++) {
      var _item = opt[i];
      var id = _item.id;
      var key = _item.key;
      var value = _item.value || 1;
      if (id !== undefined &amp;&amp; key !== undefined) {
        jsmonitorReport$1.setSum(id, key, value);
      }
    }
  }
  var wxgspeedsdk = {
    saveSpeeds: saveSpeeds,
    setBasicTime: setBasicTime,
    send: send,
    jsmonitor: jsmonitor
  };

  function _arrayWithoutHoles$1(arr) {
    if (Array.isArray(arr)) return _arrayLikeToArray$1(arr);
  }

  function _iterableToArray$1(iter) {
    if (typeof Symbol !== "undefined" &amp;&amp; iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
  }

  function _nonIterableSpread$1() {
    throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }

  function _toConsumableArray$1(arr) {
    return _arrayWithoutHoles$1(arr) || _iterableToArray$1(arr) || _unsupportedIterableToArray$1(arr) || _nonIterableSpread$1();
  }

  var uuid = function uuid() {
    return ((1 + Math.random()) * 0x10000 | 0).toString(16).substring(1);
  };

  var WRAP_TAG = 'span';
  var IMG_TAG = 'IMG';
  var NODE_TYPE = {
    text: 1,
    img: 2
  };
  var blockEleTagName = ['P', 'DIV', 'SECTION', 'LI', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'TABLE', 'PRE', 'BLOCKQUOTE'];
  var exceptEleClassName = ['js_product_container', 'js_blockquote_wrap'];
  var ignoreTagName = ['IFRAME', 'VIDEO', 'MPVOICE', 'MPGONGYI', 'QQMUSIC', 'MPSHOP', 'MP-WEAPP', 'MP-MINIPROGRAM', 'MPPRODUCT', 'MPCPS'];
  var ignoreEleId = ['js_mpvideo'];
  var ignoreEleClassName = ['js_product_container'];
  var TEMP_NODES = {};

  var childNodesHasEle = function childNodesHasEle(element) {
    var tagNameList = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : blockEleTagName;
    if (!element || element.nodeType !== 1) {
      return false;
    }
    for (var i = 0; i &lt; element.children.length; i++) {
      if (tagNameList.indexOf(element.children[i].tagName) !== -1) {
        return true;
      }
    }
    return false;
  };
  function eleHasAttr(ele) {
    var attr = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 'className';
    var AttrList = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : exceptEleClassName;
    for (var i = 0; i &lt; AttrList.length; i++) {
      if (ele[attr] &amp;&amp; typeof ele[attr] === 'string' &amp;&amp; ele[attr].indexOf(AttrList[i]) &gt; -1) {
        return true;
      }
    }
    return false;
  }
  var removeChildMedia = function removeChildMedia(element) {
    var parentNode = element.parentNode;
    element.parentNode.removeChild(element);
    if (parentNode.children &amp;&amp; parentNode.children.length) {
      return false;
    }
    return true;
  };

  
  var getParaList = function getParaList(element, _ref) {
    var _ref$getNestedStructu = _ref.getNestedStructure,
      getNestedStructure = _ref$getNestedStructu === void 0 ? true : _ref$getNestedStructu,
      _ref$removeIgoreEle = _ref.removeIgoreEle,
      removeIgoreEle = _ref$removeIgoreEle === void 0 ? false : _ref$removeIgoreEle;
    var paraList = function getParaListWithIndex(ele, getNested) {
      var childNodes = ele.children;
      if (!childNodes) return [];
      if (!childNodes.length) {
        return childNodes;
      }
      var child;
      var paragraphList = [];
      for (var i = 0; i &lt; childNodes.length; i++) {
        child = childNodes[i];
        if (eleHasAttr(child, 'id', ignoreEleId) || eleHasAttr(child, 'className', ignoreEleClassName)) {
          if (removeIgoreEle) {
            child.parentNode.removeChild(child);
            i -= 1;
          }
          continue;
        }
        if (childNodesHasEle(child, ignoreTagName)) {
          if (removeIgoreEle) {
            removeChildMedia(child);
            i -= 1;
          }
          continue;
        }
        if (childNodesHasEle(child, blockEleTagName) &amp;&amp; !eleHasAttr(child)) {
          paragraphList = paragraphList.concat(getParaListWithIndex(child, getNested));
          if (getNested) {
            if (!child.getAttribute('data-index')) {
              paragraphList.push(child);
            }
          }
        } else {
          if (!child.getAttribute('data-index')) {
            paragraphList.push(child);
          }
        }
      }
      return paragraphList;
    }(element, getNestedStructure);
    return [].slice.call(paraList);
  };
  getParaList.paragraphStartIdx = 1000000;

  
  var getSplitTextNode = function getSplitTextNode($textNode, startOffset, endOffset, paraIndex) {
    try {
      $textNode.splitText(startOffset);
    } catch (err) {
      if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
        WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'splitText Error', {
          mid: 'mmbizwap:articlemask_Monitor',
          view: 'wap_business',
          _info: {
            type: 'getSplitTextNode textnode',
            startOffset: startOffset,
            endOffset: endOffset
          }
        });
      }
    }
    var selectedNode = $textNode.nextSibling;
    try {
      selectedNode.splitText(endOffset - startOffset);
    } catch (e) {
      if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
        WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'splitText Error', {
          mid: 'mmbizwap:articlemask_Monitor',
          view: 'wap_business',
          _info: {
            type: 'getSplitTextNode nextSibling',
            startOffset: startOffset,
            endOffset: endOffset
          }
        });
      }
    }
    return [{
      $node: selectedNode,
      type: NODE_TYPE.text,
      idx: paraIndex
    }];
  };

  
  var getBlockNode = function getBlockNode($node) {
    if (blockEleTagName.indexOf($node.tagName) !== -1 &amp;&amp; typeof $node.dataset.index !== 'undefined') {
      return $node;
    }
    return getBlockNode($node.parentNode);
  };

  
  var getPureBlockNode = function getPureBlockNode($node) {
    if (!$node) return $node;
    if (blockEleTagName.indexOf($node.tagName) !== -1) {
      return $node;
    }
    return getPureBlockNode($node.parentNode);
  };

  
  var getNodesByDFS = function getNodesByDFS(range) {
    var start = range.start,
      end = range.end,
      $container = range.$container;
    var $startNode = start.$node,
      startOffset = start.offset;
    var $endNode = end.$node,
      endOffset = end.offset;
    var queue = [];
    var result = [];
    var withinSelectRange = false;
    var achiveSelectRangeEnd = false;
    var paraIndex = 0;
    queue.push($container);
    while (queue.length &gt; 0) {
      var item = queue.pop();
      var nodeType = item.nodeType,
        tagName = item.tagName;
      if (item.dataset &amp;&amp; item.dataset.index) {
        paraIndex = +item.dataset.index;
      }
      if (withinSelectRange &amp;&amp; !achiveSelectRangeEnd) {
        if (nodeType === 3) {
          result.push({
            $node: item,
            type: NODE_TYPE.text,
            idx: paraIndex
          });
        }
        if (tagName === IMG_TAG) {
          result.push({
            $node: item,
            type: NODE_TYPE.img,
            idx: paraIndex
          });
        }
      }
      if (item === $startNode) {
        if (nodeType === 3) {
          try {
            item.splitText(startOffset);
          } catch (e) {
            WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'splitText Error', {
              mid: 'mmbizwap:articlemask_Monitor',
              view: 'wap_business',
              _info: {
                type: 'getNodes startNode',
                startOffset: startOffset,
                endOffset: endOffset
              }
            });
          }
          var $startTextNode = item.nextSibling;
          result.push({
            $node: $startTextNode,
            type: NODE_TYPE.text,
            idx: paraIndex
          });
        } else if (tagName === IMG_TAG) {
          result.push({
            $node: item,
            type: NODE_TYPE.img,
            idx: paraIndex
          });
        } else {
          result.push({
            $node: item,
            type: NODE_TYPE.text,
            idx: paraIndex
          });
        }
        withinSelectRange = true;
      }
      if (item === $endNode || achiveSelectRangeEnd) {
        if (!achiveSelectRangeEnd) {
          achiveSelectRangeEnd = true;
        }
        if (item === $endNode) result.pop();
        if (nodeType === 3) {
          try {
            item.splitText(endOffset);
          } catch (e) {
            if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
              WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'splitText Error', {
                mid: 'mmbizwap:articlemask_Monitor',
                view: 'wap_business',
                _info: {
                  type: 'getSplitTextNode endNode',
                  startOffset: startOffset,
                  endOffset: endOffset
                }
              });
            }
          }
          result.push({
            $node: item,
            type: NODE_TYPE.text,
            idx: paraIndex
          });
          break;
        } else if (tagName === IMG_TAG) {
          result.push({
            $node: item,
            type: NODE_TYPE.img,
            idx: paraIndex
          });
          break;
        } else {
          var _children = item.childNodes;
          for (var i = _children.length - 1; i &gt;= 0; i--) {
            queue.push(_children[i]);
          }
        }
      }
      var children = item.childNodes;
      for (var _i = children.length - 1; _i &gt;= 0; _i--) {
        queue.push(children[_i]);
      }
    }
    return result;
  };

  
  var getSelectedNodes = function getSelectedNodes(range) {
    var start = range.start,
      end = range.end;
    var $startNode = start.$node,
      startOffset = start.offset;
    var $endNode = end.$node,
      endOffset = end.offset;
    if ($startNode === $endNode &amp;&amp; $startNode instanceof Text) {
      return getSplitTextNode($startNode, startOffset, endOffset, start.paraIndex);
    }
    return getNodesByDFS(range);
  };

  
  var checkTextNode = function checkTextNode($node) {
    return $node &amp;&amp; ($node.nodeValue || $node.innerText);
  };
  var connectSiblingText = function connectSiblingText(prev, next, target) {
    var $delete = target === prev ? next : prev;

    
    if (!checkTextNode(prev) || !checkTextNode(next)) {
      return $delete;
    }
    var text = (prev.nodeValue || prev.innerText) + (next.nodeValue || next.innerText);
    target.nodeValue = text;
    target.parentNode.removeChild($delete);
    return target;
  };

  
  var getTextNodeByOffset = function getTextNodeByOffset($parentNode, offset) {
    var queue = [];
    var curOffset = 0;
    var startOffset = 0;
    var $curNode;
    queue.push($parentNode);
    while (queue.length &gt; 0) {
      $curNode = queue.pop();
      if ($curNode.nodeType === 3) {
        startOffset = offset - curOffset;
        curOffset += $curNode.textContent.length;
        if (curOffset &gt;= offset) {
          break;
        }
      }
      var children = $curNode.childNodes;
      for (var i = children.length - 1; i &gt;= 0; i--) {
        queue.push(children[i]);
      }
    }
    return {
      $parentNode: $parentNode,
      $node: $curNode,
      offset: startOffset
    };
  };

  
  function getBlockOffset(_ref2) {
    var $blockNode = _ref2.$blockNode,
      $node = _ref2.$node;
    if ($blockNode === null) {
      return null;
    }
    var queue = [];
    var offset = 0;
    queue.push($blockNode);
    while (queue.length &gt; 0) {
      var item = queue.pop();
      if (item.nodeType === 3 &amp;&amp; item.nodeValue !== $node.nodeValue) {
        offset += item.textContent.length;
      } else if (item.nodeType === 1) {
        offset += 1;
        if (item === $node) break;
      } else if (item.nodeValue === $node.nodeValue) {
        offset += item.textContent.length;
        break;
      }
      var children = item.childNodes;
      for (var i = children.length - 1; i &gt;= 0; i--) {
        queue.push(children[i]);
      }
    }
    return offset;
  }

  
  var getDomMeta = function getDomMeta(selection) {
    selection.$node;
      var $parentNode = selection.$parentNode;
    var parentIndex = Number($parentNode.dataset.index);
    var offset = getBlockOffset($parentNode);
    return {
      parentIndex: parentIndex,
      fromParentoffset: offset
    };
  };
  function nodeToSelection($node) {
    var $blockNode = getBlockNode($node);
    var paraIndex = +$blockNode.dataset.index;
    var offset = 0;
    var item = {
      $blockNode: $blockNode,
      $node: $node,
      paraIndex: paraIndex,
      offset: offset
    };
    var id = uuid();
    return {
      start: item,
      end: item,
      id: id
    };
  }

  
  var getSelection = function getSelection() {
    var selection = window.getSelection();
    if (selection.anchorNode === null) {
      return null;
    }
    var selectionRange = selection.getRangeAt(0);
    if (!selectionRange || !selection.toString()) {
      return null;
    }
    var startContainer = selectionRange.startContainer,
      endContainer = selectionRange.endContainer,
      commonAncestorContainer = selectionRange.commonAncestorContainer,
      startOffset = selectionRange.startOffset,
      endOffset = selectionRange.endOffset;
    var $startBlockNode = getBlockNode(startContainer);
    var $endBlockNode = getBlockNode(endContainer);
    var startIndex = $startBlockNode &amp;&amp; $startBlockNode.dataset.index;
    var endIndex = $endBlockNode &amp;&amp; $endBlockNode.dataset.index;
    var start = {
      $blockNode: $startBlockNode,
      $node: startContainer,
      offset: startOffset,
      paraIndex: Number(startIndex)
    };
    var end = {
      $blockNode: $endBlockNode,
      $node: endContainer,
      offset: endOffset,
      paraIndex: Number(endIndex)
    };
    var $container = typeof commonAncestorContainer === 'string' ? commonAncestorContainer.parentNode : commonAncestorContainer;
    var id = uuid();
    return {
      start: start,
      end: end,
      $container: $container,
      id: id
    };
  };

  
  var transferTextToElement = function transferTextToElement($node, id) {
    if (!$node) return null;
    if ($node.nodeType === 3) {
      var $wrap = document.createElement(WRAP_TAG);
      $wrap.setAttribute('data-splitid', id);
      $wrap.appendChild($node.cloneNode(false));
      if ($node.parentNode) {
        $node.parentNode.replaceChild($wrap, $node);
      }
      return $wrap;
    }
    return $node;
  };

  
  var serialize = function serialize(selectionRange) {
    var start = selectionRange.start,
      end = selectionRange.end,
      id = selectionRange.id;
    var startParaOffset = getBlockOffset(start);
    var endParaOffset = start.$node === end.$node ? end.offset - start.offset + startParaOffset : getBlockOffset(end);
    var meta = {
      id: id,
      start: {
        para_offset: startParaOffset,
        para_index: start.paraIndex
      },
      end: {
        para_offset: endParaOffset,
        para_index: end.paraIndex
      }
    };
    return meta;
  };
  var mapMetaToLocal = function mapMetaToLocal(paraList) {
    return function (meta) {
      var paraOffset = meta.para_offset,
        paraIndex = meta.para_index;
      var $blockNode = paraList[paraIndex];
      var queue = [];
      var curOffset = 0;
      var offset = 0;
      var $curNode;
      queue.push($blockNode);
      while (queue.length &gt; 0) {
        $curNode = queue.pop();
        if ($curNode.nodeType === 3) {
          offset = paraOffset - curOffset;
          curOffset += $curNode.textContent.length;
          if (curOffset &gt;= paraOffset) {
            break;
          }
        }
        if ($curNode.nodeType === 1) {
          offset = paraOffset - curOffset;
          curOffset += 1;
          if (curOffset &gt;= paraOffset) {
            break;
          }
        }
        var children = $curNode.childNodes;
        for (var i = children.length - 1; i &gt;= 0; i--) {
          queue.push(children[i]);
        }
      }
      return {
        $blockNode: $blockNode,
        $node: $curNode,
        offset: offset,
        paraIndex: paraIndex
      };
    };
  };
  
  var deSerialize = function deSerialize(meta, paraList, $container) {
    var desparaList = mapMetaToLocal(paraList);
    return {
      start: desparaList(meta.start),
      end: desparaList(meta.end),
      id: meta.id,
      $container: $container
    };
  };
  function getTextNode($node) {
    if ($node.tagName === IMG_TAG || $node.nodeType === 3) {
      return $node;
    }
    return $node.childNodes[0];
  }
  var resetRange = function resetRange(selectionRange) {
    window.getSelection().removeAllRanges();
    var selection = window.getSelection();
    var range = document.createRange();
    var $startnode = getTextNode(TEMP_NODES.start);
    var $endnode = getTextNode(TEMP_NODES.end);
    range.setStart($startnode, selectionRange.start.offset);
    range.setEnd($endnode, selectionRange.end.offset);
    selection.addRange(range);
  };
  var getNodeIndex = function getNodeIndex($block, $node) {
    var queue = [];
    var index = 0;
    queue.push($block);
    while (queue.length &gt; 0) {
      var $item = queue.pop();
      if ($item === $node) break;
      index++;
      var children = $item.children;
      for (var i = 0; i &lt; children.length; i++) {
        queue.push(children[i]);
      }
    }
    return index;
  };
  var getNodeByIndex = function getNodeByIndex($block, index) {
    var queue = [];
    var cursor = 0;
    var $result = null;
    queue.push($block);
    while (queue.length &gt; 0) {
      var $item = queue.pop();
      if (cursor === index) {
        $result = $item;
        break;
      }
      cursor++;
      var children = $item.children;
      for (var i = 0; i &lt; children.length; i++) {
        queue.push(children[i]);
      }
    }
    return $result;
  };
  var hasClass = function hasClass(cls, className) {
    if (cls &amp;&amp; typeof cls === 'string' &amp;&amp; cls.indexOf(className) !== -1) {
      return true;
    }
    return false;
  };
  var inWhiteList = function inWhiteList(classAttr) {
    var classWhiteList = 'rich_pages,blockquote_info,blockquote_biz,blockquote_other,blockquote_article,js_jump_icon,h5_image_link,js_banner_container,js_list_container,js_cover,js_tx_video_container,js_product_err_container,js_product_loop_content,js_product_container,img_loading,list-paddingleft-1,list-paddingleft-2,list-paddingleft-3,selectTdClass,noBorderTable,ue-table-interlace-color-single,ue-table-interlace-color-double,__bg_gif,weapp_image_link,js_img_loading,wx_video_context,db,wx_video_thumb_primary,wx_video_play_btn,wx_video_mask,qqmusic_area,tc,tips_global,unsupport_tips,qqmusic_wrp,appmsg_card_context,appmsg_card_active,wx_tap_card,js_wx_tap_highlight,wx_tap_link,qqmusic_bd,play_area,icon_qqmusic_switch,pic_qqmusic_default,qqmusic_thumb,access_area,qqmusic_songname,qqmusic_singername,qqmusic_source,js_audio_frame,share_audio_context,flex_context,pages_reset,share_audio_switch,icon_share_audio_switch,share_audio_info,flex_bd,share_audio_title,share_audio_tips,share_audio_progress_wrp,share_audio_progress,share_audio_progress_inner,share_audio_progress_buffer,share_audio_progress_loading,share_audio_progress_loading_inner,share_audio_progress_handle,share_audio_desc,share_audio_length_current,share_audio_length_total,video_iframe,vote_iframe,js_editor_vote_card,res_iframe,card_iframe,js_editor_card,weapp_display_element,js_weapp_display_element,weapp_card,app_context,weapp_card_bd,weapp_card_profile,radius_avatar,weapp_card_avatar,weapp_card_nickname,weapp_card_info,weapp_card_title,weapp_card_thumb_wrp,weapp_card_ft,weapp_card_logo,js_pay_btn,pay,pay__mask,wx_video_loading,js_redpacketcover,js_uneditable,js_uneditablemouseover,js_editor_qqmusic,js_img_placeholder,js_editor_audio,ct_geography_loc_tip,js_poi_entry,js_mention_entry,product_text_link,js_plain-music_entry'.split(',');
    var qaClassPrefix = 'qa__';
    var classWhiteListReg = [new RegExp('^weui'), new RegExp('^appmsg'), new RegExp('^audio'), new RegExp('^music'), new RegExp('^cps_inner'), new RegExp('^bizsvr_'), new RegExp('^code-snippet'), new RegExp('^' + qaClassPrefix), new RegExp('^wx-edui-'), new RegExp('^wx_'), new RegExp('^wx-'), new RegExp('^custom_select_card_')
    ];
    if (!classAttr) return null;
    var classList = classAttr.split(/\s+/);
    var newClassList = [];
    for (var i = 0, len = classList.length; i &lt; len; ++i) {
      var className = classList[i];
      if (className &amp;&amp; classWhiteList.indexOf(className) !== -1) {
        newClassList.push(className);
      } else {
        for (var j = 0, jl = classWhiteListReg.length; j &lt; jl; j++) {
          if (classWhiteListReg[j].test(className)) {
            newClassList.push(className);
            break;
          }
        }
      }
    }
    var str = newClassList.join('.');
    return str &amp;&amp; '.' + str;
  };
  var getNodeSelector = function getNodeSelector(node) {
    var selector = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : '';
    var root = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : document.body;
    if (!node || node === root) return selector;
    var id = node.getAttribute('id');
    var className = node.getAttribute('class');
    var tagName = node.tagName.toLowerCase();
    var currentSelector = null;
    if (id &amp;&amp; !hasClass(className, 'articlepart-selector-area_choice-button_wrap')) return selector ? "#".concat(id, "&gt;").concat(selector) : "#".concat(id);
    var whiteClassName = inWhiteList(className);
    if (whiteClassName) {
      currentSelector = whiteClassName;
    } else if (hasClass(className, 'js_choice-img')) {
      currentSelector = '.js_choice-img';
    } else if (hasClass(className, 'articlepart-selector-area_choice')) {
      currentSelector = node.dataset.splitid ? '' : tagName;
    } else {
      currentSelector = tagName;
    }
    return getNodeSelector(node.parentNode, [currentSelector, selector].filter(function (item) {
      return !!item;
    }).join('&gt;'), root);
  };
  var getNodeSelectorWrap = function getNodeSelectorWrap(node, root) {
    var selector = getNodeSelector(node, '', root);
    var collect = [];
    try {
      collect = root.querySelectorAll(selector);
    } catch (error) {
      console.log('get node selector wrap err', error);
    }
    var len = collect.length;
    var index = null;
    for (var i = 0; i &lt; len; i++) {
      if (node === collect[i]) {
        index = i;
        break;
      }
    }
    if (index === null) {
      if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
        WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'selector:node not find', {
          mid: 'mmbizwap:articlemask_Monitor',
          view: 'wap_business',
          _info: {
            selector: selector
          }
        });
      }
    }
    var newSelector = (selector || '').replace('&gt;.js_choice-img&gt;', '&gt;') + "|".concat(len, " ").concat(index || 0);
    return newSelector;
  };
  
  var serializeToC = function serializeToC(nodes) {
    return (
      nodes.map(function (item) {
        var $node = item.$node,
          type = item.type,
          idx = item.idx;
        var index = 0;
        var data = null;
        var meta = '';
        var blockItem = getBlockNode($node);
        if (type === NODE_TYPE.text) {
          var nodeIndex = getNodeIndex(blockItem, $node.parentNode);
          if ($node &amp;&amp; $node.data) {
            index = nodeIndex;
            data = $node.data;
            meta = $node.previousSibling &amp;&amp; $node.previousSibling.data;
          }
        } else if (type === NODE_TYPE.img) {
          var imgs = blockItem.getElementsByTagName('img');
          data = $node.src;
          index = Array.prototype.slice.call(imgs).slice(0).indexOf($node);
        }
        return {
          data: data,
          index: index,
          idx: idx,
          type: type,
          meta: meta
        };
      }).filter(function (item) {
        return item.index &gt; -1 &amp;&amp; !!item.data;
      })
    );
  }
  ;
  var serializeToC2 = function serializeToC2(nodes, $container) {
    var root = $container || document.getElementById('js_content');
    return nodes.map(function (item) {
      var $node = item.$node,
        type = item.type,
        idx = item.idx;
      var selector = null;
      var data = null;
      var meta = '';
      if (type === NODE_TYPE.text) {
        if ($node &amp;&amp; $node.data) {
          selector = getNodeSelectorWrap($node.parentNode, root);
          data = $node.data;
          meta = $node.previousSibling &amp;&amp; $node.previousSibling.data;
        }
      } else if (type === NODE_TYPE.img) {
        selector = getNodeSelectorWrap($node, root);
        data = $node.src;
      }
      return {
        data: data,
        idx: idx,
        type: type,
        meta: meta,
        selector: selector
      };
    }).filter(function (item) {
      return !!item.selector &amp;&amp; !!item.data;
    });
  };
  function setProperty(el, name, value, priority) {
    if (!!el.style.setProperty) {
      priority = priority || null;
      el.style.setProperty(name, value, priority);
    } else if (typeof el.style.cssText !== 'undefined') {
      priority = priority ? '!' + priority : '';
      el.style.cssText += ';' + name + ':' + value + priority + ';';
    }
  }

  
  function hasImgNode($el) {
    if (!$el) return false;
    var nodeType = $el.nodeType,
      tagName = $el.tagName;
    if (nodeType === 3) {
      return false;
    }
    if (tagName === IMG_TAG) {
      return true;
    }
    return false;
  }
  function getContent(tree) {
    return tree.reduce(function (acc, cur, idx) {
      if (idx === 0) {
        if (cur.type === NODE_TYPE.text) {
          acc.text.push(cur.data);
        } else if (cur.type === NODE_TYPE.img) {
          acc.pic.push(cur.data);
        }
        return acc;
      }
      if (cur.type === NODE_TYPE.text) {
        if (tree[idx - 1].type === NODE_TYPE.text) {
          var text = acc.text.pop();
          text += cur.data;
          acc.text.push(text);
        } else {
          acc.text.push(cur.data);
        }
        return acc;
      }
      if (cur.type === NODE_TYPE.img) {
        acc.pic.push(cur.data);
      }
      return acc;
    }, {
      audio: [],
      pic: [],
      video: [],
      text: []
    });
  }
  function saveNode($node, key) {
    TEMP_NODES[key] = $node;
  }

  
  function serializeNode($node, $wrap) {
    var range = nodeToSelection($node);
    var anchorTree = serializeToC2([{
      $node: $node,
      type: NODE_TYPE.img,
      idx: range.start.paraIndex
    }], $wrap);
    var anchorMeta = serialize(range);
    var anchorBrief = getContent(anchorTree);
    return {
      meta: {
        anchorTree: anchorTree,
        anchorMeta: anchorMeta,
        anchorBrief: anchorBrief
      },
      range: range
    };
  }
  function findChildIndex(parent, offset) {
    var childNodes = parent.childNodes;
    var realOffset = offset;
    var $node = null;
    var i = 0;
    for (i = 0; i &lt; childNodes.length; i++) {
      $node = childNodes[i];
      if ($node.nodeType === 3) {
        var len = $node.length;
        if (len &gt; realOffset) {
          break;
        } else {
          realOffset -= len;
        }
      }
    }
    return {
      $node: $node,
      cursor: realOffset
    };
  }
  
  var qs$1 = function qs(selector, el) {
    return (el || document).querySelector(selector);
  };

  
  var qsAll$1 = function qsAll(selector, el) {
    return (el || document).querySelectorAll(selector);
  };
  var dom = {
    getDomMeta: getDomMeta,
    getContent: getContent,
    getParaList: getParaList,
    getBlockNode: getBlockNode,
    getSelectedNodes: getSelectedNodes,
    connectSiblingText: connectSiblingText,
    getTextNodeByOffset: getTextNodeByOffset,
    getBlockOffset: getBlockOffset,
    getSelection: getSelection,
    transferTextToElement: transferTextToElement,
    serialize: serialize,
    deSerialize: deSerialize,
    resetRange: resetRange,
    serializeToC: serializeToC,
    setProperty: setProperty,
    hasImgNode: hasImgNode,
    nodeToSelection: nodeToSelection,
    saveNode: saveNode,
    serializeNode: serializeNode,
    getNodeByIndex: getNodeByIndex,
    findChildIndex: findChildIndex,
    serializeToC2: serializeToC2,
    blockEleTagName: blockEleTagName,
    getPureBlockNode: getPureBlockNode,
    qs: qs$1,
    qsAll: qsAll$1,
    hasClass: hasClass
  };

  function ownKeys$b(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r &amp;&amp; (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
  function _objectSpread$b(e) { for (var r = 1; r &lt; arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$b(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$b(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
  var paraList = [];
  var totalHit = 0;

  var STATUS = {
    auditing: 1,
    ban: 2
  };
  function keyby(arr, key) {
    return arr.reduce(function (acc, item) {
      if (typeof item[key] === 'undefined') return acc;
      if (!acc[item[key]]) acc[item[key]] = [];
      acc[item[key]].push(item);
      return acc;
    }, {});
  }

  function getBannerWord(anchor) {
    return '以下内容存在争议 &lt;a style="color: var(--weui-LINK);" target="_blank" href="https://mp.weixin.qq.com/s/_2kC-fXw7UjneZSrsC9CVQ"&gt;了解更多&lt;/a&gt;';
  }
  function addBanner(node, text) {
    var paraNode = _typeof$3(node) === 'object' ? node : paraList[node];
    if (paraNode.dataset.hasBanner) return;
    var divNode = document.createElement('div');
    divNode.dataset.hasBanner = 1;
    divNode.style = 'background-color: var(--weui-BG-1);font-size: 14px;color: var(--weui-FG-2);text-align: left;margin-top: 20px;margin-bottom: 4px;padding: 4px 8px 6px 8px;border-radius:4px;';
    var iconNode = document.createElement('span');
    iconNode.style = 'color: var(--weui-FG-0);padding: 2px;display: inline-block;vertical-align: middle; width: 20px;height: 20px;margin-right: 4px; background-size: cover;background-position: center center;-webkit-mask: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' width=\'20\' height=\'20\' viewBox=\'0 0 20 20\'%3E  %3Cpath fill-opacity=\'.3\' fill-rule=\'evenodd\' d=\'M10 1.667a8.333 8.333 0 1 1 0 16.666 8.333 8.333 0 0 1 0-16.666zm-.004 11.115a.732.732 0 0 0-.746.735c0 .416.33.735.746.735a.73.73 0 0 0 .752-.735.73.73 0 0 0-.752-.735zm.638-7.669h-1.27l.091 6.33h1.088l.091-6.33z\'/%3E%3C/svg%3E") no-repeat 50% 50%;mask: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' width=\'20\' height=\'20\' viewBox=\'0 0 20 20\'%3E  %3Cpath fill-opacity=\'.3\' fill-rule=\'evenodd\' d=\'M10 1.667a8.333 8.333 0 1 1 0 16.666 8.333 8.333 0 0 1 0-16.666zm-.004 11.115a.732.732 0 0 0-.746.735c0 .416.33.735.746.735a.73.73 0 0 0 .752-.735.73.73 0 0 0-.752-.735zm.638-7.669h-1.27l.091 6.33h1.088l.091-6.33z\'/%3E%3C/svg%3E") no-repeat 50% 50%;background-color: currentColor;';
    var textNode = document.createElement('span');
    textNode.style = 'display: inline-block;line-height: 14px;vertical-align: middle;';
    textNode.innerHTML = text;
    divNode.appendChild(iconNode);
    divNode.appendChild(textNode);
    paraNode.parentNode.insertBefore(divNode, paraNode, null);
    paraNode.dataset.hasBanner = 1;
  }
  function maskText(data, domNode, cursor) {
    var len = data.length;
    var maskMat = _toConsumableArray$1(Array(len)).map(function () {
      return '〇';
    }).join('');
    var childNodes = domNode.childNodes;
    var newCursor = cursor;
    for (var i = 0; i &lt; childNodes.length; i++) {
      var node = childNodes[i];
      if (node.nodeType === 3) {
        if (newCursor &gt; node.data.length) {
          newCursor -= node.data.length;
        } else {
          node.data = node.data.slice(0, newCursor).concat(maskMat).concat(node.data.slice(newCursor + len));
        }
      } else if (node.nodeText === 1) {
        newCursor -= node.innerText &amp;&amp; node.innerText.length || 0;
      }
    }
  }
  function disputeText(data, domNode, cursor) {
    var len = data.length;
    var _dom$findChildIndex = dom.findChildIndex(domNode, cursor),
      textNode = _dom$findChildIndex.$node,
      realOffset = _dom$findChildIndex.realOffset;
    try {
      textNode.splitText(realOffset);
    } catch (e) {
      if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
        WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'splitText Error', {
          mid: 'mmbizwap:articlemask_Monitor',
          view: 'wap_business',
          _info: {
            type: 'disputeText textNode',
            data: data,
            cursor: cursor
          }
        });
      }
    }
    var repalcedNode = textNode.nextSibling;
    try {
      repalcedNode.splitText(len);
    } catch (e) {
      if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
        WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'splitText Error', {
          mid: 'mmbizwap:articlemask_Monitor',
          view: 'wap_business',
          _info: {
            type: 'disputeText nextSibling',
            data: data,
            cursor: cursor
          }
        });
      }
    }
    var spanNode = document.createElement('span');
    spanNode.style = 'background-color: rgba(0,0,0,0.10);';
    spanNode.appendChild(repalcedNode.cloneNode(true));
    repalcedNode.parentNode.replaceChild(spanNode, repalcedNode);
  }
  function disputeImage(data, domNode) {
    var spanNode = document.createElement('span');
    spanNode.style = 'position:relative;display: inline-block;';
    var iconNode = document.createElement('span');
    iconNode.style = "\n            position: absolute;\n            top: 4px;\n            left: 4px;\n            display: inline-block;\n            vertical-align: middle;\n            width: 24px;\n            height: 24px;\n            background-size: cover;\n            background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E  %3Cpath fill='%23FFF' fill-rule='evenodd' d='M12 2c5.523 0 10 4.477 10 10s-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2zm-.004 13.339a.878.878 0 0 0-.896.882c0 .499.396.882.896.882.512 0 .902-.383.902-.882 0-.5-.39-.882-.902-.882zm.765-9.203h-1.524l.11 7.596h1.305l.11-7.596z'/%3E%3C/svg%3E\");\n    ";
    var parent = domNode.parentNode;
    spanNode.appendChild(domNode.cloneNode(false));
    parent.replaceChild(spanNode, domNode);
    spanNode.appendChild(iconNode);
  }
  function maskImage(data, domNode) {
    domNode.style.filter = 'blur(10px)';
    domNode.style['-webkit-filter'] = 'blur(10px)';
  }
  function hitMaskText(anchor, domNode) {
    var data = anchor.data,
      meta = anchor.meta,
      index = anchor.index,
      idx = anchor.idx;
    var wholeText = domNode.data;
    var prefixText = (meta || '') + data;
    if (wholeText.indexOf(prefixText) === -1) {
      return {
        hit: false
      };
    }
    var itemNode = dom.getNodeByIndex(paraList[idx], index);
    if (itemNode) {
      totalHit++;
    } else {
      if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
        WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'text node cannot find', {
          mid: 'mmbizwap:articlemask_Monitor',
          view: 'wap_business',
          _info: {
            anchor: anchor,
            wholeText: wholeText
          }
        });
      }
    }
    var cursor = itemNode &amp;&amp; itemNode.innerText.indexOf(prefixText) + (meta || '').length;
    return {
      hit: !!itemNode,
      $hitDom: itemNode,
      cursor: cursor
    };
  }
  function hitMaskImage(anchor, domNode) {
    var index = anchor.index,
      idx = anchor.idx,
      data = anchor.data;
    var para = paraList[idx];
    var allImgNode = para.querySelectorAll('img');
    var hitItenNode = allImgNode[index];
    var src = hitItenNode &amp;&amp; (hitItenNode.getAttribute('data-src') || hitItenNode.getAttribute('src'));
    if (src === data) {
      totalHit++;
      return {
        hit: true,
        $hitDom: domNode,
        cursor: 0
      };
    }
    return {
      hit: false
    };
  }
  function createMask(anchor, domNode) {
    return function (hitFn, maskFn, next) {
      var _hitFn = hitFn(anchor, domNode),
        hit = _hitFn.hit,
        $hitDom = _hitFn.$hitDom,
        cursor = _hitFn.cursor;
      if (hit) {
        maskFn(anchor.data, $hitDom, cursor);
        next();
      }
    };
  }
  function maskAnchors(anchors, paraNode) {
    var queue = [];
    var cloneAnchors = _toConsumableArray$1(anchors);
    queue.push(paraNode);
    var anchor = null;
    var next = function next() {
      anchor = cloneAnchors.shift();
    };
    next();
    while (queue.length &gt; 0 &amp;&amp; cloneAnchors.length &gt;= 0 &amp;&amp; anchor) {
      var itemNode = queue.pop();
      if (!itemNode) continue;
      if (!anchor) continue;
      var nodeType = itemNode.nodeType,
        tagName = itemNode.tagName;
      var createMaskFn = createMask(anchor, itemNode);
      if (nodeType === 3) {
        if (anchor.type === NODE_TYPE.text) {
          createMaskFn(hitMaskText, anchor.status === STATUS.ban ? maskText : disputeText, next);
        }
        continue;
      }
      if (nodeType === 1 &amp;&amp; tagName === IMG_TAG) {
        if (anchor.type === NODE_TYPE.img) {
          createMaskFn(hitMaskImage, anchor.status === STATUS.ban ? maskImage : disputeImage, next);
        }
        continue;
      }
      var children = itemNode.childNodes;
      for (var i = children.length - 1; i &gt;= 0; i--) {
        queue.push(children[i]);
      }
    }
  }
  function parseSelector(selectorStr) {
    if (!selectorStr) return {};
    var _selectorStr$split = selectorStr.split('|'),
      _selectorStr$split2 = _slicedToArray$1(_selectorStr$split, 2),
      selector = _selectorStr$split2[0],
      other = _selectorStr$split2[1];
    var _other$split = other.split(' '),
      _other$split2 = _slicedToArray$1(_other$split, 2),
      total = _other$split2[0],
      index = _other$split2[1];
    return {
      selector: selector.replace(/&amp;gt;/g, '&gt;'),
      total: total * 1,
      index: index * 1
    };
  }
  function hitNode(node, anchor) {
    if (!node) return null;
    var type = anchor.type,
      data = anchor.data,
      meta = anchor.meta;
    if (type === NODE_TYPE.text) {
      var nodeText = node.innerText || node.innerHTML || '';
      var prefixText = ((meta || '') + data).replace(/&amp;amp;/g, '&amp;');
      if (nodeText.indexOf(prefixText) !== -1) {
        var cursor = nodeText.indexOf(prefixText) + (meta || '').length;
        return {
          cursor: cursor,
          node: node
        };
      }
    }
    if (type === NODE_TYPE.img) {
      var src = node &amp;&amp; (node.getAttribute('data-src') || node.getAttribute('src'));
      if (src === data.replace(/&amp;amp;/g, '&amp;')) {
        return {
          cursor: 0,
          node: node
        };
      }
    }
    return null;
  }

  function maskNode(anchor, domNode, cursor) {
    var type = anchor.type,
      data = anchor.data,
      status = anchor.status;
    if (status !== STATUS.ban) return;
    if (type === NODE_TYPE.text) maskText(data, domNode, cursor);
    if (type === NODE_TYPE.img) maskImage(data, domNode);
  }
  function initOld(wrapNode, anchors) {
    paraList = dom.getParaList(wrapNode, {
      getNestedStructure: true,
      removeIgoreEle: false
    });
    var formatAnchor = keyby(anchors, 'idx');
    if (!paraList) return;
    (paraList || []).forEach(function (para, index) {
      var paraAnchors = formatAnchor[index];
      if (paraAnchors &amp;&amp; paraAnchors.length &gt; 0) {
        addBanner(index, getBannerWord(paraAnchors[0]));
        maskAnchors(paraAnchors, para);
      }
    });
    if (anchors &amp;&amp; anchors.length !== totalHit) {
      if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
        WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'totalHit', {
          mid: 'mmbizwap:articlemask_Monitor',
          view: 'wap_business',
          _info: {
            totalHit: totalHit,
            anchors: anchors
          }
        });
      }
    }
  }
  function addChildBanner(node, anchor) {
    var blockNode = dom.getPureBlockNode(node);
    if (!blockNode) return;
    addBanner(blockNode, getBannerWord());
  }
  function maskAnchors2(wrapNode, anchors) {
    var missNodes = [];
    var countList = [];
    var maskNodeList = [];
    var cacheSelector = {};
    anchors.forEach(function (anchor, i) {
      var _parseSelector = parseSelector(anchor.selector),
        selector = _parseSelector.selector,
        index = _parseSelector.index,
        total = _parseSelector.total;
      var nodes = cacheSelector[selector] || [];
      if (nodes.length === 0) {
        try {
          nodes = wrapNode.querySelectorAll(selector);
          cacheSelector[selector] = nodes;
        } catch (e) {
          if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
            WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'splitText Error', {
              mid: 'mmbizwap:articlemask_Monitor',
              view: 'wap_business',
              _info: {
                anchor: anchor
              }
            });
          }
        }
      }
      var cursorLeft = index;
      var cursorRight = index;
      var queue = [];
      var node = null;
      var cursor = 0;
      var count = 0;
      queue.push(nodes[index]);
      while (queue.length) {
        var current = queue.pop();
        var hitData = hitNode(current, anchor);
        count++;
        if (hitData &amp;&amp; hitData.node) {
          node = hitData.node;
          cursor = hitData.cursor;
          break;
        }
        if (cursorLeft - 1 &gt;= 0 &amp;&amp; nodes[cursorLeft - 1]) {
          queue.push(nodes[cursorLeft - 1]);
          cursorLeft -= 1;
        }
        if (cursorRight + 1 &lt; nodes.length &amp;&amp; nodes[cursorRight + 1]) {
          queue.push(nodes[cursorRight + 1]);
          cursorRight += 1;
        }
      }
      if (node) {
        maskNodeList.push({
          anchor: anchor,
          node: node,
          cursor: cursor
        });
        addChildBanner(node);
      } else if (selector &amp;&amp; selector.lastIndexOf('&gt;') !== -1) {
        missNodes.push(_objectSpread$b(_objectSpread$b({}, anchor), {}, {
          selector: selector &amp;&amp; selector.slice(0, selector.lastIndexOf('&gt;')) + "|".concat(total, " ").concat(index)
        }));
      }
      countList[i] = count;
    });
    maskNodeList.forEach(function (item) {
      maskNode(item.anchor, item.node, item.cursor);
    });
    if (missNodes.length) {
      maskAnchors2(wrapNode, missNodes);
      if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
        WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'missNodes', {
          mid: 'mmbizwap:articlemask_Monitor',
          view: 'wap_business',
          _info: {
            missNodes: missNodes
          }
        });
      }
    }
    if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
      WX_BJ_REPORT.BadJs.report('ArticleMask:Info', 'querycount', {
        mid: 'mmbizwap:articlemask_Monitor',
        view: 'wap_business',
        _info: {
          countList: countList
        }
      });
    }
  }
  function init2(wrapNode, anchors) {
    maskAnchors2(wrapNode, anchors);
  }
  function init(wrapNode, anchors) {
    var oldAnchors = [];
    var newAnchors = [];
    anchors.forEach(function (anchor) {
      if (anchor.selector) {
        newAnchors.push(anchor);
      } else {
        oldAnchors.push(anchor);
      }
    });
    init2(wrapNode, newAnchors);
    if (oldAnchors.length &gt; 0) {
      initOld(wrapNode, oldAnchors);
    }
  }
  var complainPainter = {
    init: init
  };

  function setMaskNode(data, $wrap) {
    try {
      if (data.anchor_tree_msg) {
        var start = Date.now();
        var anchors = data.anchor_tree_msg ? JSON.parse(data.anchor_tree_msg).anchor_tree : [];
        var protocol = window.location.protocol;
        complainPainter.init($wrap, anchors);
        wxgspeedsdk.saveSpeeds({
          sample: 1,
          uin: window.uin,
          pid: protocol == 'https:' ? 462 : 417,
          speeds: {
            sid: 38,
            time: Date.now() - start
          }
        });
        wxgspeedsdk.send();
      }
    } catch (error) {
      if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; window.WX_BJ_REPORT.BadJs) {
        window.WX_BJ_REPORT.BadJs.onError(error, {
          anchor_tree_msg: window.anchor_tree_msg
        });
      }
    }
  }

  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
    try {
      var info = gen[key](arg);
      var value = info.value;
    } catch (error) {
      reject(error);
      return;
    }
    if (info.done) {
      resolve(value);
    } else {
      Promise.resolve(value).then(_next, _throw);
    }
  }
  function _asyncToGenerator(fn) {
    return function () {
      var self = this,
        args = arguments;
      return new Promise(function (resolve, reject) {
        var gen = fn.apply(self, args);
        function _next(value) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
        }
        function _throw(err) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
        }
        _next(undefined);
      });
    };
  }
  var asyncToGenerator = _asyncToGenerator;

  function _defineProperty(obj, key, value) {
    if (key in obj) {
      Object.defineProperty(obj, key, {
        value: value,
        enumerable: true,
        configurable: true,
        writable: true
      });
    } else {
      obj[key] = value;
    }
    return obj;
  }
  var defineProperty = _defineProperty;

  function _typeof$1(obj) {
    "@babel/helpers - typeof";

    if (typeof Symbol === "function" &amp;&amp; typeof Symbol.iterator === "symbol") {
      _typeof_1 = _typeof$1 = function _typeof(obj) {
        return typeof obj;
      };
    } else {
      _typeof_1 = _typeof$1 = function _typeof(obj) {
        return obj &amp;&amp; typeof Symbol === "function" &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj;
      };
    }
    return _typeof$1(obj);
  }
  var _typeof_1 = _typeof$1;

  var _typeof$2 = _typeof_1;

  
  
  var onceListeners = {};
  var permanentListeners = {};
  function clean(event, all) {
    delete onceListeners[event];
    if (all) {
      delete permanentListeners[event];
    }
  }
  function on$1(event, callback, permanent) {
    if (typeof callback === 'function') {
      if (permanent) {
        if (!permanentListeners[event]) {
          permanentListeners[event] = [];
        }
        permanentListeners[event].push(callback);
      } else {
        if (!onceListeners[event]) {
          onceListeners[event] = [];
        }
        onceListeners[event].push(callback);
      }
    }
  }
  function emit(event) {
    for (var _len = arguments.length, params = new Array(_len &gt; 1 ? _len - 1 : 0), _key = 1; _key &lt; _len; _key++) {
      params[_key - 1] = arguments[_key];
    }
    if (permanentListeners[event]) {
      permanentListeners[event].forEach(function (callback) {
        if (typeof callback === 'function') {
          callback.apply(void 0, params);
        }
      });
    }
    if (onceListeners[event]) {
      onceListeners[event].forEach(function (callback) {
        if (typeof callback === 'function') {
          callback.apply(void 0, params);
        }
      });
      clean(event);
    }
  }
  function remove(event, callback, permanent) {
    if (typeof callback === 'function') {
      if (permanent &amp;&amp; permanentListeners[event]) {
        var idx = permanentListeners[event].indexOf(callback);
        if (idx !== -1) {
          permanentListeners[event].splice(idx, 1);
        }
      } else if (onceListeners[event]) {
        var _idx = onceListeners[event].indexOf(callback);
        if (_idx !== -1) {
          onceListeners[event].splice(_idx, 1);
        }
      }
    }
  }
  var eventBus = {
    on: on$1,
    emit: emit,
    remove: remove,
    clean: clean
  };
  window.__page_cls_ctrl__canRenderSilently = '__page_cls_ctrl__canRenderSilently' in window ? window.__page_cls_ctrl__canRenderSilently : true;
  window.__page_cls_ctrl__forceRenderSilentlyList = '__page_cls_ctrl__forceRenderSilentlyList' in window ? window.__page_cls_ctrl__forceRenderSilentlyList : [];
  window.__page_cls_ctrl__compRenderInfo = '__page_cls_ctrl__compRenderInfo' in window ? window.__page_cls_ctrl__compRenderInfo : {};
  var compRenderInfoInner = {};
  var hasReportIdKey = false;
  function getCompId(renderInfo) {
    if (renderInfo.subCompType) {
      return "".concat(renderInfo.compType, "-").concat(renderInfo.compIdx, "-").concat(renderInfo.subCompType);
    }
    return "".concat(renderInfo.compType, "-").concat(renderInfo.compIdx);
  }
  function setForceRenderSilentlyList(list) {
    if (Array.isArray(list)) {
      var _window$__page_cls_ct;
      (_window$__page_cls_ct = window.__page_cls_ctrl__forceRenderSilentlyList).push.apply(_window$__page_cls_ct, _toConsumableArray$1(list));
    } else if (Object.prototype.toString.call(list).includes('Number')) {
      window.__page_cls_ctrl__forceRenderSilentlyList.forceRenderSilentScrollTop = list;
    }
  }
  function setRenderSilentlyReadyStatus(status) {
    window.__page_cls_ctrl__canRenderSilently = status;
  }
  function emitRenderNewHeightEvt() {
    eventBus.emit('cls-render-new-height');
  }
  function setCompRenderInfo(renderInfo, diffHeight) {
    window.__page_cls_ctrl__compRenderInfo[getCompId(renderInfo)] = {
      dh: diffHeight,
      compEle: renderInfo.compEle
    };
  }
  function renderCompSilentlyPreHandler(renderInfo) {
    var wrapper = renderInfo.wrapper || renderInfo.compEle.parentNode || {
      scrollHeight: 0
    };
    compRenderInfoInner[getCompId(renderInfo)] = {
      beforeHeight: wrapper.scrollHeight,
      boundingRectTop: renderInfo.compEle.getBoundingClientRect().top,
      beforeScrollTop: document.body.scrollTop || document.documentElement.scrollTop,
      wrapper: wrapper
    };
  }
  function renderCompSilently(renderInfo) {
    var compId = getCompId(renderInfo);
    if (!compRenderInfoInner[compId] || compRenderInfoInner[compId].beforeHeight === compRenderInfoInner[compId].wrapper.scrollHeight || !('compIdx' in renderInfo) || renderInfo.compIdx &lt; 0) {
      return;
    }
    var diffHeight = compRenderInfoInner[compId].wrapper.scrollHeight - compRenderInfoInner[compId].beforeHeight;
    var autoScrollHeight = (document.body.scrollTop || document.documentElement.scrollTop) - compRenderInfoInner[compId].beforeScrollTop;
    emitRenderNewHeightEvt();
    if ((compRenderInfoInner[compId].boundingRectTop &lt; 0
    || window.__page_cls_ctrl__forceRenderSilentlyList.includes(compId)
    || window.scrollY + compRenderInfoInner[compId].boundingRectTop &lt; window.__page_cls_ctrl__forceRenderSilentlyList.forceRenderSilentScrollTop
    ) &amp;&amp; window.__page_cls_ctrl__canRenderSilently
    &amp;&amp; Math.ceil(autoScrollHeight) !== diffHeight &amp;&amp; Math.floor(autoScrollHeight) !== diffHeight) {
      document.body.scrollTop = document.body.scrollTop + diffHeight;
      document.documentElement.scrollTop = document.documentElement.scrollTop + diffHeight;
      window.__addIdKeyReport &amp;&amp; window.__addIdKeyReport(330742, 2);
      !hasReportIdKey &amp;&amp; window.__addIdKeyReport &amp;&amp; window.__addIdKeyReport(330742, 3);
      hasReportIdKey = true;
    }
    window.__page_cls_ctrl__compRenderInfo[compId] = {
      dh: diffHeight,
      compEle: renderInfo.compEle
    };
    var newScrollTop = document.body.scrollTop || document.documentElement.scrollTop;
    for (var i in compRenderInfoInner) {
      if (!window.__page_cls_ctrl__compRenderInfo[i]) {
        compRenderInfoInner[i].beforeScrollTop = newScrollTop;
      }
    }
  }
  var pageClsCtrl = {
    compRenderInfo: window.__page_cls_ctrl__compRenderInfo,
    setForceRenderSilentlyList: setForceRenderSilentlyList,
    setRenderSilentlyReadyStatus: setRenderSilentlyReadyStatus,
    renderCompSilentlyPreHandler: renderCompSilentlyPreHandler,
    renderCompSilently: renderCompSilently,
    emitRenderNewHeightEvt: emitRenderNewHeightEvt,
    setCompRenderInfo: setCompRenderInfo
  };

  function removePlaceholder(element, preloadingid) {
    var preLoadNode = element.parentNode.querySelector("[data-preloadingid=\"".concat(preloadingid, "\"]"));
    if (preLoadNode) {
      preLoadNode.parentNode.removeChild(preLoadNode);
      pageClsCtrl.emitRenderNewHeightEvt();
    }
  }

  function _regeneratorRuntime$4() {  _regeneratorRuntime$4 = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof$2(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof$2(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  function i$2(_x) {
    return _i.apply(this, arguments);
  }
  function _i() {
    _i = asyncToGenerator( _regeneratorRuntime$4().mark(function _callee(o) {
      return _regeneratorRuntime$4().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            return _context.abrupt("return", new Promise(function (n) {
              R$4.invoke("handleEcsAction", {
                action: "openEcs",
                ecsJumpInfoBase64: o
              }, function (c) {
                n(c);
              });
            }));
          case 1:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return _i.apply(this, arguments);
  }
  function t$3() {
    return _t.apply(this, arguments);
  }
  function _t() {
    _t = asyncToGenerator( _regeneratorRuntime$4().mark(function _callee2() {
      return _regeneratorRuntime$4().wrap(function _callee2$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            return _context2.abrupt("return", new Promise(function (o) {
              R$4.invoke("handleEcsAction", {
                action: "checkAction",
                params: {
                  method: "isActionAvailable",
                  actionName: "openEcs",
                  actionVersion: "1"
                }
              }, function (n) {
                n != null &amp;&amp; n.result ? o(!0) : o(!1);
              });
            }));
          case 1:
          case "end":
            return _context2.stop();
        }
      }, _callee2);
    }));
    return _t.apply(this, arguments);
  }

  function _arrayWithHoles(arr) {
    if (Array.isArray(arr)) return arr;
  }
  var arrayWithHoles$1 = _arrayWithHoles;

  function _iterableToArrayLimit(arr, i) {
    if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;
    var _arr = [];
    var _n = true;
    var _d = false;
    var _e = undefined;
    try {
      for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
        _arr.push(_s.value);
        if (i &amp;&amp; _arr.length === i) break;
      }
    } catch (err) {
      _d = true;
      _e = err;
    } finally {
      try {
        if (!_n &amp;&amp; _i["return"] != null) _i["return"]();
      } finally {
        if (_d) throw _e;
      }
    }
    return _arr;
  }
  var iterableToArrayLimit$1 = _iterableToArrayLimit;

  function _arrayLikeToArray(arr, len) {
    if (len == null || len &gt; arr.length) len = arr.length;
    for (var i = 0, arr2 = new Array(len); i &lt; len; i++) {
      arr2[i] = arr[i];
    }
    return arr2;
  }
  var arrayLikeToArray$2 = _arrayLikeToArray;

  var arrayLikeToArray$1 = arrayLikeToArray$2;
  function _unsupportedIterableToArray(o, minLen) {
    if (!o) return;
    if (typeof o === "string") return arrayLikeToArray$1(o, minLen);
    var n = Object.prototype.toString.call(o).slice(8, -1);
    if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name;
    if (n === "Map" || n === "Set") return Array.from(o);
    if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray$1(o, minLen);
  }
  var unsupportedIterableToArray$2 = _unsupportedIterableToArray;

  function _nonIterableRest() {
    throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }
  var nonIterableRest$1 = _nonIterableRest;

  var arrayWithHoles = arrayWithHoles$1;
  var iterableToArrayLimit = iterableToArrayLimit$1;
  var unsupportedIterableToArray$1 = unsupportedIterableToArray$2;
  var nonIterableRest = nonIterableRest$1;
  function _slicedToArray(arr, i) {
    return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray$1(arr, i) || nonIterableRest();
  }
  var slicedToArray = _slicedToArray;

  function _regeneratorRuntime$3() {  _regeneratorRuntime$3 = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof$2(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof$2(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  function ownKeys$a(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r &amp;&amp; (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
  function _objectSpread$a(e) { for (var r = 1; r &lt; arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$a(Object(t), !0).forEach(function (r) { defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$a(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
  var f$2 = function f(n, e, t) {
    return t &lt; 0 &amp;&amp; (t += 1), t &gt; 1 &amp;&amp; (t -= 1), t &lt; 1 / 6 ? n + (e - n) * 6 * t : t &lt; 1 / 2 ? e : t &lt; 2 / 3 ? n + (e - n) * (2 / 3 - t) * 6 : n;
  };
  function h$3(n, e, t) {
    n /= 255, e /= 255, t /= 255;
    var o = Math.max(n, e, t),
      s = Math.min(n, e, t);
    var r, i;
    var c = (o + s) / 2;
    if (o === s) r = i = 0;else {
      var a = o - s;
      switch (i = c &gt; 0.5 ? a / (2 - o - s) : a / (o + s), o) {
        case n:
          r = (e - t) / a + (e &lt; t ? 6 : 0);
          break;
        case e:
          r = (t - n) / a + 2;
          break;
        case t:
          r = (n - e) / a + 4;
          break;
      }
      r /= 6;
    }
    return [r * 360, i, c];
  }
  function g$6() {
    var n = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : [];
    var _n = slicedToArray(n, 3),
      e = _n[0],
      t = _n[1],
      o = _n[2],
      s = t / 100,
      r = o / 100;
    var i, c, a;
    if (s === 0) i = c = a = r;else {
      var u = r &lt; 0.5 ? r * (1 + s) : r + s - r * s,
        w = 2 * r - u,
        m = e / 360;
      i = f$2(w, u, m + 1 / 3), c = f$2(w, u, m), a = f$2(w, u, m - 1 / 3);
    }
    return i = Math.round(i * 255), c = Math.round(c * 255), a = Math.round(a * 255), [i, c, a];
  }
  function y$2() {
    var n = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : [];
    var _n2 = slicedToArray(n, 3),
      e = _n2[0],
      t = _n2[1],
      o = _n2[2];
    if (e &lt; 0 || e &gt; 255 || t &lt; 0 || t &gt; 255 || o &lt; 0 || o &gt; 255) throw new Error("RGB values must be in the range 0-255");
    var s = function s(r) {
      var i = r.toString(16).toUpperCase();
      return i.length === 1 ? "0" + i : i;
    };
    return "#".concat(s(e)).concat(s(t)).concat(s(o));
  }
  var d$5;
  function _$4() {
    var e, t;
    return {
      exportkey: Url.getQuery("exportkey"),
      __biz: window.biz,
      article_info: {
        mp_biz: (window == null ? void 0 : window.atob(window.biz || "")) || "",
        item_idx: Number(window.itemidx || window.idx),
        appmsgid: Number(window.mid),
        item_show_type: Number(window.item_show_type),
        mp_article_scene: Number(window.source),
        mp_sub_scene: Number(window.subscene),
        mp_get_a8key_scene: Number(window.ascene),
        carrier_type: ((t = (e = window.cgiData) == null ? void 0 : e.product_activity) == null ? void 0 : t.activity_type) || 0,
        search_click_id: Url.getQuery("search_click_id")
      }
    };
  }
  var x$2 = 150;
  var p$2 = 0;
  function N$1() {
    return _N.apply(this, arguments);
  }
  function _N() {
    _N = asyncToGenerator( _regeneratorRuntime$3().mark(function _callee() {
      return _regeneratorRuntime$3().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            return _context.abrupt("return", d$5 || (window.__secPageAuthPromise ? new Promise(function (n) {
              window.__secPageAuthPromise.then(function () {
                d$5 = _$4(), n(d$5);
              });
            }) : (_typeof$2(window.itemidx || window.idx) &gt; "u" || _typeof$2(window.mid) &gt; "u" || _typeof$2(window.item_show_type) &gt; "u") &amp;&amp; p$2 &lt; x$2 ? (p$2++, new Promise(function (e) {
              setTimeout(function () {
                e(N$1());
              }, 16);
            })) : (d$5 = _$4(), d$5)));
          case 1:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return _N.apply(this, arguments);
  }
  function k$2(n) {
    return (Number(n) / 100).toFixed(2).replace(/([0-9]+(\.[0-9]+[1-9])?)(\.?0+$)/, "$1");
  }
  function I$5(n) {
    return _typeof$2(n.code) &lt; "u" &amp;&amp; n.code !== 0;
  }
  function P$4(n, e) {
    var t = {
      base_req: {
        action: n
      },
      ext_info: JSON.stringify(e)
    };
    return {
      data: JSON.stringify(t)
    };
  }
  function O$5(n) {
    if (!n) return;
    var e = n.data;
    e.params &amp;&amp; (e.params = JSON.parse(e.params), e.params = JSON.stringify(_objectSpread$a(_objectSpread$a({}, e.params), {}, {
      scene: Number(window.source),
      subscene: Number(window.subscene),
      ClientVersion: parseInt(window.clientversion || "", 16),
      SessionId: window.sessionid || ""
    }))), ajax({
      type: "POST",
      url: "/mp/c_psmaterial_info?action=get_windowproduct",
      timeout: 5e3,
      dataType: "json",
      data: P$4("ReportMMData23782", _objectSpread$a({}, e)),
      success: function success() {},
      error: function error() {
        console.log("[error]");
      }
    });
  }
  function C$6() {
    var _ref2;
    var n = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : [];
    var a;
    var _ref = (_ref2 = (a = n.filter(function (_ref3) {
        var u = _ref3.red,
          w = _ref3.green,
          m = _ref3.blue;
        return !(u === 255 &amp;&amp; w === 255 &amp;&amp; m === 255);
      })) == null ? void 0 : a[0]) !== null &amp;&amp; _ref2 !== void 0 ? _ref2 : {
        red: 76,
        green: 76,
        blue: 76
      },
      e = _ref.red,
      t = _ref.green,
      o = _ref.blue,
      _h = h$3(e, t, o),
      _h2 = slicedToArray(_h, 3),
      s = _h2[0],
      r = _h2[1],
      i = _h2[2];
    i = Math.min(i, 0.2);
    var c = g$6([s, r * 100, i * 100]);
    return e = c[0], t = c[1], o = c[2], [y$2([e, t, o]), {
      red: e,
      green: t,
      blue: o
    }];
  }
  function M$2() {
    return (typeof window === "undefined" ? "undefined" : _typeof$2(window)) &lt; "u";
  }
  function R$3() {
    var n = M$2() &amp;&amp; window.navigator.userAgent.toLowerCase();
    return n &amp;&amp; /iphone|ipad|ipod|ios/.test(n);
  }

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  var classCallCheck = _classCallCheck;

  function _defineProperties(target, props) {
    for (var i = 0; i &lt; props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor) descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass(Constructor, protoProps, staticProps) {
    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
    if (staticProps) _defineProperties(Constructor, staticProps);
    return Constructor;
  }
  var createClass = _createClass;

  function _assertThisInitialized(self) {
    if (self === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }
    return self;
  }
  var assertThisInitialized$1 = _assertThisInitialized;

  var _typeof = _typeof_1;
  var assertThisInitialized = assertThisInitialized$1;
  function _possibleConstructorReturn(self, call) {
    if (call &amp;&amp; (_typeof(call) === "object" || typeof call === "function")) {
      return call;
    }
    return assertThisInitialized(self);
  }
  var possibleConstructorReturn = _possibleConstructorReturn;

  function _getPrototypeOf(o) {
    getPrototypeOf = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
      return o.__proto__ || Object.getPrototypeOf(o);
    };
    return _getPrototypeOf(o);
  }
  var getPrototypeOf = _getPrototypeOf;

  var _getPrototypeOf$1 = getPrototypeOf;

  function _setPrototypeOf(o, p) {
    setPrototypeOf$1 = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
      o.__proto__ = p;
      return o;
    };
    return _setPrototypeOf(o, p);
  }
  var setPrototypeOf$1 = _setPrototypeOf;

  var setPrototypeOf = setPrototypeOf$1;
  function _inherits(subClass, superClass) {
    if (typeof superClass !== "function" &amp;&amp; superClass !== null) {
      throw new TypeError("Super expression must either be null or a function");
    }
    subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, {
      constructor: {
        value: subClass,
        writable: true,
        configurable: true
      }
    });
    if (superClass) setPrototypeOf(subClass, superClass);
  }
  var inherits = _inherits;

  function _callSuper(t, o, e) { return o = _getPrototypeOf$1(o), possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf$1(t).constructor) : o.apply(t, e)); }
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
  var v$3 = {
    web: "common-web",
    app: "common-app",
    wechat: "common-webchat"
  };
  function T$6(t, e) {
    var o = e || window.location.search,
      n = new RegExp("(^|&amp;)" + t + "=([^&amp;]*)(&amp;|$)"),
      s = o.substr(o.indexOf("?") + 1).match(n);
    return s !== null ? s[2] : "";
  }
  var f$1 = T$6("color_scheme", location.href),
    _$3 = Number(T$6("uninteractive", location.href)),
    k$1 = {
      props: {
        platform: {
          type: String,
          "default": "web"
        },
        extraInfo: {
          type: Object,
          "default": function _default() {
            return {};
          }
        }
      },
      mounted: function mounted() {
        var t = this.$refs.js_custom_element;
        t &amp;&amp; (this.platform !== "wechat" &amp;&amp; !f$1 &amp;&amp; t.setAttribute("data-weui-theme", "light"), f$1 &amp;&amp; f$1 === "light" &amp;&amp; t.setAttribute("data-weui-theme", "light"), _$3 === 1 &amp;&amp; t.classList.add("wx_uninteractive"));
      },
      data: function data() {
        return {
          platformClassname: v$3[this.platform]
        };
      }
    };
  function L$2(t) {
    var e = {};
    return t.attributes &amp;&amp; Array.from(t.attributes).forEach(function (o) {
      e[o.nodeName] = o.nodeValue;
    }), e;
  }
  function j$2() {
    var t = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : [];
    var e = arguments.length &gt; 1 ? arguments[1] : undefined;
    var o = [];
    return t.childNodes.forEach(function (n) {
      var s = L$2(n);
      if ("data-shadow-slot" in s) {
        if (!s.slot) return;
        var l = {
          attrs: s,
          domProps: {
            innerHTML: n.innerHTML === "" ? n.innerText : n.innerHTML
          },
          slot: s.slot
        };
        s.slot = void 0;
        var m = e(n.tagName, l);
        o.push(m);
      } else if (s.slot) {
        var _l = e("slot", {
          attrs: {
            name: s.slot
          },
          slot: s.slot
        });
        o.push(_l);
      }
    }), o;
  }
  function H$3(_ref) {
    var t = _ref.iframeWindow,
      e = _ref.Component,
      o = _ref.platform,
      n = _ref.customName,
      s = _ref.styleText,
      _ref$extraInfo = _ref.extraInfo,
      l = _ref$extraInfo === void 0 ? {} : _ref$extraInfo,
      m = _ref.watchAttr,
      b = _ref.beforeRender,
      g = _ref.afterRender,
      E = _ref.selector,
      y = _ref.afterMounted,
      w = _ref.reflowProps,
      C = _ref.getProps,
      _ref$eventName = _ref.eventName,
      A = _ref$eventName === void 0 ? [] : _ref$eventName;
    var d = window;
    t &amp;&amp; (d = t), l.window = d;
    var $ = window.test_autospace;
    d.customElements.define(n, function (_d$HTMLElement) {
      inherits(_class, _d$HTMLElement);
      function _class() {
        var _this;
        classCallCheck(this, _class);
        _this = _callSuper(this, _class);
        var a = _this.attachShadow({
          mode: "open"
        });
        _this.shadow = a;
        return _this;
      }
      createClass(_class, [{
        key: "connectedCallback",
        value: function connectedCallback() {
          var _this2 = this;
          if (!e.install) {
            if (e.props &amp;&amp; w &amp;&amp; w.length) {
              var i = {
                watch: {}
              };
              w.forEach(function (u) {
                i.watch[u] = function () {
                  var p = this.$el.getRootNode().host,
                    x = {
                      compEle: p,
                      compType: n,
                      compIdx: Array.from(document.querySelectorAll(E || n)).indexOf(p)
                    };
                  b &amp;&amp; b(Object.assign({
                    subCompType: u
                  }, x)), this.$nextTick(function () {
                    g &amp;&amp; g(Object.assign({
                      subCompType: u
                    }, x));
                  });
                };
              }), e.mixins.push(i);
            }
            typeof e.template == "function" &amp;&amp; e.template(e);
          }
          var a = A.reduce(function (i, u) {
              return i[u] = function (p) {
                _this2.dispatchCustomEvent(u, p);
              }, i;
            }, {}),
            c = new Vue({
              render: function render(i) {
                return i(e, {
                  props: C.call(_this2, o, l),
                  on: a
                }, j$2(_this2, i));
              }
            });
          this.wrapper = c;
          var r = document.createElement("style");
          r.textContent = " \n        :host {\n          all: initial;\n          -webkit-text-size-adjust: inherit;\n          ".concat($ ? "text-autospace: normal" : "", "\n        }\n      \n      "), this.shadowRoot.appendChild(r);
          var h = document.createElement("style");
          h.appendChild(document.createTextNode(s)), this.shadowRoot.appendChild(h), this.wrapper.$mount(), this.shadowRoot.appendChild(this.wrapper.$el), this.debounceUpdate = this.debounce(function () {
            console.log("forceUpdate"), _this2.wrapper &amp;&amp; _this2.wrapper.$forceUpdate();
          }, 500), this.classList.add("mp_common_widget"), y &amp;&amp; y.call(this);
        }
      }, {
        key: "debounce",
        value: function debounce(a, c) {
          var r;
          return function () {
            for (var _len = arguments.length, h = new Array(_len), _key = 0; _key &lt; _len; _key++) {
              h[_key] = arguments[_key];
            }
            var i = this;
            clearTimeout(r), r = setTimeout(function () {
              return a.apply(i, h);
            }, c);
          };
        }
      }, {
        key: "dispatchCustomEvent",
        value: function dispatchCustomEvent(a, c) {
          var r = new CustomEvent(a, {
            detail: c,
            bubbles: !0,
            composed: !0
          });
          this.dispatchEvent(r);
        }
      }, {
        key: "getKeyByDataValue",
        value: function getKeyByDataValue(a) {
          for (var c in ATTR) if (ATTR[c] === a) return c;
          return null;
        }
      }, {
        key: "disconnectedCallback",
        value: function disconnectedCallback() {
          this.shadowRoot.innerHTML = "", this.wrapper &amp;&amp; this.wrapper.$destroy();
        }
      }, {
        key: "attributeChangedCallback",
        value: function attributeChangedCallback(a, c, r) {
          this.wrapper &amp;&amp; this.wrapper.$forceUpdate();
        }
      }], [{
        key: "observedAttributes",
        get: function get() {
          return m;
        }
      }]);
      return _class;
    }(d.HTMLElement));
  }

  function p$1(o) {
    var e = {},
      s = /[?&amp;]([^=&amp;#]+)=([^&amp;#]*)/g,
      t = o.match(s);
    if (t) {
      for (var r in t) if (Object.prototype.hasOwnProperty.call(t, r)) {
        var c = t[r].split("="),
          n = c[0].substr(1),
          i = c[1];
        e[n] ? e[n] = [].concat(e[n], i) : e[n] = i;
      }
    }
    return e;
  }
  function h$2(o) {
    var e = o.length;
    var s = o.indexOf("?"),
      t = o.indexOf("#");
    t = t === -1 ? e : t, s = s === -1 ? t : s;
    var r = o.substring(0, s),
      c = o.substring(s + 1, t),
      n = o.substring(t + 1);
    return {
      host: r,
      queryStr: c,
      hash: n
    };
  }
  function u$2(o, e) {
    var s = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : !1;
    var t = h$2(o);
    var r = t.queryStr;
    var c = [];
    if (_typeof$2(e) == "object") for (var n in e) Object.prototype.hasOwnProperty.call(e, n) &amp;&amp; c.push(n + "=" + (s ? e[n] : encodeURIComponent(e[n])));else c.push(s ? e : encodeURIComponent(e));
    return c.length &gt; 0 &amp;&amp; (r += (r !== "" ? "&amp;" : "") + c.join("&amp;")), "".concat(t.host).concat(r !== "" ? "?" + r : "").concat(t.hash !== "" ? "#" + t.hash : "");
  }

  function v$2(r, a, d, h, i, t, f, u) {
    var e = typeof r == "function" ? r.options : r;
    a &amp;&amp; (e.render = a, e.staticRenderFns = d, e._compiled = !0), h &amp;&amp; (e.functional = !0), t &amp;&amp; (e._scopeId = "data-v-" + t);
    var o;
    if (f ? (o = function o(n) {
      n = n ||
      this.$vnode &amp;&amp; this.$vnode.ssrContext ||
      this.parent &amp;&amp; this.parent.$vnode &amp;&amp; this.parent.$vnode.ssrContext, !n &amp;&amp; (typeof __VUE_SSR_CONTEXT__ === "undefined" ? "undefined" : _typeof$2(__VUE_SSR_CONTEXT__)) &lt; "u" &amp;&amp; (n = __VUE_SSR_CONTEXT__), i &amp;&amp; i.call(this, n), n &amp;&amp; n._registeredComponents &amp;&amp; n._registeredComponents.add(f);
    }, e._ssrRegister = o) : i &amp;&amp; (o = u ? function () {
      i.call(this, (e.functional ? this.parent : this).$root.$options.shadowRoot);
    } : i), o) if (e.functional) {
      e._injectStyles = o;
      var l = e.render;
      e.render = function (p, _) {
        return o.call(_), l(p, _);
      };
    } else {
      var s = e.beforeCreate;
      e.beforeCreate = s ? [].concat(s, o) : [o];
    }
    return {
      exports: r,
      options: e
    };
  }

  typeof Number.isFinite == "function" &amp;&amp; Number.isFinite.bind(Number);
  function o$6(n) {
    var _this = this;
    var t = {};
    return Object.keys(n).forEach(function (e) {
      t[e] = _this.getAttribute(n[e]);
    }), t;
  }

  function _regeneratorRuntime$2() {  _regeneratorRuntime$2 = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof$2(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof$2(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  function ownKeys$9(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r &amp;&amp; (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
  function _objectSpread$9(e) { for (var r = 1; r &lt; arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$9(Object(t), !0).forEach(function (r) { defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$9(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
  
  function o$5(A, t, e, i, B, a, E, u, p, O) {
    typeof E != "boolean" &amp;&amp; (p = u, u = E, E = !1);
    var c = typeof e == "function" ? e.options : e;
    A &amp;&amp; A.render &amp;&amp; (c.render = A.render, c.staticRenderFns = A.staticRenderFns, c._compiled = !0, B &amp;&amp; (c.functional = !0)), i &amp;&amp; (c._scopeId = i);
    var w;
    if (a ? (w = function w(r) {
      r = r ||
      this.$vnode &amp;&amp; this.$vnode.ssrContext ||
      this.parent &amp;&amp; this.parent.$vnode &amp;&amp; this.parent.$vnode.ssrContext, !r &amp;&amp; (typeof __VUE_SSR_CONTEXT__ === "undefined" ? "undefined" : _typeof$2(__VUE_SSR_CONTEXT__)) &lt; "u" &amp;&amp; (r = __VUE_SSR_CONTEXT__), t &amp;&amp; t.call(this, p(r)), r &amp;&amp; r._registeredComponents &amp;&amp; r._registeredComponents.add(a);
    }, c._ssrRegister = w) : t &amp;&amp; (w = E ? function (r) {
      t.call(this, O(r, this.$root.$options.shadowRoot));
    } : function (r) {
      t.call(this, u(r));
    }), w) if (c.functional) {
      var r = c.render;
      c.render = function (Z, U) {
        return w.call(U), r(Z, U);
      };
    } else {
      var _r = c.beforeCreate;
      c.beforeCreate = _r ? [].concat(_r, w) : [w];
    }
    return e;
  }
  
  var rA = o$7.defineComponent({
    name: "ProductTitle",
    props: {
      product: {
        type: Object,
        required: !0
      },
      layout: {
        type: String,
        "default": "large"
      },
      darkMode: {
        type: Boolean,
        "default": !1
      }
    }
  });
  var oA = rA;
  var y$1 = function y() {
      var A = this,
        t = A.$createElement,
        e = A._self._c || t;
      return e("div", {
        staticClass: "product-title__outer",
        "class": [A.layout, {
          "dark-mode": A.darkMode
        }]
      }, [e("div", {
        staticClass: "product-title",
        "class": A.layout === "bar" ? "one-line" : "two-line"
      }, [e("span", [A._l(A.product.iconUrls, function (i, B) {
        return [e("img", {
          key: B,
          attrs: {
            src: i,
            alt: ""
          }
        })];
      })], 2), A._v(" "), e("span", [A._v(A._s(A.product.title))])])]);
    },
    EA = [];
  y$1._withStripped = !0;
  var cA = void 0,
    sA = "data-v-40afe61e",
    dA = void 0,
    wA = !1,
    M$1 = o$5({
      render: y$1,
      staticRenderFns: EA
    }, cA, oA, sA, wA, dA, !1, void 0, void 0, void 0);
  
  var gA = o$7.defineComponent({
    name: "ProductShop",
    props: {
      product: {
        type: Object,
        required: !0
      },
      layout: {
        type: String,
        "default": "large"
      },
      darkMode: {
        type: Boolean,
        "default": !1
      }
    }
  });
  var nA = gA;
  var D = function D() {
      var A = this,
        t = A.$createElement,
        e = A._self._c || t;
      return e("div", {
        staticClass: "product-shop__outer",
        "class": [A.layout, {
          "dark-mode": A.darkMode
        }]
      }, [e("div", {
        staticClass: "product-shop"
      }, [e("div", {
        staticClass: "product-shop__inner"
      }, [e("div", {
        staticClass: "left"
      }, [e("img", {
        staticClass: "icon img-color-invert",
        attrs: {
          src: A.product.platformIconUrl
        }
      }), A._v(" "), e("div", {
        staticClass: "text"
      }, [A._v("\n          " + A._s(A.product.platformName) + "\n        ")]), A._v(" "), A.product.bizIcon.goodShopIcon[A.darkMode ? "dark" : "normal"] ? e("img", {
        staticClass: "right-icon good-shop",
        attrs: {
          src: A.product.bizIcon.goodShopIcon[A.darkMode ? "dark" : "normal"]
        }
      }) : A.product.bizIcon.rtagIcon[A.darkMode ? "dark" : "normal"] ? e("img", {
        staticClass: "right-icon icon-r",
        attrs: {
          src: A.product.bizIcon.rtagIcon[A.darkMode ? "dark" : "normal"]
        }
      }) : A._e()])])])]);
    },
    uA = [];
  D._withStripped = !0;
  var lA = void 0,
    IA = "data-v-1a13560c",
    MA = void 0,
    QA = !1,
    Q = o$5({
      render: D,
      staticRenderFns: uA
    }, lA, nA, IA, QA, MA, !1, void 0, void 0, void 0);
  
  var GA = o$7.defineComponent({
    name: "ProductBuyButtons",
    props: {
      product: {
        type: Object,
        required: !0
      },
      clientType: {
        type: String,
        "default": "C"
      },
      layout: {
        type: String,
        "default": "large"
      },
      isPC: {
        type: Boolean,
        "default": !1
      },
      darkMode: {
        type: Boolean,
        "default": !1
      }
    },
    computed: {
      isC: function isC() {
        return this.clientType === "C";
      },
      isB: function isB() {
        return this.clientType === "B";
      },
      showGiftBtn: function showGiftBtn() {
        return this.isC &amp;&amp; !this.isPC &amp;&amp; this.product.showPresentBtn &amp;&amp; this.layout !== "bar" &amp;&amp; !this.product.btnText;
      }
    },
    methods: {
      handleBuy: function handleBuy() {
        if (this.isB) {
          this.$emit("expand");
          return;
        }
        this.$emit("buy", {
          clickType: 1
        });
      },
      handleGift: function handleGift() {
        this.product.canGivePresent ? this.isC &amp;&amp; this.$emit("gift", {
          clickType: 2
        }) : this.$emit("gift", {
          clickType: 3
        });
      }
    }
  });
  var CA = GA;
  var z = function z() {
      var A = this,
        t = A.$createElement,
        e = A._self._c || t;
      return e("div", {
        staticClass: "btn__area",
        "class": [A.layout, {
          "dark-mode": A.darkMode
        }]
      }, [A.showGiftBtn ? e("div", [e("button", {
        staticClass: "btn type-secondary",
        "class": {
          "type-disabled": !A.product.canGivePresent
        },
        on: {
          click: function click(i) {
            return i.stopPropagation(), A.handleGift.apply(null, arguments);
          }
        }
      }, [A._v("\n      \u9001\u670B\u53CB\n    ")])]) : A._e(), A._v(" "), A.product.btnText ? e("div", [e("div", {
        staticClass: "product_status_text"
      }, [A._v("\n      " + A._s(A.product.btnText) + "\n    ")])]) : e("div", [e("button", {
        staticClass: "btn type-primary",
        on: {
          click: function click(i) {
            return i.stopPropagation(), A.handleBuy.apply(null, arguments);
          }
        }
      }, [A._v("\n      " + A._s(A.product.buttonWording || "购买") + "\n    ")])])]);
    },
    FA = [];
  z._withStripped = !0;
  var NA = void 0,
    hA = "data-v-4b157c62",
    pA = void 0,
    UA = !1,
    G$2 = o$5({
      render: z,
      staticRenderFns: FA
    }, NA, CA, hA, UA, pA, !1, void 0, void 0, void 0);
  
  var RA = o$7.defineComponent({
    name: "ProductImage",
    props: {
      product: {
        type: Object,
        required: !0
      },
      layout: {
        type: String,
        "default": "large"
      },
      imgSize: {
        type: Number,
        "default": 400
      },
      darkMode: {
        type: Boolean,
        "default": !1
      }
    },
    data: function data() {
      return {
        showError: !1
      };
    },
    computed: {
      imageStyle: function imageStyle() {
        return {
          objectFit: "cover",
          width: this.imgSize + "px",
          height: this.imgSize + "px"
        };
      }
    },
    methods: {
      handleImageError: function handleImageError() {
        this.showError = !0;
      },
      handleImageLoad: function handleImageLoad() {
        this.showError = !1;
      }
    }
  });
  var YA = RA;
  var b$5 = function b() {
      var A = this,
        t = A.$createElement,
        e = A._self._c || t;
      return e("div", {
        staticClass: "product-img-container",
        style: {
          width: A.imgSize + "px",
          height: A.imgSize + "px"
        }
      }, [e("img", {
        staticClass: "product-img",
        "class": A.layout,
        style: A.imageStyle,
        attrs: {
          src: A.product.imgUrls[0] || ""
        },
        on: {
          error: A.handleImageError,
          load: A.handleImageLoad
        }
      }), A._v(" "), e("div", {
        staticClass: "product-img-error",
        style: {
          display: A.showError ? "flex" : "none"
        }
      }, [A._v("\n    \u56FE\u7247\u52A0\u8F7D\u5931\u8D25\n  ")])]);
    },
    mA = [];
  b$5._withStripped = !0;
  var fA = void 0,
    TA = "data-v-c88442f6",
    yA = void 0,
    DA = !1,
    C$5 = o$5({
      render: b$5,
      staticRenderFns: mA
    }, fA, YA, TA, DA, yA, !1, void 0, void 0, void 0);
  
  var zA = o$7.defineComponent({
    name: "QrCode",
    props: {
      isExpanded: {
        type: Boolean,
        "default": !1
      },
      qrCodeUrl: {
        type: String,
        "default": ""
      },
      darkMode: {
        type: Boolean,
        "default": !1
      }
    },
    emits: ["collapse", "expand"],
    data: function data() {
      return {
        imageLoaded: !1,
        imageError: !1
      };
    },
    watch: {
      qrCodeUrl: function qrCodeUrl(A) {
        A &amp;&amp; (this.imageLoaded = !1, this.imageError = !1);
      }
    },
    methods: {
      handleCollapse: function handleCollapse() {
        this.$emit("collapse");
      },
      handleExpand: function handleExpand() {
        this.$emit("expand");
      },
      onImageLoad: function onImageLoad() {
        this.imageLoaded = !0, this.imageError = !1;
      },
      onImageError: function onImageError() {
        this.imageLoaded = !1, this.imageError = !0;
      }
    }
  });
  var bA = zA;
  var S = function S() {
      var A = this,
        t = A.$createElement,
        e = A._self._c || t;
      return e("div", {
        staticClass: "qrcode__outer",
        "class": [{
          open: A.isExpanded
        }, {
          "dark-mode": A.darkMode
        }]
      }, [e("div", {
        staticClass: "qrcode__hd"
      }, [e("div", {
        staticClass: "close-area",
        on: {
          click: A.handleCollapse
        }
      }, [e("img", {
        staticClass: "arrow-icon",
        "class": {
          "img-color-invert": A.darkMode
        },
        attrs: {
          src: "	https://res.wx.qq.com/t/components/icons/base/arrow_down_regular.svg"
        }
      }), A._v("\n      \u6536\u8D77\n    ")])]), A._v(" "), e("div", {
        staticClass: "qrcode__bd"
      }, [A.qrCodeUrl ? e("img", {
        directives: [{
          name: "show",
          rawName: "v-show",
          value: A.imageLoaded &amp;&amp; !A.imageError,
          expression: "imageLoaded &amp;&amp; !imageError"
        }],
        staticClass: "qrcode-img",
        "class": {
          "img-color-invert": A.darkMode
        },
        attrs: {
          src: A.qrCodeUrl,
          alt: "商品二维码"
        },
        on: {
          load: A.onImageLoad,
          error: A.onImageError
        }
      }) : A._e(), A._v(" "), A.qrCodeUrl ? e("i", {
        directives: [{
          name: "show",
          rawName: "v-show",
          value: !A.imageLoaded &amp;&amp; !A.imageError,
          expression: "!imageLoaded &amp;&amp; !imageError"
        }],
        staticClass: "loading"
      }) : A._e(), A._v(" "), !A.qrCodeUrl || A.imageError ? e("img", {
        staticClass: "error-icon",
        "class": {
          "img-color-invert": A.darkMode
        },
        attrs: {
          src: "https://res.wx.qq.com/t/components/icons/base/refresh_regular.svg",
          alt: "加载失败"
        }
      }) : A._e()]), A._v(" "), A._m(0)]);
    },
    SA = [function () {
      var A = this,
        t = A.$createElement,
        e = A._self._c || t;
      return e("div", {
        staticClass: "qrcode__ft"
      }, [e("div", [A._v("使用手机微信")]), A._v(" "), e("div", [A._v("扫码了解商品信息")])]);
    }];
  S._withStripped = !0;
  var LA = void 0,
    _A = "data-v-34552a2a",
    jA = void 0,
    xA = !1,
    F$3 = o$5({
      render: S,
      staticRenderFns: SA
    }, LA, bA, _A, xA, jA, !1, void 0, void 0, void 0);
  
  var kA = o$7.defineComponent({
    name: "ProductPrice",
    props: {
      product: {
        type: Object,
        required: !0
      },
      layout: {
        type: String,
        "default": "large"
      },
      darkMode: {
        type: Boolean,
        "default": !1
      }
    }
  });
  var VA = kA;
  var L$1 = function L() {
      var A = this,
        t = A.$createElement,
        e = A._self._c || t;
      return e("div", {
        staticClass: "product-price",
        "class": [{
          "dark-mode": A.darkMode
        }]
      }, [e("div", {
        staticClass: "price-box"
      }, [e("div", {
        staticClass: "more"
      }, [e("div", {
        staticClass: "money"
      }, [A._v(A._s(A.product.price.str))]), A._v(" "), A.product.price.more ? e("div", {
        staticClass: "add"
      }, [A._v("起")]) : A._e(), A._v(" "), A.product.price.wording ? e("div", {
        staticClass: "tag"
      }, [A._v("\n        " + A._s(A.product.price.wording) + "\n      ")]) : A._e()])])]);
    },
    WA = [];
  L$1._withStripped = !0;
  var HA = void 0,
    vA = "data-v-4ce15964",
    PA = void 0,
    JA = !1,
    N = o$5({
      render: L$1,
      staticRenderFns: WA
    }, HA, VA, vA, JA, PA, !1, void 0, void 0, void 0);
  
  var OA = {
    name: "ProductTags",
    props: {
      product: {
        type: Object,
        required: !0
      },
      darkMode: {
        type: Boolean,
        "default": !1
      },
      layout: {
        type: String,
        "default": "large"
      },
      hideOverflowTags: {
        type: Boolean,
        "default": !0
      }
    },
    data: function data() {
      return {
        visibleTags: []
      };
    },
    methods: {
      calculateVisibleTags: function calculateVisibleTags() {
        if (!this.hideOverflowTags || !this.$refs.tagContainer) return;
        var A = this.$refs.tagContainer,
          t = A.offsetWidth,
          e = A.children;
        for (var a = 0; a &lt; e.length; a++) e[a].style.visibility = "visible";
        var i = 0;
        var B = [];
        for (var _a = 0; _a &lt; e.length; _a++) {
          var E = e[_a].offsetWidth + (_a &gt; 0 ? 8 : 0);
          if (i + E &lt;= t) B.push(_a), i += E;else break;
        }
        for (var _a2 = 0; _a2 &lt; e.length; _a2++) e[_a2].style.visibility = B.includes(_a2) ? "visible" : "hidden";
        this.visibleTags = B;
      },
      handleResize: function handleResize() {
        this.calculateVisibleTags();
      }
    },
    mounted: function mounted() {
      var _this = this;
      this.$nextTick(function () {
        _this.calculateVisibleTags(), window.addEventListener("resize", _this.handleResize);
      });
    },
    beforeDestroy: function beforeDestroy() {
      window.removeEventListener("resize", this.handleResize);
    }
  };
  var ZA = OA;
  var _$2 = function _() {
      var A = this,
        t = A.$createElement,
        e = A._self._c || t;
      return e("div", {
        staticClass: "product-tag__outer",
        "class": [A.layout, {
          "dark-mode": A.darkMode
        }]
      }, [e("div", {
        ref: "tagContainer",
        staticClass: "product-tag"
      }, [A._l(A.product.tags.marketingCoupons, function (i) {
        return e("div", {
          key: i.desc,
          staticClass: "tag-body",
          "class": A.layout == "bar" ? "marketing" : "primary"
        }, [A._v("\n      " + A._s(i.desc) + "\n    ")]);
      }), A._v(" "), A._l(A.product.tags.safeguardList, function (i) {
        return e("div", {
          key: i.desc,
          staticClass: "tag-body primary"
        }, [A._v("\n      " + A._s(i.desc) + "\n    ")]);
      }), A._v(" "), A._l(A.product.tags.couponsList, function (i) {
        return e("div", {
          key: i.desc,
          staticClass: "tag-body primary"
        }, [A._v("\n      " + A._s(i.desc) + "\n    ")]);
      })], 2)]);
    },
    KA = [];
  _$2._withStripped = !0;
  var XA = void 0,
    qA = "data-v-339c50a0",
    $A = void 0,
    Ae$1 = !1,
    h$1 = o$5({
      render: _$2,
      staticRenderFns: KA
    }, XA, ZA, qA, Ae$1, $A, !1, void 0, void 0, void 0);
  
  var ee = o$7.defineComponent({
    name: "ProductBar",
    components: {
      ProductTitle: M$1,
      ProductShop: Q,
      ProductBuyButtons: G$2,
      ProductImage: C$5,
      QrCode: F$3,
      ProductPrice: N,
      ProductTags: h$1
    },
    props: {
      product: {
        type: Object,
        required: !0
      },
      clientType: {
        type: String,
        "default": "C"
      },
      darkMode: {
        type: Boolean,
        "default": !1
      },
      isPC: {
        type: Boolean,
        "default": !1
      }
    },
    data: function data() {
      return {
        contentHeight: 44,
        isExpanded: !1
      };
    },
    mounted: function mounted() {
      this.calculateContentHeight(), window.addEventListener("resize", this.calculateContentHeight);
    },
    beforeDestroy: function beforeDestroy() {
      window.removeEventListener("resize", this.calculateContentHeight);
    },
    methods: {
      calculateContentHeight: function calculateContentHeight() {
        var A = this.$el.querySelector(".product-right");
        console.log(A), A &amp;&amp; (this.contentHeight = Math.max(A.clientHeight, 44));
      },
      handleCardClick: function handleCardClick() {
        this.isPC &amp;&amp; this.handleExpand(), this.$emit("card-click");
      },
      handleExpand: function handleExpand() {
        this.isExpanded = !0;
      },
      handleCollapse: function handleCollapse() {
        this.isExpanded = !1;
      },
      handleBuy: function handleBuy(A) {
        this.isPC &amp;&amp; this.handleExpand(), this.$emit("buy", A);
      },
      handleGift: function handleGift(A) {
        this.isPC &amp;&amp; this.handleExpand(), this.$emit("gift", A);
      }
    }
  });
  var te = ee;
  var j$1 = function j() {
      var A = this,
        t = A.$createElement,
        e = A._self._c || t;
      return e("div", {
        staticClass: "product-card",
        "class": {
          "dark-mode": A.darkMode
        },
        attrs: {
          id: "product-id-card"
        }
      }, [e("div", {
        staticClass: "mini-product-card",
        on: {
          click: A.handleCardClick
        }
      }, [e("div", {
        staticClass: "product-card__outer"
      }, [e("product-image", {
        attrs: {
          product: A.product,
          layout: "bar",
          "img-size": A.contentHeight,
          "dark-mode": A.darkMode
        }
      }), A._v(" "), e("div", {
        staticClass: "product-right"
      }, [e("div", {
        staticClass: "product-right-top"
      }, [e("product-title", {
        attrs: {
          product: A.product,
          layout: "bar",
          "dark-mode": A.darkMode
        }
      })], 1), A._v(" "), e("div", {
        staticClass: "product-right-bottom"
      }, [e("product-price", {
        attrs: {
          product: A.product,
          layout: "bar",
          "dark-mode": A.darkMode
        }
      }), A._v(" "), e("product-tags", {
        attrs: {
          product: A.product,
          layout: "bar",
          "dark-mode": A.darkMode
        }
      })], 1)]), A._v(" "), e("div", {
        staticClass: "product-button__outer"
      }, [e("product-buy-buttons", {
        attrs: {
          product: A.product,
          "client-type": A.clientType,
          layout: "bar",
          isPC: A.isPC,
          "dark-mode": A.darkMode
        },
        on: {
          expand: A.handleExpand,
          buy: A.handleBuy,
          gift: A.handleGift
        }
      })], 1)], 1), A._v(" "), e("product-shop", {
        attrs: {
          product: A.product,
          layout: "bar",
          "dark-mode": A.darkMode
        }
      })], 1), A._v(" "), A.isPC &amp;&amp; A.clientType === "C" ? e("qr-code", {
        attrs: {
          isExpanded: A.isExpanded,
          qrCodeUrl: A.product.qrCodeUrl,
          "dark-mode": A.darkMode
        },
        on: {
          collapse: A.handleCollapse
        }
      }) : A._e()], 1);
    },
    ie = [];
  j$1._withStripped = !0;
  var Be$1 = void 0,
    ae$1 = "data-v-6dc03843",
    re = void 0,
    oe = !1,
    Ee$1 = o$5({
      render: j$1,
      staticRenderFns: ie
    }, Be$1, te, ae$1, oe, re, !1, void 0, void 0, void 0);
  
  var ce$1 = o$7.defineComponent({
    name: "ProductHistory",
    props: {
      product: {
        type: Object,
        required: !0
      },
      layout: {
        type: String,
        "default": "large"
      },
      darkMode: {
        type: Boolean,
        "default": !1
      }
    }
  });
  var se$1 = ce$1;
  var x$1 = function x() {
      var A,
        t = this,
        e = t.$createElement,
        i = t._self._c || e;
      return t.product.sales ? i("div", {
        staticClass: "history",
        "class": (A = {}, A[t.layout] = t.layout, A["dark-mode"] = t.darkMode, A)
      }, [i("div", {
        staticClass: "history-inner"
      }, [t._v("已售" + t._s(t.product.history))])]) : t._e();
    },
    de$1 = [];
  x$1._withStripped = !0;
  var we$1 = void 0,
    ge$1 = "data-v-ca1abb60",
    ne$1 = void 0,
    ue$1 = !1,
    k = o$5({
      render: x$1,
      staticRenderFns: de$1
    }, we$1, se$1, ge$1, ue$1, ne$1, !1, void 0, void 0, void 0);
  
  var le$1 = {
    name: "ProductLarge",
    components: {
      ProductTitle: M$1,
      ProductTags: h$1,
      ProductHistory: k,
      ProductPrice: N,
      ProductBuyButtons: G$2,
      ProductShop: Q,
      ProductImage: C$5,
      QrCode: F$3
    },
    props: {
      product: {
        type: Object,
        required: !0
      },
      clientType: {
        type: String,
        "default": "C"
      },
      darkMode: {
        type: Boolean,
        "default": !1
      },
      isPC: {
        type: Boolean,
        "default": !1
      }
    },
    data: function data() {
      return {
        imgSize: 400,
        isExpanded: !1
      };
    },
    mounted: function mounted() {
      var _this2 = this;
      this.$nextTick(function () {
        _this2.calculateImageSize();
      }), window.addEventListener("resize", this.calculateImageSize);
    },
    beforeDestroy: function beforeDestroy() {
      window.removeEventListener("resize", this.calculateImageSize);
    },
    methods: {
      handleCardClick: function handleCardClick() {
        this.isPC &amp;&amp; this.handleExpand(), this.$emit("card-click", this.product);
      },
      handleExpand: function handleExpand() {
        var _this3 = this;
        this.isExpanded = !0, this.$nextTick(function () {
          _this3.calculateImageSize();
        });
      },
      handleCollapse: function handleCollapse() {
        this.isExpanded = !1;
      },
      calculateImageSize: function calculateImageSize() {
        var A = this.$el.querySelector(".normal-product-large");
        if (A) {
          var t = A.offsetWidth;
          this.imgSize = t;
        }
      },
      handleBuy: function handleBuy(A) {
        this.isPC &amp;&amp; this.handleExpand(), this.$emit("buy", A);
      },
      handleGift: function handleGift(A) {
        this.isPC &amp;&amp; this.handleExpand(), this.$emit("gift", A);
      }
    }
  };
  var Ie$1 = le$1;
  var V$1 = function V() {
      var A = this,
        t = A.$createElement,
        e = A._self._c || t;
      return e("div", {
        staticClass: "product-large",
        "class": {
          "dark-mode": A.darkMode
        },
        attrs: {
          id: "product-id-card"
        }
      }, [e("div", {
        staticClass: "normal-product-large",
        on: {
          click: A.handleCardClick
        }
      }, [e("product-image", {
        attrs: {
          product: A.product,
          layout: "large",
          "img-size": A.imgSize,
          "dark-mode": A.darkMode
        }
      }), A._v(" "), e("product-title", {
        attrs: {
          product: A.product,
          layout: "large",
          "dark-mode": A.darkMode
        }
      }), A._v(" "), e("product-tags", {
        attrs: {
          product: A.product,
          layout: "large",
          "dark-mode": A.darkMode
        }
      }), A._v(" "), e("div", {
        staticClass: "product-info__outer"
      }, [e("div", {
        staticClass: "product-info"
      }, [e("div", {
        staticClass: "left"
      }, [e("product-price", {
        attrs: {
          product: A.product,
          layout: "large",
          "price-type": "more",
          "dark-mode": A.darkMode
        }
      }), A._v(" "), e("product-history", {
        attrs: {
          product: A.product,
          layout: "large",
          "dark-mode": A.darkMode
        }
      })], 1), A._v(" "), e("div", {
        staticClass: "right"
      }, [e("product-buy-buttons", {
        attrs: {
          product: A.product,
          "client-type": A.clientType,
          isPC: A.isPC,
          layout: "large",
          "dark-mode": A.darkMode
        },
        on: {
          expand: A.handleExpand,
          buy: A.handleBuy,
          gift: A.handleGift
        }
      })], 1)])]), A._v(" "), e("product-shop", {
        attrs: {
          product: A.product,
          layout: "large",
          "dark-mode": A.darkMode
        }
      })], 1), A._v(" "), A.isPC &amp;&amp; A.clientType === "C" ? e("qr-code", {
        attrs: {
          isExpanded: A.isExpanded,
          qrCodeUrl: A.product.qrCodeUrl,
          "dark-mode": A.darkMode
        },
        on: {
          collapse: A.handleCollapse
        }
      }) : A._e()], 1);
    },
    Me = [];
  V$1._withStripped = !0;
  var Qe = void 0,
    Ge$1 = "data-v-5376dcc1",
    Ce$1 = void 0,
    Fe$1 = !1,
    Ne$1 = o$5({
      render: V$1,
      staticRenderFns: Me
    }, Qe, Ie$1, Ge$1, Fe$1, Ce$1, !1, void 0, void 0, void 0);
  
  var he$1 = o$7.defineComponent({
    name: "ProductLittle",
    components: {
      ProductTitle: M$1,
      ProductTags: h$1,
      ProductHistory: k,
      ProductPrice: N,
      ProductBuyButtons: G$2,
      ProductShop: Q,
      ProductImage: C$5,
      QrCode: F$3
    },
    props: {
      product: {
        type: Object,
        required: !0
      },
      clientType: {
        type: String,
        "default": "C"
      },
      darkMode: {
        type: Boolean,
        "default": !1
      },
      isPC: {
        type: Boolean,
        "default": !1
      }
    },
    data: function data() {
      return {
        contentHeight: 88,
        isExpanded: !1
      };
    },
    mounted: function mounted() {
      this.calculateContentHeight(), window.addEventListener("resize", this.calculateContentHeight);
    },
    beforeDestroy: function beforeDestroy() {
      window.removeEventListener("resize", this.calculateContentHeight);
    },
    methods: {
      handleCardClick: function handleCardClick() {
        this.isPC &amp;&amp; this.handleExpand(), this.$emit("card-click", this.product);
      },
      handleExpand: function handleExpand() {
        var _this4 = this;
        this.isExpanded = !0, this.$nextTick(function () {
          _this4.calculateContentHeight();
        });
      },
      handleCollapse: function handleCollapse() {
        this.isExpanded = !1;
      },
      calculateContentHeight: function calculateContentHeight() {
        var A = this.$el.querySelector(".product-right"),
          t = this.$el.querySelector(".info-right");
        console.log("calculateContentHeight", A, t, this.$el.clientWidth);
        var e = this.$el.clientWidth - (t == null ? void 0 : t.clientWidth) - 32 - 10;
        A &amp;&amp; (this.contentHeight = Math.max(Math.min(A.clientHeight, e), 88));
      },
      handleBuy: function handleBuy(A) {
        this.isPC &amp;&amp; this.handleExpand(), this.$emit("buy", A);
      },
      handleGift: function handleGift(A) {
        this.isPC &amp;&amp; this.handleExpand(), this.$emit("gift", A);
      }
    }
  });
  var pe$1 = he$1;
  var W$1 = function W() {
      var A = this,
        t = A.$createElement,
        e = A._self._c || t;
      return e("div", {
        staticClass: "product-little",
        "class": {
          "dark-mode": A.darkMode
        },
        attrs: {
          id: "product-id-card"
        }
      }, [e("div", {
        staticClass: "small-product-little",
        on: {
          click: A.handleCardClick
        }
      }, [e("div", {
        staticClass: "product-little__outer"
      }, [e("product-image", {
        attrs: {
          product: A.product,
          layout: "little",
          "img-size": A.contentHeight,
          "dark-mode": A.darkMode
        }
      }), A._v(" "), e("div", {
        staticClass: "product-right"
      }, [e("div", {
        staticClass: "product-right-top"
      }, [e("product-title", {
        attrs: {
          product: A.product,
          layout: "little",
          "dark-mode": A.darkMode
        }
      }), A._v(" "), e("product-tags", {
        attrs: {
          product: A.product,
          layout: "little",
          "dark-mode": A.darkMode
        }
      }), A._v(" "), e("product-history", {
        attrs: {
          product: A.product,
          layout: "little",
          "dark-mode": A.darkMode
        }
      })], 1), A._v(" "), e("div", {
        staticClass: "product-right-bottom"
      }, [e("div", {
        staticClass: "product-info__outer"
      }, [e("div", {
        staticClass: "product-info"
      }, [e("div", {
        staticClass: "info-left"
      }, [e("product-price", {
        attrs: {
          product: A.product,
          layout: "little",
          "price-type": "more",
          "dark-mode": A.darkMode
        }
      })], 1), A._v(" "), e("div", {
        staticClass: "info-right"
      }, [e("product-buy-buttons", {
        attrs: {
          product: A.product,
          "client-type": A.clientType,
          layout: "little",
          isPC: A.isPC,
          "dark-mode": A.darkMode
        },
        on: {
          expand: A.handleExpand,
          buy: A.handleBuy,
          gift: A.handleGift
        }
      })], 1)])])])])], 1), A._v(" "), e("product-shop", {
        attrs: {
          product: A.product,
          layout: "little",
          "dark-mode": A.darkMode
        }
      })], 1), A._v(" "), A.isPC &amp;&amp; A.clientType === "C" ? e("qr-code", {
        attrs: {
          isExpanded: A.isExpanded,
          qrCodeUrl: A.product.qrCodeUrl
        },
        on: {
          collapse: A.handleCollapse
        }
      }) : A._e()], 1);
    },
    Ue$1 = [];
  W$1._withStripped = !0;
  var Re$1 = void 0,
    Ye$1 = "data-v-d8ab1782",
    me$1 = void 0,
    fe$1 = !1,
    Te$1 = o$5({
      render: W$1,
      staticRenderFns: Ue$1
    }, Re$1, pe$1, Ye$1, fe$1, me$1, !1, void 0, void 0, void 0);
  
  var ye$1 = {
    name: "ProductPicture",
    props: {
      imageUrl: {
        type: String,
        required: !0
      },
      title: {
        type: String,
        "default": ""
      }
    },
    computed: {
      imgSize: function imgSize() {
        return {
          width: "100%",
          height: "auto",
          maxWidth: "400px"
        };
      }
    },
    methods: {
      openShop: function openShop() {}
    }
  };
  var De$1 = ye$1;
  var H$2 = function H() {
      var A = this,
        t = A.$createElement,
        e = A._self._c || t;
      return e("a", {
        staticClass: "product_image_link js_product_entry"
      }, [e("img", {
        staticClass: "rich_pages wxw-img",
        style: A.imgSize,
        attrs: {
          src: A.imageUrl,
          alt: A.title
        },
        on: {
          click: A.openShop
        }
      })]);
    },
    ze = [];
  H$2._withStripped = !0;
  var be$1 = void 0,
    Se$1 = void 0,
    Le$1 = void 0,
    _e$1 = !1,
    je = o$5({
      render: H$2,
      staticRenderFns: ze
    }, be$1, De$1, Se$1, _e$1, Le$1, !1, void 0, void 0, void 0);
  
  var v$1 = function (A) {
    return A[A.LARGE = 0] = "LARGE", A[A.LITTLE = 1] = "LITTLE", A[A.PICTURE = 2] = "PICTURE", A[A.BAR = 3] = "BAR", A[A.TEXT = 4] = "TEXT", A;
  }(v$1 || {});
  
  var xe$1 = o$7.defineComponent({
    name: "Product",
    components: {
      ProductBar: Ee$1,
      ProductLarge: Ne$1,
      ProductLittle: Te$1,
      ProductPicture: je
    },
    data: function data() {
      return {
        CardType: v$1
      };
    },
    props: {
      cardType: {
        type: Number
      },
      product: {
        type: Object,
        required: !0
      },
      clientType: {
        type: String,
        "default": "default"
      },
      darkMode: {
        type: Boolean,
        "default": !1
      },
      isPC: {
        type: Boolean,
        "default": !1
      }
    },
    mounted: function mounted() {
      this.$emit("ready");
    },
    methods: {
      handleCardClick: function handleCardClick() {
        this.$emit("open", "product");
      },
      handleBuy: function handleBuy() {
        this.$emit("open", "buy");
      },
      handleGift: function handleGift(A) {
        A.clickType == 3 ? this.$emit("open", "giftFail") : this.$emit("open", "gift");
      }
    }
  });
  var ke$1 = xe$1;
  var P$3 = function P() {
      var A = this,
        t = A.$createElement,
        e = A._self._c || t;
      return e("div", {
        staticClass: "product-container",
        "class": "client-type-" + A.clientType
      }, [A.cardType === A.CardType.BAR ? e("ProductBar", {
        attrs: {
          product: A.product,
          "client-type": A.clientType,
          "dark-mode": A.darkMode &amp;&amp; A.clientType === "C",
          isPC: A.isPC
        },
        on: {
          buy: A.handleBuy,
          gift: A.handleGift,
          "card-click": A.handleCardClick
        },
        scopedSlots: A._u([{
          key: "bottom",
          fn: function fn() {
            return [A._t("bottom")];
          },
          proxy: !0
        }], null, !0)
      }) : A.cardType === A.CardType.LARGE ? e("ProductLarge", {
        attrs: {
          product: A.product,
          "client-type": A.clientType,
          "dark-mode": A.darkMode &amp;&amp; A.clientType === "C",
          isPC: A.isPC
        },
        on: {
          buy: A.handleBuy,
          gift: A.handleGift,
          "card-click": A.handleCardClick
        },
        scopedSlots: A._u([{
          key: "bottom",
          fn: function fn() {
            return [A._t("bottom")];
          },
          proxy: !0
        }], null, !0)
      }) : A.cardType === A.CardType.LITTLE ? e("ProductLittle", {
        attrs: {
          product: A.product,
          "client-type": A.clientType,
          "dark-mode": A.darkMode &amp;&amp; A.clientType === "C",
          isPC: A.isPC
        },
        on: {
          buy: A.handleBuy,
          gift: A.handleGift,
          "card-click": A.handleCardClick
        },
        scopedSlots: A._u([{
          key: "bottom",
          fn: function fn() {
            return [A._t("bottom")];
          },
          proxy: !0
        }], null, !0)
      }) : e("ProductLarge", {
        attrs: {
          product: A.product,
          "client-type": A.clientType,
          "dark-mode": A.darkMode &amp;&amp; A.clientType === "C",
          isPC: A.isPC
        },
        on: {
          buy: A.handleBuy,
          gift: A.handleGift,
          "card-click": A.handleCardClick
        },
        scopedSlots: A._u([{
          key: "bottom",
          fn: function fn() {
            return [A._t("bottom")];
          },
          proxy: !0
        }], null, !0)
      })], 1);
    },
    Ve = [];
  P$3._withStripped = !0;
  var We = void 0,
    He$1 = "data-v-71c60811",
    ve$1 = void 0,
    Pe$1 = !1,
    Je = o$5({
      render: P$3,
      staticRenderFns: Ve
    }, We, ke$1, He$1, Pe$1, ve$1, !1, void 0, void 0, void 0);
  function Oe$1(A) {
    return A.replace(/_([a-z])/g, function (t, e) {
      return e.toUpperCase();
    });
  }
  function I$4(A) {
    if (A == null) return A;
    if (Array.isArray(A)) return A.map(function (e) {
      return I$4(e);
    });
    if (A instanceof Date || _typeof$2(A) != "object") return A;
    var t = {};
    for (var e in A) if (A.hasOwnProperty(e)) {
      var i = Oe$1(e),
        B = A[e];
      t[i] = I$4(B);
    }
    return t;
  }
  var d$4 = {
      BRAND_SHOP: 1,
      BRAND_PRODUCT: 2,
      PRESALE: 3,
      SEVEN_DAY_GUARANTEE: 4,
      SELLER_INSURANCE: 5,
      FLASHSALE: 6,
      PAY_AFTER_USE: 7,
      FAST_REFUND: 8,
      DAMAGE_GUARANTEE: 9,
      FAKE_ONE_PAY_FOUR: 10,
      TIMEOUT_REFUND: 11,
      BUY_WITH_CONFIDENCE: 12,
      DOOR_TO_DOOR_PICKUP: 14
    },
    Ze$1 = function Ze(A) {
      var t = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 1;
      var e = Number(A);
      return Number.isNaN(e) ? (console.warn("[formatUnit] The count is an invalid value!"), "0") : e === 0 ? "0" : e &lt; 1e4 ? "".concat(e) : e &lt; 1e8 ? t === 0 ? Math.floor(Number(e) / 1e4) + "万" : Math.floor(Number(e) / 1e3) / 10 + "万" : t === 0 ? Math.floor(Number(e) / 1e8) + "亿" : Math.floor(Number(e) / 1e7) / 10 + "亿";
    },
    Ke = defineProperty(defineProperty(defineProperty(defineProperty(defineProperty(defineProperty(defineProperty(defineProperty(defineProperty({}, d$4.SEVEN_DAY_GUARANTEE, {
      desc: "7天无理由",
      "class": "safeguard"
    }), d$4.SELLER_INSURANCE, {
      "class": "safeguard",
      desc: "运费险"
    }), d$4.PAY_AFTER_USE, {
      "class": "safeguard",
      desc: "先用后付"
    }), d$4.FAST_REFUND, {
      "class": "safeguard",
      desc: "极速退款"
    }), d$4.DAMAGE_GUARANTEE, {
      "class": "safeguard",
      desc: "坏损包退"
    }), d$4.FAKE_ONE_PAY_FOUR, {
      "class": "safeguard",
      desc: "假一赔三"
    }), d$4.TIMEOUT_REFUND, {
      "class": "safeguard",
      desc: function desc(_ref) {
        var A = _ref.tagNum1;
        return _typeof$2(A) &lt; "u" ? "".concat(A, "\u5929\u8D85\u65F6\u9000") : "";
      },
      valid: function valid(_ref2) {
        var A = _ref2.tagNum1;
        return typeof A == "number";
      }
    }), d$4.BUY_WITH_CONFIDENCE, {
      "class": "confidence",
      desc: "放心买"
    }), d$4.DOOR_TO_DOOR_PICKUP, {
      "class": "safeguard",
      desc: "上门取件"
    }),
    Xe = function Xe(A) {
      var t = (A.marketingCoupons || []).map(function (B) {
          return {
            desc: B.couponName,
            "class": "marketing-coupons"
          };
        }),
        e = (A.productIconTags || []).map(function (B) {
          var a = Ke[B.tagType];
          if (!a || typeof a.valid == "function" &amp;&amp; !a.valid(B)) return null;
          var E = "";
          return typeof a.desc == "function" ? E = a.desc(B) : E = a.desc, {
            desc: E,
            "class": a["class"]
          };
        }).filter(function (B) {
          return B;
        }),
        i = (A.associatedCoupons || []).map(function (B) {
          return {
            desc: B.couponName,
            "class": "coupons"
          };
        });
      return {
        marketingCoupons: t,
        safeguardList: e,
        couponsList: i
      };
    },
    qe = {
      1: {
        show: !0
      },
      2: {
        show: !1,
        msg: "商品因违规已下架"
      },
      3: {
        show: !0,
        msg: "商品已下架"
      },
      4: {
        show: !0,
        msg: "商品已删除"
      },
      5: {
        show: !0
      }
    },
    $e = function $e(A) {
      var e;
      var t = qe[A.status];
      return t.msg ? t.msg : ((e = A.timingOnsaleInfo) == null ? void 0 : e.status) === 1 ? " " : A.stock ? "" : "商品卖完了";
    },
    At = function At(A) {
      var e;
      var t = {
        str: "\xA5".concat(A.sellingPrice / 100),
        more: A.isPriceBeginShow,
        wording: A.sellingPriceWording
      };
      return ((e = A.timingOnsaleInfo) == null ? void 0 : e.status) === 1 &amp;&amp; (A.timingOnsaleInfo.isHidePrice &amp;&amp; (t = {
        str: "\xA5".concat(A.timingOnsaleInfo.maskPrice),
        more: 0,
        wording: ""
      }), t.wording = "待开售"), t;
    },
    et = function et(A) {
      var e, i;
      var t = 0;
      return (e = A.productShopIcon) != null &amp;&amp; e.iconTopSimplifyUrl ? t = 1 : (i = A.productShopIcon) != null &amp;&amp; i.iconR_30transpUrl &amp;&amp; (t = 2), t;
    },
    T$5 = function T(A) {
      var e, i, B, a;
      var t = I$4(A);
      return _objectSpread$9(_objectSpread$9({}, t), {}, {
        tags: Xe(t),
        btnText: $e(t),
        history: Ze$1(t.sales),
        price: At(t),
        bizIcon: {
          goodShopIcon: {
            normal: ((e = t.productShopIcon) == null ? void 0 : e.iconTopSimplifyUrl) || "",
            dark: ((i = t.productShopIcon) == null ? void 0 : i.iconTopSimplifyUrlDark) || ""
          },
          rtagIcon: {
            normal: ((B = t.productShopIcon) == null ? void 0 : B.iconR_30transpUrl) || "",
            dark: ((a = t.productShopIcon) == null ? void 0 : a.iconR_30transpDarkUrl) || ""
          }
        },
        shopLabelTag: et(t)
      });
    };
  var tt = "https://mp.weixin.qq.com/shop/ssr/wap/business",
    it = "https://mp.weixin.qq.com/shop/ssr/wap/productCard",
    Bt = "https://mp.weixin.qq.com/mmec/productcard",
    at = "https://mp.weixin.qq.com/shop/ssr/wap/recommend",
    rt = "https://mp.weixin.qq.com",
    l$5 = {
      BIZ_ARTICLE_CSIDE_READ: 1,
      BIZ_ARTICLE_BSIDE_PREVIEW: 2,
      BIZ_PRIVATE_MESSAGE_BSIDE: 3,
      BIZ_PRIVATE_MESSAGE_CSIDE: 4,
      BIZ_AUTO_REPLY_BSIDE: 5,
      BIZ_AUTO_REPLY_CSIDE: 6,
      BIZ_CUSTOM_MENU_BSIDE: 7,
      BIZ_CUSTOM_MENU_CSIDE: 8
    },
    ot = 8;
  function Et(A) {
    try {
      var _JSON$parse = JSON.parse(A),
        t = _JSON$parse.action,
        e = _JSON$parse.value;
      return {
        action: t,
        value: e
      };
    } catch (t) {
      console.error(t);
    }
    return {};
  }
  function g$5(A, t, e, i) {
    try {
      if (!A) return console.warn("postMessageToIframe: win is null");
      A.postMessage(JSON.stringify({
        action: t,
        value: e
      }), i || "*");
    } catch (B) {
      console.log("postMessage error", B);
    }
  }
  var ct = {
    name: "mp-common-product",
    components: {
      Product: Je
    },
    mixins: [k$1],
    props: {
      extraInfo: {
        type: Object,
        "default": function _default() {
          return {};
        }
      },
      productInfo: {
        type: Object,
        "default": function _default() {
          return {};
        }
      },
      immutable: {
        type: Number,
        "default": 0
      },
      token: {
        type: String,
        "default": ""
      },
      windowproduct: {
        type: String,
        "default": ""
      },
      is_hover: {
        type: Number,
        "default": 0
      },
      is_selected: {
        type: Number,
        "default": 0
      },
      customstyle: {
        type: String,
        "default": "{}"
      },
      ecsource: {
        type: String,
        "default": ""
      },
      exportkey: {
        type: String,
        "default": ""
      },
      wap_export_token: {
        type: String,
        "default": ""
      },
      loaded: {
        type: Number,
        "default": 0
      },
      cardtype: {
        type: Number,
        "default": 0
      },
      productImage: {
        type: String,
        "default": ""
      },
      originPrice: {
        type: Number,
        "default": 0
      },
      discountedPrice: {
        type: Number,
        "default": 0
      },
      title: {
        type: String,
        "default": ""
      },
      req_scene: {
        type: Number,
        "default": 0
      },
      urlParams: {
        type: Object,
        "default": function _default() {
          return {};
        }
      },
      extInfo: {
        type: Object,
        "default": function _default() {
          return {};
        }
      },
      scrollBlur: {
        type: Number,
        "default": 0
      },
      wrpStyle: {
        type: String,
        "default": ""
      },
      outerclick: {
        type: Number,
        "default": 0
      }
    },
    data: function data() {
      var t = "",
        e = "https://mp.weixin.qq.com/mmec/biz_getproductqrcode?productkey=".concat(this.windowproduct, "&amp;reqScene=").concat(this.req_scene, "&amp;article_info=");
      return {
        showIframe: !1,
        iframeUrl: t,
        transferStyle: "",
        timeout: null,
        observer: null,
        active: !1,
        hasExpose: !1,
        iframeLoading: !0,
        iframeLoadTimeout: null,
        productCard: null,
        failMsg: "",
        qrCodeUrl: e
      };
    },
    computed: {
      isEditor: function isEditor() {
        return this.platform === "web" || this.platform === "app";
      },
      jumpInfo: function jumpInfo() {
        var _this$productCard = this.productCard,
          A = _this$productCard.giftJumpInfoBase64Str,
          t = _this$productCard.cardJumpInfoBase64Str,
          e = _this$productCard.buyButtonJumpInfoBase64Str;
        return {
          giftJumpInfoBase64Str: A,
          cardJumpInfoBase64Str: t,
          buyButtonJumpInfoBase64Str: e
        };
      },
      iframeStyle: function iframeStyle() {
        var A = {};
        return this.platform === "web" ? [l$5.BIZ_CUSTOM_MENU_BSIDE, l$5.BIZ_AUTO_REPLY_BSIDE, l$5.BIZ_PRIVATE_MESSAGE_BSIDE].includes(this.req_scene) ? A.width = "195px" : A.width = "350px" : A.width = "100%", A = Object.assign(A, JSON.parse(this.transferStyle || "{}")), A;
      },
      isIframe: function isIframe() {
        return this.cardtype !== 0 &amp;&amp; this.cardtype !== 1 &amp;&amp; this.cardtype !== 3;
      },
      clientType: function clientType() {
        return this.isEditor ? "B" : "C";
      },
      darkMode: function darkMode() {
        return this.extraInfo.window.matchMedia("(prefers-color-scheme: dark)").matches;
      },
      isPC: function isPC() {
        return Device.os.pc;
      }
    },
    watch: {
      loaded: {
        handler: function handler() {
          this.loaded &amp;&amp; (this.showIframe = !0, this.iframeUrl = this.getCUrl());
        },
        immediate: !0
      },
      cardtype: function cardtype(A) {
        this.isEditor &amp;&amp; (this.iframeUrl = this.getBUrl()), (A === 0 || A === 1 || A === 3) &amp;&amp; (this.iframeLoading = !1);
      },
      windowproduct: function windowproduct() {
        this.isEditor &amp;&amp; (this.iframeUrl = this.getBUrl());
      },
      urlParams: function urlParams() {
        this.isEditor &amp;&amp; (this.iframeUrl = this.getBUrl());
      },
      iframeUrl: function iframeUrl() {
        var _this5 = this;
        this.isIframe &amp;&amp; (this.iframeLoading = !0, this.iframeLoadTimeout &amp;&amp; clearTimeout(this.iframeLoadTimeout), this.iframeLoadTimeout = setTimeout(function () {
          window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; window.WX_BJ_REPORT.BadJs.report("load timeout", _this5.iframeUrl, {
            mid: "mmbizwap:product",
            view: "wap_business",
            _info: {
              url: location.href,
              productCount: document.getElementsByTagName("mp-common-product").length
            }
          });
        }, 5e3));
      }
    },
    created: function created() {
      this.isEditor &amp;&amp; (this.showIframe = !0, this.iframeUrl = this.getBUrl()), this.isIframe || (this.iframeLoading = !1);
    },
    mounted: function mounted() {
      var _this6 = this;
      this.extraInfo.window &amp;&amp; this.extraInfo.window.addEventListener("message", this.handleMessage), this.extraInfo.window &amp;&amp; this.extraInfo.window.addEventListener("click", this.handleDocumentClick), this.scrollBlur &amp;&amp; this.extraInfo.window &amp;&amp; this.extraInfo.window.addEventListener("scroll", this.handleScroll), this.isIframe || (window.__secPageAuthPromise ? window.__secPageAuthPromise.then(function () {
        _this6.initProductInfo();
      }) : this.initProductInfo());
    },
    beforeDestroy: function beforeDestroy() {
      this.extraInfo.window &amp;&amp; this.extraInfo.window.removeEventListener("message", this.handleMessage), this.extraInfo.window &amp;&amp; this.extraInfo.window.removeEventListener("click", this.handleDocumentClick), this.scrollBlur &amp;&amp; this.extraInfo.window &amp;&amp; this.extraInfo.window.removeEventListener("scroll", this.handleScroll), this.observer &amp;&amp; this.observer.disconnect();
    },
    methods: {
      handleScroll: function handleScroll() {
        this.deActive();
      },
      handleDocumentClick: function handleDocumentClick(A) {
        this.$refs.js_custom_element.contains(A.target) || (this.deActive(), this.$emit("document-click", A));
      },
      deActive: function deActive() {
        var A = this.$refs.iframeRef;
        A &amp;&amp; A.contentWindow &amp;&amp; this.active &amp;&amp; (g$5(A.contentWindow, "webEvent", {
          type: "unclick"
        }), this.active = !1);
      },
      exposureReport: function exposureReport() {
        var _this7 = this;
        this.observer = new IntersectionObserver(function (A) {
          A.forEach(function (t) {
            var e = _this7.isIframe ? _this7.$refs.iframeRef : _this7.$refs.productCardRef &amp;&amp; _this7.$refs.productCardRef.$el;
            if (t.isIntersecting &amp;&amp; t.intersectionRatio &gt;= 0.5) {
              _this7.$emit("expose", !_this7.hasExpose), _this7.hasExpose = !0;
              try {
                e &amp;&amp; (_this7.timeout = setTimeout(function () {
                  _this7.isIframe ? e.contentWindow &amp;&amp; g$5(e.contentWindow, "webEvent", {
                    type: "valid_expose"
                  }) : _this7.report("element_valid_expose");
                }, 500));
              } catch (i) {
                console.error(i);
              }
            } else _this7.timeout &amp;&amp; clearTimeout(_this7.timeout);
          });
        }, {
          threshold: 0.5
        }), this.observer.observe(this.$refs.js_custom_element);
      },
      handleMessage: function handleMessage(A) {
        if (A.origin !== rt) return;
        var t = this.$refs.iframeRef;
        if (t &amp;&amp; A.source === t.contentWindow) {
          var _Et = Et(A.data),
            e = _Et.action,
            i = _Et.value;
          switch (e) {
            case "changeFrameStyle":
              this.changeFrameStyle(A, i);
              break;
            case "onFrameReady":
              this.onFrameReady(A, t);
              break;
            case "webEvent":
              i.type === "click" ? this.clickProduct(A) : i.type === "toast" ? window.weui.toast(i.msg, {
                extClass: "weui-toast_text common_product_toast"
              }) : i.type === "dialog" &amp;&amp; window.weui.dialog(i);
              break;
          }
          this.$emit("iframe-message", A);
        }
      },
      onFrameReady: function onFrameReady(A, t) {
        this.iframeLoadTimeout &amp;&amp; clearTimeout(this.iframeLoadTimeout), this.iframeLoading = !1, this.setProductData(A.source, t), this.extraInfo.window &amp;&amp; g$5(this.extraInfo.window, "setPageData", {
          darkMode: this.extraInfo.window.matchMedia("(prefers-color-scheme: dark)").matches
        }), this.isEditor || this.exposureReport();
      },
      onCardReady: function onCardReady() {
        if (this.iframeLoadTimeout &amp;&amp; clearTimeout(this.iframeLoadTimeout), this.iframeLoading = !1, this.windowproduct) {
          var A = this.$el.getRootNode().host;
          removePlaceholder(A, this.windowproduct);
          var t = A &amp;&amp; A.parentNode;
          if (t) {
            var e = t.querySelector(".wx_img_placeholder");
            e &amp;&amp; t.removeChild(e);
          }
        }
        this.emitCardReadyEvent(), this.isEditor || this.exposureReport();
      },
      clickProduct: function clickProduct(A) {
        this.extraInfo.window &amp;&amp; this.extraInfo.window.clickedProductWin &amp;&amp; A.source !== this.extraInfo.window.clickedProductWin &amp;&amp; g$5(this.extraInfo.window.clickedProductWin, "webEvent", {
          type: "unclick"
        }), this.extraInfo.window &amp;&amp; (this.extraInfo.window.clickedProductWin = A.source), this.active = !0;
      },
      setProductData: function setProductData(A) {
        g$5(A, "setData", {
          infos: {
            scene: "edit"
          }
        }), this.immutable &amp;&amp; g$5(A, "setPageData", {
          scene: "immutable"
        });
      },
      changeFrameStyle: function changeFrameStyle(A, t) {
        if (!(!t || _typeof$2(t) != "object" || this.cardtype === 2)) try {
          this.transferStyle = JSON.stringify(t);
        } catch (e) {
          console.error(e);
        }
      },
      getBRecommendIframeUrl: function getBRecommendIframeUrl() {
        var A = _objectSpread$9({
            reqScene: this.req_scene
          }, this.urlParams),
          t = window &amp;&amp; window.wx &amp;&amp; window.wx.data &amp;&amp; window.wx.data.t || p$1(window.location.href).token || this.token;
        return t &amp;&amp; (A.token = t), this.cardtype &amp;&amp; (A.cardtype = 1), u$2(at, A);
      },
      getBUrl: function getBUrl() {
        if (this.cardtype === ot) return this.getBRecommendIframeUrl();
        var A = _objectSpread$9({
            productkey: this.windowproduct,
            reqScene: this.req_scene
          }, this.urlParams),
          t = window &amp;&amp; window.wx &amp;&amp; window.wx.data &amp;&amp; window.wx.data.t || p$1(window.location.href).token || this.token;
        return t &amp;&amp; (A.token = t), this.cardtype &amp;&amp; (A.cardtype = this.cardtype), this.isIframe ? u$2(tt, A) : u$2(it, A);
      },
      getCUrl: function getCUrl() {
        var A = _objectSpread$9({
          productkey: this.windowproduct,
          reqScene: this.req_scene
        }, this.urlParams);
        return this.exportkey &amp;&amp; (A.exportkey = this.exportkey), this.wap_export_token &amp;&amp; (A.wap_export_token = this.wap_export_token), this.ecsource &amp;&amp; (A.ecsource = this.ecsource), this.cardtype &amp;&amp; (A.cardtype = this.cardtype), u$2(Bt, A);
      },
      openShop: function openShop() {
        var A = this.$refs.iframeRef;
        this.outerclick ? this.$emit("element-click", this.$refs.js_custom_element) : !this.isEditor &amp;&amp; A &amp;&amp; g$5(A.contentWindow, "webEvent", {
          type: "openShop",
          clickType: 0
        });
      },
      getBCardData: function getBCardData() {
        var _this8 = this;
        this.failMsg = "", ajax({
          url: this.getBUrl(),
          type: "GET",
          dataType: "json",
          contentType: "application/json; charset=UTF-8",
          success: function success(A) {
            var t, e, i, B;
            ((t = A == null ? void 0 : A.resp) == null ? void 0 : t.code) === 0 &amp;&amp; (e = A == null ? void 0 : A.resp) != null &amp;&amp; e.data ? _this8.productCard = T$5((i = A == null ? void 0 : A.resp) == null ? void 0 : i.data) : _this8.failMsg = ((B = A == null ? void 0 : A.resp) == null ? void 0 : B.msg) || "商品信息获取失败";
          },
          error: function error(A) {
            console.error("获取商品数据失败:"), _this8.failMsg = "商品信息获取失败";
          }
        });
      },
      getCCardData: function getCCardData() {
        var _this9 = this;
        var e, i;
        var A = {
            article_info: btoa(JSON.stringify({
              mp_biz: atob(window.biz || ""),
              item_idx: Number(window.itemidx || window.idx || 0),
              appmsgid: Number(window.mid || 0),
              item_show_type: Number(window.item_show_type || 0),
              mp_article_scene: Number(window.source || 0),
              mp_sub_scene: Number(window.subscene || 0),
              mp_get_a8key_scene: Number(window.ascene || 0),
              carrier_type: ((i = (e = window.cgiData) == null ? void 0 : e.product_activity) == null ? void 0 : i.activity_type) || 0,
              search_click_id: Url.getQuery("search_click_id") || ""
            })),
            exportkey: Url.getQuery("exportkey") || "",
            wap_export_token: this.wap_export_token || "",
            ecsource: this.ecsource || ""
          },
          t = Object.keys(A).map(function (B) {
            return "".concat(B, "=").concat(A[B]);
          }).join("&amp;");
        this.qrCodeUrl = this.qrCodeUrl.concat(A.article_info), ajax({
          url: "/mmec/biz_batchgetproductcard?".concat(t),
          type: "POST",
          data: JSON.stringify({
            productkey_list: [this.windowproduct],
            cardtype: this.cardtype
          }),
          dataType: "json",
          contentType: "application/json; charset=UTF-8",
          success: function success(B) {
            B.product_card_list &amp;&amp; B.product_card_list.length &gt; 0 ? (_this9.productCard = T$5(B.product_card_list[0].product_card_info), _this9.$forceUpdate()) : console.log("未获取到商品数据");
          },
          error: function error(B) {
            console.error("获取商品数据失败:", B);
          }
        });
      },
      initProductInfo: function initProductInfo() {
        this.windowproduct &amp;&amp; (this.isEditor ? this.getBCardData() : this.getCCardData());
      },
      openJumpInfo: function openJumpInfo(A) {
        var _this10 = this;
        return asyncToGenerator( _regeneratorRuntime$2().mark(function _callee() {
          var t, e;
          return _regeneratorRuntime$2().wrap(function _callee$(_context) {
            while (1) switch (_context.prev = _context.next) {
              case 0:
                if (!(_this10.platform === "wechat")) {
                  _context.next = 11;
                  break;
                }
                _context.next = 3;
                return t$3();
              case 3:
                if (!_context.sent) {
                  _context.next = 8;
                  break;
                }
                _context.next = 6;
                return i$2(A);
              case 6:
                _context.next = 9;
                break;
              case 8:
                (t = window == null ? void 0 : window.weui) == null || t.toast("当前版本不支持打开页面", {
                  extClass: "weui-toast_text"
                });
              case 9:
                _context.next = 12;
                break;
              case 11:
                (e = window == null ? void 0 : window.weui) == null || e.toast("请在手机微信中打开", {
                  extClass: "weui-toast_text"
                });
              case 12:
              case "end":
                return _context.stop();
            }
          }, _callee);
        }))();
      },
      handleOpenProduct: function handleOpenProduct() {
        this.openJumpInfo(this.jumpInfo.cardJumpInfoBase64Str);
      },
      handleBuy: function handleBuy() {
        this.openJumpInfo(this.jumpInfo.buyButtonJumpInfoBase64Str);
      },
      handleGift: function handleGift() {
        this.openJumpInfo(this.jumpInfo.giftJumpInfoBase64Str);
      },
      emitCardReadyEvent: function emitCardReadyEvent() {
        var A = {
            data: JSON.stringify({
              action: "onFrameReady",
              value: {
                productTitle: this.productCard.title,
                productName: this.productCard.title,
                qrcodeUrl: this.qrCodeUrl
              }
            })
          },
          t = new CustomEvent("iframe-message", {
            detail: A,
            bubbles: !0
          });
        this.$el.dispatchEvent(t), this.$emit("iframe-message", A);
      },
      emitCardClickEvent: function emitCardClickEvent() {
        var A = {
            data: JSON.stringify({
              action: "webEvent",
              value: {
                type: "click"
              }
            })
          },
          t = new CustomEvent("iframe-message", {
            detail: A,
            bubbles: !0
          });
        this.$el.dispatchEvent(t), this.$emit("iframe-message", A);
      },
      handleProductClick: function handleProductClick(A) {
        var t, e;
        if (this.emitCardClickEvent(), this.clientType !== "B") {
          if (this.report("element_click"), Device.os.pc) {
            this.$set(this.productCard, "qrCodeUrl", this.qrCodeUrl);
            return;
          } else if (!MMVersion.isWechat) {
            (t = window == null ? void 0 : window.weui) == null || t.toast("请在手机微信中打开", {
              extClass: "weui-toast_text"
            });
            return;
          }
          A === "product" ? this.handleOpenProduct() : A === "buy" ? this.handleBuy() : A === "gift" ? this.handleGift() : A === "giftFail" &amp;&amp; ((e = window == null ? void 0 : window.weui) == null || e.alert(this.productCard.canntGivePresentMsg || "该商品不支持赠送", {
            extClass: "weui-toast_text"
          }));
        }
      },
      report: function report(A) {
        var _this11 = this;
        return asyncToGenerator( _regeneratorRuntime$2().mark(function _callee2() {
          var t, i;
          return _regeneratorRuntime$2().wrap(function _callee2$(_context2) {
            while (1) switch (_context2.prev = _context2.next) {
              case 0:
                _context2.next = 2;
                return N$1();
              case 2:
                t = _context2.sent;
                i = {
                  logid: "23782",
                  data: {
                    event: A,
                    params: JSON.stringify({
                      page_name: "mp_article_page",
                      element_name: "commodity_card",
                      productid: _this11.productCard.productId,
                      mp_article_bizuin: t.article_info.mp_biz,
                      mp_article_appmsgid: t.article_info.appmsgid,
                      mp_article_item_idx: t.article_info.item_idx,
                      mp_article_item_show_type: t.article_info.item_show_type,
                      scene: t.article_info.mp_article_scene,
                      cardtype: _this11.cardtype,
                      appid: _this11.productCard.appid,
                      shopLabelTag: _this11.productCard.shopLabelTag || 0
                    })
                  }
                };
                O$5(i);
              case 5:
              case "end":
                return _context2.stop();
            }
          }, _callee2);
        }))();
      }
    }
  };
  var st = function st() {
      var t = this,
        e = t._self._c;
      return t.cardtype === 2 ? e("span", {
        ref: "js_custom_element",
        staticClass: "product_card_text_wrp",
        style: t.wrpStyle,
        on: {
          click: t.openShop
        }
      }, [e("a", {
        staticClass: "product_text_link",
        style: t.isEditor ? "color: #576B95" : "",
        attrs: {
          part: "link",
          href: "javascript:void(0);"
        }
      }, [t._v(t._s(t.title))]), t.showIframe ? e("iframe", {
        ref: "iframeRef",
        staticClass: "iframe_style",
        style: [t.iframeStyle, {
          display: "none"
        }],
        attrs: {
          src: t.iframeUrl,
          scrolling: "no",
          frameborder: "0"
        }
      }) : t._e()]) : t.cardtype === 4 ? e("div", {
        ref: "js_custom_element",
        staticClass: "activity_card_wrp",
        on: {
          click: t.openShop
        }
      }, [e("div", {
        staticClass: "activity_card_wrp__container"
      }, [e("img", {
        staticClass: "product_image",
        attrs: {
          src: t.productImage,
          alt: ""
        }
      }), e("transition", {
        attrs: {
          name: "fade"
        }
      }, [t.discountedPrice ? e("span", {
        staticClass: "discounted_price"
      }, [t._v("¥" + t._s(t.discountedPrice))]) : t._e()]), e("span", {
        key: t.discountedPrice,
        staticClass: "origin_price",
        "class": {
          has_discount: t.discountedPrice
        }
      }, [t._v("¥" + t._s(t.originPrice))])], 1), t.showIframe ? e("iframe", {
        ref: "iframeRef",
        staticClass: "iframe_style",
        style: [t.iframeStyle, {
          display: "none"
        }],
        attrs: {
          src: t.iframeUrl,
          scrolling: "no",
          frameborder: "0"
        }
      }) : t._e()]) : t.cardtype === 5 ? e("div", {
        ref: "js_custom_element",
        staticClass: "s1s_card_wrp",
        on: {
          click: t.openShop
        }
      }, [e("img", {
        staticClass: "product-image",
        attrs: {
          src: t.productInfo.product_info.img_url,
          alt: "商品图片"
        }
      }), e("div", {
        staticClass: "product-info"
      }, [e("div", {
        staticClass: "product-title"
      }, [t._v(t._s(t.productInfo.product_info.title))]), e("div", {
        staticClass: "product-centercontainer"
      }, [e("span", {
        staticClass: "discount-price"
      }, [t._v("¥" + t._s(t.productInfo.product_info.selling_price / 100))]), t.productInfo.product_info.market_price &amp;&amp; t.productInfo.product_info.market_price !== t.productInfo.product_info.selling_price ? [e("span", {
        staticClass: "discount-price__extra"
      }, [t._v("起 " + t._s(t.productInfo.product_info.selling_price_wording))]), e("span", {
        "class": "product-price ".concat(t.productInfo.product_info.friend_send_cnt ? "need-border" : "")
      }, [t._v("¥" + t._s(t.productInfo.product_info.market_price / 100))])] : t._e(), t.productInfo.product_info.friend_send_cnt ? e("div", {
        staticClass: "product-gifts"
      }, [t._v("朋友送过"), e("span", {
        staticClass: "product-gifts__num"
      }, [t._v(t._s(t.productInfo.product_info.friend_send_cnt))]), t._v("次 ")]) : t._e()], 2), e("div", {
        staticClass: "product-brand"
      }, [e("i", {
        staticClass: "product-logo"
      }), t._v(t._s(t.productInfo.shop_info.shop_window_profile_name) + " "), t.productInfo.shop_info.brand_icon_url ? e("img", {
        staticClass: "shop-verify-icon",
        attrs: {
          src: t.productInfo.shop_info.brand_icon_url
        }
      }) : t._e()])]), t.showIframe ? e("iframe", {
        ref: "iframeRef",
        staticClass: "iframe_style",
        style: [t.iframeStyle, {
          display: "none"
        }],
        attrs: {
          src: t.iframeUrl,
          scrolling: "no",
          frameborder: "0"
        }
      }) : t._e()]) : t.cardtype === 6 ? e("div", {
        directives: [{
          name: "show",
          rawName: "v-show",
          value: !t.iframeLoading,
          expression: "!iframeLoading"
        }],
        ref: "js_custom_element",
        staticClass: "product_spot_card_wrp",
        on: {
          click: t.openShop
        }
      }, [t._t("spot-product"), t.showIframe ? e("iframe", {
        ref: "iframeRef",
        staticClass: "iframe_style",
        style: [t.iframeStyle, {
          display: "none"
        }],
        attrs: {
          src: t.iframeUrl,
          scrolling: "no",
          frameborder: "0"
        }
      }) : t._e()], 2) : t.cardtype === 12 ? e("div", {
        directives: [{
          name: "show",
          rawName: "v-show",
          value: !t.iframeLoading,
          expression: "!iframeLoading"
        }],
        ref: "js_custom_element",
        staticClass: "product_image_wrp"
      }, [t.showIframe ? e("iframe", {
        ref: "iframeRef",
        staticClass: "iframe_style",
        style: [t.iframeStyle, {
          display: "none"
        }],
        attrs: {
          src: t.iframeUrl,
          scrolling: "no",
          frameborder: "0"
        }
      }) : t._e()]) : t.cardtype === 8 ? e("div", {
        directives: [{
          name: "show",
          rawName: "v-show",
          value: !t.iframeLoading,
          expression: "!iframeLoading"
        }],
        ref: "js_custom_element",
        staticClass: "product_recommend_card_wrp"
      }, [t.showIframe ? e("iframe", {
        ref: "iframeRef",
        staticClass: "iframe_style",
        style: JSON.parse(t.customstyle || "{}"),
        attrs: {
          src: t.iframeUrl,
          scrolling: "no",
          frameborder: "0"
        }
      }) : t._e()]) : e("div", {
        ref: "js_custom_element",
        "class": ["iframe_wrp", "wx_card_root", t.is_hover === 1 ? "wx_hover_card" : "", t.is_selected === 1 ? "wx_selected_card" : ""],
        style: t.wrpStyle
      }, [t.productCard ? e("Product", {
        ref: "productCardRef",
        attrs: {
          product: t.productCard,
          "card-type": t.cardtype,
          "client-type": t.clientType,
          "is-p-c": t.isPC,
          "dark-mode": t.darkMode
        },
        on: {
          open: function open(i) {
            return t.handleProductClick(i);
          },
          ready: t.onCardReady
        }
      }) : t.failMsg &amp;&amp; t.isEditor ? e("div", {
        staticClass: "product_load_fail",
        attrs: {
          role: "alert",
          "aria-live": "polite"
        },
        on: {
          click: t.emitCardClickEvent
        }
      }, [e("div", {
        staticClass: "product_load_fail__text"
      }, [t._v(t._s(t.failMsg))])]) : e("div")], 1);
    },
    dt = [],
    wt = v$2(ct, st, dt, !1, null, "024c715f", null, null);
  var gt = wt.exports,
    nt = ".qr-fade-enter-active[data-v-11924fb1],.qr-fade-leave-active[data-v-11924fb1]{transition:opacity .2s cubic-bezier(.4,0,.2,1)}.qr-fade-enter-from[data-v-11924fb1],.qr-fade-leave-to[data-v-11924fb1]{opacity:0}.qr-fade-enter-to[data-v-11924fb1],.qr-fade-leave-from[data-v-11924fb1]{opacity:1}.qr-popover[data-v-11924fb1]{background:#ffffff;-webkit-backdrop-filter:none;backdrop-filter:none;filter:none;box-shadow:0 4px 30px #0003;padding:10px 12px 10px 10px;pointer-events:auto;display:flex;align-items:center;border-radius:12px;transform-origin:center bottom}.qr-popover[data-v-11924fb1]:after{content:\"\";position:absolute;top:100%;left:50%;transform:translate(-50%);border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #ffffff}.qr-content[data-v-11924fb1]{display:flex;align-items:center;gap:12px;background:white;border-radius:6px}.qr-code-container[data-v-11924fb1]{flex-shrink:0}.qr-image-wrapper[data-v-11924fb1]{position:relative;width:76px;height:76px;border-radius:4px;overflow:hidden}.qr-code-image[data-v-11924fb1]{width:76px;height:76px;border-radius:4px;display:block;transition:opacity .2s ease}.qr-code-image.image-hidden[data-v-11924fb1]{opacity:0}.loading[data-v-11924fb1]{width:100%;height:100%;display:block;background:transparent url(\"data:image/svg+xml,%3Csvg width='80' height='80' viewBox='0 0 80 80' xmlns='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3ClinearGradient x1='94.087%25' y1='0%25' x2='94.087%25' y2='90.559%25' id='a'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'/%3E%3Cstop stop-color='%23606060' stop-opacity='.3' offset='100%25'/%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.674%25' y2='90.629%25' id='b'%3E%3Cstop stop-color='%23606060' offset='0%25'/%3E%3Cstop stop-color='%23606060' stop-opacity='.3' offset='100%25'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cg fill='none' fill-rule='evenodd' opacity='.9'%3E%3Cpath d='M40 0c22.091 0 40 17.909 40 40S62.091 80 40 80v-7c18.225 0 33-14.775 33-33S58.225 7 40 7V0z' fill='url(%23a)'/%3E%3Cpath d='M40 0v7C21.775 7 7 21.775 7 40s14.775 33 33 33v7C17.909 80 0 62.091 0 40S17.909 0 40 0z' fill='url(%23b)'/%3E%3Ccircle fill='%23606060' cx='40.5' cy='3.5' r='3.5'/%3E%3C/g%3E%3C/svg%3E\") no-repeat center center;background-size:contain;animation:qr-loading-spin-data-v-11924fb1 1s linear infinite;background-size:28px 28px}@keyframes qr-loading-spin-data-v-11924fb1{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.qr-text[data-v-11924fb1]{font-size:12px;line-height:17px;font-weight:400;display:flex;flex-direction:column;color:#000000e6;justify-content:center;text-align:left}.qr-text-line[data-v-11924fb1]{white-space:nowrap}@media (max-width: 480px){.qr-popover[data-v-11924fb1]{padding:8px}.qr-content[data-v-11924fb1]{gap:8px;padding:6px}.qr-image-wrapper[data-v-11924fb1],.qr-code-image[data-v-11924fb1]{width:60px;height:60px}.qr-text[data-v-11924fb1]{font-size:11px;line-height:15px}}.product-title__outer[data-v-40afe61e]{margin-left:16px;margin-right:16px;margin-top:12px}.product-title__outer.little[data-v-40afe61e],.product-title__outer.bar[data-v-40afe61e]{margin:0}.product-title[data-v-40afe61e]{color:#000000e6;line-height:1.3;overflow:hidden;text-overflow:ellipsis}.product-title span[data-v-40afe61e]{font-size:15px}.two-line[data-v-40afe61e]{-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;display:-webkit-box}.one-line[data-v-40afe61e]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.product-title img[data-v-40afe61e]{display:inline-block;height:1.1em;vertical-align:middle;margin-right:4px;margin-bottom:.2em}.product-title__outer.dark-mode .product-title[data-v-40afe61e]{color:#fffc}.product-shop__outer[data-v-1a13560c]{margin:16px 16px 8px}.product-shop__outer.bar[data-v-1a13560c]{margin:8px 12px}.product-shop[data-v-1a13560c]{overflow:hidden;position:relative;font-size:12px}.product-shop__inner[data-v-1a13560c]{align-items:center;display:flex;flex-direction:row;justify-content:space-between;overflow:hidden}.product-shop .left[data-v-1a13560c]{align-items:center;display:flex;flex-basis:0;flex-direction:row;flex-grow:1;height:1.4em;overflow:hidden}.product-shop .icon[data-v-1a13560c]{width:1.1em;height:1.1em;-o-object-fit:contain;object-fit:contain;border-radius:50%;flex-shrink:0;opacity:.5}.product-shop .right-icon[data-v-1a13560c]{-o-object-fit:contain;object-fit:contain;margin-left:.16em;flex-shrink:0}.product-shop .icon-r[data-v-1a13560c]{border-radius:50%;height:1.1em;width:1.1em}.product-shop .good-shop[data-v-1a13560c]{height:1.33em}.product-shop .text[data-v-1a13560c]{color:#0000004d;font-size:12px;line-height:1.4;margin-left:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.product-shop__outer.dark-mode .product-shop .text[data-v-1a13560c]{color:#ffffff4d}.product-shop__outer.dark-mode .product-shop .icon.img-color-invert[data-v-1a13560c]{filter:invert(1) brightness(2);opacity:.5}.btn__area[data-v-4b157c62]{display:flex;flex-direction:row;gap:8px}.btn[data-v-4b157c62]{-webkit-tap-highlight-color:rgba(0,0,0,0);align-items:center;background-color:#0000000d;border:0 solid transparent;border-radius:6px;color:#000000e6;cursor:pointer;display:flex;font-size:15px;font-weight:500;justify-content:center;margin:0;outline:none;overflow:hidden;padding:5.5px 12px;position:relative}.btn.type-primary[data-v-4b157c62]{background:#ff6146;color:#fff}.btn.type-secondary[data-v-4b157c62]{background:rgba(223,195,148,.3);color:#47332f}.btn.type-disabled[data-v-4b157c62]{background:rgba(0,0,0,.03);color:#00000026!important;cursor:not-allowed}.btn__area.dark-mode .btn[data-v-4b157c62]{color:#fff}.btn__area.dark-mode .btn.btn.type-secondary[data-v-4b157c62]{background:#faf0e7;color:#443a31}.btn__area.dark-mode .btn.btn.type-default[data-v-4b157c62]{background:hsla(0,0%,100%,.05);color:#fffc}.btn__area.dark-mode .btn.btn.type-disabled[data-v-4b157c62]{background:hsla(0,0%,100%,.3);color:#ffffff26!important}.product_status_text[data-v-4b157c62]{color:#0000004d;font-family:PingFang SC;font-size:12px;font-weight:400;line-height:1.75}.btn__area.dark-mode .product_status_text[data-v-4b157c62]{color:#ffffff4d}.product-img-container[data-v-c88442f6]{width:100%;position:relative;overflow:hidden;display:inline-block}.product-img.little[data-v-c88442f6]{border-radius:4px}.product-img.bar[data-v-c88442f6]{border-radius:2px}.product-img[data-v-c88442f6]{display:block}.product-img-error[data-v-c88442f6]{align-items:center;background-color:#00000005;color:#0000004d;font-size:14px;justify-content:center;position:absolute;top:0;left:0;right:0;bottom:0}.dark-mode .product-img-error[data-v-c88442f6]{background:#202020;color:#ffffff4d}.qrcode__outer[data-v-34552a2a]{margin-left:0;margin-right:0;padding-bottom:0;padding-top:0;position:relative;overflow:hidden;max-height:0;opacity:0;transition:max-height .4s cubic-bezier(.4,0,.2,1),opacity .3s cubic-bezier(.4,0,.2,1),padding .4s cubic-bezier(.4,0,.2,1);transform:translateY(-10px);transition:max-height .4s cubic-bezier(.4,0,.2,1),opacity .3s cubic-bezier(.4,0,.2,1),padding .4s cubic-bezier(.4,0,.2,1),transform .3s cubic-bezier(.4,0,.2,1)}.qrcode__outer[data-v-34552a2a]:before{border-top:1px solid rgba(0,0,0,.1);content:\"\";left:16px;position:absolute;right:16px;top:8px;transform:scaleY(.5)}.qrcode__outer.open[data-v-34552a2a]{max-height:300px;opacity:1;padding-bottom:44px;padding-top:8px;transform:translateY(0)}.qrcode__hd[data-v-34552a2a]{align-items:center;display:flex;flex-direction:row;justify-content:flex-end;margin-top:6px;opacity:0;transform:translateY(-5px);transition:opacity .3s cubic-bezier(.4,0,.2,1) .05s,transform .3s cubic-bezier(.4,0,.2,1) .05s}.qrcode__outer.open .qrcode__hd[data-v-34552a2a]{opacity:1;transform:translateY(0)}.close-area[data-v-34552a2a]{align-items:center;color:#00000080;cursor:pointer;display:flex;flex-direction:row;font-family:PingFang SC;font-size:14px;font-weight:400;margin-right:12px;padding:4px 4px 4px 0;position:relative;transition:color .2s ease,transform .2s ease;border-radius:4px}.close-area[data-v-34552a2a]:hover{color:#000000b3;transform:translateY(-1px)}.close-area[data-v-34552a2a]:active{transform:translateY(0)}.arrow-icon[data-v-34552a2a]{height:10px;margin-right:2px;opacity:.55;transform:rotate(180deg);width:20px;transition:opacity .2s ease,transform .3s cubic-bezier(.4,0,.2,1)}.close-area:hover .arrow-icon[data-v-34552a2a]{opacity:.8;transform:rotate(180deg) translateY(-1px)}.qrcode__bd[data-v-34552a2a]{align-items:center;display:flex;height:120px;justify-content:center;margin:10px auto 16px;position:relative;width:120px;opacity:0;transform:scale(.8);transition:opacity .3s cubic-bezier(.4,0,.2,1) .1s,transform .3s cubic-bezier(.4,0,.2,1) .1s}.qrcode__outer.open .qrcode__bd[data-v-34552a2a]{opacity:1;transform:scale(1)}.error-icon[data-v-34552a2a]{height:32px;opacity:.55;width:32px}.qrcode-img[data-v-34552a2a]{height:120px;width:120px;-o-object-fit:contain;object-fit:contain}.loading[data-v-34552a2a]{width:20px;height:20px;display:block;background:transparent url(\"data:image/svg+xml,%3Csvg width='80' height='80' viewBox='0 0 80 80' xmlns='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3ClinearGradient x1='94.087%25' y1='0%25' x2='94.087%25' y2='90.559%25' id='a'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'/%3E%3Cstop stop-color='%23606060' stop-opacity='.3' offset='100%25'/%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.674%25' y2='90.629%25' id='b'%3E%3Cstop stop-color='%23606060' offset='0%25'/%3E%3Cstop stop-color='%23606060' stop-opacity='.3' offset='100%25'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cg fill='none' fill-rule='evenodd' opacity='.9'%3E%3Cpath d='M40 0c22.091 0 40 17.909 40 40S62.091 80 40 80v-7c18.225 0 33-14.775 33-33S58.225 7 40 7V0z' fill='url(%23a)'/%3E%3Cpath d='M40 0v7C21.775 7 7 21.775 7 40s14.775 33 33 33v7C17.909 80 0 62.091 0 40S17.909 0 40 0z' fill='url(%23b)'/%3E%3Ccircle fill='%23606060' cx='40.5' cy='3.5' r='3.5'/%3E%3C/g%3E%3C/svg%3E\") no-repeat center center;background-size:contain;animation:spin-data-v-34552a2a 1s linear infinite}@keyframes spin-data-v-34552a2a{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.qrcode__ft[data-v-34552a2a]{align-items:center;color:#00000080;display:flex;flex-direction:column;font-family:PingFang SC;font-size:14px;font-weight:400;line-height:1.4;opacity:0;transform:translateY(10px);transition:opacity .3s cubic-bezier(.4,0,.2,1) .2s,transform .3s cubic-bezier(.4,0,.2,1) .2s}.qrcode__outer.open .qrcode__ft[data-v-34552a2a]{opacity:1;transform:translateY(0)}.img-color-invert[data-v-34552a2a]{filter:invert(1);border:0 solid transparent}.qrcode__outer:before .dark-mode[data-v-34552a2a]{border-top:1px solid hsla(0,0%,100%,.1)}.qrcode__outer.dark-mode .close-area[data-v-34552a2a],.qrcode__outer.dark-mode .qrcode__ft[data-v-34552a2a]{color:#ffffff80}.product-price[data-v-4ce15964]{align-items:baseline;display:flex;flex-direction:row;flex-shrink:0}.price-box[data-v-4ce15964]{flex-shrink:0}.money[data-v-4ce15964]{color:#ff6146;font-family:WeChatSansStd-Medium;font-size:17px;font-weight:500;line-height:1.2}.more[data-v-4ce15964]{display:flex;align-items:baseline;gap:2px}.add[data-v-4ce15964],.tag[data-v-4ce15964]{color:#ff6146;font-family:PingFang SC;font-size:12px;font-weight:500;margin-left:2px}.product-tag__outer[data-v-339c50a0]{margin-left:16px;margin-right:16px;margin-top:4px;display:flex;flex:1;min-width:0}.product-tag__outer.little[data-v-339c50a0]{margin:0;border:0 solid transparent}.product-tag__outer.bar[data-v-339c50a0]{margin:0 8px .5px}.product-tag[data-v-339c50a0]{display:flex;flex-direction:row;font-size:12px;overflow:hidden;width:100%}.primary[data-v-339c50a0]{color:#0006}.dark-mode .primary[data-v-339c50a0]{color:#fff6}.marketing[data-v-339c50a0]{color:#ff6146}.tag-body[data-v-339c50a0]{display:flex;font-size:12px;font-weight:400;margin-left:8px;overflow:hidden;white-space:nowrap;align-items:center;flex-shrink:0}.tag-body[data-v-339c50a0]:first-child{margin-left:0}.tag-split[data-v-339c50a0]:after{background-color:#0006;content:\"\";height:100%;left:0;position:absolute;top:0;transform:scaleX(.5);width:1px}.product-card[data-v-6dc03843]{background:rgba(0,0,0,.02);border-radius:8px;overflow:hidden;max-width:100%}.mini-product-card[data-v-6dc03843]{border:0 solid transparent;cursor:pointer}.product-card__outer[data-v-6dc03843]{align-items:flex-start;display:flex;flex-direction:row;padding:12px 12px 0}.product-right[data-v-6dc03843]{display:flex;flex-basis:0;flex-direction:column;flex-grow:1;flex-shrink:0;justify-content:center;margin-left:8px;margin-right:12px;overflow:hidden}.product-right-top[data-v-6dc03843]{border:0 solid transparent}.product-right-bottom[data-v-6dc03843]{margin-top:2px;display:flex;flex-direction:row;align-items:end}.product-button__outer[data-v-6dc03843]{flex-shrink:0;margin:auto 0}.product-card.dark-mode[data-v-6dc03843],.product-card.dark-mode .mini-product-card[data-v-6dc03843]{background:#202020}.history[data-v-ca1abb60]{display:flex;border:0 solid transparent;flex-shrink:0;align-items:flex-end}.history.large[data-v-ca1abb60]{margin-left:4px}.history-inner[data-v-ca1abb60]{color:#0000004d;font-size:12px;line-height:1.3;white-space:nowrap}.history.dark-mode .history-inner[data-v-ca1abb60]{color:#ffffff4d}.product-large[data-v-5376dcc1]{background:rgba(0,0,0,.02);border-radius:8px;overflow:hidden;max-width:400px}.normal-product-large[data-v-5376dcc1]{width:100%;margin:0 auto;cursor:pointer}.product-info__outer[data-v-5376dcc1]{margin-left:16px;margin-right:16px;margin-top:6px}.product-info[data-v-5376dcc1]{align-items:flex-end;display:flex;flex-direction:row;justify-content:space-between;flex-wrap:wrap}.product-info .left[data-v-5376dcc1]{display:flex;flex-grow:1;flex-shrink:0}.product-info .right[data-v-5376dcc1]{flex-grow:0;flex-shrink:0}@media screen and (max-width: 600px){.product-large[data-v-5376dcc1]{max-width:100%;margin:0 auto}.normal-product-large[data-v-5376dcc1]{max-width:100%;width:100%}}.product-large.dark-mode[data-v-5376dcc1],.product-large.dark-mode .normal-product-large[data-v-5376dcc1]{background:#202020}.product-little[data-v-d8ab1782]{background-color:#00000005;border-radius:8px;overflow:hidden;width:100%}.small-product-little[data-v-d8ab1782]{border:0 solid transparent}.product-little__outer[data-v-d8ab1782]{align-items:flex-start;display:flex;flex-direction:row;padding:16px 16px 0}.product-right[data-v-d8ab1782]{display:flex;flex-basis:0;flex-direction:column;flex-grow:1;flex-shrink:0;justify-content:space-between;margin-left:10px;overflow:hidden;min-height:88px}.product-right-top[data-v-d8ab1782],.product-right-bottom[data-v-d8ab1782],.product-info__outer[data-v-d8ab1782]{border:0 solid transparent}.product-info[data-v-d8ab1782]{align-items:flex-end;display:flex;flex-wrap:wrap;flex-direction:row;justify-content:space-between}.product-info .info-left[data-v-d8ab1782]{display:flex;flex-grow:1;flex-shrink:0}.product-info .info-right[data-v-d8ab1782]{flex-grow:0;flex-shrink:0}.product-little.dark-mode[data-v-d8ab1782],.product-little.dark-mode .small-product-little[data-v-d8ab1782]{background:#202020}.product_image_link{position:relative;display:inline-block;large-align:bottom;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden}.product_image_link:before{background:rgba(95,95,95,.5);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:100%}.wxw-img{large-align:bottom}.product_image_link:after{-webkit-mask:url(\"data:image/svg+xml,%3Csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.798 13.728c-.32 0-.636-.032-.942-.096-1.792-.378-3.042-1.754-3.042-3.348 0-.426.088-.84.262-1.232l.008-.02 2.008-4.498a3.696 3.696 0 0 1 3.372-2.186h9.8A3.697 3.697 0 0 1 20.662 4.6l1.984 4.432c.178.402.268.82.268 1.248 0 1.596-1.252 2.974-3.044 3.348a4.63 4.63 0 0 1-2.176-.074c-.816-.23-1.514-.68-2.002-1.268-.798.846-2.018 1.368-3.326 1.368-1.308 0-2.52-.52-3.322-1.364-.488.59-1.188 1.042-2.014 1.274-.394.11-.808.168-1.23.168l-.002-.004zM3.46 9.632l-.01.022c-.09.2-.136.412-.136.63 0 .878.762 1.65 1.85 1.88.47.098.994.082 1.458-.048.766-.214 1.368-.728 1.576-1.34a1.43 1.43 0 0 0 .046-.158.748.748 0 1 1 1.448-.056l.026.07.012.03c.392.892 1.448 1.49 2.634 1.49s2.25-.602 2.636-1.498c.02-.046.034-.082.046-.12a.744.744 0 0 1 .754-.502.75.75 0 0 1 .688.588c.012.056.026.108.042.152.214.62.802 1.118 1.572 1.334.466.132.99.148 1.46.048 1.092-.228 1.852-1.002 1.852-1.88 0-.216-.046-.43-.138-.636l-1.988-4.44-.008-.018-.018-.036a2.19 2.19 0 0 0-1.998-1.296h-9.8c-.864 0-1.648.51-2 1.298-.008.016-.014.032-.022.046L3.46 9.634v-.002zM12.364 21.642c-4.142 0-7.566-2.634-7.794-5.996a.75.75 0 1 1 1.498-.102c.174 2.578 2.94 4.598 6.298 4.598s6.122-2.02 6.296-4.598a.75.75 0 1 1 1.498.102c-.228 3.362-3.652 5.996-7.794 5.996h-.002z' fill='%23576B95'/%3E%3C/svg%3E\") no-repeat 50% 50%;mask:url(\"data:image/svg+xml,%3Csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.798 13.728c-.32 0-.636-.032-.942-.096-1.792-.378-3.042-1.754-3.042-3.348 0-.426.088-.84.262-1.232l.008-.02 2.008-4.498a3.696 3.696 0 0 1 3.372-2.186h9.8A3.697 3.697 0 0 1 20.662 4.6l1.984 4.432c.178.402.268.82.268 1.248 0 1.596-1.252 2.974-3.044 3.348a4.63 4.63 0 0 1-2.176-.074c-.816-.23-1.514-.68-2.002-1.268-.798.846-2.018 1.368-3.326 1.368-1.308 0-2.52-.52-3.322-1.364-.488.59-1.188 1.042-2.014 1.274-.394.11-.808.168-1.23.168l-.002-.004zM3.46 9.632l-.01.022c-.09.2-.136.412-.136.63 0 .878.762 1.65 1.85 1.88.47.098.994.082 1.458-.048.766-.214 1.368-.728 1.576-1.34a1.43 1.43 0 0 0 .046-.158.748.748 0 1 1 1.448-.056l.026.07.012.03c.392.892 1.448 1.49 2.634 1.49s2.25-.602 2.636-1.498c.02-.046.034-.082.046-.12a.744.744 0 0 1 .754-.502.75.75 0 0 1 .688.588c.012.056.026.108.042.152.214.62.802 1.118 1.572 1.334.466.132.99.148 1.46.048 1.092-.228 1.852-1.002 1.852-1.88 0-.216-.046-.43-.138-.636l-1.988-4.44-.008-.018-.018-.036a2.19 2.19 0 0 0-1.998-1.296h-9.8c-.864 0-1.648.51-2 1.298-.008.016-.014.032-.022.046L3.46 9.634v-.002zM12.364 21.642c-4.142 0-7.566-2.634-7.794-5.996a.75.75 0 1 1 1.498-.102c.174 2.578 2.94 4.598 6.298 4.598s6.122-2.02 6.296-4.598a.75.75 0 1 1 1.498.102c-.228 3.362-3.652 5.996-7.794 5.996h-.002z' fill='%23576B95'/%3E%3C/svg%3E\") no-repeat 50% 50%;-webkit-mask-size:15px;mask-size:15px;background:#ffffff}.product_image_link:before,.product_image_link:after{content:\"\";position:absolute;top:8px;right:8px;width:20px;height:20px;display:flex;align-items:center;justify-content:center;z-index:1}.product-container[data-v-71c60811]{width:100%}.client-type-B[data-v-71c60811]{max-width:350px}body,.wx-root{--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #07C160;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0: rgba(0, 0, 0, .9);--weui-FG-0_5: rgba(0, 0, 0, .9);--weui-FG-1: rgba(0, 0, 0, .55);--weui-FG-2: rgba(0, 0, 0, .3);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-GLYPH-0: rgba(0, 0, 0, .9);--weui-GLYPH-1: rgba(0, 0, 0, .55);--weui-GLYPH-2: rgba(0, 0, 0, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #91D300;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #1485EE;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #95EC69;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #FA9D3B;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6467F0;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #FA5151;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .05);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #FFC300;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-FG-HALF: rgba(0, 0, 0, .9);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #FA9D3B;--weui-YELLOW: #FFC300;--weui-GREEN: #91D300;--weui-LIGHTGREEN: #95EC69;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1485EE;--weui-PURPLE: #6467F0;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #FA9D3B;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #10AEFF;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05);--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-FG: #000;--weui-FG-5: rgba(0, 0, 0, .05);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG: #fff;--weui-BG: #000;--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6)}}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG: #fff;--weui-BG: #000;--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6)}.wx-root[data-weui-mode=care],body[data-weui-mode=care]{--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #007DBB;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #018942;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0: #000000;--weui-FG-0_5: #000000;--weui-FG-1: rgba(0, 0, 0, .6);--weui-FG-2: rgba(0, 0, 0, .42);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-GLYPH-0: #000000;--weui-GLYPH-1: rgba(0, 0, 0, .6);--weui-GLYPH-2: rgba(0, 0, 0, .42);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #4F8400;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #0075E2;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #2E8800;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #E17719;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #D14730;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6265F1;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #DC3636;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .1);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #BB8E00;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-FG-HALF: #000000;--weui-RED: #DC3636;--weui-ORANGERED: #D14730;--weui-ORANGE: #E17719;--weui-YELLOW: #BB8E00;--weui-GREEN: #4F8400;--weui-LIGHTGREEN: #2E8800;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #018942;--weui-BLUE: #007DBB;--weui-INDIGO: #0075E2;--weui-PURPLE: #6265F1;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #E17719;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #007DBB;--weui-REDORANGE: #D14730;--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-FG: #000;--weui-FG-5: rgba(0, 0, 0, .05);--weui-TAG-BACKGROUND-ORANGE: rgba(225, 119, 25, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(0, 125, 187, .1);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05)}@media (prefers-color-scheme: dark){.wx-root[data-weui-mode=care]:not([data-weui-theme=light]),body[data-weui-mode=care]:not([data-weui-theme=light]){--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-FG: #fff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-BG: #000;--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5)}}.wx-root[data-weui-mode=care][data-weui-theme=dark],body[data-weui-mode=care][data-weui-theme=dark]{--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-FG: #fff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-BG: #000;--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5)}.wx_hover_card:before{content:\" \";position:absolute;top:0;left:0;right:0;bottom:0;border-radius:8px;box-sizing:border-box;border:1px solid rgba(7,193,96,.3);pointer-events:none;z-index:9}.wx_selected_card:before{content:\" \";position:absolute;top:0;left:0;right:0;bottom:0;border-radius:8px;border:1.5px solid #07C160;box-sizing:border-box;background:rgba(7,193,96,.1);pointer-events:none;z-index:9}.product_card_text_wrp{display:inline;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;font-family:PingFang SC}.iframe_wrp{display:flex;flex-direction:column;-webkit-user-select:none;-moz-user-select:none;user-select:none;align-items:center;position:relative}.iframe_style{height:0px}.product_wx_img_placeholder{width:100%;background:var(--weui-BG-3) url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='80px' height='80px' viewBox='0 0 80 80' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3E9.\u5143\u7D20/\u52A0\u8F7D/Black%3C/title%3E%3Cdefs%3E%3ClinearGradient x1='94.0869141%25' y1='0%25' x2='94.0869141%25' y2='90.559082%25' id='linearGradient-1'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.67370605%25' x2='100%25' y2='90.6286621%25' id='linearGradient-2'%3E%3Cstop stop-color='%23606060' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cg id='\u9875\u9762-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' opacity='0.9'%3E%3Cg id='LoadingDefault'%3E%3Cpath d='M40,0 C62.09139,0 80,17.90861 80,40 C80,62.09139 62.09139,80 40,80 L40,73 C58.2253967,73 73,58.2253967 73,40 C73,21.7746033 58.2253967,7 40,7 L40,0 Z' id='\u8DEF\u5F84' fill='url(%23linearGradient-1)'%3E%3C/path%3E%3Cpath d='M40,0 L40,7 C21.7746033,7 7,21.7746033 7,40 C7,58.2253967 21.7746033,73 40,73 L40,80 C17.90861,80 0,62.09139 0,40 C0,17.90861 17.90861,0 40,0 Z' id='\u8DEF\u5F84' fill='url(%23linearGradient-2)'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23606060' cx='40.5' cy='3.5' r='3.5'%3E%3C/circle%3E%3C/g%3E%3CanimateTransform attributeName='transform' begin='0s' dur='1s' type='rotate' values='0 40 40;360 40 40' repeatCount='indefinite'/%3E%3C/g%3E%3C/svg%3E%0A\") no-repeat 50% 50%!important;background-size:16px!important;border-radius:8px}:root{--weui-FG-6: rgba(0, 0, 0, .05)}.product_text_link{text-decoration:none;padding:2px 4px;color:var(--weui-LINK);cursor:default;-webkit-user-drag:none;border-radius:4px}.product_text_link:before{content:\"\";display:inline-block;mask-image:url(\"data:image/svg+xml,%3Csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.798 13.728c-.32 0-.636-.032-.942-.096-1.792-.378-3.042-1.754-3.042-3.348 0-.426.088-.84.262-1.232l.008-.02 2.008-4.498a3.696 3.696 0 0 1 3.372-2.186h9.8A3.697 3.697 0 0 1 20.662 4.6l1.984 4.432c.178.402.268.82.268 1.248 0 1.596-1.252 2.974-3.044 3.348a4.63 4.63 0 0 1-2.176-.074c-.816-.23-1.514-.68-2.002-1.268-.798.846-2.018 1.368-3.326 1.368-1.308 0-2.52-.52-3.322-1.364-.488.59-1.188 1.042-2.014 1.274-.394.11-.808.168-1.23.168l-.002-.004zM3.46 9.632l-.01.022c-.09.2-.136.412-.136.63 0 .878.762 1.65 1.85 1.88.47.098.994.082 1.458-.048.766-.214 1.368-.728 1.576-1.34a1.43 1.43 0 0 0 .046-.158.748.748 0 1 1 1.448-.056l.026.07.012.03c.392.892 1.448 1.49 2.634 1.49s2.25-.602 2.636-1.498c.02-.046.034-.082.046-.12a.744.744 0 0 1 .754-.502.75.75 0 0 1 .688.588c.012.056.026.108.042.152.214.62.802 1.118 1.572 1.334.466.132.99.148 1.46.048 1.092-.228 1.852-1.002 1.852-1.88 0-.216-.046-.43-.138-.636l-1.988-4.44-.008-.018-.018-.036a2.19 2.19 0 0 0-1.998-1.296h-9.8c-.864 0-1.648.51-2 1.298-.008.016-.014.032-.022.046L3.46 9.634v-.002zM12.364 21.642c-4.142 0-7.566-2.634-7.794-5.996a.75.75 0 1 1 1.498-.102c.174 2.578 2.94 4.598 6.298 4.598s6.122-2.02 6.296-4.598a.75.75 0 1 1 1.498.102c-.228 3.362-3.652 5.996-7.794 5.996h-.002z' fill='%23576B95'/%3E%3C/svg%3E\");-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.798 13.728c-.32 0-.636-.032-.942-.096-1.792-.378-3.042-1.754-3.042-3.348 0-.426.088-.84.262-1.232l.008-.02 2.008-4.498a3.696 3.696 0 0 1 3.372-2.186h9.8A3.697 3.697 0 0 1 20.662 4.6l1.984 4.432c.178.402.268.82.268 1.248 0 1.596-1.252 2.974-3.044 3.348a4.63 4.63 0 0 1-2.176-.074c-.816-.23-1.514-.68-2.002-1.268-.798.846-2.018 1.368-3.326 1.368-1.308 0-2.52-.52-3.322-1.364-.488.59-1.188 1.042-2.014 1.274-.394.11-.808.168-1.23.168l-.002-.004zM3.46 9.632l-.01.022c-.09.2-.136.412-.136.63 0 .878.762 1.65 1.85 1.88.47.098.994.082 1.458-.048.766-.214 1.368-.728 1.576-1.34a1.43 1.43 0 0 0 .046-.158.748.748 0 1 1 1.448-.056l.026.07.012.03c.392.892 1.448 1.49 2.634 1.49s2.25-.602 2.636-1.498c.02-.046.034-.082.046-.12a.744.744 0 0 1 .754-.502.75.75 0 0 1 .688.588c.012.056.026.108.042.152.214.62.802 1.118 1.572 1.334.466.132.99.148 1.46.048 1.092-.228 1.852-1.002 1.852-1.88 0-.216-.046-.43-.138-.636l-1.988-4.44-.008-.018-.018-.036a2.19 2.19 0 0 0-1.998-1.296h-9.8c-.864 0-1.648.51-2 1.298-.008.016-.014.032-.022.046L3.46 9.634v-.002zM12.364 21.642c-4.142 0-7.566-2.634-7.794-5.996a.75.75 0 1 1 1.498-.102c.174 2.578 2.94 4.598 6.298 4.598s6.122-2.02 6.296-4.598a.75.75 0 1 1 1.498.102c-.228 3.362-3.652 5.996-7.794 5.996h-.002z' fill='%23576B95'/%3E%3C/svg%3E\");background-color:currentColor;-webkit-mask-size:contain;mask-size:contain;vertical-align:middle;height:1.1em;width:1.1em;margin-right:2px;margin-top:-.16em}.product-logo{height:1.1em;width:1.1em;display:inline-block;mask-image:url(\"data:image/svg+xml,%3Csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.798 13.728c-.32 0-.636-.032-.942-.096-1.792-.378-3.042-1.754-3.042-3.348 0-.426.088-.84.262-1.232l.008-.02 2.008-4.498a3.696 3.696 0 0 1 3.372-2.186h9.8A3.697 3.697 0 0 1 20.662 4.6l1.984 4.432c.178.402.268.82.268 1.248 0 1.596-1.252 2.974-3.044 3.348a4.63 4.63 0 0 1-2.176-.074c-.816-.23-1.514-.68-2.002-1.268-.798.846-2.018 1.368-3.326 1.368-1.308 0-2.52-.52-3.322-1.364-.488.59-1.188 1.042-2.014 1.274-.394.11-.808.168-1.23.168l-.002-.004zM3.46 9.632l-.01.022c-.09.2-.136.412-.136.63 0 .878.762 1.65 1.85 1.88.47.098.994.082 1.458-.048.766-.214 1.368-.728 1.576-1.34a1.43 1.43 0 0 0 .046-.158.748.748 0 1 1 1.448-.056l.026.07.012.03c.392.892 1.448 1.49 2.634 1.49s2.25-.602 2.636-1.498c.02-.046.034-.082.046-.12a.744.744 0 0 1 .754-.502.75.75 0 0 1 .688.588c.012.056.026.108.042.152.214.62.802 1.118 1.572 1.334.466.132.99.148 1.46.048 1.092-.228 1.852-1.002 1.852-1.88 0-.216-.046-.43-.138-.636l-1.988-4.44-.008-.018-.018-.036a2.19 2.19 0 0 0-1.998-1.296h-9.8c-.864 0-1.648.51-2 1.298-.008.016-.014.032-.022.046L3.46 9.634v-.002zM12.364 21.642c-4.142 0-7.566-2.634-7.794-5.996a.75.75 0 1 1 1.498-.102c.174 2.578 2.94 4.598 6.298 4.598s6.122-2.02 6.296-4.598a.75.75 0 1 1 1.498.102c-.228 3.362-3.652 5.996-7.794 5.996h-.002z' fill='%23576B95'/%3E%3C/svg%3E\");-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.798 13.728c-.32 0-.636-.032-.942-.096-1.792-.378-3.042-1.754-3.042-3.348 0-.426.088-.84.262-1.232l.008-.02 2.008-4.498a3.696 3.696 0 0 1 3.372-2.186h9.8A3.697 3.697 0 0 1 20.662 4.6l1.984 4.432c.178.402.268.82.268 1.248 0 1.596-1.252 2.974-3.044 3.348a4.63 4.63 0 0 1-2.176-.074c-.816-.23-1.514-.68-2.002-1.268-.798.846-2.018 1.368-3.326 1.368-1.308 0-2.52-.52-3.322-1.364-.488.59-1.188 1.042-2.014 1.274-.394.11-.808.168-1.23.168l-.002-.004zM3.46 9.632l-.01.022c-.09.2-.136.412-.136.63 0 .878.762 1.65 1.85 1.88.47.098.994.082 1.458-.048.766-.214 1.368-.728 1.576-1.34a1.43 1.43 0 0 0 .046-.158.748.748 0 1 1 1.448-.056l.026.07.012.03c.392.892 1.448 1.49 2.634 1.49s2.25-.602 2.636-1.498c.02-.046.034-.082.046-.12a.744.744 0 0 1 .754-.502.75.75 0 0 1 .688.588c.012.056.026.108.042.152.214.62.802 1.118 1.572 1.334.466.132.99.148 1.46.048 1.092-.228 1.852-1.002 1.852-1.88 0-.216-.046-.43-.138-.636l-1.988-4.44-.008-.018-.018-.036a2.19 2.19 0 0 0-1.998-1.296h-9.8c-.864 0-1.648.51-2 1.298-.008.016-.014.032-.022.046L3.46 9.634v-.002zM12.364 21.642c-4.142 0-7.566-2.634-7.794-5.996a.75.75 0 1 1 1.498-.102c.174 2.578 2.94 4.598 6.298 4.598s6.122-2.02 6.296-4.598a.75.75 0 1 1 1.498.102c-.228 3.362-3.652 5.996-7.794 5.996h-.002z' fill='%23576B95'/%3E%3C/svg%3E\");background-color:currentColor;-webkit-mask-size:contain;mask-size:contain}.shop-verify-icon{height:1em;width:1em;display:inline-block;background-size:contain;background-position:center;background-repeat:no-repeat}.weui-toast{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#4c4c4c;border-radius:8px;color:#fff;font-size:14px;line-height:1.4;padding:0 20px}.discounted_price.fade-enter,.discounted_price.fade-leave-to{opacity:0;height:0}.discounted_price.fade-enter-to,.discounted_price.fade-leave{opacity:1;height:15px}.discounted_price.fade-enter-active,.discounted_price.fade-leave-active{transition:opacity .15s,height .15s}.activity_card_wrp{-webkit-user-select:none;-moz-user-select:none;user-select:none;width:-moz-fit-content;width:fit-content}.activity_card_wrp .activity_card_wrp__container{display:flex;flex-direction:column;align-items:center;background-color:#0000001a;-webkit-backdrop-filter:blur(50px);backdrop-filter:blur(50px);border-radius:8px;padding:10px}.activity_card_wrp .activity_card_wrp__container .product_image{width:52px;height:52px;border-radius:2px;margin-bottom:8px}.activity_card_wrp .discounted_price{overflow:hidden;font-weight:500;color:#e0b684;line-height:1;font-family:WeChatSansStd-Medium;line-height:normal;font-size:15px}@font-face{font-family:WeChatSansStd-Medium;src:url(data:application/octet-stream;base64,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AwYAAwABBAkABAAsA1oAAwABBAkABQAYA4YAAwABBAkABgAsA54AAwABBAkABwBMA8oAAwABBAkACAAWBBYAAwABBAkACQBGBCwAAwABBAkACwAwBHIAAwABBAkAEAAeBKIAAwABBAkAEQAMBMAAAwABBAkAEwAiBMwAAwABCAQAAABmBO4AAwABCAQAAQAsBVQAAwABCAQAAgAOBYAAAwABCAQABAAsBY4AAwABCAQABwBMBboAAwABCAQACAAWBgYAAwABCAQACQBGBhwAAwABCAQAEAAeBmIAAwABCAQAEQAMBoBDb3B5cmlnaHQgKGMpIDIwMTcgYnkgVGVuY2VudC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5XZUNoYXQgU2FucyBTdGRNZWRpdW1IYW55aSBXZUNoYXQgU2FucyBTdGQtTWVkaXVtOyBWZXJzaW9uIDEuMDBXZUNoYXQgU2FucyBTdGQtTWVkaXVtVmVyc2lvbiAxLjAwV2VDaGF0LVNhbnMtU3RkLU1lZGl1bVdlQ2hhdCBTYW5zIGlzIGEgdHJhZGVtYXJrIG9mIFRlbmNlbnQuSGFueWkgRm9udHNaSEFORyBYdWFuLCBXQU5HIFRpYW5iaSwgTElVIFhpYW95dWh0dHA6Ly93d3cuaGFueWkuY29tLmNuL1dlQ2hhdCBTYW5zIFN0ZE1lZGl1bVdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW3boiSjX7QKMTIzNDU2Nzg5MENvcHlyaWdodCAoYykgMjAxNyBieSBUZW5jZW50LiBBbGwgcmlnaHRzIHJlc2VydmVkLldlQ2hhdCBTYW5zIFN0ZE1lZGl1bUhhbnlpIFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW07IFZlcnNpb24gMS4wMFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW1WZXJzaW9uIDEuMDBXZUNoYXQtU2Fucy1TdGQtTWVkaXVtV2VDaGF0IFNhbnMgaXMgYSB0cmFkZW1hcmsgb2YgVGVuY2VudC5IYW55aSBGb250c1pIQU5HIFh1YW4sIFdBTkcgVGlhbmJpLCBMSVUgWGlhb3l1V2VDaGF0IFNhbnMgU3RkLU1lZGl1bQBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIASABhAG4AeQBpACAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQA7ACAAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBWAGUAcgBzAGkAbwBuACAAMQAuADAAMABXAGUAQwBoAGEAdAAtAFMAYQBuAHMALQBTAHQAZAAtAE0AZQBkAGkAdQBtAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAFQAZQBuAGMAZQBuAHQALgBIAGEAbgB5AGkAIABGAG8AbgB0AHMAWgBIAEEATgBHACAAWAB1AGEAbgAsACAAVwBBAE4ARwAgAFQAaQBhAG4AYgBpACwAIABMAEkAVQAgAFgAaQBhAG8AeQB1AGgAdAB0AHAAOgAvAC8AdwB3AHcALgBoAGEAbgB5AGkALgBjAG8AbQAuAGMAbgAvAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAFMAdABkAE0AZQBkAGkAdQBtIKwAogAkAKMgqQClAAoAMQAyADMANAA1ADYANwA4ADkAMABDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABUAGUAbgBjAGUAbgB0AC4ASABhAG4AeQBpACAARgBvAG4AdABzAFoASABBAE4ARwAgAFgAdQBhAG4ALAAgAFcAQQBOAEcAIABUAGkAYQBuAGIAaQAsACAATABJAFUAIABYAGkAYQBvAHkAdQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZABNAGUAZABpAHUAbQAAAAIAAAAAAAD/tQAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAYwAAAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQATABQAFQAWABcAGAAZABoAGwAcAA8AEQAQAQIBAwCEAQQAvQAHAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgCFARMBFAEVAJYBFgEXARgBGQEaAA4A7wd1bmkwRTNGB3VuaTIwQjUNY29sb25tb25ldGFyeQd1bmlGRTY5BGRvbmcERXVybwd1bmkyMEIyB3VuaTIwQjQHdW5pMjBBRAd1bmkyMEJFB3VuaTIwQkEHdW5pMjBCQwd1bmkyMEE2B3VuaTIwQjEHdW5pMjBCRAd1bmkyMEI5B3VuaTIwQUEHdW5pMjBCOAd1bmkyMEFFB3VuaTIwQTkHdW5pRkZFMAd1bmlGRjA0B3VuaUZGRTEHdW5pRkZFNgd1bmlGRkU1) format(\"truetype\")}.activity_card_wrp .origin_price{font-weight:500;color:#fff;line-height:1;transition:font-size .15s,font-weight .15s,color .15s,-webkit-text-decoration .15s;transition:font-size .15s,font-weight .15s,color .15s,text-decoration .15s;transition:font-size .15s,font-weight .15s,color .15s,text-decoration .15s,-webkit-text-decoration .15s;font-family:WeChatSansStd-Medium;line-height:normal;font-size:15px}@font-face{font-family:WeChatSansStd-Medium;src:url(data:application/octet-stream;base64,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AwYAAwABBAkABAAsA1oAAwABBAkABQAYA4YAAwABBAkABgAsA54AAwABBAkABwBMA8oAAwABBAkACAAWBBYAAwABBAkACQBGBCwAAwABBAkACwAwBHIAAwABBAkAEAAeBKIAAwABBAkAEQAMBMAAAwABBAkAEwAiBMwAAwABCAQAAABmBO4AAwABCAQAAQAsBVQAAwABCAQAAgAOBYAAAwABCAQABAAsBY4AAwABCAQABwBMBboAAwABCAQACAAWBgYAAwABCAQACQBGBhwAAwABCAQAEAAeBmIAAwABCAQAEQAMBoBDb3B5cmlnaHQgKGMpIDIwMTcgYnkgVGVuY2VudC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5XZUNoYXQgU2FucyBTdGRNZWRpdW1IYW55aSBXZUNoYXQgU2FucyBTdGQtTWVkaXVtOyBWZXJzaW9uIDEuMDBXZUNoYXQgU2FucyBTdGQtTWVkaXVtVmVyc2lvbiAxLjAwV2VDaGF0LVNhbnMtU3RkLU1lZGl1bVdlQ2hhdCBTYW5zIGlzIGEgdHJhZGVtYXJrIG9mIFRlbmNlbnQuSGFueWkgRm9udHNaSEFORyBYdWFuLCBXQU5HIFRpYW5iaSwgTElVIFhpYW95dWh0dHA6Ly93d3cuaGFueWkuY29tLmNuL1dlQ2hhdCBTYW5zIFN0ZE1lZGl1bVdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW3boiSjX7QKMTIzNDU2Nzg5MENvcHlyaWdodCAoYykgMjAxNyBieSBUZW5jZW50LiBBbGwgcmlnaHRzIHJlc2VydmVkLldlQ2hhdCBTYW5zIFN0ZE1lZGl1bUhhbnlpIFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW07IFZlcnNpb24gMS4wMFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW1WZXJzaW9uIDEuMDBXZUNoYXQtU2Fucy1TdGQtTWVkaXVtV2VDaGF0IFNhbnMgaXMgYSB0cmFkZW1hcmsgb2YgVGVuY2VudC5IYW55aSBGb250c1pIQU5HIFh1YW4sIFdBTkcgVGlhbmJpLCBMSVUgWGlhb3l1V2VDaGF0IFNhbnMgU3RkLU1lZGl1bQBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIASABhAG4AeQBpACAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQA7ACAAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBWAGUAcgBzAGkAbwBuACAAMQAuADAAMABXAGUAQwBoAGEAdAAtAFMAYQBuAHMALQBTAHQAZAAtAE0AZQBkAGkAdQBtAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAFQAZQBuAGMAZQBuAHQALgBIAGEAbgB5AGkAIABGAG8AbgB0AHMAWgBIAEEATgBHACAAWAB1AGEAbgAsACAAVwBBAE4ARwAgAFQAaQBhAG4AYgBpACwAIABMAEkAVQAgAFgAaQBhAG8AeQB1AGgAdAB0AHAAOgAvAC8AdwB3AHcALgBoAGEAbgB5AGkALgBjAG8AbQAuAGMAbgAvAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAFMAdABkAE0AZQBkAGkAdQBtIKwAogAkAKMgqQClAAoAMQAyADMANAA1ADYANwA4ADkAMABDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABUAGUAbgBjAGUAbgB0AC4ASABhAG4AeQBpACAARgBvAG4AdABzAFoASABBAE4ARwAgAFgAdQBhAG4ALAAgAFcAQQBOAEcAIABUAGkAYQBuAGIAaQAsACAATABJAFUAIABYAGkAYQBvAHkAdQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZABNAGUAZABpAHUAbQAAAAIAAAAAAAD/tQAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAYwAAAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQATABQAFQAWABcAGAAZABoAGwAcAA8AEQAQAQIBAwCEAQQAvQAHAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgCFARMBFAEVAJYBFgEXARgBGQEaAA4A7wd1bmkwRTNGB3VuaTIwQjUNY29sb25tb25ldGFyeQd1bmlGRTY5BGRvbmcERXVybwd1bmkyMEIyB3VuaTIwQjQHdW5pMjBBRAd1bmkyMEJFB3VuaTIwQkEHdW5pMjBCQwd1bmkyMEE2B3VuaTIwQjEHdW5pMjBCRAd1bmkyMEI5B3VuaTIwQUEHdW5pMjBCOAd1bmkyMEFFB3VuaTIwQTkHdW5pRkZFMAd1bmlGRjA0B3VuaUZGRTEHdW5pRkZFNgd1bmlGRkU1) format(\"truetype\")}.activity_card_wrp .origin_price.has_discount{font-weight:400;text-decoration:line-through;-webkit-text-decoration-color:#fff;text-decoration-color:#fff;color:#fff;opacity:.5;font-family:WeChatSansStd-Medium;line-height:normal;font-size:12px}@font-face{font-family:WeChatSansStd-Medium;src:url(data:application/octet-stream;base64,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AwYAAwABBAkABAAsA1oAAwABBAkABQAYA4YAAwABBAkABgAsA54AAwABBAkABwBMA8oAAwABBAkACAAWBBYAAwABBAkACQBGBCwAAwABBAkACwAwBHIAAwABBAkAEAAeBKIAAwABBAkAEQAMBMAAAwABBAkAEwAiBMwAAwABCAQAAABmBO4AAwABCAQAAQAsBVQAAwABCAQAAgAOBYAAAwABCAQABAAsBY4AAwABCAQABwBMBboAAwABCAQACAAWBgYAAwABCAQACQBGBhwAAwABCAQAEAAeBmIAAwABCAQAEQAMBoBDb3B5cmlnaHQgKGMpIDIwMTcgYnkgVGVuY2VudC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5XZUNoYXQgU2FucyBTdGRNZWRpdW1IYW55aSBXZUNoYXQgU2FucyBTdGQtTWVkaXVtOyBWZXJzaW9uIDEuMDBXZUNoYXQgU2FucyBTdGQtTWVkaXVtVmVyc2lvbiAxLjAwV2VDaGF0LVNhbnMtU3RkLU1lZGl1bVdlQ2hhdCBTYW5zIGlzIGEgdHJhZGVtYXJrIG9mIFRlbmNlbnQuSGFueWkgRm9udHNaSEFORyBYdWFuLCBXQU5HIFRpYW5iaSwgTElVIFhpYW95dWh0dHA6Ly93d3cuaGFueWkuY29tLmNuL1dlQ2hhdCBTYW5zIFN0ZE1lZGl1bVdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW3boiSjX7QKMTIzNDU2Nzg5MENvcHlyaWdodCAoYykgMjAxNyBieSBUZW5jZW50LiBBbGwgcmlnaHRzIHJlc2VydmVkLldlQ2hhdCBTYW5zIFN0ZE1lZGl1bUhhbnlpIFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW07IFZlcnNpb24gMS4wMFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW1WZXJzaW9uIDEuMDBXZUNoYXQtU2Fucy1TdGQtTWVkaXVtV2VDaGF0IFNhbnMgaXMgYSB0cmFkZW1hcmsgb2YgVGVuY2VudC5IYW55aSBGb250c1pIQU5HIFh1YW4sIFdBTkcgVGlhbmJpLCBMSVUgWGlhb3l1V2VDaGF0IFNhbnMgU3RkLU1lZGl1bQBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIASABhAG4AeQBpACAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQA7ACAAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBWAGUAcgBzAGkAbwBuACAAMQAuADAAMABXAGUAQwBoAGEAdAAtAFMAYQBuAHMALQBTAHQAZAAtAE0AZQBkAGkAdQBtAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAFQAZQBuAGMAZQBuAHQALgBIAGEAbgB5AGkAIABGAG8AbgB0AHMAWgBIAEEATgBHACAAWAB1AGEAbgAsACAAVwBBAE4ARwAgAFQAaQBhAG4AYgBpACwAIABMAEkAVQAgAFgAaQBhAG8AeQB1AGgAdAB0AHAAOgAvAC8AdwB3AHcALgBoAGEAbgB5AGkALgBjAG8AbQAuAGMAbgAvAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAFMAdABkAE0AZQBkAGkAdQBtIKwAogAkAKMgqQClAAoAMQAyADMANAA1ADYANwA4ADkAMABDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABUAGUAbgBjAGUAbgB0AC4ASABhAG4AeQBpACAARgBvAG4AdABzAFoASABBAE4ARwAgAFgAdQBhAG4ALAAgAFcAQQBOAEcAIABUAGkAYQBuAGIAaQAsACAATABJAFUAIABYAGkAYQBvAHkAdQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZABNAGUAZABpAHUAbQAAAAIAAAAAAAD/tQAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAYwAAAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQATABQAFQAWABcAGAAZABoAGwAcAA8AEQAQAQIBAwCEAQQAvQAHAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgCFARMBFAEVAJYBFgEXARgBGQEaAA4A7wd1bmkwRTNGB3VuaTIwQjUNY29sb25tb25ldGFyeQd1bmlGRTY5BGRvbmcERXVybwd1bmkyMEIyB3VuaTIwQjQHdW5pMjBBRAd1bmkyMEJFB3VuaTIwQkEHdW5pMjBCQwd1bmkyMEE2B3VuaTIwQjEHdW5pMjBCRAd1bmkyMEI5B3VuaTIwQUEHdW5pMjBCOAd1bmkyMEFFB3VuaTIwQTkHdW5pRkZFMAd1bmlGRjA0B3VuaUZGRTEHdW5pRkZFNgd1bmlGRkU1) format(\"truetype\")}.s1s_card_wrp{font-family:system-ui,PingFang SC;display:flex;align-items:center}.s1s_card_wrp .product-image{width:4em;height:4em;border-radius:2px;margin-right:12px}.s1s_card_wrp .product-info{flex:1;width:200px;line-height:1;display:flex;height:4em;flex-direction:column;box-sizing:border-box;padding:4px 0 0;justify-content:space-between}.s1s_card_wrp .product-title{color:var(--weui-FG-0);font-size:15px;width:100%;font-weight:400;padding-bottom:5px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.s1s_card_wrp .product-price{color:#b3b3b3;font-weight:400;text-decoration:line-through;font-family:WeChatSansStd-Medium;line-height:normal;font-size:13px;line-height:1;padding-left:4px;padding-right:6px;position:relative}@font-face{font-family:WeChatSansStd-Medium;src:url(data:application/octet-stream;base64,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AwYAAwABBAkABAAsA1oAAwABBAkABQAYA4YAAwABBAkABgAsA54AAwABBAkABwBMA8oAAwABBAkACAAWBBYAAwABBAkACQBGBCwAAwABBAkACwAwBHIAAwABBAkAEAAeBKIAAwABBAkAEQAMBMAAAwABBAkAEwAiBMwAAwABCAQAAABmBO4AAwABCAQAAQAsBVQAAwABCAQAAgAOBYAAAwABCAQABAAsBY4AAwABCAQABwBMBboAAwABCAQACAAWBgYAAwABCAQACQBGBhwAAwABCAQAEAAeBmIAAwABCAQAEQAMBoBDb3B5cmlnaHQgKGMpIDIwMTcgYnkgVGVuY2VudC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5XZUNoYXQgU2FucyBTdGRNZWRpdW1IYW55aSBXZUNoYXQgU2FucyBTdGQtTWVkaXVtOyBWZXJzaW9uIDEuMDBXZUNoYXQgU2FucyBTdGQtTWVkaXVtVmVyc2lvbiAxLjAwV2VDaGF0LVNhbnMtU3RkLU1lZGl1bVdlQ2hhdCBTYW5zIGlzIGEgdHJhZGVtYXJrIG9mIFRlbmNlbnQuSGFueWkgRm9udHNaSEFORyBYdWFuLCBXQU5HIFRpYW5iaSwgTElVIFhpYW95dWh0dHA6Ly93d3cuaGFueWkuY29tLmNuL1dlQ2hhdCBTYW5zIFN0ZE1lZGl1bVdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW3boiSjX7QKMTIzNDU2Nzg5MENvcHlyaWdodCAoYykgMjAxNyBieSBUZW5jZW50LiBBbGwgcmlnaHRzIHJlc2VydmVkLldlQ2hhdCBTYW5zIFN0ZE1lZGl1bUhhbnlpIFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW07IFZlcnNpb24gMS4wMFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW1WZXJzaW9uIDEuMDBXZUNoYXQtU2Fucy1TdGQtTWVkaXVtV2VDaGF0IFNhbnMgaXMgYSB0cmFkZW1hcmsgb2YgVGVuY2VudC5IYW55aSBGb250c1pIQU5HIFh1YW4sIFdBTkcgVGlhbmJpLCBMSVUgWGlhb3l1V2VDaGF0IFNhbnMgU3RkLU1lZGl1bQBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIASABhAG4AeQBpACAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQA7ACAAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBWAGUAcgBzAGkAbwBuACAAMQAuADAAMABXAGUAQwBoAGEAdAAtAFMAYQBuAHMALQBTAHQAZAAtAE0AZQBkAGkAdQBtAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAFQAZQBuAGMAZQBuAHQALgBIAGEAbgB5AGkAIABGAG8AbgB0AHMAWgBIAEEATgBHACAAWAB1AGEAbgAsACAAVwBBAE4ARwAgAFQAaQBhAG4AYgBpACwAIABMAEkAVQAgAFgAaQBhAG8AeQB1AGgAdAB0AHAAOgAvAC8AdwB3AHcALgBoAGEAbgB5AGkALgBjAG8AbQAuAGMAbgAvAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAFMAdABkAE0AZQBkAGkAdQBtIKwAogAkAKMgqQClAAoAMQAyADMANAA1ADYANwA4ADkAMABDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABUAGUAbgBjAGUAbgB0AC4ASABhAG4AeQBpACAARgBvAG4AdABzAFoASABBAE4ARwAgAFgAdQBhAG4ALAAgAFcAQQBOAEcAIABUAGkAYQBuAGIAaQAsACAATABJAFUAIABYAGkAYQBvAHkAdQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZABNAGUAZABpAHUAbQAAAAIAAAAAAAD/tQAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAYwAAAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQATABQAFQAWABcAGAAZABoAGwAcAA8AEQAQAQIBAwCEAQQAvQAHAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgCFARMBFAEVAJYBFgEXARgBGQEaAA4A7wd1bmkwRTNGB3VuaTIwQjUNY29sb25tb25ldGFyeQd1bmlGRTY5BGRvbmcERXVybwd1bmkyMEIyB3VuaTIwQjQHdW5pMjBBRAd1bmkyMEJFB3VuaTIwQkEHdW5pMjBCQwd1bmkyMEE2B3VuaTIwQjEHdW5pMjBCRAd1bmkyMEI5B3VuaTIwQUEHdW5pMjBCOAd1bmkyMEFFB3VuaTIwQTkHdW5pRkZFMAd1bmlGRjA0B3VuaUZGRTEHdW5pRkZFNgd1bmlGRkU1) format(\"truetype\")}.s1s_card_wrp .product-price.need-border:after{content:\"\";display:block;width:.5px;height:11px;position:absolute;right:0;top:1px;background-color:var(--weui-FG-2)}.s1s_card_wrp .discount-price{color:var(--weui-ORANGERED-100);font-weight:400;font-family:WeChatSansStd-Medium;line-height:normal;font-size:15px;line-height:1;position:relative;top:1px}@font-face{font-family:WeChatSansStd-Medium;src:url(data:application/octet-stream;base64,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AwYAAwABBAkABAAsA1oAAwABBAkABQAYA4YAAwABBAkABgAsA54AAwABBAkABwBMA8oAAwABBAkACAAWBBYAAwABBAkACQBGBCwAAwABBAkACwAwBHIAAwABBAkAEAAeBKIAAwABBAkAEQAMBMAAAwABBAkAEwAiBMwAAwABCAQAAABmBO4AAwABCAQAAQAsBVQAAwABCAQAAgAOBYAAAwABCAQABAAsBY4AAwABCAQABwBMBboAAwABCAQACAAWBgYAAwABCAQACQBGBhwAAwABCAQAEAAeBmIAAwABCAQAEQAMBoBDb3B5cmlnaHQgKGMpIDIwMTcgYnkgVGVuY2VudC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5XZUNoYXQgU2FucyBTdGRNZWRpdW1IYW55aSBXZUNoYXQgU2FucyBTdGQtTWVkaXVtOyBWZXJzaW9uIDEuMDBXZUNoYXQgU2FucyBTdGQtTWVkaXVtVmVyc2lvbiAxLjAwV2VDaGF0LVNhbnMtU3RkLU1lZGl1bVdlQ2hhdCBTYW5zIGlzIGEgdHJhZGVtYXJrIG9mIFRlbmNlbnQuSGFueWkgRm9udHNaSEFORyBYdWFuLCBXQU5HIFRpYW5iaSwgTElVIFhpYW95dWh0dHA6Ly93d3cuaGFueWkuY29tLmNuL1dlQ2hhdCBTYW5zIFN0ZE1lZGl1bVdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW3boiSjX7QKMTIzNDU2Nzg5MENvcHlyaWdodCAoYykgMjAxNyBieSBUZW5jZW50LiBBbGwgcmlnaHRzIHJlc2VydmVkLldlQ2hhdCBTYW5zIFN0ZE1lZGl1bUhhbnlpIFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW07IFZlcnNpb24gMS4wMFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW1WZXJzaW9uIDEuMDBXZUNoYXQtU2Fucy1TdGQtTWVkaXVtV2VDaGF0IFNhbnMgaXMgYSB0cmFkZW1hcmsgb2YgVGVuY2VudC5IYW55aSBGb250c1pIQU5HIFh1YW4sIFdBTkcgVGlhbmJpLCBMSVUgWGlhb3l1V2VDaGF0IFNhbnMgU3RkLU1lZGl1bQBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIASABhAG4AeQBpACAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQA7ACAAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBWAGUAcgBzAGkAbwBuACAAMQAuADAAMABXAGUAQwBoAGEAdAAtAFMAYQBuAHMALQBTAHQAZAAtAE0AZQBkAGkAdQBtAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAFQAZQBuAGMAZQBuAHQALgBIAGEAbgB5AGkAIABGAG8AbgB0AHMAWgBIAEEATgBHACAAWAB1AGEAbgAsACAAVwBBAE4ARwAgAFQAaQBhAG4AYgBpACwAIABMAEkAVQAgAFgAaQBhAG8AeQB1AGgAdAB0AHAAOgAvAC8AdwB3AHcALgBoAGEAbgB5AGkALgBjAG8AbQAuAGMAbgAvAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAFMAdABkAE0AZQBkAGkAdQBtIKwAogAkAKMgqQClAAoAMQAyADMANAA1ADYANwA4ADkAMABDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABUAGUAbgBjAGUAbgB0AC4ASABhAG4AeQBpACAARgBvAG4AdABzAFoASABBAE4ARwAgAFgAdQBhAG4ALAAgAFcAQQBOAEcAIABUAGkAYQBuAGIAaQAsACAATABJAFUAIABYAGkAYQBvAHkAdQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZABNAGUAZABpAHUAbQAAAAIAAAAAAAD/tQAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAYwAAAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQATABQAFQAWABcAGAAZABoAGwAcAA8AEQAQAQIBAwCEAQQAvQAHAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgCFARMBFAEVAJYBFgEXARgBGQEaAA4A7wd1bmkwRTNGB3VuaTIwQjUNY29sb25tb25ldGFyeQd1bmlGRTY5BGRvbmcERXVybwd1bmkyMEIyB3VuaTIwQjQHdW5pMjBBRAd1bmkyMEJFB3VuaTIwQkEHdW5pMjBCQwd1bmkyMEE2B3VuaTIwQjEHdW5pMjBCRAd1bmkyMEI5B3VuaTIwQUEHdW5pMjBCOAd1bmkyMEFFB3VuaTIwQTkHdW5pRkZFMAd1bmlGRjA0B3VuaUZGRTEHdW5pRkZFNgd1bmlGRkU1) format(\"truetype\")}.s1s_card_wrp .discount-price__extra{font-size:12px;color:var(--weui-ORANGERED-100);font-weight:400;margin-left:1px;position:relative;top:-1px}.s1s_card_wrp .product-brand{color:var(--weui-FG-1);font-size:12px;display:flex;align-items:center}.s1s_card_wrp .product-brand .product-logo{margin-right:2px}.s1s_card_wrp .product-brand .shop-verify-icon{font-size:14px;margin-left:2px;position:relative;top:-.03em}.s1s_card_wrp .product-centercontainer{display:flex;align-items:flex-end;margin-bottom:5px}.s1s_card_wrp .product-gifts{color:var(--weui-FG-2);font-size:12px;margin-left:6px;position:relative;top:-.06em}.s1s_card_wrp .product-gifts .product-gifts__num{margin:0 1px}.product_image_wrp{width:100%;height:100%}.product_load_fail{display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;width:100%;min-height:88px;padding:16px 64px;border-radius:8px;background-color:var(--weui-BG-3, rgba(0, 0, 0, .03));color:var(--weui-FG-2, rgba(0, 0, 0, .3));font-size:14px;line-height:1.4;-webkit-user-select:none;-moz-user-select:none;user-select:none}.product_load_fail__text{text-align:center}@media (prefers-color-scheme: dark){:root{--weui-FG-6: rgba(255, 255, 255, .05)}.s1s_card_wrp .product-price{color:#5e5e5e}.s1s_card_wrp .shop-verify-icon{filter:invert(1)}}\n",
    J$2 = {
      windowproduct: "data-windowproduct",
      customstyle: "data-customstyle",
      ecsource: "data-ecsource",
      exportkey: "data-exportkey",
      wap_export_token: "data-wap_export_token",
      loaded: "data-loaded",
      cardtype: "data-cardtype",
      is_hover: "data-is-hover",
      is_selected: "data-is-selected",
      token: "data-token",
      title: "data-title",
      immutable: "data-immutable",
      req_scene: "data-req-scene",
      urlParams: "data-url-params",
      extInfo: "data-ext-info",
      scrollBlur: "data-scroll-blur",
      wrpStyle: "data-wrp-style",
      type: "data-type",
      productImage: "data-product-image",
      originPrice: "data-origin-price",
      discountedPrice: "data-discounted-price",
      outerclick: "data-outerclick",
      productInfo: "data-product-info"
    };
  function ut(A) {
    var t = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : {};
    var e = {};
    return e = o$6.call(this, J$2), e.loaded = Number(e.loaded || 0), e.cardtype = Number(e.cardtype || 0), e.is_hover = Number(e.is_hover || 0), e.is_selected = Number(e.is_selected || 0), e.immutable = Number(e.immutable || 0), e.req_scene = Number(e.req_scene || 0), e.urlParams = JSON.parse(e.urlParams || "{}"), e.extInfo = JSON.parse(e.extInfo || "{}"), e.productInfo = JSON.parse(e.productInfo || "{}"), e.scrollBlur = Number(e.scrollBlur || 0), e.originPrice = Number(e.originPrice || 0), e.discountedPrice = Number(e.discountedPrice || 0), e.outerclick = Number(e.outerclick || 0), _objectSpread$9({
      platform: A,
      extraInfo: t
    }, e);
  }
  function ft(A) {
    H$3(Object.assign(A, {
      Component: A.isDev ? A.devComponent : gt,
      styleText: A.isDev ? A.devStyleText : nt,
      customName: A.customName || "mp-common-product",
      watchAttr: Object.values(J$2),
      getProps: ut,
      eventName: ["iframe-message", "document-click", "expose", "element-click"]
    }));
  }

  function ownKeys$8(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r &amp;&amp; (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
  function _objectSpread$8(e) { for (var r = 1; r &lt; arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$8(Object(t), !0).forEach(function (r) { defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$8(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
  var w$4 = {
      name: "mp-common-redpacket",
      mixins: [k$1],
      props: {
        errType: {
          type: String,
          "default": ""
        },
        is_hover: {
          type: Number,
          "default": 0
        },
        is_selected: {
          type: Number,
          "default": 0
        },
        name: {
          type: String,
          "default": ""
        },
        isSynthetic: {
          type: Number,
          "default": 0
        },
        imgSrc: {
          type: String,
          "default": ""
        },
        openImgSrc: {
          type: String,
          "default": ""
        },
        status: {
          type: Number,
          "default": 3
        },
        bizuin: {
          type: String,
          "default": ""
        },
        coveruri: {
          type: String,
          "default": ""
        },
        orderid: {
          type: String,
          "default": ""
        },
        isPurchaseOrder: {
          type: Number,
          "default": 0
        },
        smallCard: {
          type: Number,
          "default": 0
        }
      },
      data: function data() {
        return {
          platformClassname: {
            web: "common-redpacket-web",
            app: "common-redpacket-app",
            wechat: "common-redpacket-webchat"
          }[this.platform],
          openImgWidth: "62.33%",
          openImgHeight: "108%"
        };
      },
      methods: {
        handleClick: function handleClick() {
          this.$emit("click");
        },
        calOpenImgWidth: function calOpenImgWidth() {
          var _this = this;
          if (!this.openImgSrc) return;
          var E = new Image();
          E.onload = function () {
            _this.openImgWidth = "".concat((E.width / E.height * 108).toFixed(2), "%");
          }, E.src = decodeURIComponent(this.openImgSrc);
        }
      },
      computed: {
        disabled: function disabled() {
          return this.errType * 1 &gt; 0;
        }
      },
      watch: {
        openImgSrc: function openImgSrc() {
          this.calOpenImgWidth();
        }
      },
      mounted: function mounted() {
        this.calOpenImgWidth();
      }
    },
    a$3 = w$4;
  var r$7 = function r() {
      var A = this,
        g = A._self._c;
      return A._self._setupProxy, g("section", {
        ref: "js_custom_element",
        staticClass: "wx-root red_package_cover_wrp",
        "class": [{
          disabled: A.disabled,
          small: A.smallCard
        }, A.platformClassname],
        attrs: {
          role: "option"
        }
      }, [g("section", {
        staticClass: "red_package_cover__inner wx_tap_card wx_card_root",
        "class": [A.is_hover === 1 ? "wx_hover_card" : "", A.is_selected === 1 ? "wx_selected_card" : ""]
      }, [g("section", {
        staticClass: "red_package_cover__inner__main"
      }, [g("section", {
        staticClass: "red_package_cover__body"
      }, [A.openImgSrc ? g("span", {
        staticClass: "red_package_cover_img red_package_open_cover_img",
        style: {
          "background-image": "url(".concat(A.openImgSrc, ")"),
          width: A.smallCard ? "" : A.openImgWidth,
          height: A.smallCard ? "" : A.openImgHeight
        },
        attrs: {
          "data-notusecover": "1"
        }
      }) : g("span", {
        staticClass: "red_package_cover_img",
        "class": {
          synthetic_cover_img: A.isSynthetic === 1
        },
        style: "background-image: url(" + A.imgSrc + ")",
        attrs: {
          "data-notusecover": "1"
        }
      }), A.smallCard ? g("span", {
        staticClass: "title-wrp"
      }, [g("span", {
        staticClass: "title"
      }, [A._v(A._s(A.name) + '的红包封面')]), A.isPurchaseOrder === 1 ? g("span", {
        staticClass: "red_package_cover__purchase"
      }, [A._v('付费')]) : A._e()]) : A._e()]), g("section", {
        staticClass: "red_package_cover__foot"
      }, [A.smallCard ? [A.status === 0 ? g("span", {
        staticClass: "weui-btn weui-btn_mini red_package_cover__access-link button"
      }, [A._v('领取')]) : A.status === 1 ? g("span", {
        staticClass: "red_package_cover__access-link correct disabled"
      }, [A._v('已领取')]) : A.status === 2 ? g("span", {
        staticClass: "red_package_cover__access-link disabled"
      }, [A._v('已领完')]) : A.status === 3 ? g("span", {
        staticClass: "red_package_cover__access-link disabled"
      }, [A._v('不可领取')]) : A._e()] : A.platform !== "wechat" ? [A.disabled ? g("span", {
        staticClass: "red_package_cover__access-link disabled"
      }, [A._v('红包封面不可用')]) : g("span", {
        staticClass: "red_package_cover__access-link"
      }, [A._v('领取' + A._s(A.name) + '的红包封面')])] : [A.status === 0 ? g("span", {
        staticClass: "red_package_cover__access-link"
      }, [A._v('领取' + A._s(A.name) + '的红包封面')]) : A.status === 1 ? g("span", {
        staticClass: "red_package_cover__access-link disabled"
      }, [A._v('已领取红包封面')]) : A.status === 2 ? g("span", {
        staticClass: "red_package_cover__access-link disabled"
      }, [A._v('红包封面已领取完')]) : A.status === 3 ? g("span", {
        staticClass: "red_package_cover__access-link disabled"
      }, [A._v('红包封面不可领取')]) : A._e()], A.isPurchaseOrder === 1 &amp;&amp; !A.smallCard ? g("section", {
        staticClass: "red_package_cover__purchase"
      }, [A._v('付费')]) : A._e()], 2)]), A._m(0), A.platform !== "wechat" &amp;&amp; A.disabled ? g("section", {
        staticClass: "red_package_cover_disable_wording"
      }, [A._v('红包封面不可用')]) : A._e()])]);
    },
    t$2 = [function () {
      var E = this,
        A = E._self._c;
      return E._self._setupProxy, A("section", {
        staticClass: "red_package_cover__extend"
      }, [A("span", {
        staticClass: "red_package_cover__extend_icon"
      }), A("span", {
        staticClass: "red_package_cover__extend_info"
      }, [E._v('微信红包封面')])]);
    }],
    u$1 = v$2(a$3, r$7, t$2, !1, null, "e0207b94", null, null);
  var n$5 = u$1.exports,
    d$3 = ".wx-root,body{--weui-BG-COLOR-ACTIVE: #ececec}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-COLOR-ACTIVE: #373737}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-COLOR-ACTIVE: #373737}}body,.wx-root,page{--weui-BTN-HEIGHT: 48;--weui-BTN-HEIGHT-MEDIUM: 40;--weui-BTN-HEIGHT-SMALL: 32}.wx-root,body{--weui-BTN-ACTIVE-MASK: rgba(0, 0, 0, .1)}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BTN-ACTIVE-MASK: rgba(255, 255, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BTN-ACTIVE-MASK: rgba(255, 255, 255, .1)}}.wx-root,body{--weui-BTN-DEFAULT-ACTIVE-BG: #e6e6e6}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BTN-DEFAULT-ACTIVE-BG: rgba(255, 255, 255, .126)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BTN-DEFAULT-ACTIVE-BG: rgba(255, 255, 255, .126)}}.wx-root,body{--weui-DIALOG-LINE-COLOR: rgba(0, 0, 0, .1)}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-DIALOG-LINE-COLOR: rgba(255, 255, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-DIALOG-LINE-COLOR: rgba(255, 255, 255, .1)}}.weui-btn{position:relative;display:block;width:184px;margin-left:auto;margin-right:auto;padding:12px 24px;box-sizing:border-box;font-weight:500;font-size:17px;text-align:center;text-decoration:none;color:#fff;line-height:1.41176471;border-radius:8px;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;-moz-user-select:none;user-select:none}.weui-btn:active:before{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background-color:var(--weui-BTN-ACTIVE-MASK);border-radius:8px}.weui-btn:active.weui-btn_loading:before,.weui-btn:active.weui-btn_disabled:before,.weui-btn:active[disabled]:before{display:none}.weui-btn_block{width:auto}.weui-btn_inline{display:inline-block}.weui-btn_default{color:var(--weui-FG-0);background-color:var(--weui-FG-5)}.weui-btn_default:not(.weui-btn_disabled):visited{color:var(--weui-FG-0)}.weui-btn_primary{background-color:var(--weui-BRAND)}.weui-btn_primary:not(.weui-btn_disabled):visited{color:#fff}.weui-btn_warn{color:var(--weui-RED);background-color:var(--weui-FG-5)}.weui-btn_warn:not(.weui-btn_disabled):visited{color:var(--weui-RED)}.weui-btn_overlay{color:var(--weui-BRAND);background-color:#fff}.weui-btn_overlay:not(.weui-btn_disabled):visited{color:var(--weui-BRAND)}.weui-btn_disabled,.weui-btn[disabled]{color:var(--weui-FG-4);background-color:var(--weui-BG-1)}.weui-btn_loading .weui-loading{margin:-.2em 8px 0 0}.weui-btn_loading .weui-mask-loading{margin:-.2em 8px 0 0;color:currentColor}.weui-btn_loading .weui-primary-loading{margin:-.2em 8px 0 0;vertical-align:middle;color:currentColor}.weui-btn_loading .weui-primary-loading:before{content:\"\"}.weui-btn_loading.weui-btn_primary{color:var(--weui-WHITE)}.weui-btn_cell{position:relative;display:block;margin-left:auto;margin-right:auto;box-sizing:border-box;font-size:17px;text-align:center;text-decoration:none;color:#fff;line-height:1.41176471;padding:16px;-webkit-tap-highlight-color:rgba(0,0,0,0);overflow:hidden;background-color:var(--weui-BG-5)}.weui-btn_cell+.weui-btn_cell{margin-top:16px}.weui-btn_cell:active{background-color:var(--weui-BG-COLOR-ACTIVE)}.weui-btn_cell__icon{display:inline-block;vertical-align:middle;width:24px;height:24px;margin:-.2em .34em 0 0}.weui-btn_cell-default{color:var(--weui-FG-0)}.weui-btn_cell-primary{color:var(--weui-LINK)}.weui-btn_cell-warn{color:var(--weui-RED)}.weui-bottom-fixed-opr-page{height:100%;display:flex;flex-direction:column}.weui-bottom-fixed-opr-page__content{min-height:0;flex:1;padding-bottom:80px;box-sizing:border-box;overflow-y:auto;-webkit-overflow-scrolling:touch}.weui-bottom-fixed-opr-page__tool{padding:16px 32px 24px;padding:16px calc(32px + constant(safe-area-inset-right)) calc(24px + constant(safe-area-inset-bottom)) calc(32px + constant(safe-area-inset-left));padding:16px calc(32px + env(safe-area-inset-right)) calc(24px + env(safe-area-inset-bottom)) calc(32px + env(safe-area-inset-left));background:#ffffff;position:relative;z-index:50}.weui-bottom-fixed-opr-page__tool:before{content:\"\";height:80px;background:linear-gradient(to top,#ffffff,rgba(255,255,255,0));position:absolute;bottom:calc(100% - 1px);left:0;right:0;transform:translateZ(0);pointer-events:none}.wx-root[data-weui-theme=dark] .weui-bottom-fixed-opr-page__tool,body[data-weui-theme=dark] .weui-bottom-fixed-opr-page__tool{background:#191919}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]) .weui-bottom-fixed-opr-page__tool,body:not([data-weui-theme=light]) .weui-bottom-fixed-opr-page__tool{background:#191919}}.wx-root[data-weui-theme=dark] .weui-bottom-fixed-opr-page__tool:before,body[data-weui-theme=dark] .weui-bottom-fixed-opr-page__tool:before{background:linear-gradient(to top,#191919,rgba(25,25,25,0))}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]) .weui-bottom-fixed-opr-page__tool:before,body:not([data-weui-theme=light]) .weui-bottom-fixed-opr-page__tool:before{background:linear-gradient(to top,#191919,rgba(25,25,25,0))}}.weui-bottom-fixed-opr-page__tips{margin-bottom:24px;padding:0 32px;text-align:center}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr{display:flex;align-items:center;justify-content:center}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn{width:184px;padding-left:16px;padding-right:16px}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2),.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn{margin:0 8px;width:136px}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2):first-child,.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn:first-child{margin-left:0}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2):last-child,.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn:last-child{margin-right:0}.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr{flex-direction:column}.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2),.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn{width:184px;margin:16px 0 0}.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2):first-child,.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn:first-child{margin-top:0}.weui-bottom-fixed-opr-page.weui-form{padding-top:0}.weui-bottom-fixed-opr-page.weui-form .weui-form__bd{padding-top:56px;padding-top:calc(56px + constant(safe-area-inset-top));padding-top:calc(56px + env(safe-area-inset-top))}.weui-bottom-fixed-opr-page.weui-form .weui-form__ft{padding-bottom:0}.weui-bottom-fixed-opr-page.weui-form .weui-form__control-area{margin-bottom:0}.weui-bottom-fixed-opr-page.weui-half-screen-dialog{padding:0}.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__hd,.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__bd,.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__ft{padding-left:24px;padding-left:calc(24px + constant(safe-area-inset-left));padding-left:calc(24px + env(safe-area-inset-left));padding-right:24px;padding-right:calc(24px + constant(safe-area-inset-right));padding-right:calc(24px + env(safe-area-inset-right))}.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__bd{padding-bottom:80px}.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__ft{padding-bottom:64px;padding-bottom:calc(64px + constant(safe-area-inset-bottom));padding-bottom:calc(64px + env(safe-area-inset-bottom))}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog{padding:0}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-half-screen-dialog__hd{padding:0 24px;padding:0 calc(24px + constant(safe-area-inset-right)) 0 calc(24px + constant(safe-area-inset-left));padding:0 calc(24px + env(safe-area-inset-right)) 0 calc(24px + env(safe-area-inset-left))}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-half-screen-dialog__bd{padding-bottom:0;display:flex;flex-direction:column}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-half-screen-dialog__ft{padding:0}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-bottom-fixed-opr-page{flex:1;min-height:0}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-bottom-fixed-opr-page__content{padding:0 24px;padding:0 calc(24px + constant(safe-area-inset-right)) 0 calc(24px + constant(safe-area-inset-left));padding:0 calc(24px + env(safe-area-inset-right)) 0 calc(24px + env(safe-area-inset-left))}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-bottom-fixed-opr{padding:16px 0 64px;padding:16px 0 calc(64px + constant(safe-area-inset-bottom));padding:16px 0 calc(64px + env(safe-area-inset-bottom))}button.weui-btn,input.weui-btn{border-width:0;outline:0;-webkit-appearance:none}button.weui-btn:focus,input.weui-btn:focus{outline:0}button.weui-btn_inline,input.weui-btn_inline,button.weui-btn_mini,input.weui-btn_mini{width:auto}.weui-btn_medium{font-size:14px;padding:10px 24px;line-height:calc((var(--weui-BTN-HEIGHT-MEDIUM) - 20) / 14)}.weui-btn_mini{display:inline-block;width:auto;line-height:calc((32 - 12) / 14);padding:6px 12px;font-size:14px;border-radius:6px}.weui-btn_xmini{display:inline-block;width:auto;padding:4px 12px;line-height:calc((28 - 8) / 14);font-size:14px;font-weight:500;border-radius:4px}.weui-btn+.weui-btn{margin-top:16px}.weui-btn.weui-btn_mini+.weui-btn.weui-btn_mini{margin-top:auto}.weui-btn.weui-btn_xmini+.weui-btn.weui-btn_xmini{margin-top:auto}.weui-btn.weui-btn_inline+.weui-btn.weui-btn_inline{margin-left:16px}.weui-btn-area{margin:48px 16px 8px}.weui-btn-area_inline{display:flex}.weui-btn-area_inline .weui-btn{margin-top:auto;margin-right:16px;width:100%;flex:1}.weui-btn-area_inline .weui-btn:last-child{margin-right:0}.weui-btn_reset{background:transparent;border:0;padding:0;outline:0;font-size:inherit}.weui-btn_icon{background:transparent;border:0;padding:0;outline:0;font-size:0}.weui-btn_icon:active [class*=weui-icon-]{color:var(--weui-FG-1)}body,.wx-root{--weui-BG-0: #ededed;--weui-BG-1: #f7f7f7;--weui-BG-2: #fff;--weui-BG-3: #f7f7f7;--weui-BG-4: #4c4c4c;--weui-BG-5: #fff;--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #fa9d3b;--weui-YELLOW: #ffc300;--weui-GREEN: #91d300;--weui-LIGHTGREEN: #95ec69;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1485ee;--weui-PURPLE: #6467f0;--weui-WHITE: #fff;--weui-LINK: #576b95;--weui-TEXTGREEN: #06ae56;--weui-BG: #fff;--weui-TAG-TEXT-ORANGE: #fa9d3b;--weui-TAG-TEXT-GREEN: #06ae56;--weui-TAG-TEXT-BLUE: #10aeff;--weui-REDORANGE: #ff6146;--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #07C160;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0: rgba(0, 0, 0, .9);--weui-FG-0_5: rgba(0, 0, 0, .9);--weui-FG-1: rgba(0, 0, 0, .55);--weui-FG-2: rgba(0, 0, 0, .3);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-GLYPH-0: rgba(0, 0, 0, .9);--weui-GLYPH-1: rgba(0, 0, 0, .55);--weui-GLYPH-2: rgba(0, 0, 0, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #91D300;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #1485EE;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #95EC69;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #FA9D3B;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6467F0;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #FA5151;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .05);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #FFC300;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-FG-HALF: rgba(0, 0, 0, .9);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #FA9D3B;--weui-YELLOW: #FFC300;--weui-GREEN: #91D300;--weui-LIGHTGREEN: #95EC69;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1485EE;--weui-PURPLE: #6467F0;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #FA9D3B;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #10AEFF;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05);--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-FG: #000;--weui-FG-5: rgba(0, 0, 0, .05);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-5: #2c2c2c;--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-REDORANGE: #ff6146;--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG: #fff;--weui-BG: #000;--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6)}}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-5: #2c2c2c;--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-REDORANGE: #ff6146;--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG: #fff;--weui-BG: #000;--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6)}.wx-root[data-weui-mode=care],body[data-weui-mode=care]{--weui-BG-0: #ededed;--weui-BG-1: #f7f7f7;--weui-BG-2: #fff;--weui-BG-3: #f7f7f7;--weui-BG-4: #4c4c4c;--weui-BG-5: #fff;--weui-RED: #dc3636;--weui-ORANGERED: #d14730;--weui-ORANGE: #e17719;--weui-YELLOW: #bb8e00;--weui-GREEN: #4f8400;--weui-LIGHTGREEN: #2e8800;--weui-BLUE: #007dbb;--weui-INDIGO: #0075e2;--weui-PURPLE: #6265f1;--weui-WHITE: #fff;--weui-LINK: #576b95;--weui-TEXTGREEN: #06ae56;--weui-BG: #fff;--weui-TAG-TEXT-ORANGE: #e17719;--weui-TAG-TEXT-GREEN: #06ae56;--weui-TAG-TEXT-BLUE: #007dbb;--weui-REDORANGE: #d14730;--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #007DBB;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #018942;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0: #000000;--weui-FG-0_5: #000000;--weui-FG-1: rgba(0, 0, 0, .6);--weui-FG-2: rgba(0, 0, 0, .42);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-GLYPH-0: #000000;--weui-GLYPH-1: rgba(0, 0, 0, .6);--weui-GLYPH-2: rgba(0, 0, 0, .42);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #4F8400;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #0075E2;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #2E8800;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #E17719;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #D14730;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6265F1;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #DC3636;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .1);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #BB8E00;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-FG-HALF: #000000;--weui-RED: #DC3636;--weui-ORANGERED: #D14730;--weui-ORANGE: #E17719;--weui-YELLOW: #BB8E00;--weui-GREEN: #4F8400;--weui-LIGHTGREEN: #2E8800;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #018942;--weui-BLUE: #007DBB;--weui-INDIGO: #0075E2;--weui-PURPLE: #6265F1;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #E17719;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #007DBB;--weui-REDORANGE: #D14730;--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-FG: #000;--weui-FG-5: rgba(0, 0, 0, .05);--weui-TAG-BACKGROUND-ORANGE: rgba(225, 119, 25, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(0, 125, 187, .1);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05)}@media (prefers-color-scheme: dark){.wx-root[data-weui-mode=care]:not([data-weui-theme=light]),body[data-weui-mode=care]:not([data-weui-theme=light]){--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-5: #2c2c2c;--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-REDORANGE: #ff6146;--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-FG: #fff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-BG: #000;--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5)}}.wx-root[data-weui-mode=care][data-weui-theme=dark],body[data-weui-mode=care][data-weui-theme=dark]{--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-5: #2c2c2c;--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-REDORANGE: #ff6146;--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-FG: #fff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-BG: #000;--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5)}.wx-root{position:relative;pointer-events:auto;font-family:system-ui,-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Hiragino Sans GB,Microsoft YaHei UI,Microsoft YaHei,Arial,sans-serif}.wx_card_root{position:relative}.wxw_hide{display:none!important}.wx_uninteractive{pointer-events:none}:host(.wx_tap_highlight_active) .wx_tap_link{opacity:.5}:host(.wx_tap_highlight_active) .wx_tap_card{background-color:#f3f3f3}:host(.wx_tap_highlight_active) .wx_tap_cell{background-color:#0000000d}@media (prefers-color-scheme: dark){:host(.wx_tap_highlight_active) .wx_tap_card{background-color:#252525}:host(.wx_tap_highlight_active) .wx_tap_cell{background-color:#ffffff1a}}.wx_css_active :active{opacity:.5}.wx_hover_card:before{content:\" \";position:absolute;top:0;left:0;right:0;bottom:0;border-radius:8px;box-sizing:border-box;border:1px solid rgba(7,193,96,.3);pointer-events:none;z-index:9}.wx_selected_card:before{content:\" \";position:absolute;top:0;left:0;right:0;bottom:0;border-radius:8px;border:1.5px solid #07C160;box-sizing:border-box;background:rgba(7,193,96,.1);pointer-events:none;z-index:9}.wx-root,body{--weui-BG-6: rgba(0, 0, 0, .05)}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-6: rgba(255, 255, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-6: rgba(255, 255, 255, .1)}}.point_event_no{pointer-events:none}.red_package_cover_wrp{-webkit-user-select:none;-moz-user-select:none;user-select:none;display:block;font-size:0;text-align:center}.red_package_cover_wrp.disabled .red_package_cover__inner{position:relative;cursor:default}.red_package_cover_wrp.disabled .red_package_cover__inner:after{border-radius:inherit;position:absolute;top:0;bottom:0;left:0;right:0;content:\" \";display:block;height:100%;background-color:var(--weui-FG-1)}.red_package_cover_wrp.disabled .red_package_cover_disable_wording{display:block;text-align:center}.red_package_cover_wrp.common-redpacket-web .red_package_cover__inner{max-width:273px}.red_package_cover_wrp .red_package_cover__inner{position:relative;cursor:pointer;display:inline-block;font-size:17px;background:var(--weui-BG-3);border-radius:8px;max-width:300px;width:77%}.red_package_cover_wrp .red_package_cover__inner.red_package_cover__inner__loading{position:relative}.red_package_cover_wrp .red_package_cover__inner.red_package_cover__inner__loading:before{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px;content:\" \";display:block;width:16px;height:16px}.red_package_cover_wrp .red_package_cover__inner.red_package_cover__inner__loading .red_package_cover__inner__main,.red_package_cover_wrp .red_package_cover__inner.red_package_cover__inner__loading .red_package_cover__extend{opacity:0}.red_package_cover_wrp .red_package_cover__inner__main{width:300px;width:100%;padding:13.6% 0 8%}.red_package_cover_wrp .red_package_cover_img{position:relative;display:block;width:196px;height:324px;border-radius:5px;background-size:cover;background-repeat:no-repeat;background-position:center;margin:0 auto;width:65.33%;height:initial;padding-bottom:108%}.red_package_cover_wrp .red_package_cover_img.red_package_cover_img_loading{background-color:#00000008;position:relative}.wx-root[data-weui-theme=dark] .red_package_cover_wrp .red_package_cover_img.red_package_cover_img_loading,body[data-weui-theme=dark] .red_package_cover_wrp .red_package_cover_img.red_package_cover_img_loading{background-color:#ffffff08}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]) .red_package_cover_wrp .red_package_cover_img.red_package_cover_img_loading,body:not([data-weui-theme=light]) .red_package_cover_wrp .red_package_cover_img.red_package_cover_img_loading{background-color:#ffffff08}}.red_package_cover_wrp .red_package_cover_img.red_package_cover_img_loading:before{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px;content:\" \";display:block;width:16px;height:16px}.red_package_cover_wrp .red_package_cover_img.red_package_cover_img_loading:after{display:none}.red_package_cover_wrp .red_package_cover_img:after{content:\" \";display:block;position:absolute;bottom:0;left:0;right:0;height:100%;background:url(data:image/png;base64,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) no-repeat center bottom;background-size:100% auto}.red_package_cover_wrp .red_package_cover_img.synthetic_cover_img{width:62.33%}.red_package_cover_wrp .red_package_cover_img.synthetic_cover_img:after{content:\" \";display:block;position:absolute;bottom:9.3%;left:8px;right:8px;height:100%;background:url(data:image/png;base64,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CCCAAAIIIIDA0ggQAF6at5IbQQABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBVRcgALzqvwHcPwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIILI0AAeCleSu5EQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQWHUBAsCr/hvA/SOAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAwNIIEABemreSG0EAAQQQQAABBBBAAAEE/v/27t9FrvMKA/D97khCO2vFkXCZIjiFAiZJEdQkIYWjiNiFUwQhgwmGOJX/gATyBxh3cZVSjjHG2iwprEBkZEUBg13YlRJcLLhw4VIi2CuthezdL/dbsWK0Wml/arV7zrPNzM7cmbnvc073cmcIECBAgAABAgQIECBAgAABAtkFFMDZN0B+AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTCCCiAw4xSEAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEsgsogLNvgPwECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECIQRUACHGaUgBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhkF1AAZ98A+QkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQCCOgAA4zSkEIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEMguoADOvgHyEyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAQRkABHGaUghAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgkF1AAZx9A+QnQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCCMgAI4zCgFIUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgu4ACOPsGyE+AAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQBgBBXCYUQpCgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEB2AQVw9g2QnwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBMAIK4DCjFIQAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgewCCuDsGyA/AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJhBBTAYUYpCAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC2QUUwNk3QH4CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBMIIKIDDjFIQAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSyCyiAs2+A/AQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIhBFQAIcZpSAECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECGQXUABn3wD5CRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAII6AADjNKQQgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQyC6gAM6+AfITIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIBBGQAEcZpSCECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCQXUABnH0D5CdAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAIIyAAjjMKAUhQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCC7gAI4+wbIT4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAGAEFcJhRCkKAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQHYBBXD2DZCfAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIEwAgrgMKMUhAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB7AIK4OwbID8BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAmEEFMBhRikIAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLZBRTA2TdAfgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEwggogMOMUhACBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBLILKICzb4D8BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAiEEVAAhxmlIAQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIZBdQAGffAPkJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEAgjoAAOM0pBCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDILqAAzr4B8hMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgEEZAARxmlIIQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIJBdQAGcfQPkJ0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgjIACOMwoBSFAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAILuAAjj7BshPgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAYAQVwmFEKQoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAdgEFcPYNkJ8AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgTACCuAwoxSEAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHsAgrg7BsgPwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECYQQUwGFGKQgBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAtkFFMDZN0B+AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTCCCiAw4xSEAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEsgsogLNvgPwECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECIQRUACHGaUgBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhkF1AAZ98A+QkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQCCOgAA4zSkEIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEMguoADOvgHyEyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAQRkABHGaUghAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgkF1AAZx9A+QnQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCCMgAI4zCgFIUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgu4ACOPsGyE+AAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQBgBBXCYUQpCgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEB2AQVw9g2QnwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBMAIK4DCjFIQAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgewCCuDsGyA/AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJhBBTAYUYpCAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC2QUUwNk3QH4CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBMIIKIDDjFIQAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSyCyiAs2+A/AQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIhBFQAIcZpSAECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECGQXUABn3wD5CRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAII6AADjNKQQgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQyC6gAM6+AfITIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIBBGQAEcZpSCECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCQXUABnH0D5CdAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAIIyAAjjMKAUhQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCC7gAI4+wbIT4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAGAEFcJhRCkKAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQHYBBXD2DZCfAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIEwAgrgMKMUhAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB7AIK4OwbID8BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAmEEFMBhRikIAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLZBRTA2TdAfgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEwggogMOMUhACBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBLILKICzb4D8BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAiEEVAAhxmlIAQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIZBdQAGffAPkJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEAgjoAAOM0pBCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDILqAAzr4B8hMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgEEZAARxmlIIQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIJBdQAGcfQPkJ0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgjIACOMwoBSFAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAILuAAjj7BshPgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAYAQVwmFEKQoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAdgEFcPYNkJ8AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgTACCuAwoxSEAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHsAgrg7BsgPwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECYQQUwGFGKQgBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAtkFFMDZN0B+AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTCCCiAw4xSEAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEsgsogLNvgPwECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECIQRUACHGaUgBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhkF1AAZ98A+QkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQCCOgAA4zSkEIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEMguoADOvgHyEyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAQRkABHGaUghAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgkF1AAZx9A+QnQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCCMgAI4zCgFIUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgu4ACOPsGyE+AAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQBgBBXCYUQpCgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEB2AQVw9g2QnwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBMAIK4DCjFIQAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgewCCuDsGyA/AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJhBBTAYUYpCAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC2QUUwNk3QH4CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBMIIKIDDjFIQAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSyCyiAs2+A/AQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIhBFQAIcZpSAECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECGQXUABn3wD5CRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAII6AADjNKQQgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQyCLmaNcAAA67SURBVC6gAM6+AfITIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIBBGQAEcZpSCECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCQXUABnH0D5CdAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAIIyAAjjMKAUhQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCC7gAI4+wbIT4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAGAEFcJhRCkKAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQHYBBXD2DZCfAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIEwAgrgMKMUhAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB7AIK4OwbID8BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAmEEFMBhRikIAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLZBRTA2TdAfgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEwggogMOMUhACBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBLILKICzb4D8BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAiEEVAAhxmlIAQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIZBdQAGffAPkJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEAgjoAAOM0pBCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDILqAAzr4B8hMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgEEZAARxmlIIQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIJBdQAGcfQPkJ0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgjIACOMwoBSFAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAILuAAjj7BshPgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAYAQVwmFEKQoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAdgEFcPYNkJ8AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgTACCuAwoxSEAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHsAgrg7BsgPwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECYQT6UsqtMGkEIUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQFKB1v32tXbzSfOLTYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgTACrfsdrgCuCuAwIxWEAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGsAq377WtXFMBZN0BuAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTCCLTuty/VFcBhJioIAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJpBVr3264A/jytgOAECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAIItC63750ZS5IHjEIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCQVqB1v33fLSmA066A4AQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIRBFo3W+/dKBXAEeZqBwECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECKQVaN1vPx5PzZWuq2kVBCdAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMA+F2idb+t++3L2/HxXypV9nsfpEyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAIK/A0Pm27rdvArV2/84rITkBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgT2t8BK57tcAJdRvby/4zh7AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI5BVY6XyXC+DxgUPvl1IW83JIToAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgf0p0Lre1vm2s799BfBbF76sXf1gf8Zx1gQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEMgr0LreMnS+TWC5AG53Su3fbLf+CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGD/CEx2vXcK4HGps6V0N/dPDGdKgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB3AKt421d74rCnQK4zF76otZyfuUJtwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCwtwVax9u63pWzvFMAtwdKX95YecItAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECOxtgdUdb5k83TrUwzdOn/zv8NhTk4+7T4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJ7TuCT6dlLPyil1JUzu/sK4OGJUSmvrDzplgABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgT2pkDrdifL33aWdxXA7YHD3dGZ4aBP231/BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQILD3BFqn27rd1Wd2TwFcZmcXh1741dUH+p8AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE9opA/+rtbvfu87mnAG5Pj7vH/1pKd+XuQ/1HgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAo9aoHW5rdNd6zzWLIBbU1xGo5dL1935seC1XuwxAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIENg9gdbhLne5y9/sfO/nrlkAt8PG5y5+2HXl9Xtf4hECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQeDQC5fXbXe7an37fArgdPj449cehBL629ks9SoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQK7J1Cu3e5w7/+JDyyAy9v/uFpG3Uv3f7lnCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGA3BFp32zrcB33WAwvg9sLpmUvvdH157UFv4jkCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQeJgC5c/L3e06H7FuAdxeP/3tJ/9QSvfROu/laQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDYYYHW1U4fe3L4+d71/8r6h9w+4qvnf/XdxcWvP+5q98RGX+M4AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIENiGQOmujkYHT0yde/ezjbzLhq4Abm/U3rD03bNDu3x9I2/sGAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDYukDrZltHu9Hyt33ShgvgdvD0zL8+rn3/m+GDvm7/+yNAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBnRdonWzrZltHu5l331QB3N74sZn3LpbSvzh8d3TdzAc5lgABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTWF2hdbOtkWze7/tF3H7HpAri9fPy3994uff+CK4HvxvQfAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEtiPQOtjWxbZOdivvM5THW/+7fuaXp8rS0t9r7R7b+rt4JQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgM5e/19rXPW7nyd0VvWwVwe5MbZ35xoi51/xy+EPqJlTd1S4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQKbECjd1dJ3z272N39Xf8KWvgJ68k3aCYxGB08MbfRHk4+7T4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLrC7SutXWu2y1/2ydtuwBubzJ17t3Pxke/97OuL6+1//0RIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwAYEho61da2tc93A0esesu2vgF79CTfOnPz18JXQZ7taj61+zv8ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0ATKtTLqXpqeufTOTnrsyBXAkyfUTnD6wNTx0pWzQ7tcJ59znwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABApkFWofautTpg1Pf3+nyt7nu+BXAk8NaeP7UT+ri4l9q7X40+bj7BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQyCYw/NbvlTIavTw+d/HDh5V9x68AnjzRduLj7tiPSxn9vpTy6eRz7hMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCCDQOtKW2fautOHWf42y4d6BfDksOrp06Ob3f/OLNb6p+Hxpyafc58AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIBBT4ZlfLK4e7oTJmdXdyNfLtWAK+EqbWWhTOnnqlL9cVS6nPD10MfXnnOLQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBPazwPA1zzeHSvR86csb45mLF4arf+tu5tn1AngyXD198vGFWk7XsvTb4YeOfzqUw6PJ590nQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAXhcYSt7F2tUPSu3fHJc6W2YvffGozvmRFsCToesLz3xr4ZtbP6+L5emhBH+6q90Phyp8z5zf5Lm6T4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAXoGhxKxDk/mf4Urfy2VUL48PHHq/vHXhy70gsmcL1vq7544sLHx1vP9m6fhS1x8fGvPjpavfqaUcGW6PDJhHhsunh9t6aC9AOgcCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBPa/wHA1763hZ2znh4tW54eWd77U5dvPh280nuu7pbmlA/3ceDw1V86en9+Laf8P5hVEd79xD5kAAAAASUVORK5CYII=) no-repeat center bottom;background-size:100% auto}.red_package_cover_wrp .red_package_cover_img.red_package_open_cover_img:after{display:none}.red_package_cover_wrp .red_package_cover__foot{text-align:center;padding:8% 16px 0}.red_package_cover_wrp .red_package_cover__access-link{font-size:17px;line-height:1.4;font-weight:500;color:var(--weui-RED)}.red_package_cover_wrp .red_package_cover__access-link.disabled{color:var(--weui-FG-2)}.red_package_cover_wrp .red_package_cover__access-link.disabled:after{display:none}.red_package_cover_wrp .red_package_cover__access-link:after{content:\"\";display:inline-block;font-size:10px;width:1.2em;height:2.4em;margin-left:4px;margin-top:-.3em;vertical-align:middle;background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMTJweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMTIgMjQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT7liIfniYc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZGVmcz4KICAgICAgICA8cGF0aCBkPSJNNy41ODc1MDg3MywxMi40Mjk4OTE2IEw2LjUyNjg0ODU2LDEzLjQ5MDU1MTggTDAuNzQ3OTUxNTI2LDcuNzExNjU0NzMgQzAuMzU3ODI2MjI3LDcuMzIxNTI5NDMgMC4zNTQzNjU3ODYsNi42OTI0NzE3OSAwLjc0Nzk1MTUyNiw2LjI5ODg4NjA1IEw2LjUyNjg0ODU2LDAuNTE5OTg5MDE0IEw3LjU4NzUwODczLDEuNTgwNjQ5MTkgTDIuMTYyODg3NTMsNy4wMDUyNzAzOSBMNy41ODc1MDg3MywxMi40Mjk4OTE2IFoiIGlkPSJwYXRoLTEiPjwvcGF0aD4KICAgIDwvZGVmcz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSIzLkljb25zL091dGxpbmVkL2Fycm93Ij4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyLjAwMDAwMCwgNS4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxtYXNrIGlkPSJtYXNrLTIiIGZpbGw9IndoaXRlIj4KICAgICAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNwYXRoLTEiPjwvdXNlPgogICAgICAgICAgICAgICAgPC9tYXNrPgogICAgICAgICAgICAgICAgPHVzZSBpZD0i5Zu+5qCH6aKc6ImyIiBmaWxsPSIjRkE1MTUxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0LjAyMDc4NCwgNy4wMDUyNzApIHJvdGF0ZSgtMTgwLjAwMDAwMCkgdHJhbnNsYXRlKC00LjAyMDc4NCwgLTcuMDA1MjcwKSAiIHhsaW5rOmhyZWY9IiNwYXRoLTEiPjwvdXNlPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=) no-repeat center;background-size:cover}.red_package_cover_wrp .red_package_cover__purchase{font-size:14px;font-weight:400;color:var(--weui-FG-2);margin-top:4px}.red_package_cover_wrp .red_package_cover__extend{display:flex;align-items:center;position:relative;line-height:1.4;padding:8px 16px;font-size:14px;color:var(--weui-FG-1);text-align:left}.red_package_cover_wrp .red_package_cover__extend:before{content:\" \";position:absolute;top:0;left:16px;right:16px;height:1px;background-color:var(--weui-FG-3);transform:scaleY(.5);transform-origin:0 0;-webkit-transform:scaleY(.5);-webkit-transform-origin:0 0}.red_package_cover_wrp .red_package_cover__extend_icon{display:inline-block;vertical-align:middle;font-size:10px;width:1.6em;height:1.6em;margin-right:4px;background:url(\"data:image/svg+xml,%3Csvg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M13.5 8.75149H12.0311C12.1352 8.54415 12.1938 8.30977 12.1938 8.06133C12.1938 7.21422 11.5121 6.52993 10.6741 6.52993C10.259 6.52993 9.86934 6.69916 9.58508 6.99323C8.72588 7.85576 8.3398 8.24353 8.00001 8.58458L6.3806 6.95894C6.09366 6.68304 5.72113 6.52993 5.32607 6.52993C4.48806 6.52993 3.80619 7.21422 3.80619 8.06133C3.80619 8.30977 3.86495 8.54415 3.96891 8.75149H2.50001V2.96628C2.50001 2.57865 2.76965 2.12287 3.11454 1.95118C3.11454 1.95118 3.14324 1.9352 3.23554 1.89586C4.52227 1.34706 6.18193 1 8.00001 1C9.81582 1 11.4782 1.33491 12.7595 1.89368C12.8369 1.92741 12.8815 1.94927 12.8815 1.94927C13.2231 2.12341 13.5 2.57879 13.5 2.96628V8.75149ZM13.5 9.59145V14.3C13.5 14.6875 13.1943 15 12.812 15H3.18804C2.808 15 2.5 14.6873 2.5 14.3V9.59145H5.2614C5.28287 9.59241 5.30446 9.59282 5.32606 9.59282H6.99551C6.41345 10.1719 5.51816 10.9309 4.31259 11.8659L4.81241 12.534C6.06655 11.5614 6.99726 10.7707 7.60789 10.1579L8 9.76423C8.11617 9.88088 8.2467 10.0119 8.4007 10.1663C9.00932 10.7774 9.93721 11.5654 11.1877 12.5342L11.6873 11.8657C10.4797 10.93 9.5844 10.1711 9.00449 9.59282H10.6741C10.6958 9.59282 10.7173 9.59241 10.7387 9.59145H13.5ZM10.7182 8.75143H9.00887L10.1688 7.58691C10.3036 7.44745 10.4821 7.36987 10.6742 7.36987C11.0592 7.36987 11.3688 7.68088 11.3688 8.06127C11.3688 8.42732 11.0825 8.72876 10.7182 8.75143ZM5.28211 8.75143C4.91777 8.72876 4.63136 8.42718 4.63136 8.06127C4.63136 7.68088 4.94111 7.36987 5.32611 7.36987C5.50895 7.36987 5.67945 7.43994 5.80796 7.56341C6.35675 8.11426 6.71506 8.47417 6.99127 8.75143H5.28211Z' fill='%23FA5151'/%3E%3C/svg%3E%0A\") no-repeat 50% 50%;background-size:cover}.red_package_cover_wrp .red_package_cover_disable_wording{display:block;text-align:center;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:1;width:100%;color:#fff}.red_package_cover_wrp.small{width:100%}.red_package_cover_wrp.small .red_package_cover__inner{width:100%;max-width:382px}.red_package_cover_wrp.small .red_package_cover__inner__main{display:flex;flex-direction:row;align-items:center;justify-content:space-between;width:100%;padding:16px 16px 16px 24px;box-sizing:border-box}.red_package_cover_wrp.small .red_package_cover__body{flex-shrink:1;display:flex;flex-direction:row;align-items:center;min-width:0}.red_package_cover_wrp.small .red_package_cover__body span.title-wrp{flex-shrink:1;display:block;margin-left:16px;min-width:0;text-align:left;line-height:1.4}.red_package_cover_wrp.small .red_package_cover__body span.title{display:block;word-break:break-all;font-size:15px;font-weight:500;text-align:left;color:var(--weui-FG-0)}.red_package_cover_wrp.small .red_package_cover__body span.red_package_cover__purchase{display:block;margin-top:2px;font-size:12px;font-weight:400;color:var(--weui-FG-1)}.red_package_cover_wrp.small .red_package_cover_img{flex-shrink:0;height:44px;width:26.4px;margin:0;padding-bottom:unset;border-radius:1px}.red_package_cover_wrp.small .red_package_cover__foot{flex-shrink:0;padding:0;margin-left:16px}.red_package_cover_wrp.small .red_package_cover__access-link{font-size:14px;font-weight:500}.red_package_cover_wrp.small .red_package_cover__access-link.button{color:#fff;background-color:var(--weui-ORANGERED-100);border-radius:6px}.red_package_cover_wrp.small .red_package_cover__access-link.correct:before{position:relative;display:inline-block;content:\"\";margin-right:2px;font-size:16px;width:1em;height:1em;vertical-align:sub;background-color:currentColor;-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M5.77124 12.29L2 8.51879L2.94281 7.57598L6.24264 10.8758L13.7851 3.33334L14.7279 4.27614L6.71405 12.29C6.4537 12.5504 6.03159 12.5504 5.77124 12.29Z' fill='black' /%3E%3C/svg%3E%0A\");mask-image:url(\"data:image/svg+xml,%3Csvg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M5.77124 12.29L2 8.51879L2.94281 7.57598L6.24264 10.8758L13.7851 3.33334L14.7279 4.27614L6.71405 12.29C6.4537 12.5504 6.03159 12.5504 5.77124 12.29Z' fill='black' /%3E%3C/svg%3E%0A\");-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}.red_package_cover_wrp.small .red_package_cover__access-link:after{display:none}.red_package_cover_wrp.small .red_package_cover__extend{display:none}\n",
    C$4 = {
      errType: "data-errortype",
      name: "data-name",
      isSynthetic: "data-synthetic",
      imgSrc: "data-receiveimg",
      openImgSrc: "data-openimg",
      orderid: "data-orderid",
      coveruri: "data-coveruri",
      bizuin: "data-bizuin",
      status: "data-status",
      is_hover: "data-is-hover",
      is_selected: "data-is-selected",
      isPurchaseOrder: "data-is-purchase-order",
      smallCard: "data-small-card"
    };
  function o$4(E) {
    var A = {};
    return A = o$6.call(this, C$4), Object.keys(C$4).forEach(function (B) {
      A[B] = decodeURIComponent(A[B] || ""), ["smallCard", "isSynthetic", "status", "is_hover", "is_selected", "isPurchaseOrder"].indexOf(B) &gt; -1 &amp;&amp; (A[B] = A[B] * 1);
    }), _objectSpread$8({
      platform: E
    }, A);
  }
  function b$4() {
    var E = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    H$3(Object.assign(E, {
      Component: E.isDev ? E.devComponent : n$5,
      styleText: E.isDev ? E.devStyleText : d$3,
      customName: E.customName || "mp-common-redpacket",
      watchAttr: ["data-errortype", "data-status", "data-receiveimg", "data-synthetic", "data-openimg", "data-is-hover", "data-is-selected"],
      getProps: o$4
    }));
  }

  function ownKeys$7(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r &amp;&amp; (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
  function _objectSpread$7(e) { for (var r = 1; r &lt; arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$7(Object(t), !0).forEach(function (r) { defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$7(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
  var t$1 = {
    mixins: [k$1],
    props: {
      content: {
        type: String,
        "default": ""
      }
    },
    computed: {
      formattedContent: function formattedContent() {
        return decodeURIComponent(this.content || "");
      }
    }
  };
  var T$4 = function T() {
      var i = this,
        u = i._self._c;
      return u("section", {
        staticClass: "wx_blockquote"
      }, [u("span", {
        staticClass: "tips"
      }, [i._v('私密备注:')]), u("span", {
        domProps: {
          innerHTML: i._s(i.formattedContent)
        }
      })]);
    },
    o$3 = [],
    A$1 = v$2(t$1, T$4, o$3, !1, null, null, null, null);
  var b$3 = A$1.exports,
    f = "body,.wx-root{--weui-BG-0: #ededed;--weui-BG-1: #f7f7f7;--weui-BG-2: #fff;--weui-BG-3: #f7f7f7;--weui-BG-4: #4c4c4c;--weui-BG-5: #fff;--weui-FG-0: rgba(0, 0, 0, .9);--weui-FG-HALF: rgba(0, 0, 0, .9);--weui-FG-1: rgba(0, 0, 0, .55);--weui-FG-2: rgba(0, 0, 0, .3);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-FG-5: rgba(0, 0, 0, .05);--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #fa9d3b;--weui-YELLOW: #ffc300;--weui-GREEN: #91d300;--weui-LIGHTGREEN: #95ec69;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1485ee;--weui-PURPLE: #6467f0;--weui-WHITE: #fff;--weui-LINK: #576b95;--weui-TEXTGREEN: #06ae56;--weui-FG: #000;--weui-BG: #fff;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: #fa9d3b;--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: #06ae56;--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: #10aeff;--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05);--weui-REDORANGE: #ff6146}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2c2c2c;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-FG-5: rgba(255, 255, 255, .1);--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-FG: #fff;--weui-BG: #000;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-REDORANGE: #ff6146}}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2c2c2c;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-FG-5: rgba(255, 255, 255, .1);--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-FG: #fff;--weui-BG: #000;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-REDORANGE: #ff6146}.wx-root[data-weui-mode=care],body[data-weui-mode=care]{--weui-BG-0: #ededed;--weui-BG-1: #f7f7f7;--weui-BG-2: #fff;--weui-BG-3: #f7f7f7;--weui-BG-4: #4c4c4c;--weui-BG-5: #fff;--weui-FG-0: #000000;--weui-FG-HALF: #000000;--weui-FG-1: rgba(0, 0, 0, .6);--weui-FG-2: rgba(0, 0, 0, .42);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-FG-5: rgba(0, 0, 0, .05);--weui-RED: #dc3636;--weui-ORANGERED: #d14730;--weui-ORANGE: #e17719;--weui-YELLOW: #bb8e00;--weui-GREEN: #4f8400;--weui-LIGHTGREEN: #2e8800;--weui-BRAND: #018942;--weui-BLUE: #007dbb;--weui-INDIGO: #0075e2;--weui-PURPLE: #6265f1;--weui-WHITE: #fff;--weui-LINK: #576b95;--weui-TEXTGREEN: #06ae56;--weui-FG: #000;--weui-BG: #fff;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: #e17719;--weui-TAG-BACKGROUND-ORANGE: rgba(225, 119, 25, .1);--weui-TAG-TEXT-GREEN: #06ae56;--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: #007dbb;--weui-TAG-BACKGROUND-BLUE: rgba(0, 125, 187, .1);--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05);--weui-REDORANGE: #d14730}@media (prefers-color-scheme: dark){.wx-root[data-weui-mode=care]:not([data-weui-theme=light]),body[data-weui-mode=care]:not([data-weui-theme=light]){--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2c2c2c;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-FG-5: rgba(255, 255, 255, .1);--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-FG: #fff;--weui-BG: #000;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-REDORANGE: #ff6146}}.wx-root[data-weui-mode=care][data-weui-theme=dark],body[data-weui-mode=care][data-weui-theme=dark]{--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2c2c2c;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-FG-5: rgba(255, 255, 255, .1);--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-FG: #fff;--weui-BG: #000;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-REDORANGE: #ff6146}.wx-root,body{--weui-BG-COLOR-ACTIVE: #ececec}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-COLOR-ACTIVE: #373737}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-COLOR-ACTIVE: #373737}}body,.wx-root,page{--weui-BTN-HEIGHT: 48;--weui-BTN-HEIGHT-MEDIUM: 40;--weui-BTN-HEIGHT-SMALL: 32}.wx-root,body{--weui-BTN-ACTIVE-MASK: rgba(0, 0, 0, .1)}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BTN-ACTIVE-MASK: rgba(255, 255, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BTN-ACTIVE-MASK: rgba(255, 255, 255, .1)}}.wx-root,body{--weui-BTN-DEFAULT-ACTIVE-BG: #e6e6e6}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BTN-DEFAULT-ACTIVE-BG: rgba(255, 255, 255, .126)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BTN-DEFAULT-ACTIVE-BG: rgba(255, 255, 255, .126)}}.wx-root,body{--weui-DIALOG-LINE-COLOR: rgba(0, 0, 0, .1)}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-DIALOG-LINE-COLOR: rgba(255, 255, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-DIALOG-LINE-COLOR: rgba(255, 255, 255, .1)}}.wx_blockquote{margin:12px 0;padding:16px;background-color:#00000005;font-size:14px;line-height:1.4;color:var(--weui-FG-1);border-radius:4px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.wx_blockquote span:not(.tips){white-space:pre-line}@media (prefers-color-scheme: dark){.wx_blockquote{background-color:#ffffff05}}.wx_blockquote .tips{position:relative;display:inline-block;margin-right:8px;color:var(--weui-FG-2)}\n",
    w$3 = {
      content: "data-content",
      quoteId: "data-quote-id"
    };
  function R$2(e) {
    var i = {};
    return i = o$6.call(this, w$3), _objectSpread$7({
      platform: e
    }, i);
  }
  function c$3(e) {
    H$3(Object.assign(e, {
      Component: e.isDev ? e.devComponent : b$3,
      styleText: e.isDev ? e.devStyleText : f,
      customName: e.customName || "mp-common-blockquote",
      watchAttr: Object.values(w$3),
      getProps: R$2
    }));
  }

  
  var ua = navigator.userAgent;
  var is_android = /(Android)/i.test(ua);
  var g$4 = {
    x: 0,
    y: 0,
    isPc: /(WindowsNT)|(Windows NT)|(Macintosh)|Linux|UnifiedPCOHOSWechat/i.test(navigator.userAgent) &amp;&amp; !is_android,
    isWp: /Windows\sPhone/i.test(ua),
    tsTime: -1
  };
  var prefixes = ['webkit', 'moz', 'ms', 'o'];
  if (isUseTap()) {
    on(document, "touchstart", function (e) {
      if (e.touches.length === 1) {
        var st = e.touches[0];
        g$4.x = st.clientX;
        g$4.y = st.clientY;
        g$4.tsTime = +new Date();
      } else {
        g$4.tsTime = -1;
      }
    });
  }
  var scrolling;
  function isScrolling() {
    if (scrolling &amp;&amp; new Date().getTime() - scrolling &lt; 200) return true;
    return false;
  }
  window.addEventListener('scroll', function () {
    scrolling = new Date().getTime();
  }, true);
  function isUseTap() {
    if (g$4.isPc || g$4.isWp) {
      return false;
    }
    return true;
  }
  
  function tap(el, cb, flag, className) {
    if (!isUseTap()) {
      on(el, "click", className, cb, flag);
    } else {
      cb.tap_handler = function (e) {
        if (g$4.tsTime == -1 || +new Date() - g$4.tsTime &gt; 200 || isScrolling()) {
          return;
        }
        var st = e.changedTouches[0];
        if (Math.abs(g$4.y - st.clientY) &lt;= 5 &amp;&amp; Math.abs(g$4.x - st.clientX) &lt;= 5) {
          return cb.call(this, e);
          
        }
      };
      on(el, "touchend", className, cb.tap_handler, flag);
    }
  }
  
  function longtap(el, cb, _flag, className, cancelCb) {
    var self = this;
    var timeOutEvent;
    if (g$4.isPc || g$4.isWp) {
      var mousedown = false;
      var x;
      var y;
      var triggerLongClick;
      on(el, 'mousedown', className, function (e) {
        triggerLongClick = false;
        mousedown = true;
        x = e.clientX;
        y = e.clientY;
        timeOutEvent = setTimeout(function () {
          triggerLongClick = true;
          timeOutEvent = undefined;
          cb.call(this, e);
        }, 500);
        e.preventDefault();
      });
      on(el, 'mousemove', className, function (e) {
        if (!mousedown) return;
        if (timeOutEvent &amp;&amp; (Math.abs(y - e.clientY) &gt; 5 || Math.abs(x - e.clientX) &gt; 5)) {
          clearTimeout(timeOutEvent);
          timeOutEvent = undefined;
          typeof cancelCb === 'function' &amp;&amp; cancelCb.call(self, e);
        }
      });
      on(el, 'mouseup', className, function () {
        mousedown = false;
        clearTimeout(timeOutEvent);
      });
      on(el, 'click', className, function () {
        if (triggerLongClick) return false;
      });
    } else {
      on(el, 'touchstart', className, function (e) {
        e.touches.length === 1 &amp;&amp; (timeOutEvent = setTimeout(function () {
          timeOutEvent = undefined;
          cb.call(self, e);
        }, 500));
      });
      on(el, 'touchmove', className, function (e) {
        if (!timeOutEvent) return;
        var st = e.changedTouches[0];
        if (Math.abs(g$4.y - st.clientY) &gt; 5 || Math.abs(g$4.x - st.clientX) &gt; 5) {
          clearTimeout(timeOutEvent);
          timeOutEvent = undefined;
          typeof cancelCb === 'function' &amp;&amp; cancelCb.call(self, e);
        }
      });
      on(el, 'touchend', className, function (e) {
        if (timeOutEvent) {
          clearTimeout(timeOutEvent);
          timeOutEvent = undefined;
        } else {
          e.preventDefault();
        }
      }, true);
    }
  }
  function doubletap(el, cb) {
    var _this = this;
    var __lastTouchVideoTs = 0;
    var realCb = function realCb(e) {
      if (Date.now() - __lastTouchVideoTs &lt; 300) {
        cb.call(_this, e);
      }
      __lastTouchVideoTs = Date.now();
    };
    tap(el, realCb);
    return function () {
      return off(el, 'touchend', realCb);
    };
  }
  function matches(ele, className) {
    if (!ele || !className || ele.nodeType != ele.ELEMENT_NODE) return false;
    var matchesSelector = ele.webkitMatchesSelector || ele.msMatchesSelector || ele.matchesSelector;
    if (matchesSelector) return matchesSelector.call(ele, className);
    className = className.substr(1);
    return ele.className.indexOf(className) &gt; -1;
  }
  function closest(target, className, context) {
    while (target &amp;&amp; !matches(target, className)) {
      target = target !== context &amp;&amp; target.nodeType !== target.DOCUMENT_NODE &amp;&amp; target.parentNode;
    }
    return target;
  }
  function on(el, type, className, cb, flag, extra) {
    var callback;
    var handler;
    var delegator;
    if (!el) return;
    if (typeof className === 'function') {
      extra = flag;
      flag = cb;
      cb = className;
      className = '';
    }
    if (typeof className !== 'string') {
      className = '';
    }
    if (el == window &amp;&amp; type == "load" &amp;&amp; /complete|loaded/.test(document.readyState)) {
      return cb({
        type: "load"
      });
    }
    if (type == 'tap') return tap(el, cb, flag, className);
    if (type === 'longtap') return longtap(el, cb, flag, className, extra);
    if (type == "unload" &amp;&amp; "onpagehide" in window) {
      type = "pagehide";
    }
    callback = function callback(e) {
      var ret = cb(e);
      if (ret === false) {
        e.stopPropagation &amp;&amp; e.stopPropagation();
        e.preventDefault &amp;&amp; e.preventDefault();
      }
      return ret;
    };
    if (className &amp;&amp; className.charAt(0) == '.') delegator = function delegator(e) {
      var target = e.target || e.srcElement;
      var match = closest(target, className, el);
      if (match) {
        e.delegatedTarget = match;
        return callback(e);
      }
    };
    handler = delegator || callback;
    cb["".concat(type, "_handler")] = handler;
    if (el.addEventListener) {
      el.addEventListener(type, handler, !!flag);
      return;
    }
    if (el.attachEvent) {
      el.attachEvent("on".concat(type), handler, !!flag);
      return;
    }
  }
  function off(el, type, cb, flag) {
    if (!el) return;
    var handlerType = type;
    var handler;
    if (handlerType == 'tap') {
      if (isUseTap()) {
        handlerType = 'touchend';
        handler = cb.tap_handler &amp;&amp; cb.tap_handler.touchend_handler ? cb.tap_handler.touchend_handler : cb;
      } else {
        handlerType = 'click';
      }
    }
    if (!handler) {
      handler = cb["".concat(handlerType, "_handler")] || cb;
    }
    if (el.removeEventListener) {
      el.removeEventListener(handlerType, handler, !!flag);
      return;
    }
    if (el.detachEvent) {
      el.detachEvent("on".concat(handlerType), handler, !!flag);
      return;
    }
    if (handlerType == 'tap' &amp;&amp; isUseTap()) {
      if (cb.tap_handler) {
        cb.tap_handler.touchend_handler = null;
      }
      cb.tap_handler = null;
    } else {
      cb["".concat(handlerType, "_handler")] = null;
    }
  }
  function getHiddenProp() {
    if ('hidden' in document) {
      return 'hidden';
    }
    for (var i = 0; i &lt; prefixes.length; i++) {
      if ("".concat(prefixes[i], "Hidden") in document) {
        return "".concat(prefixes[i], "Hidden");
      }
    }
    return null;
  }
  function getVisibilityState() {
    if ('visibilityState' in document) {
      return 'visibilityState';
    }
    for (var i = 0; i &lt; prefixes.length; i++) {
      if ("".concat(prefixes[i], "VisibilityState") in document) {
        return "".concat(prefixes[i], "VisibilityState");
      }
    }
    return null;
  }
  function bindVisibilityChangeEvt(cb) {
    var visProp = getHiddenProp();
    if (visProp) {
      var evtname = "".concat(visProp.replace(/[H|h]idden/, ''), "visibilitychange");
      var handler = function handler() {
        var isShow = document[getVisibilityState()] !== 'hidden';
        typeof cb === 'function' &amp;&amp; cb(isShow);
      };
      document.addEventListener(evtname, handler, false);
      return function () {
        document.removeEventListener(evtname, handler, false);
      };
    }
    return function () {};
  }
  var DomEvent = {
    on: on,
    off: off,
    tap: tap,
    longtap: longtap,
    bindVisibilityChangeEvt: bindVisibilityChangeEvt,
    doubletap: doubletap
  };

  function ownKeys$6(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r &amp;&amp; (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
  function _objectSpread$6(e) { for (var r = 1; r &lt; arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$6(Object(t), !0).forEach(function (r) { defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$6(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
  var C$3 = "https://mp.weixin.qq.com/shop/ssr/wap/gift",
    o$2 = "https://mp.weixin.qq.com/mmec/bizacctusergetactivityinfo",
    T$3 = "https://mp.weixin.qq.com";
  function s$3(e) {
    try {
      var _JSON$parse = JSON.parse(e),
        i = _JSON$parse.action,
        E = _JSON$parse.value;
      return {
        action: i,
        value: E
      };
    } catch (i) {
      console.error(i);
    }
    return {};
  }
  function w$2(e, i, E) {
    var G = arguments.length &gt; 3 &amp;&amp; arguments[3] !== undefined ? arguments[3] : "*";
    try {
      if (!e) return console.warn("postMessageToIframe: win is null");
      e.postMessage(JSON.stringify({
        action: i,
        value: E
      }), G || "*");
    } catch (u) {
      console.log("postMessage error", u);
    }
  }
  var I$3 = {
    name: "mp-common-bluepacket",
    mixins: [k$1],
    props: {
      extraInfo: {
        type: Object,
        "default": function _default() {
          return {};
        }
      },
      scrollBlur: {
        type: Number,
        "default": 0
      },
      loaded: {
        type: Number,
        "default": 0
      },
      urlParams: {
        type: Object,
        "default": function _default() {
          return {};
        }
      },
      customstyle: {
        type: String,
        "default": "{}"
      },
      wapExportToken: {
        type: String,
        "default": ""
      }
    },
    data: function data() {
      return {
        iframeLoading: !0,
        showIframe: !1,
        iframeUrl: "",
        transferStyle: "",
        active: !1
      };
    },
    computed: {
      readyToSendToken: function readyToSendToken() {
        return !this.iframeLoading &amp;&amp; this.wapExportToken;
      },
      isEditor: function isEditor() {
        return this.platform === "web" || this.platform === "app";
      },
      iframeStyle: function iframeStyle() {
        var e = {};
        return this.platform === "web" ? e.width = "350px" : e.width = "100%", e = Object.assign(e, JSON.parse(this.transferStyle || "{}")), e;
      }
    },
    watch: {
      readyToSendToken: function readyToSendToken(e) {
        e &amp;&amp; w$2(this.$refs.iframeRef.contentWindow, "updateToken", {
          value: this.wapExportToken
        });
      },
      loaded: {
        handler: function handler() {
          this.loaded &amp;&amp; (this.showIframe = !0, this.iframeUrl = this.getCIframeUrl());
        },
        immediate: !0
      }
    },
    created: function created() {
      this.isEditor &amp;&amp; (this.showIframe = !0, this.iframeUrl = this.getBIframeUrl());
    },
    mounted: function mounted() {
      var _this = this;
      this.extraInfo.window &amp;&amp; this.extraInfo.window.addEventListener("message", this.handleMessage), this.extraInfo.window &amp;&amp; this.extraInfo.window.addEventListener("click", this.handleDocumentClick), this.scrollBlur &amp;&amp; this.extraInfo.window &amp;&amp; this.extraInfo.window.addEventListener("scroll", this.handleScroll), this.__unbindVisibilityChange = DomEvent.bindVisibilityChangeEvt(this.handleVisibilityChangeEvt), R$4.on("onWindowFocusChanged", this.__onNativeFocusChange = function (e) {
        var i = Device.os.ios ? !(e.hasFocus * 1) : !!e.hasFocus,
          E = _this.$refs.iframeRef;
        i &amp;&amp; E != null &amp;&amp; E.contentWindow &amp;&amp; w$2(E.contentWindow, "pageVisible", {
          type: "windowFocusChanged"
        });
      });
    },
    beforeDestroy: function beforeDestroy() {
      this.extraInfo.window &amp;&amp; this.extraInfo.window.removeEventListener("message", this.handleMessage), this.extraInfo.window &amp;&amp; this.extraInfo.window.removeEventListener("click", this.handleDocumentClick), R$4.remove("onWindowFocusChanged", this.__onNativeFocusChange), typeof this.__unbindVisibilityChange == "function" &amp;&amp; this.__unbindVisibilityChange();
    },
    methods: {
      handleVisibilityChangeEvt: function handleVisibilityChangeEvt(e) {
        var i = this.$refs.iframeRef;
        e &amp;&amp; i != null &amp;&amp; i.contentWindow &amp;&amp; w$2(i.contentWindow, "pageVisible", {
          type: "visibilityChange"
        });
      },
      handleScroll: function handleScroll() {
        this.deActive();
      },
      handleDocumentClick: function handleDocumentClick(e) {
        this.$refs.js_custom_element.contains(e.target) || (this.deActive(), this.$emit("document-click", e));
      },
      deActive: function deActive() {
        var e = this.$refs.iframeRef;
        e &amp;&amp; e.contentWindow &amp;&amp; this.active &amp;&amp; (w$2(e.contentWindow, "webEvent", {
          type: "unclick"
        }), this.active = !1);
      },
      getBIframeUrl: function getBIframeUrl() {
        var e = _objectSpread$6({}, this.urlParams);
        delete e.shop_bizuin;
        var i = window &amp;&amp; window.wx &amp;&amp; window.wx.data &amp;&amp; window.wx.data.t || p$1(window.location.href).token || this.token;
        return i &amp;&amp; (e.token = i), u$2(C$3, e);
      },
      getCIframeUrl: function getCIframeUrl() {
        var e = _objectSpread$6(_objectSpread$6({}, this.urlParams), {}, {
          device_type: Device.os.ios ? 1 : 2
        });
        return delete e.shop_bizuin, u$2(o$2, e);
      },
      handleMessage: function handleMessage(e) {
        if (e.origin !== T$3) return;
        var i = this.$refs.iframeRef,
          E = i == null ? void 0 : i.contentWindow;
        if (i &amp;&amp; e.source === E) {
          var _s = s$3(e.data),
            G = _s.action,
            u = _s.value;
          switch (G) {
            case "changeFrameStyle":
              this.changeFrameStyle(e, u);
              break;
            case "onFrameReady":
              this.onFrameReady(e, i);
              break;
            case "webEvent":
              u.type === "click" ? this.clickProduct(e) : u.type === "toast" ? window.weui.toast(u.msg, {
                extClass: "weui-toast_text"
              }) : u.type === "dialog" &amp;&amp; window.weui.dialog(u);
              break;
          }
          this.$emit("iframe-message", e);
        }
      },
      clickProduct: function clickProduct(e) {
        this.extraInfo.window &amp;&amp; this.extraInfo.window.clickedProductWin &amp;&amp; e.source !== this.extraInfo.window.clickedProductWin &amp;&amp; w$2(this.extraInfo.window.clickedProductWin, "webEvent", {
          type: "unclick"
        }), this.extraInfo.window &amp;&amp; (this.extraInfo.window.clickedProductWin = e.source), this.active = !0;
      },
      onFrameReady: function onFrameReady() {
        this.iframeLoadTimeout &amp;&amp; clearTimeout(this.iframeLoadTimeout), this.iframeLoading = !1, this.extraInfo.window &amp;&amp; w$2(this.extraInfo.window, "setPageData", {
          darkMode: this.extraInfo.window.matchMedia("(prefers-color-scheme: dark)").matches
        }), this.isEditor || this.exposureReport();
      },
      exposureReport: function exposureReport() {
        var _this2 = this;
        this.observer = new IntersectionObserver(function (e) {
          e.forEach(function (i) {
            var E = _this2.$refs.iframeRef;
            if (i.isIntersecting &amp;&amp; i.intersectionRatio &gt;= 0.5) try {
              E &amp;&amp; E.contentWindow &amp;&amp; (_this2.timeout = setTimeout(function () {
                w$2(E.contentWindow, "webEvent", {
                  type: "valid_expose"
                });
              }, 500));
            } catch (G) {
              console.error(G);
            } else _this2.timeout &amp;&amp; clearTimeout(_this2.timeout);
          });
        }, {
          threshold: 0.5
        }), this.observer.observe(this.$refs.js_custom_element);
      },
      changeFrameStyle: function changeFrameStyle(e, i) {
        if (!(!i || _typeof$2(i) != "object" || this.cardtype === 2)) try {
          this.transferStyle = JSON.stringify(i);
        } catch (E) {
          console.error(E);
        }
      }
    }
  };
  var n$4 = function n() {
      var i = this,
        E = i._self._c;
      return E("div", {
        ref: "js_custom_element",
        staticClass: "iframe_wrp wx_card_root"
      }, [i.iframeLoading ? E("div", {
        staticClass: "bluepacket_wx_img_placeholder",
        style: JSON.parse(i.customstyle || "{}")
      }) : i._e(), i.showIframe ? E("iframe", {
        ref: "iframeRef",
        staticClass: "iframe_style",
        style: i.iframeStyle,
        attrs: {
          src: i.iframeUrl,
          scrolling: "no",
          frameborder: "0"
        }
      }) : i._e()]);
    },
    O$4 = [],
    g$3 = v$2(I$3, n$4, O$4, !1, null, "33cbb04e", null, null);
  var b$2 = g$3.exports,
    l$4 = "body,.wx-root{--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #07C160;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0: rgba(0, 0, 0, .9);--weui-FG-0_5: rgba(0, 0, 0, .9);--weui-FG-1: rgba(0, 0, 0, .55);--weui-FG-2: rgba(0, 0, 0, .3);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-GLYPH-0: rgba(0, 0, 0, .9);--weui-GLYPH-1: rgba(0, 0, 0, .55);--weui-GLYPH-2: rgba(0, 0, 0, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #91D300;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #1485EE;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #95EC69;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #FA9D3B;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6467F0;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #FA5151;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .05);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #FFC300;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-FG-HALF: rgba(0, 0, 0, .9);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #FA9D3B;--weui-YELLOW: #FFC300;--weui-GREEN: #91D300;--weui-LIGHTGREEN: #95EC69;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1485EE;--weui-PURPLE: #6467F0;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #FA9D3B;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #10AEFF;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05);--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-FG: #000;--weui-FG-5: rgba(0, 0, 0, .05);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG: #fff;--weui-BG: #000;--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6)}}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG: #fff;--weui-BG: #000;--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6)}.wx-root[data-weui-mode=care],body[data-weui-mode=care]{--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #007DBB;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #018942;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0: #000000;--weui-FG-0_5: #000000;--weui-FG-1: rgba(0, 0, 0, .6);--weui-FG-2: rgba(0, 0, 0, .42);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-GLYPH-0: #000000;--weui-GLYPH-1: rgba(0, 0, 0, .6);--weui-GLYPH-2: rgba(0, 0, 0, .42);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #4F8400;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #0075E2;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #2E8800;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #E17719;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #D14730;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6265F1;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #DC3636;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .1);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #BB8E00;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-FG-HALF: #000000;--weui-RED: #DC3636;--weui-ORANGERED: #D14730;--weui-ORANGE: #E17719;--weui-YELLOW: #BB8E00;--weui-GREEN: #4F8400;--weui-LIGHTGREEN: #2E8800;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #018942;--weui-BLUE: #007DBB;--weui-INDIGO: #0075E2;--weui-PURPLE: #6265F1;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #E17719;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #007DBB;--weui-REDORANGE: #D14730;--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-FG: #000;--weui-FG-5: rgba(0, 0, 0, .05);--weui-TAG-BACKGROUND-ORANGE: rgba(225, 119, 25, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(0, 125, 187, .1);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05)}@media (prefers-color-scheme: dark){.wx-root[data-weui-mode=care]:not([data-weui-theme=light]),body[data-weui-mode=care]:not([data-weui-theme=light]){--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-FG: #fff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-BG: #000;--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5)}}.wx-root[data-weui-mode=care][data-weui-theme=dark],body[data-weui-mode=care][data-weui-theme=dark]{--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-FG: #fff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-BG: #000;--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5)}.bluepacket_wx_img_placeholder{width:100%;background:var(--weui-BG-3) url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='80px' height='80px' viewBox='0 0 80 80' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3E9.\u5143\u7D20/\u52A0\u8F7D/Black%3C/title%3E%3Cdefs%3E%3ClinearGradient x1='94.0869141%25' y1='0%25' x2='94.0869141%25' y2='90.559082%25' id='linearGradient-1'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.67370605%25' x2='100%25' y2='90.6286621%25' id='linearGradient-2'%3E%3Cstop stop-color='%23606060' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cg id='\u9875\u9762-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' opacity='0.9'%3E%3Cg id='LoadingDefault'%3E%3Cpath d='M40,0 C62.09139,0 80,17.90861 80,40 C80,62.09139 62.09139,80 40,80 L40,73 C58.2253967,73 73,58.2253967 73,40 C73,21.7746033 58.2253967,7 40,7 L40,0 Z' id='\u8DEF\u5F84' fill='url(%23linearGradient-1)'%3E%3C/path%3E%3Cpath d='M40,0 L40,7 C21.7746033,7 7,21.7746033 7,40 C7,58.2253967 21.7746033,73 40,73 L40,80 C17.90861,80 0,62.09139 0,40 C0,17.90861 17.90861,0 40,0 Z' id='\u8DEF\u5F84' fill='url(%23linearGradient-2)'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23606060' cx='40.5' cy='3.5' r='3.5'%3E%3C/circle%3E%3C/g%3E%3CanimateTransform attributeName='transform' begin='0s' dur='1s' type='rotate' values='0 40 40;360 40 40' repeatCount='indefinite'/%3E%3C/g%3E%3C/svg%3E%0A\") no-repeat 50% 50%!important;background-size:16px!important;border-radius:8px}.iframe_style{height:0px}.iframe_wrp{display:flex;flex-direction:column;-webkit-user-select:none;-moz-user-select:none;user-select:none;align-items:center;position:relative}\n",
    r$6 = {
      loaded: "data-loaded",
      urlParams: "data-url-params",
      customstyle: "data-customstyle",
      scrollBlur: "data-scroll-blur",
      wapExportToken: "data-wap-export-token"
    };
  function c$2(e) {
    var i = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : {};
    var E = {};
    return E = o$6.call(this, r$6), E.loaded = Number(E.loaded || 0), E.urlParams = JSON.parse(E.urlParams || "{}"), E.scrollBlur = Number(E.scrollBlur || 0), _objectSpread$6({
      platform: e,
      extraInfo: i
    }, E);
  }
  function Y(e) {
    H$3(Object.assign(e, {
      Component: e.isDev ? e.devComponent : b$2,
      styleText: e.isDev ? e.devStyleText : l$4,
      customName: e.customName || "mp-common-bluepacket",
      watchAttr: Object.values(r$6),
      getProps: c$2,
      eventName: ["iframe-message", "document-click", "expose", "element-click"]
    }));
  }

  
  function parseUrl(url) {
    var a = document.createElement('a');
    a.href = url;
    return {
      source: url,
      protocol: a.protocol.replace(':', ''),
      host: a.hostname,
      port: a.port,
      query: a.search,
      params: function () {
        var ret = {};
        var seg = a.search.replace(/^\?/, '').split('&amp;');
        var len = seg.length;
        var i = 0;
        var s;
        for (; i &lt; len; i++) {
          if (!seg[i]) {
            continue;
          }
          s = seg[i].split('=');
          ret[s[0]] = s[1];
        }
        return ret;
      }(),
      file: (a.pathname.match(/([^\/?#]+)$/i) || [, ''])[1],
      hash: a.hash.replace('#', ''),
      path: a.pathname.replace(/^([^\/])/, '/$1'),
      relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [, ''])[1],
      segments: a.pathname.replace(/^\//, '').split('/')
    };
  }
  
  function openUrlWithExtraWebview(url, scene, userName, openType, sucCb, interactiveDismiss) {
    var urlParsedData;
    if (url.indexOf('/') == 0) {
      urlParsedData = parseUrl(location.href);
      url = "".concat(urlParsedData.protocol, "://").concat(urlParsedData.host).concat(url);
      console.log('openUrlWithExtraWebview with relative path:', url);
    }
    url = url.replace(/(#[^#]*)+/, function (_, _1, _2) {
      return _1;
    });
    
    if (navigator.userAgent.indexOf('MicroMessenger') !== -1 &amp;&amp; (MMVersion.isIOS || MMVersion.isAndroid || MMVersion.isHarmony || MMVersion.isWp || Device.os.pc)) {
      R$4.invoke('openUrlWithExtraWebview', {
        url: url,
        scene: scene || '',
        bizUsername: userName || '',
        interactiveDismiss: !!interactiveDismiss,
        openType: typeof openType === 'undefined' ? 1 : openType
      }, function (res) {
        var _a;
        if (((_a = res.err_msg) === null || _a === void 0 ? void 0 : _a.indexOf('ok')) === -1) {
          location.href = url;
        } else {
          typeof sucCb === 'function' &amp;&amp; sucCb(res);
        }
      });
    } else if (MMVersion.isMpapp) {
      try {
        invoke('WNNativeCallbackOpenNewWindow', {
          url: url
        });
      } catch (e) {
        location.href = url;
      }
    } else {
      var winRef = window.open(url);
      if (!winRef &amp;&amp; !MMVersion.isWxWork) {
        location.href = url;
      }
    }
  }
  
  function openUrl(opt) {
    var url = opt.url,
      itemShowType = opt.itemShowType,
      openType = opt.openType,
      scene = opt.scene,
      subscene = opt.subscene,
      canFastLoad = opt.canFastLoad;
    if (MMVersion.isWechat) {
      if (canFastLoad) {
        R$4.invoke('openWebViewUseFastLoad', {
          url: url,
          item_show_type: itemShowType,
          openType: openType || 0,
          scene: scene || 0,
          subscene: subscene || 0
        }, function (resp) {
          var _a;
          if (((_a = resp === null || resp === void 0 ? void 0 : resp.err_msg) === null || _a === void 0 ? void 0 : _a.indexOf('ok')) === -1) {
            R$4.invoke('openUrlWithExtraWebview', {
              url: url,
              openType: 1
            }, function (res) {
              var _a;
              if (((_a = res === null || res === void 0 ? void 0 : res.err_msg) === null || _a === void 0 ? void 0 : _a.indexOf('ok')) === -1) {
                window.location.href = url;
              }
            });
          }
        });
      } else {
        R$4.invoke('openUrlWithExtraWebview', {
          url: url,
          openType: 1
        }, function (res) {
          var _a;
          if (((_a = res === null || res === void 0 ? void 0 : res.err_msg) === null || _a === void 0 ? void 0 : _a.indexOf('ok')) === -1) {
            window.location.href = url;
          }
        });
      }
    } else {
      window.open(url);
    }
  }
  var openUrl$1 = {
    openUrlWithExtraWebview: openUrlWithExtraWebview,
    openUrl: openUrl
  };

  function ownKeys$5(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r &amp;&amp; (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
  function _objectSpread$5(e) { for (var r = 1; r &lt; arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), !0).forEach(function (r) { defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
  function _regeneratorRuntime$1() {  _regeneratorRuntime$1 = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof$2(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof$2(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  function O$3(_x) {
    return _O.apply(this, arguments);
  }
  function _O() {
    _O = asyncToGenerator( _regeneratorRuntime$1().mark(function _callee13(B) {
      return _regeneratorRuntime$1().wrap(function _callee13$(_context13) {
        while (1) switch (_context13.prev = _context13.next) {
          case 0:
            return _context13.abrupt("return", new Promise(function (A) {
              R$4.invoke("handleEcsAction", {
                action: "openEcs",
                ecsJumpInfoBase64: B
              }, function (e) {
                A(e);
              });
            }));
          case 1:
          case "end":
            return _context13.stop();
        }
      }, _callee13);
    }));
    return _O.apply(this, arguments);
  }
  function L() {
    return _L.apply(this, arguments);
  }
  function _L() {
    _L = asyncToGenerator( _regeneratorRuntime$1().mark(function _callee14() {
      return _regeneratorRuntime$1().wrap(function _callee14$(_context14) {
        while (1) switch (_context14.prev = _context14.next) {
          case 0:
            return _context14.abrupt("return", new Promise(function (B) {
              R$4.invoke("handleEcsAction", {
                action: "checkAction",
                params: {
                  method: "isActionAvailable",
                  actionName: "openEcs",
                  actionVersion: "1"
                }
              }, function (A) {
                A != null &amp;&amp; A.result ? B(!0) : B(!1);
              });
            }));
          case 1:
          case "end":
            return _context14.stop();
        }
      }, _callee14);
    }));
    return _L.apply(this, arguments);
  }
  var R$1 = 7,
    U = {
      NORMAL: 1,
      CLOSED: 2,
      BANED: 3
    },
    r$5 = {
      CARD: 1,
      PRODUCT: 2
    },
    I$2 = {
      EXPOSE: 1,
      CLICK: 2
    },
    l$3 = {
      PRODUCT: 0,
      BANNER: 1,
      CURATED_SET: 2
    },
    d$2 = {
      red: 235,
      green: 235,
      blue: 235
    },
    y = "rgba(0,0,0,0.9)",
    _$1 = "rgba(0,0,0,0.55)",
    J$1 = {
      name: "mp-common-shopprofile",
      mixins: [k$1],
      props: {
        id: {
          type: String,
          "default": ""
        },
        appid: {
          type: String,
          "default": ""
        },
        shopEncryptKey: {
          type: String,
          "default": ""
        },
        is_hover: {
          type: Number,
          "default": 0
        },
        is_selected: {
          type: Number,
          "default": 0
        }
      },
      data: function data() {
        return {
          getShopCardResp: null,
          requestinggetShopCardResp: !1,
          _supportOpenEcs: void 0,
          forceUpdate: !1,
          productWidth: 0,
          productHeight: 0,
          iframeLoading: !0,
          isDark: window.matchMedia &amp;&amp; window.matchMedia("(prefers-color-scheme: dark)").matches,
          getShopCardPromise: null
        };
      },
      computed: {
        isEditor: function isEditor() {
          return this.platform === "web" || this.platform === "app";
        },
        cardStyle: function cardStyle() {
          var B = {};
          return this.platform === "web" ? B.width = "350px" : B.width = "100%", B;
        },
        placeholderStyle: function placeholderStyle() {
          var B = {
            height: "108px"
          };
          return this.platform === "web" ? B.width = "350px" : B.width = "100%", B;
        },
        productStyle: function productStyle() {
          return {
            width: "".concat(this.productWidth, "px"),
            height: "".concat(this.productHeight, "px")
          };
        },
        pruductImgStyle: function pruductImgStyle() {
          return {
            width: "".concat(this.productWidth, "px"),
            height: "".concat(this.productHeight, "px")
          };
        },
        headImgUrl: function headImgUrl() {
          var B, A, e;
          return ((e = (A = (B = this.getShopCardResp) == null ? void 0 : B.ec_shop_card) == null ? void 0 : A.profile_info) == null ? void 0 : e.head_img_url) || "";
        },
        shopProfileName: function shopProfileName() {
          var B, A, e;
          return ((e = (A = (B = this.getShopCardResp) == null ? void 0 : B.ec_shop_card) == null ? void 0 : A.profile_info) == null ? void 0 : e.shop_window_profile_name) || "";
        },
        brandTailWording: function brandTailWording() {
          var B, A, e, i;
          return ((i = (e = (A = (B = this.getShopCardResp) == null ? void 0 : B.ec_shop_card) == null ? void 0 : A.profile_info) == null ? void 0 : e.shop_icon) == null ? void 0 : i.icon_r_words) || "";
        },
        saleWording: function saleWording() {
          var B, A, e;
          return ((e = (A = (B = this.getShopCardResp) == null ? void 0 : B.ec_shop_card) == null ? void 0 : A.profile_info) == null ? void 0 : e.sale_wording) || "";
        },
        brandIconUrl: function brandIconUrl() {
          var B, A, e, i, E, t, g, w;
          return this.hasBgColor ? ((w = (g = (t = (E = this.getShopCardResp) == null ? void 0 : E.ec_shop_card) == null ? void 0 : t.profile_info) == null ? void 0 : g.shop_icon) == null ? void 0 : w.icon_r_url_dark) || "" : ((i = (e = (A = (B = this.getShopCardResp) == null ? void 0 : B.ec_shop_card) == null ? void 0 : A.profile_info) == null ? void 0 : e.shop_icon) == null ? void 0 : i.icon_r_url) || "";
        },
        products: function products() {
          var B, A;
          return (((A = (B = this.getShopCardResp) == null ? void 0 : B.ec_shop_card) == null ? void 0 : A.simple_products) || []).slice(0, 3);
        },
        shopJumpInfo: function shopJumpInfo() {
          var B, A;
          return ((A = (B = this.getShopCardResp) == null ? void 0 : B.ec_shop_card) == null ? void 0 : A.shop_jump_info_base64_str) || "";
        },
        shopStatus: function shopStatus() {
          var B;
          return (B = this.getShopCardResp) == null ? void 0 : B.shop_status;
        },
        isShopStatusNormal: function isShopStatusNormal() {
          return this.shopStatus === U.NORMAL;
        },
        statusDesc: function statusDesc() {
          return this.shopStatus === U.CLOSED ? "店铺已注销" : this.shopStatus === U.BANED ? "店铺已被封禁" : "";
        },
        showContent: function showContent() {
          var B;
          return (B = this.getShopCardResp) == null ? void 0 : B.show_content;
        },
        isProductCard: function isProductCard() {
          return _typeof$2(this.showContent) &gt; "u" ? !0 : this.showContent === l$3.PRODUCT;
        },
        isBannerCard: function isBannerCard() {
          return this.showContent === l$3.BANNER;
        },
        isCrratedSetCard: function isCrratedSetCard() {
          return this.showContent === l$3.CURATED_SET;
        },
        iconStyle: function iconStyle() {
          return this.isDark &amp;&amp; this.platform === "web" ? {
            backgroundImage: 'url("https://res.wx.qq.com/shop/public/2025-05-10/321b820e-8d8a-4083-8e0f-40b2b01fc8ef.png")'
          } : {};
        },
        banners: function banners() {
          var _this = this;
          var A;
          return (((A = this.getShopCardResp) == null ? void 0 : A.banners) || []).slice(0, 3).map(function (e) {
            var E, t, g, w, o, u, G, Q, M, c;
            var i = _this.bgColor;
            return {
              id: e.id,
              type: e.type,
              title: (E = e.banner) == null ? void 0 : E.title,
              subTitle: (t = e.banner) == null ? void 0 : t.subtitle,
              imgUrl: (g = e.banner) == null ? void 0 : g.img_url,
              desc: (w = e.banner) == null ? void 0 : w.description,
              bgColor: y$2([i.red, i.green, i.blue]),
              bgColorRgb: i,
              product: e.product &amp;&amp; {
                showPriceStartWording: (u = (o = e.product) == null ? void 0 : o.price) == null ? void 0 : u.has_range_price,
                fullPage: e.product.full_page,
                ecsJumpInfoBase64Str: (G = e.product) == null ? void 0 : G.ecs_jump_info_base64_str
              },
              finderInfo: e.finder &amp;&amp; {
                finderUsername: e.finder.uniq_id,
                feedId: e.finder.export_id,
                nickname: (Q = e.finder) == null ? void 0 : Q.nickname
              },
              mpInfo: e.official_account &amp;&amp; {
                url: e.official_account.url,
                nickname: (M = e.official_account) == null ? void 0 : M.nickname,
                title: (c = e.official_account) == null ? void 0 : c.title,
                itemShowType: e.official_account.item_show_type
              }
            };
          });
        },
        curatedSets: function curatedSets() {
          var A;
          var B = ((A = this.getShopCardResp) == null ? void 0 : A.curated_sets) || [];
          return B = B.map(function (e) {
            var i = e.product_total_count;
            return {
              mainProductImg: e.cover_img_url,
              title: e.title,
              productCnt: i &gt; 99 ? "99+" : i,
              jumpInfoBase64Str: e.jump_info_base64_str || ""
            };
          }).filter(function (e) {
            return !!e.mainProductImg;
          }).slice(0, 3), B;
        },
        background: function background() {
          var B;
          return (B = this.getShopCardResp) == null ? void 0 : B.back_ground;
        },
        cardHeadStyle: function cardHeadStyle() {
          var B, A, e, i;
          if ((B = this.background) != null &amp;&amp; B.img_url) {
            if (this.hasBgColor) {
              var E = C$6((A = this.background) == null ? void 0 : A.main_colors)[1];
              return {
                background: "linear-gradient(to left bottom, rgba(".concat(E.red, ", ").concat(E.green, ", ").concat(E.blue, ", 0.7) 0%, rgba(").concat(E.red, ", ").concat(E.green, ", ").concat(E.blue, ", 1) 60%, rgba(").concat(E.red, ", ").concat(E.green, ", ").concat(E.blue, ", 1) ) 100%, url(\"").concat((e = this.background) == null ? void 0 : e.img_url, "\") left top / 100% auto no-repeat")
              };
            } else return {
              background: "url(\"".concat((i = this.background) == null ? void 0 : i.img_url, "\") left top / 100% auto no-repeat")
            };
          } else return {
            background: "rgba(".concat(d$2.red, ", ").concat(d$2.green, ", ").concat(d$2.blue, ", 1)")
          };
        },
        curatedStyle: function curatedStyle() {
          var B = this.bgColor;
          return {
            width: "".concat(this.productWidth, "px"),
            height: "".concat(this.productHeight, "px"),
            backgroundImage: "linear-gradient(to top, rgba(".concat(B.red, ", ").concat(B.green, ", ").concat(B.blue, ", 0.7) 0%, rgba(").concat(B.red, ", ").concat(B.green, ", ").concat(B.blue, ", 1) 100%)")
          };
        },
        hasBgColor: function hasBgColor() {
          var B, A, e;
          return !!((B = this.background) != null &amp;&amp; B.main_colors &amp;&amp; (A = this.background) != null &amp;&amp; A.main_colors[0] &amp;&amp; _typeof$2((e = this.background) == null ? void 0 : e.main_colors[0].red) &lt; "u");
        },
        bgColor: function bgColor() {
          var B;
          return this.hasBgColor ? C$6((B = this.background) == null ? void 0 : B.main_colors)[1] : d$2;
        },
        shopProfileNameStyle: function shopProfileNameStyle() {
          return this.hasBgColor ? {} : {
            color: y
          };
        },
        shopProfileDescStyle: function shopProfileDescStyle() {
          return this.hasBgColor ? {} : {
            color: _$1
          };
        },
        jumpShopIconStyle: function jumpShopIconStyle() {
          return this.hasBgColor ? {} : {
            color: y
          };
        }
      },
      watch: {
        appid: {
          handler: function handler() {
            this.forceUpdateShopCard();
          }
        },
        shopEncryptKey: {
          handler: function handler() {
            this.forceUpdateShopCard();
          }
        }
      },
      created: function created() {
        this.getShopCard();
      },
      mounted: function mounted() {
        var _this2 = this;
        return asyncToGenerator( _regeneratorRuntime$1().mark(function _callee() {
          return _regeneratorRuntime$1().wrap(function _callee$(_context) {
            while (1) switch (_context.prev = _context.next) {
              case 0:
                console.log("@@@@@ shopprofile mount"), _this2.extraInfo.window &amp;&amp; _this2.extraInfo.window.addEventListener("message", _this2.handleMessage), _this2.extraInfo.window &amp;&amp; _this2.extraInfo.window.addEventListener("click", _this2.handleDocumentClick), _this2.reportExpose();
              case 1:
              case "end":
                return _context.stop();
            }
          }, _callee);
        }))();
      },
      beforeDestroy: function beforeDestroy() {
        this.extraInfo.window &amp;&amp; this.extraInfo.window.removeEventListener("message", this.handleMessage), this.extraInfo.window &amp;&amp; this.extraInfo.window.removeEventListener("click", this.handleDocumentClick);
      },
      methods: {
        initReport: function initReport() {
          var _this3 = this;
          return asyncToGenerator( _regeneratorRuntime$1().mark(function _callee2() {
            return _regeneratorRuntime$1().wrap(function _callee2$(_context2) {
              while (1) switch (_context2.prev = _context2.next) {
                case 0:
                  _context2.next = 2;
                  return N$1();
                case 2:
                  _context2.next = 4;
                  return _this3.getShopCard();
                case 4:
                case "end":
                  return _context2.stop();
              }
            }, _callee2);
          }))();
        },
        reportExpose: function reportExpose() {
          var _this4 = this;
          return asyncToGenerator( _regeneratorRuntime$1().mark(function _callee3() {
            return _regeneratorRuntime$1().wrap(function _callee3$(_context3) {
              while (1) switch (_context3.prev = _context3.next) {
                case 0:
                  _context3.next = 2;
                  return _this4.report(r$5.CARD, I$2.EXPOSE);
                case 2:
                  _context3.next = 4;
                  return _this4.report(r$5.PRODUCT, I$2.EXPOSE);
                case 4:
                case "end":
                  return _context3.stop();
              }
            }, _callee3);
          }))();
        },
        report: function report(B, A, e) {
          var _this5 = this;
          return asyncToGenerator( _regeneratorRuntime$1().mark(function _callee4() {
            var g, w, o, u, G, Q, M, c, h, Y, p, T, i, E, t, a, F, z, _a, _F;
            return _regeneratorRuntime$1().wrap(function _callee4$(_context4) {
              while (1) switch (_context4.prev = _context4.next) {
                case 0:
                  if (!(_this5.platform !== "wechat")) {
                    _context4.next = 2;
                    break;
                  }
                  return _context4.abrupt("return");
                case 2:
                  _context4.next = 4;
                  return _this5.initReport();
                case 4:
                  i = {};
                  _context4.prev = 5;
                  _context4.next = 8;
                  return N$1();
                case 8:
                  i = _context4.sent;
                  _context4.next = 14;
                  break;
                case 11:
                  _context4.prev = 11;
                  _context4.t0 = _context4["catch"](5);
                  Log.error("getMPInfo fail ".concat(_context4.t0, "."), _context4.t0);
                case 14:
                  E = "";
                  B === r$5.CARD ? E = "shop_card" : B === r$5.PRODUCT &amp;&amp; (E = "commodity_card");
                  t = "";
                  if (A === I$2.CLICK ? t = "element_click" : A === I$2.EXPOSE &amp;&amp; (t = "element_valid_expose"), B === r$5.PRODUCT &amp;&amp; A === I$2.EXPOSE) {
                    a = _this5.products;
                    for (F = 0; F &lt; a.length; ++F) {
                      z = {
                        logid: "23782",
                        data: {
                          event: t,
                          params: JSON.stringify({
                            page_name: "mp_article_page",
                            element_name: E,
                            productid: a[F].product_id,
                            mp_article_bizuin: (g = i == null ? void 0 : i.article_info) == null ? void 0 : g.mp_biz,
                            mp_article_appmsgid: (w = i == null ? void 0 : i.article_info) == null ? void 0 : w.appmsgid,
                            mp_article_item_idx: (o = i == null ? void 0 : i.article_info) == null ? void 0 : o.item_idx,
                            mp_article_item_show_type: (u = i == null ? void 0 : i.article_info) == null ? void 0 : u.item_show_type,
                            scene: (G = i == null ? void 0 : i.article_info) == null ? void 0 : G.mp_article_scene,
                            cardtype: R$1,
                            appid: _this5.appid
                          })
                        }
                      };
                      O$5(z);
                    }
                  } else {
                    _a = "";
                    _typeof$2(e) &lt; "u" &amp;&amp; (_a = (M = (Q = _this5.products) == null ? void 0 : Q[e]) == null ? void 0 : M.product_id);
                    _F = {
                      logid: "23782",
                      data: {
                        event: t,
                        params: JSON.stringify({
                          page_name: "mp_article_page",
                          element_name: E,
                          productid: _a,
                          mp_article_bizuin: (c = i == null ? void 0 : i.article_info) == null ? void 0 : c.mp_biz,
                          mp_article_appmsgid: (h = i == null ? void 0 : i.article_info) == null ? void 0 : h.appmsgid,
                          mp_article_item_idx: (Y = i == null ? void 0 : i.article_info) == null ? void 0 : Y.item_idx,
                          mp_article_item_show_type: (p = i == null ? void 0 : i.article_info) == null ? void 0 : p.item_show_type,
                          scene: (T = i == null ? void 0 : i.article_info) == null ? void 0 : T.mp_article_scene,
                          cardtype: R$1,
                          appid: _this5.appid
                        })
                      }
                    };
                    O$5(_F);
                  }
                case 18:
                case "end":
                  return _context4.stop();
              }
            }, _callee4, null, [[5, 11]]);
          }))();
        },
        forceUpdateShopCard: function forceUpdateShopCard() {
          var _this6 = this;
          return asyncToGenerator( _regeneratorRuntime$1().mark(function _callee5() {
            return _regeneratorRuntime$1().wrap(function _callee5$(_context5) {
              while (1) switch (_context5.prev = _context5.next) {
                case 0:
                  _this6.forceUpdate = !0;
                  _context5.prev = 1;
                  _context5.next = 4;
                  return _this6.getShopCard();
                case 4:
                  _context5.next = 9;
                  break;
                case 6:
                  _context5.prev = 6;
                  _context5.t0 = _context5["catch"](1);
                  console.error(_context5.t0);
                case 9:
                  _this6.forceUpdate = !1;
                case 10:
                case "end":
                  return _context5.stop();
              }
            }, _callee5, null, [[1, 6]]);
          }))();
        },
        test: function test() {
          Log.log("test");
        },
        handleDocumentClick: function handleDocumentClick(B) {
          this.$refs.js_custom_element.contains(B.target) || this.$emit("document-click", B);
        },
        updateImagesSize: function updateImagesSize() {
          if (!this.$refs.products_container) return;
          var B = 6;
          this.isProductCard &amp;&amp; (B = 4);
          var e = this.$refs.products_container.offsetWidth;
          this.productWidth = (e - B * 2) / 3, this.isCrratedSetCard ? this.productHeight = this.productWidth * 0.676 : this.productHeight = this.productWidth;
        },
        getShopCard: function getShopCard() {
          var _this7 = this;
          return asyncToGenerator( _regeneratorRuntime$1().mark(function _callee6() {
            var B, A, e, i, E;
            return _regeneratorRuntime$1().wrap(function _callee6$(_context6) {
              while (1) switch (_context6.prev = _context6.next) {
                case 0:
                  if (!(!_this7.appid || !_this7.shopEncryptKey)) {
                    _context6.next = 2;
                    break;
                  }
                  return _context6.abrupt("return", Promise.reject({}));
                case 2:
                  if (!(_this7.requestinggetShopCardResp &amp;&amp; _this7.getShopCardPromise)) {
                    _context6.next = 4;
                    break;
                  }
                  return _context6.abrupt("return", _this7.getShopCardPromise);
                case 4:
                  if (!(_this7.getShopCardResp &amp;&amp; !_this7.forceUpdate)) {
                    _context6.next = 6;
                    break;
                  }
                  return _context6.abrupt("return", _this7.getShopCardResp);
                case 6:
                  _this7.requestinggetShopCardResp = !0;
                  B = _this7;
                  A = {};
                  _context6.prev = 9;
                  _context6.next = 12;
                  return N$1();
                case 12:
                  A = _context6.sent;
                  _context6.next = 18;
                  break;
                case 15:
                  _context6.prev = 15;
                  _context6.t0 = _context6["catch"](9);
                  Log.error("getMPInfo fail ".concat(_context6.t0, "."), _context6.t0);
                case 18:
                  e = (A == null ? void 0 : A.exportkey) || Url.getQuery("exportkey") || "", i = btoa(JSON.stringify((A == null ? void 0 : A.article_info) || {})), E = "/mmec/biz_getshopcard?appid=".concat(_this7.appid, "&amp;shop_encrypt_key=").concat(encodeURIComponent(_this7.shopEncryptKey), "&amp;exportkey=").concat(e, "&amp;cardtype=").concat(R$1, "&amp;article_info=").concat(i);
                  return _context6.abrupt("return", (_this7.getShopCardPromise = new Promise(function (t, g) {
                    ajax({
                      type: "GET",
                      url: E,
                      success: function success(w) {
                        if (typeof w == "string") try {
                          w = JSON.parse(w);
                        } catch (o) {
                          w = {}, Log.error("/mmec/biz_getshopcard parse res error. res=".concat(w, " err=").concat(o));
                        }
                        console.log("@@@@@ biz_getshopcard success", JSON.parse(JSON.stringify(w))), B.getShopCardResp = w, B.requestinggetShopCardResp = !1, setTimeout(function () {
                          B.updateImagesSize();
                        }), B.iframeLoading = !1, t();
                      },
                      error: function error(w) {
                        console.log("@@@@@ biz_getshopcard error", w), B.requestinggetShopCardResp = !1, B.iframeLoading = !1, console.error("getShopCard err", w), g(w);
                      }
                    });
                  }), _this7.getShopCardPromise));
                case 20:
                case "end":
                  return _context6.stop();
              }
            }, _callee6, null, [[9, 15]]);
          }))();
        },
        supportOpenEcs: function supportOpenEcs() {
          var _this8 = this;
          return asyncToGenerator( _regeneratorRuntime$1().mark(function _callee7() {
            return _regeneratorRuntime$1().wrap(function _callee7$(_context7) {
              while (1) switch (_context7.prev = _context7.next) {
                case 0:
                  if (!(_typeof$2(_this8._supportOpenEcs) &lt; "u")) {
                    _context7.next = 4;
                    break;
                  }
                  _context7.t0 = _this8._supportOpenEcs;
                  _context7.next = 8;
                  break;
                case 4:
                  _context7.next = 6;
                  return L();
                case 6:
                  _this8._supportOpenEcs = _context7.sent;
                  _context7.t0 = _this8._supportOpenEcs;
                case 8:
                  return _context7.abrupt("return", _context7.t0);
                case 9:
                case "end":
                  return _context7.stop();
              }
            }, _callee7);
          }))();
        },
        openJumpInfo: function openJumpInfo(B) {
          var _this9 = this;
          return asyncToGenerator( _regeneratorRuntime$1().mark(function _callee8() {
            var A, e;
            return _regeneratorRuntime$1().wrap(function _callee8$(_context8) {
              while (1) switch (_context8.prev = _context8.next) {
                case 0:
                  if (!(_this9.platform === "wechat")) {
                    _context8.next = 11;
                    break;
                  }
                  _context8.next = 3;
                  return L();
                case 3:
                  if (!_context8.sent) {
                    _context8.next = 8;
                    break;
                  }
                  _context8.next = 6;
                  return O$3(B);
                case 6:
                  _context8.next = 9;
                  break;
                case 8:
                  (A = window == null ? void 0 : window.weui) == null || A.toast("当前版本不支持打开店铺", {
                    extClass: "weui-toast_text"
                  });
                case 9:
                  _context8.next = 12;
                  break;
                case 11:
                  (e = window == null ? void 0 : window.weui) == null || e.toast("请在手机微信中打开", {
                    extClass: "weui-toast_text"
                  });
                case 12:
                case "end":
                  return _context8.stop();
              }
            }, _callee8);
          }))();
        },
        jumpShop: function jumpShop() {
          var _this10 = this;
          return asyncToGenerator( _regeneratorRuntime$1().mark(function _callee9() {
            return _regeneratorRuntime$1().wrap(function _callee9$(_context9) {
              while (1) switch (_context9.prev = _context9.next) {
                case 0:
                  _this10.openJumpInfo(_this10.shopJumpInfo), _this10.report(r$5.CARD, I$2.CLICK);
                case 1:
                case "end":
                  return _context9.stop();
              }
            }, _callee9);
          }))();
        },
        jumpProduct: function jumpProduct(B, A) {
          var _this11 = this;
          return asyncToGenerator( _regeneratorRuntime$1().mark(function _callee10() {
            return _regeneratorRuntime$1().wrap(function _callee10$(_context10) {
              while (1) switch (_context10.prev = _context10.next) {
                case 0:
                  _this11.openJumpInfo(B.detail_page_jump_info_base64_str || ""), _this11.report(r$5.PRODUCT, I$2.CLICK, A);
                case 1:
                case "end":
                  return _context10.stop();
              }
            }, _callee10);
          }))();
        },
        jumpBanner: function jumpBanner(B, A) {
          var _this12 = this;
          return asyncToGenerator( _regeneratorRuntime$1().mark(function _callee11() {
            var e, i, E, t, g;
            return _regeneratorRuntime$1().wrap(function _callee11$(_context11) {
              while (1) switch (_context11.prev = _context11.next) {
                case 0:
                  _context11.t0 = B.type;
                  _context11.next = _context11.t0 === 1 ? 3 : _context11.t0 === 2 ? 5 : _context11.t0 === 3 ? 8 : _context11.t0 === 4 ? 10 : 12;
                  break;
                case 3:
                  _this12.openJumpInfo((B == null ? void 0 : B.product.ecsJumpInfoBase64Str) || "");
                  return _context11.abrupt("break", 12);
                case 5:
                  g = {
                    current: B == null ? void 0 : B.imgUrl,
                    urls: [B == null ? void 0 : B.imgUrl],
                    forbidForward: window.isPaySubscribe ? 1 : 0
                  };
                  R$4.invoke("imagePreview", g, function (w) {
                    console.log("imagePreview response", w);
                  });
                  return _context11.abrupt("break", 12);
                case 8:
                  R$4.invoke("openFinderView", {
                    extInfo: {
                      action: "openFinderFeed",
                      feedID: (e = B == null ? void 0 : B.finderInfo) == null ? void 0 : e.feedId,
                      nonceID: ((i = B == null ? void 0 : B.finderInfo) == null ? void 0 : i.finderUsername) || "",
                      notGetReleatedList: 0,
                      shareScene: 25,
                      commentScene: 26,
                      requestScene: 27,
                      reportExtraInfo: JSON.stringify({})
                    }
                  }, function (g) {
                    console.info("openFinderView res: ".concat(JSON.stringify(g)));
                  });
                  return _context11.abrupt("break", 12);
                case 10:
                  console.log("@@@@@ openUrlWithExtraWebview url=".concat((E = B == null ? void 0 : B.mpInfo) == null ? void 0 : E.url)), openUrlWithExtraWebview((t = B == null ? void 0 : B.mpInfo) == null ? void 0 : t.url);
                  return _context11.abrupt("break", 12);
                case 12:
                case "end":
                  return _context11.stop();
              }
            }, _callee11);
          }))();
        },
        jumpSet: function jumpSet(B, A) {
          var _this13 = this;
          return asyncToGenerator( _regeneratorRuntime$1().mark(function _callee12() {
            return _regeneratorRuntime$1().wrap(function _callee12$(_context12) {
              while (1) switch (_context12.prev = _context12.next) {
                case 0:
                  console.log("jumpSet ".concat(B.jumpInfoBase64Str)), _this13.openJumpInfo(B.jumpInfoBase64Str || "");
                case 1:
                case "end":
                  return _context12.stop();
              }
            }, _callee12);
          }))();
        },
        formatPrice: function formatPrice(B) {
          return k$2(B);
        }
      }
    };
  var P$2 = function P() {
      var A = this,
        e = A._self._c;
      return e("div", {
        ref: "js_custom_element",
        staticClass: "wx_card_root mp_shopprofile_card_root"
      }, [A.iframeLoading ? e("div", {
        staticClass: "bluepacket_wx_img_placeholder",
        style: A.placeholderStyle
      }) : A.isShopStatusNormal ? e("div", {
        staticClass: "card_wrap",
        style: A.cardStyle
      }, [e("div", {
        staticClass: "card_head",
        style: A.cardHeadStyle
      }, [e("div", {
        staticClass: "head_left"
      }, [e("div", {
        staticClass: "head_img_wrap"
      }, [A.headImgUrl ? e("img", {
        staticClass: "head_img",
        attrs: {
          src: A.headImgUrl
        },
        on: {
          click: A.jumpShop
        }
      }) : A._e()]), e("div", {
        staticClass: "head_mid"
      }, [e("div", {
        staticClass: "head_mid_top",
        style: A.shopProfileNameStyle,
        on: {
          click: A.jumpShop
        }
      }, [A._v(A._s(A.shopProfileName))]), e("div", {
        staticClass: "head_mid_bottom",
        style: A.shopProfileDescStyle
      }, [A.brandIconUrl ? e("img", {
        staticClass: "r_icon",
        attrs: {
          src: A.brandIconUrl
        }
      }) : A._e(), A.brandTailWording ? e("div", {
        staticClass: "rtag_name"
      }, [A._v(A._s(A.brandTailWording))]) : A._e(), A.brandTailWording &amp;&amp; A.saleWording ? e("div", {
        staticClass: "rtag_break"
      }) : A._e(), A.saleWording ? e("div", {
        staticClass: "card_sales"
      }, [A._v(A._s(A.saleWording))]) : A._e()])])]), e("div", {
        staticClass: "head_right"
      }, [e("button", {
        staticClass: "tap_home_btn weui-btn weui-btn_default weui-btn_mini",
        style: A.jumpShopIconStyle,
        on: {
          click: A.jumpShop
        }
      }, [A._v("进店")])])]), e("div", {
        staticClass: "card_body_warp_banner"
      }, [A.isProductCard ? e("div", {
        ref: "products_container",
        staticClass: "product_card"
      }, A._l(A.products, function (i, E) {
        return e("div", {
          staticClass: "product",
          style: A.productStyle,
          on: {
            click: function click(t) {
              return A.jumpProduct(i, E);
            }
          }
        }, [i.img_url ? e("img", {
          staticClass: "product_image",
          style: A.pruductImgStyle,
          attrs: {
            src: i.img_url
          }
        }) : A._e(), e("div", {
          staticClass: "product_price"
        }, [A._v(" ¥" + A._s(A.formatPrice(i.selling_price)) + " ")])]);
      }), 0) : A.isBannerCard ? e("div", {
        ref: "products_container",
        staticClass: "banner_card"
      }, A._l(A.banners, function (i, E) {
        return e("div", {
          staticClass: "banner",
          style: {
            width: A.productWidth + "px"
          },
          on: {
            click: function click(t) {
              return A.jumpShop();
            }
          }
        }, [e("div", {
          staticClass: "banner_image_wrap",
          style: A.pruductImgStyle
        }, [e("div", {
          staticClass: "banner_mask"
        }), i.type === 1 ? e("img", {
          staticClass: "banner_type",
          attrs: {
            src: "https://mmec-shop-1258344707.cos.ap-shanghai.myqcloud.com/shop/public/2024-10-15/3a0875f8-2d03-46da-af4e-7041f8072b25.png"
          }
        }) : A._e(), i.type === 2 ? e("img", {
          staticClass: "banner_type",
          attrs: {
            src: "https://mmec-shop-1258344707.cos.ap-shanghai.myqcloud.com/shop/public/2024-10-15/6c6ade47-1e03-44bb-b47c-5135b5d3728d.png"
          }
        }) : A._e(), i.type === 3 ? e("img", {
          staticClass: "banner_type",
          attrs: {
            src: "https://mmec-shop-1258344707.cos.ap-shanghai.myqcloud.com/shop/public/2024-10-15/4ac5bbf0-7dd5-4403-9d48-eaddb2f6d83f.png"
          }
        }) : A._e(), i.type === 4 ? e("img", {
          staticClass: "banner_type",
          attrs: {
            src: "https://mmec-shop-1258344707.cos.ap-shanghai.myqcloud.com/shop/public/2024-10-15/6c6ade47-1e03-44bb-b47c-5135b5d3728d.png"
          }
        }) : A._e(), i.imgUrl ? e("img", {
          staticClass: "banner_image",
          style: A.pruductImgStyle,
          attrs: {
            src: i.imgUrl
          }
        }) : A._e()]), e("div", {
          staticClass: "banner_title_wrap",
          style: {
            backgroundColor: i.bgColor
          }
        }, [e("div", {
          staticClass: "banner_title"
        }, [A._v(A._s(i.title))])])]);
      }), 0) : A.isCrratedSetCard ? e("div", {
        ref: "products_container",
        staticClass: "curated_card"
      }, A._l(A.curatedSets, function (i, E) {
        return e("div", {
          staticClass: "curated",
          style: {
            width: A.productWidth + "px"
          },
          on: {
            click: function click(t) {
              return A.jumpSet(i, E);
            }
          }
        }, [e("div", {
          staticClass: "curated_image_wrap",
          style: A.curatedStyle
        }, [e("div", {
          staticClass: "mask-bg"
        }), e("img", {
          style: {
            width: A.productHeight - 22 + "px",
            height: A.productHeight - 22 + "px"
          },
          attrs: {
            src: "https://res.wx.qq.com/shop/public/2025-03-28/680acf97-edcd-4bff-877b-52652c7a0f8a.png"
          }
        }), e("img", {
          staticClass: "set_cover_img",
          style: {
            width: A.productHeight - 22 + "px",
            height: A.productHeight - 22 + "px"
          },
          attrs: {
            src: i.mainProductImg
          }
        }), e("img", {
          style: {
            width: A.productHeight - 22 + "px",
            height: A.productHeight - 22 + "px"
          },
          attrs: {
            src: "https://res.wx.qq.com/shop/public/2025-03-28/46f802c6-de67-45f3-966a-3d634fafa935.png"
          }
        })]), e("div", {
          staticClass: "desc_wrap"
        }, [e("span", {
          staticClass: "desc"
        }, [A._v(A._s(i.title))]), e("span", {
          staticClass: "count"
        }, [A._v(A._s(i.productCnt))])])]);
      }), 0) : A._e(), A._m(0)])]) : e("div", {
        staticClass: "card_wrap",
        style: A.cardStyle
      }, [e("div", {
        staticClass: "shop_status_desc"
      }, [A._v(A._s(A.statusDesc))])])]);
    },
    Z = [function () {
      var B = this,
        A = B._self._c;
      return A("div", {
        staticClass: "shop_icon_wrap"
      }, [A("div", {
        staticClass: "shop_icon"
      }), A("div", {
        staticClass: "shop_name"
      }, [B._v("小店")])]);
    }],
    K$2 = v$2(J$1, P$2, Z, !1, null, "d0ee4439", null, null);
  var X$1 = K$2.exports,
    v = ".wx_hover_card:before{content:\" \";position:absolute;top:0;left:0;right:0;bottom:0;border-radius:8px;box-sizing:border-box;border:1px solid rgba(7,193,96,.3);pointer-events:none;z-index:9}.wx_selected_card:before{content:\" \";position:absolute;top:0;left:0;right:0;bottom:0;border-radius:8px;border:1.5px solid #07C160;box-sizing:border-box;background:rgba(7,193,96,.1);pointer-events:none;z-index:9}body,.wx-root{--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #07C160;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0_5: rgba(0, 0, 0, .9);--weui-GLYPH-0: rgba(0, 0, 0, .9);--weui-GLYPH-1: rgba(0, 0, 0, .55);--weui-GLYPH-2: rgba(0, 0, 0, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #91D300;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #1485EE;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #95EC69;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #FA9D3B;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6467F0;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #FA5151;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .05);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #FFC300;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #FA9D3B;--weui-YELLOW: #FFC300;--weui-GREEN: #91D300;--weui-LIGHTGREEN: #95EC69;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1485EE;--weui-PURPLE: #6467F0;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #FA9D3B;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #10AEFF;--weui-REDORANGE: #FF6146;--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-BG-0: #ededed;--weui-BG-1: #f7f7f7;--weui-BG-2: #fff;--weui-BG-3: #f7f7f7;--weui-BG-4: #4c4c4c;--weui-BG-5: #fff;--weui-FG-0: rgba(0, 0, 0, .9);--weui-FG-HALF: rgba(0, 0, 0, .9);--weui-FG-1: rgba(0, 0, 0, .55);--weui-FG-2: rgba(0, 0, 0, .3);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-FG-5: rgba(0, 0, 0, .05);--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #fa9d3b;--weui-YELLOW: #ffc300;--weui-GREEN: #91d300;--weui-LIGHTGREEN: #95ec69;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1485ee;--weui-PURPLE: #6467f0;--weui-WHITE: #fff;--weui-LINK: #576b95;--weui-TEXTGREEN: #06ae56;--weui-FG: #000;--weui-BG: #fff;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: #fa9d3b;--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: #06ae56;--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: #10aeff;--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05);--weui-REDORANGE: #ff6146}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2c2c2c;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-FG-5: rgba(255, 255, 255, .1);--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-FG: #fff;--weui-BG: #000;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-REDORANGE: #ff6146}}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2c2c2c;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-FG-5: rgba(255, 255, 255, .1);--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-FG: #fff;--weui-BG: #000;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-REDORANGE: #ff6146}.wx-root[data-weui-mode=care],body[data-weui-mode=care]{--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #007DBB;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #018942;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0_5: #000000;--weui-GLYPH-0: #000000;--weui-GLYPH-1: rgba(0, 0, 0, .6);--weui-GLYPH-2: rgba(0, 0, 0, .42);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #4F8400;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #0075E2;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #2E8800;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #E17719;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #D14730;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6265F1;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #DC3636;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .1);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #BB8E00;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-RED: #DC3636;--weui-ORANGERED: #D14730;--weui-ORANGE: #E17719;--weui-YELLOW: #BB8E00;--weui-GREEN: #4F8400;--weui-LIGHTGREEN: #2E8800;--weui-TEXTGREEN: #06AE56;--weui-BLUE: #007DBB;--weui-INDIGO: #0075E2;--weui-PURPLE: #6265F1;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #E17719;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #007DBB;--weui-REDORANGE: #D14730;--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-BG-0: #ededed;--weui-BG-1: #f7f7f7;--weui-BG-2: #fff;--weui-BG-3: #f7f7f7;--weui-BG-4: #4c4c4c;--weui-BG-5: #fff;--weui-FG-0: #000000;--weui-FG-HALF: #000000;--weui-FG-1: rgba(0, 0, 0, .6);--weui-FG-2: rgba(0, 0, 0, .42);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-FG-5: rgba(0, 0, 0, .05);--weui-RED: #dc3636;--weui-ORANGERED: #d14730;--weui-ORANGE: #e17719;--weui-YELLOW: #bb8e00;--weui-GREEN: #4f8400;--weui-LIGHTGREEN: #2e8800;--weui-BRAND: #018942;--weui-BLUE: #007dbb;--weui-INDIGO: #0075e2;--weui-PURPLE: #6265f1;--weui-WHITE: #fff;--weui-LINK: #576b95;--weui-TEXTGREEN: #06ae56;--weui-FG: #000;--weui-BG: #fff;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: #e17719;--weui-TAG-BACKGROUND-ORANGE: rgba(225, 119, 25, .1);--weui-TAG-TEXT-GREEN: #06ae56;--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: #007dbb;--weui-TAG-BACKGROUND-BLUE: rgba(0, 125, 187, .1);--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05);--weui-REDORANGE: #d14730}@media (prefers-color-scheme: dark){.wx-root[data-weui-mode=care]:not([data-weui-theme=light]),body[data-weui-mode=care]:not([data-weui-theme=light]){--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2c2c2c;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-FG-5: rgba(255, 255, 255, .1);--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-FG: #fff;--weui-BG: #000;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-REDORANGE: #ff6146}}.wx-root[data-weui-mode=care][data-weui-theme=dark],body[data-weui-mode=care][data-weui-theme=dark]{--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2c2c2c;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-FG-5: rgba(255, 255, 255, .1);--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-FG: #fff;--weui-BG: #000;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-REDORANGE: #ff6146}.wx-root,body{--weui-BG-COLOR-ACTIVE: #ececec}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-COLOR-ACTIVE: #373737}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-COLOR-ACTIVE: #373737}}body,.wx-root,page{--weui-BTN-HEIGHT: 48;--weui-BTN-HEIGHT-MEDIUM: 40;--weui-BTN-HEIGHT-SMALL: 32}.wx-root,body{--weui-BTN-ACTIVE-MASK: rgba(0, 0, 0, .1)}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BTN-ACTIVE-MASK: rgba(255, 255, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BTN-ACTIVE-MASK: rgba(255, 255, 255, .1)}}.wx-root,body{--weui-BTN-DEFAULT-ACTIVE-BG: #e6e6e6}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BTN-DEFAULT-ACTIVE-BG: rgba(255, 255, 255, .126)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BTN-DEFAULT-ACTIVE-BG: rgba(255, 255, 255, .126)}}.wx-root,body{--weui-DIALOG-LINE-COLOR: rgba(0, 0, 0, .1)}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-DIALOG-LINE-COLOR: rgba(255, 255, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-DIALOG-LINE-COLOR: rgba(255, 255, 255, .1)}}.weui-btn{position:relative;display:block;width:184px;margin-left:auto;margin-right:auto;padding:12px 24px;box-sizing:border-box;font-weight:500;font-size:17px;text-align:center;text-decoration:none;color:#fff;line-height:1.41176471;border-radius:8px;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;-moz-user-select:none;user-select:none}.weui-btn:active:before{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background-color:var(--weui-BTN-ACTIVE-MASK);border-radius:8px}.weui-btn:active.weui-btn_loading:before,.weui-btn:active.weui-btn_disabled:before,.weui-btn:active[disabled]:before{display:none}.weui-btn_block{width:auto}.weui-btn_inline{display:inline-block}.weui-btn_default{color:var(--weui-FG-0);background-color:var(--weui-FG-5)}.weui-btn_default:not(.weui-btn_disabled):visited{color:var(--weui-FG-0)}.weui-btn_primary{background-color:var(--weui-BRAND)}.weui-btn_primary:not(.weui-btn_disabled):visited{color:#fff}.weui-btn_warn{color:var(--weui-RED);background-color:var(--weui-FG-5)}.weui-btn_warn:not(.weui-btn_disabled):visited{color:var(--weui-RED)}.weui-btn_overlay{color:var(--weui-BRAND);background-color:#fff}.weui-btn_overlay:not(.weui-btn_disabled):visited{color:var(--weui-BRAND)}.weui-btn_disabled,.weui-btn[disabled]{color:var(--weui-FG-4);background-color:var(--weui-BG-1)}.weui-btn_loading .weui-loading{margin:-.2em 8px 0 0}.weui-btn_loading .weui-mask-loading{margin:-.2em 8px 0 0;color:currentColor}.weui-btn_loading .weui-primary-loading{margin:-.2em 8px 0 0;vertical-align:middle;color:currentColor}.weui-btn_loading .weui-primary-loading:before{content:\"\"}.weui-btn_loading.weui-btn_primary{color:var(--weui-WHITE)}.weui-btn_cell{position:relative;display:block;margin-left:auto;margin-right:auto;box-sizing:border-box;font-size:17px;text-align:center;text-decoration:none;color:#fff;line-height:1.41176471;padding:16px;-webkit-tap-highlight-color:rgba(0,0,0,0);overflow:hidden;background-color:var(--weui-BG-5)}.weui-btn_cell+.weui-btn_cell{margin-top:16px}.weui-btn_cell:active{background-color:var(--weui-BG-COLOR-ACTIVE)}.weui-btn_cell__icon{display:inline-block;vertical-align:middle;width:24px;height:24px;margin:-.2em .34em 0 0}.weui-btn_cell-default{color:var(--weui-FG-0)}.weui-btn_cell-primary{color:var(--weui-LINK)}.weui-btn_cell-warn{color:var(--weui-RED)}.weui-bottom-fixed-opr-page{height:100%;display:flex;flex-direction:column}.weui-bottom-fixed-opr-page__content{min-height:0;flex:1;padding-bottom:80px;box-sizing:border-box;overflow-y:auto;-webkit-overflow-scrolling:touch}.weui-bottom-fixed-opr-page__tool{padding:16px 32px 24px;padding:16px calc(32px + constant(safe-area-inset-right)) calc(24px + constant(safe-area-inset-bottom)) calc(32px + constant(safe-area-inset-left));padding:16px calc(32px + env(safe-area-inset-right)) calc(24px + env(safe-area-inset-bottom)) calc(32px + env(safe-area-inset-left));background:#ffffff;position:relative;z-index:50}.weui-bottom-fixed-opr-page__tool:before{content:\"\";height:80px;background:linear-gradient(to top,#ffffff,rgba(255,255,255,0));position:absolute;bottom:calc(100% - 1px);left:0;right:0;transform:translateZ(0);pointer-events:none}.wx-root[data-weui-theme=dark] .weui-bottom-fixed-opr-page__tool,body[data-weui-theme=dark] .weui-bottom-fixed-opr-page__tool{background:#191919}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]) .weui-bottom-fixed-opr-page__tool,body:not([data-weui-theme=light]) .weui-bottom-fixed-opr-page__tool{background:#191919}}.wx-root[data-weui-theme=dark] .weui-bottom-fixed-opr-page__tool:before,body[data-weui-theme=dark] .weui-bottom-fixed-opr-page__tool:before{background:linear-gradient(to top,#191919,rgba(25,25,25,0))}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]) .weui-bottom-fixed-opr-page__tool:before,body:not([data-weui-theme=light]) .weui-bottom-fixed-opr-page__tool:before{background:linear-gradient(to top,#191919,rgba(25,25,25,0))}}.weui-bottom-fixed-opr-page__tips{margin-bottom:24px;padding:0 32px;text-align:center}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr{display:flex;align-items:center;justify-content:center}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn{width:184px;padding-left:16px;padding-right:16px}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2),.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn{margin:0 8px;width:136px}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2):first-child,.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn:first-child{margin-left:0}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2):last-child,.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn:last-child{margin-right:0}.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr{flex-direction:column}.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2),.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn{width:184px;margin:16px 0 0}.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2):first-child,.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn:first-child{margin-top:0}.weui-bottom-fixed-opr-page.weui-form{padding-top:0}.weui-bottom-fixed-opr-page.weui-form .weui-form__bd{padding-top:56px;padding-top:calc(56px + constant(safe-area-inset-top));padding-top:calc(56px + env(safe-area-inset-top))}.weui-bottom-fixed-opr-page.weui-form .weui-form__ft{padding-bottom:0}.weui-bottom-fixed-opr-page.weui-form .weui-form__control-area{margin-bottom:0}.weui-bottom-fixed-opr-page.weui-half-screen-dialog{padding:0}.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__hd,.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__bd,.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__ft{padding-left:24px;padding-left:calc(24px + constant(safe-area-inset-left));padding-left:calc(24px + env(safe-area-inset-left));padding-right:24px;padding-right:calc(24px + constant(safe-area-inset-right));padding-right:calc(24px + env(safe-area-inset-right))}.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__bd{padding-bottom:80px}.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__ft{padding-bottom:64px;padding-bottom:calc(64px + constant(safe-area-inset-bottom));padding-bottom:calc(64px + env(safe-area-inset-bottom))}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog{padding:0}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-half-screen-dialog__hd{padding:0 24px;padding:0 calc(24px + constant(safe-area-inset-right)) 0 calc(24px + constant(safe-area-inset-left));padding:0 calc(24px + env(safe-area-inset-right)) 0 calc(24px + env(safe-area-inset-left))}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-half-screen-dialog__bd{padding-bottom:0;display:flex;flex-direction:column}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-half-screen-dialog__ft{padding:0}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-bottom-fixed-opr-page{flex:1;min-height:0}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-bottom-fixed-opr-page__content{padding:0 24px;padding:0 calc(24px + constant(safe-area-inset-right)) 0 calc(24px + constant(safe-area-inset-left));padding:0 calc(24px + env(safe-area-inset-right)) 0 calc(24px + env(safe-area-inset-left))}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-bottom-fixed-opr{padding:16px 0 64px;padding:16px 0 calc(64px + constant(safe-area-inset-bottom));padding:16px 0 calc(64px + env(safe-area-inset-bottom))}button.weui-btn,input.weui-btn{border-width:0;outline:0;-webkit-appearance:none}button.weui-btn:focus,input.weui-btn:focus{outline:0}button.weui-btn_inline,input.weui-btn_inline,button.weui-btn_mini,input.weui-btn_mini{width:auto}.weui-btn_medium{font-size:14px;padding:10px 24px;line-height:calc((var(--weui-BTN-HEIGHT-MEDIUM) - 20) / 14)}.weui-btn_mini{display:inline-block;width:auto;line-height:calc((32 - 12) / 14);padding:6px 12px;font-size:14px;border-radius:6px}.weui-btn_xmini{display:inline-block;width:auto;padding:4px 12px;line-height:calc((28 - 8) / 14);font-size:14px;font-weight:500;border-radius:4px}.weui-btn+.weui-btn{margin-top:16px}.weui-btn.weui-btn_mini+.weui-btn.weui-btn_mini{margin-top:auto}.weui-btn.weui-btn_xmini+.weui-btn.weui-btn_xmini{margin-top:auto}.weui-btn.weui-btn_inline+.weui-btn.weui-btn_inline{margin-left:16px}.weui-btn-area{margin:48px 16px 8px}.weui-btn-area_inline{display:flex}.weui-btn-area_inline .weui-btn{margin-top:auto;margin-right:16px;width:100%;flex:1}.weui-btn-area_inline .weui-btn:last-child{margin-right:0}.weui-btn_reset{background:transparent;border:0;padding:0;outline:0;font-size:inherit}.weui-btn_icon{background:transparent;border:0;padding:0;outline:0;font-size:0}.weui-btn_icon:active [class*=weui-icon-]{color:var(--weui-FG-1)}.bluepacket_wx_img_placeholder{width:100%;background:var(--weui-BG-2, rgba(0, 0, 0, .02)) url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='80px' height='80px' viewBox='0 0 80 80' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3E9.\u5143\u7D20/\u52A0\u8F7D/Black%3C/title%3E%3Cdefs%3E%3ClinearGradient x1='94.0869141%25' y1='0%25' x2='94.0869141%25' y2='90.559082%25' id='linearGradient-1'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.67370605%25' x2='100%25' y2='90.6286621%25' id='linearGradient-2'%3E%3Cstop stop-color='%23606060' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cg id='\u9875\u9762-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' opacity='0.9'%3E%3Cg id='LoadingDefault'%3E%3Cpath d='M40,0 C62.09139,0 80,17.90861 80,40 C80,62.09139 62.09139,80 40,80 L40,73 C58.2253967,73 73,58.2253967 73,40 C73,21.7746033 58.2253967,7 40,7 L40,0 Z' id='\u8DEF\u5F84' fill='url(%23linearGradient-1)'%3E%3C/path%3E%3Cpath d='M40,0 L40,7 C21.7746033,7 7,21.7746033 7,40 C7,58.2253967 21.7746033,73 40,73 L40,80 C17.90861,80 0,62.09139 0,40 C0,17.90861 17.90861,0 40,0 Z' id='\u8DEF\u5F84' fill='url(%23linearGradient-2)'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23606060' cx='40.5' cy='3.5' r='3.5'%3E%3C/circle%3E%3C/g%3E%3CanimateTransform attributeName='transform' begin='0s' dur='1s' type='rotate' values='0 40 40;360 40 40' repeatCount='indefinite'/%3E%3C/g%3E%3C/svg%3E%0A\") no-repeat 50% 50%!important;background-size:16px!important;border-radius:8px}.wx_card_root{display:flex;flex-direction:column;-webkit-user-select:none;-moz-user-select:none;user-select:none;align-items:center;position:relative}.wx_card_root img{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.wx_card_root .card_wrap{width:100%;border-radius:8px;padding:0;margin:0;box-sizing:content-box;background-color:#00000005;position:relative;overflow:hidden}.wx_card_root .card_wrap .card_head{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:16px 16px 22px}.wx_card_root .card_wrap .card_head .head_left{display:flex}.wx_card_root .card_wrap .card_head .head_left .head_img_wrap{margin-right:8px;width:44px;height:44px}.wx_card_root .card_wrap .card_head .head_left .head_img_wrap .head_img{width:44px;height:44px;border-radius:36px}.wx_card_root .card_wrap .card_head .head_left .head_mid{display:flex;flex-direction:column}.wx_card_root .card_wrap .card_head .head_left .head_mid .head_mid_top{font-size:15px;font-family:PingFang SC;font-weight:500;color:var(--weui-GLYPH-WHITE-3, #ffffff);line-height:21px;word-break:break-all;margin-right:4px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;margin-top:2.5px}.wx_card_root .card_wrap .card_head .head_left .head_mid .head_mid_bottom{display:flex;align-items:center;margin-top:2px;font-weight:400;color:var(--weui-GLYPH-WHITE-0, rgba(255, 255, 255, .55))}.wx_card_root .card_wrap .card_head .head_left .head_mid .head_mid_bottom .r_icon{width:14px;height:14px}.wx_card_root .card_wrap .card_head .head_left .head_mid .head_mid_bottom .rtag_name{font-size:12px;font-family:PingFang SC;margin-left:2px}.wx_card_root .card_wrap .card_head .head_left .head_mid .head_mid_bottom .rtag_break{width:1px;height:10px;background-color:var(--weui-SECONDARY_BG, rgba(255, 255, 255, .1));margin:0 6px}.wx_card_root .card_wrap .card_head .head_left .head_mid .head_mid_bottom .card_sales{font-family:PingFang SC;font-style:normal;text-align:justify;line-height:16px;font-size:12px;word-break:break-all}.wx_card_root .card_wrap .card_head .head_right .tap_home_btn{white-space:nowrap;align-items:center;min-width:54px;min-height:32px;color:#fffc;background-color:#ffffff4d}.wx_card_root .card_wrap .card_body_warp_banner{border-top-left-radius:8px;border-top-right-radius:8px;background-color:var(--weui-BG-1, #F7F7F7);margin-top:-6px;overflow:hidden;padding:16px 16px 8px}.wx_card_root .card_wrap .card_body_warp_banner .product_card{display:flex;width:100%}.wx_card_root .card_wrap .card_body_warp_banner .product_card .product{position:relative;height:100%}.wx_card_root .card_wrap .card_body_warp_banner .product_card .product .product_image{width:100%;border-radius:4px;background-size:cover;background-position:center}.wx_card_root .card_wrap .card_body_warp_banner .product_card .product .product_price{background-color:#0003;border-radius:2px;position:absolute;right:4px;bottom:4px;padding-left:3px;padding-right:3px;font-weight:400;color:var(--weui-GLYPH-WHITE-3, #ffffff);line-height:16.8px;font-family:WeChatSansStd-Medium;line-height:normal;font-size:14px;background-size:cover;background-position:center}@font-face{font-family:WeChatSansStd-Medium;src:url(data:application/octet-stream;base64,AAEAAAAOAIAAAwBgRFNJRwAAAAEAAADsAAAACEdERUYADwAAAAAA9AAAABBHUE9TvXTGagAAAQQAAAHKR1NVQhoeGpMAAALQAAAAfk9TLzJrL1pnAAADUAAAAGBjbWFwQHbxEAAAA7AAAAIWZ2x5Zvo1siwAAAXIAAAcqGhlYWQOn2bVAAAicAAAADZoaGVhBu4DIwAAIqgAAAAkaG10eNhnFGQAACLMAAABimxvY2E/+0eGAAAkWAAAAMhtYXhwANIAUwAAJSAAAAAgbmFtZVIudTIAACVAAAAI3nBvc3Tpjfc4AAAuIAAAAbAAAAABAAAAAAABAAAADAAAAAAAAAACAAAAAQAAAAoAHgAwAAFERkxUAAgABAAAAAD//wABAAAAAWtlcm4ACAAAAAMAAAABAAIAAwAIABAAGgACAAgAAQAaAAIACAACALwA8gACAAgAAQEEAAEBDgAEAAAACwAgACYALAA2ADwARgBQAG4AdACSAKQAAQA9//gAAQA///kAAgA9//QAP//2AAEAPf/1AAIAP//yAEH/9gACAD3/7gA//+kABwA4/+4AOf/0ADr/1gA8/90APv/yAD//7wBB/+IAAQA9/+4ABwA4/+4AOf/mADr/7gA7//YAPP/hAD3/7wBB/+IABAA3/+8AOv/yAD3/6gA//+gAAQBhAAAAAQB+AAQAAAAFABQAGgAgACoAMAABABb/+wABAAQAAAACAAL/+gAFAAAAAQAa//YAAQAY//gAAgBWAAQAAABsAHwAAgADAAD/qAAAAAAAAP+oAAEASgAEAAAAAQAMAAEASAAAAAEACwA2ADgAOQA6ADsAPAA9AD4APwBBAFsAAQAFAAIAAwAEABEAEwABAAYAAgAXABgAHAAxADIAAQABAEMAAgACABcAGAABADEAMgABAAIABAACAAIAAgAXABgAAQAcABwAAgAxADIAAQAAAAEAAAAKACAAOgABREZMVAAIAAQAAAAA//8AAgAAAAEAAmFhbHQADmZ3aWQAFAAAAAEAAAAAAAEAAQACAAYADgABAAAAAQAgAAEAAAABAAgAAgAgAAUAXABdAF4AXwBgAAIAEAAFAFwAXQBeAF8AYAABAAUARQBIAFcAWgBbAAAAAwI0AfQABQAIAooCWAAAAEsCigJYAAABXgAyATAAAAAABgAAAAAAAAAAAAABAAAAAgAAAAAAAAAASE5ZSQAAACD/5gOE/zMAAAOEAM0AAAEAAAAAAAH7AsgAAAAgAAIAAAADAAAAAwAAASIAAQAAAAAAHAADAAEAAAEiAAABBgAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAASAAAAAAAAGFAQkEANjc4OTo7PD0+PwAAAAAAAAACAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGwAAAAAAABwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARVcAAAAAAAAAAAAAAAAAAAAAWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAPQAAAAqACAABAAKACAAJAAuADkAWgB6AKUOPyChIKYgriCyILUguiC+IhL+af8E/+H/5v//AAAAIAAkACsAMABBAGEAog4/IKEgpiCpILEgtCC4ILwiEv5p/wT/4P/l////4QAkAAAABv/B/7sAAPIE36XfrAAAAAAAAAAAAADeUAAAAAAAAAAAAAEAAAAAACYAAAAAAAAAJgAAAAAAAAAmADAAMgA0ADgAAAA6ADoAOgA8AAAAYQBAAEIAQQBFAFcARwBbAFoAVgBKAEsATgBZAFMATABNAEQAWABVAFAAUQBUAE8ASQBdAFwAXgBgAF8AAAACAEgAAAIQAsgAAwAHAAATIREhJREhEUgByP44AXT+4ALI/ThNAi790gAAAAIAFAAAAnMCyAAHAAsAACUjByMTMxMjAwMjAwG57EN28nn0d2NUBFTS0gLI/TgBNAEI/vgAAAAAAwBKAAACKALIAA8AGAAhAAATMzIWFRQGBxUWFhUUBiMjEzI2NTQmIyMVEzI2NTQmIyMVSsl8ikMzOE2Lhc7NRk1QS1diTVJTQ2sCyGRaO1IPAw5VQl5oAZoyMTM1y/7ENzU1ONkAAAABAED/8gI0AtQAHQAANhYWMzI2NxcGIyImJjU1NDY2MzIXByYmIyIGBhUVrixQNSlEIUdZglR/RkZ/VIJZRyBFKTRRLPRlNyAhRmFNi1x5XIxNYUciIDdlQloAAAIASgAAAkQCyAAJABMAABMzMhYVFRQGIyM3MjY1NTQmIyMRSuSFkZGF5NlWXVxXawLIlpF6kZZjaWtaa2n9/gABAEoAAAIDAsgACwAAEyEVIRUhFSEVIRUhSgG5/rUBG/7lAUv+RwLIY8tj1GMAAAABAEoAAAIDAsgACQAAEyEVIRUhFSERI0oBuf61ARv+5W4CyGPLY/7JAAAAAAEAQP/yAk8C1AAhAAATNDY2MzIXByYjIgYGFRUUFhYzMjY1NSM1IRUUBiMiJiY1QEZ9UoZZSUJPMk4sKUovRk2VAQGGeVF7RAGfW41NYUQ/OGVBWkJlN19OIl9siKBNi1wAAAABAEoAAAJTAsgACwAAAREjESERIxEzESERAlNu/tNubgEtAsj9OAE8/sQCyP7WASoAAAAAAQBKAAAAuALIAAMAABMzESNKbm4CyP04AAAAAAEAGP/yAZkCyAAOAAABMxEUBiMiJic3FjMyNjUBLG1mWj5lHlQsPCkvAsj98F1pSDstSjk0AAAAAQBKAAACZQLIAAoAACEBESMRMxEBMwEBAdv+3W5uARyF/tMBOQFh/p8CyP68AUT+r/6JAAEASgAAAfYCyAAFAAATMxEhFSFKbgE+/lQCyP2bYwAAAQBKAAAC3ALIAA8AABMzEzMTMxEjESMDIwMjESNKk7YEs5JrBbFQsgRrAsj+KgHW/TgCJ/44Acj92QAAAQA/AAACQALIAAsAABMBMxEzESMBIxEjEb4BEQRtfv7vBW0CyP32Agr9OAIK/fYCyAAAAAIAOf/yAlIC1AARACAAABM0NjYzMhYWFRUUBgYjIiYmNRYWMzI2NTU0JiYjIgYVFTlDelBQeUNDeVBQekNtWEhHWChIL0hYAaBci01Ni1yAWolLS4laW21tWYQ8XTNwXIQAAAACAEoAAAI2AsgACgATAAATMzIWFRQGIyMRIxMyNjU0JiMjFUrjfYyTg2huzk9aWVBgAsh3amp4/vsBakI7PEL7AAAAAAIAOf+JAnkC1AAVACQAAAUnBiMiJiY1NTQ2NjMyFhYVFRQGBxcmNjU1NCYmIyIGFRUUFjMCJGIzQVJ+RUN6UFB5QyAfZuxYKEgvSFhYSHeBGEqJW4Bci01Ni1yAQG0og5BtWYQ8XTNwXIRZbQAAAAACAEoAAAJLAsgADQAWAAAhAyMRIxEzMhYVFAYHEwEzMjY1NCYjIwHLtl1u23WEUEnG/m1fRlBPR18BLf7TAshtYUhjFP7FAZI3MDM5AAAAAAEALP/yAgEC1AAkAAAWJic3FhYzMjY1NCcmJjU0NjYzMhYXByYjIgYVFBcWFhUUBgYjy3gnRB5VLTVLgGltPGY/P3QqSEBPNUN/bG1AbUIOMyhMHyI5Kk0oIGdNPF81Mi9EPzcsSCghaU88XzUAAAABABcAAAIKAsgABwAAEyM1IRUjESPawwHzwm4CZWNj/ZsAAAABAD7/8gI5AsgAEQAAFiY1ETMRFBYzMjY1ETMRFAYjxYduTERDTG6Gdw6UhQG9/jxSXV1SAcT+Q4SVAAABAB0AAAJfAsgABwAAEzMTMxMzAyMddqkEqXbkeQLI/cwCNP04AAAAAQAdAAADcALIAA8AABMzEzMTMxMzEzMDIwMjAyMde3YEfHN9BHR6tXZ8BH10Asj93gIi/d4CIv04AiL93gAAAAEAEQAAAoACyAALAAAhAwMjEwMzExMzAxMB96+uie7hhKang+DuAR/+4QF3AVH++wEF/q/+iQAAAQAOAAACVALIAAgAABsCMwMRIxEDkKGhgu1t7ALI/tcBKf5t/ssBNQGTAAABACwAAAIcAsgACQAANwEhNSEVASEVISwBWv62Adf+pQFk/hBRAhRjUf3sYwAAAAACABQAzQHgAsoABwALAAABIwcjEzMTIycnIwcBTqgrZ7FpsmdHNwM3AVOGAf3+A9uqqgAAAwBKAM0BwQLIAA8AGAAhAAATMzIWFRQGBxUWFhUUBiMjEzI2NTQmIyMVFzI2NTQmIyMVSp5ibDAmKzZtaKKgMzg6NT1FNzw6NkgCyEc/KDwLAgs+LkNKAScjIiIki94lJCUnlQAAAAABAEAAwQGyAtcAGQAANiYmNTU0NjYzMhcHJiMiBhUVFBYzMjcXBiPRXjMzXj5kPz8pNjVAQDU3KD8+ZcE4ZUJYQmU4SjoqUEI/QlAqOkkAAAIASgDNAcQCyAAJABMAABMzMhYVBxQGIyM3MjY1NTQmIyMRSqtjbAFsYqujOj4+OkQCyG5mU2ZuVkRFPEVF/rEAAAAAAQBKAM0BjwLIAAsAAAEVIxUzFSMVMxUhEQGP5sPD5v67AshQhFCHUAH7AAABAEoAzQGPAsgACQAAARUjFTMVIxUjEQGP5sPDXwLIUI9QzAH7AAAAAQBAAMMBzgLWAB8AABI2NjMyFwcmIyIGFRUUFjMyNjU1IzUzFRQGIyImJjU1QDRePmlBPCs9NkJAMSw3asZnWD5eMwI4ZjhNQDNRQjpCUDguFVNOZnQ4ZUJUAAABAEoAzQHbAsgACwAAAREjNSMVIxEzFTM1Adte1F9f1ALI/gXX1wH7zs4AAAEASgDNAKkCyAADAAATESMRqV8CyP4FAfsAAAABABgAwwFCAsgADwAAAREUBiMiJic3FhYzMjY1EQFCTkYxTxZJESIUHCACyP6RR086LyUcGSUiAWUAAAABAEoAzQHfAsgACgAAJScVIxEzFTczBxMBaL9fX7xzytHN9/cB++bm8f72AAEASgDNAYUCzAAFAAATETMVIRGp3P7FAsz+V1YB/wAAAQBKAM0CNwLIAA8AABMTMxMzESMRIwMjAyMRIxHJeAN1fl0DdER1A10CyP7JATf+BQFv/tUBK/6RAfsAAQBKAM0B1wLMAAsAAAEzETMRIwMjESMRMwF1A19nwgVfaAFyAVr+AQFZ/qcB/wAAAgA5AMABywLXABEAHwAAEjY2MzIWFhUVFAYGIyImJjU1FhYzMjY1NTQmIyIGFRU5Mls8PFsyMls8PFsyXzowMDo6MDA6AjdnOTlnQ1dCZDc3ZEJXlUZGOl89SEk8XwAAAgBKAM0BuALIAAoAEwAAEzIWFRQGIyMVIxEWNjU0JiMjFTP3WmdtYEJfzzg4NDw8AshYTk9YrgH79SkmJiqfAAIAOQB2AfAC1wAUACIAACUnBiMiJiY1NTQ2NjMyFhYVFRQHFyQWMzI2NTU0JiMiBhUVAadIKDU8WzIyWzw8WzInTP6oOjAwOjowMDp2XxU3ZEJXQ2c5OWdDV1I6ZbNGRjpfPUhJPF8AAgBKAM0BzALKAA0AFgAAJScjFSMRMzIWFRQGBxcBMzI2NTQmIyMBXHg7X6tXYDUxhv7dQi4xMS5CzczMAf1QSDNHEdoBHyYhIiYAAAEALADBAYwC1wAmAAA2Jic3FhYzMjY1NCYnJiY1NDY2MzIWFwcmIyIGFRQWFxYWFRQGBiOhVSA3FjwgJDApKlJRLE4xL1IfNTE4ICsmLFRRMlUywSMcRBcaJRsbJA0ZTjsrRCcgIEQvIhocIQ4ZSz4tRSYAAQAXAM0BnwLOAAcAABM1IRUjESMRFwGIlF8CeFZW/lUBqwAAAQA+AMEBzQLKABMAADYmJjUTMxEUFjMyNjURMxEUBgYjy1syAV46Ly86XjJaO8EyXDsBQP7HOERFNwE5/sA7XDIAAAABAB0AzQHWAsgABwAAExMzEzMDIwOFcwNzaKhqpwLI/oMBff4FAfsAAQAdAM0CmwLIAA8AABMTMxMzEzMTMwMjAyMDIwOJSQNVZFUDSWyEZVQEU2aEAsj+lQFr/pUBa/4FAWv+lQH7AAEAEQDNAeECyAALAAAlJwcjEyczFzczBxMBanBxeKihc29ucqGozcDAAQ3ura3u/vMAAAABAA4AzQHCAsgACAAAEzczAxUjNQMz6Ghyq1+qcQH9y/7d2NgBIwAAAQAsAM0BmwLIAAkAAAEjNSEVAzMVITUBGeEBXO30/pECclZF/qBWRQAAAAACAED/8gH1AtYADQAXAAAWJjU1NDYzMhYVFRQGIzY1NTQjIhUVFDOubm5tbG5ubG1tbW0OmpiElpiYloSYmmjGjMLCjMYAAAABAAsAAAE6AsgABgAAEwcnNzMRI8yFPMplbgI7Y1aa/TgAAAABAD0AAAH8AtYAGQAANxM2NjU0JiMiBgcnNjYzMhYWFRQGBwchFSE99jAmOi0rRxhaInZROl83Mj6yASf+QVMBETZRJSk0PTYxUFsyWDc2b0THZQABADj/8gIFAsgAHQAANxYWMzI2NTQmIyIHNTcjNSEVBzYWFhUUBgYjIiYnjBlHKTlJT0YpJZv9AYurPWA2PGtFRnUmrScrRzU8PAhbvWlYxwMxYENCaTtCPAAAAAIAGAAAAhACyAAKAA0AACUhNQEzETMVIxUjNREDAU/+yQEtd1RUbcKZRAHr/ihXmfABQP7AAAAAAQAx//ICBALIAB4AABYmJzcWFjMyNjU0JiMiByMRIRUhFTYzMhYWFRQGBiPPeSVZE0sqO0xJOEEvUQGA/u0uRTtdNTxsRQ5JQjUpMkw8OUo1AZtkvx85Z0JGbT0AAAAAAgA1//ICBQLIABMAHwAAFiYmNTQ2NxMzAzYzMhYWFRQGBiM2NjU0JiMiBhUUFjPcaj0dJ6l1pRwiPWE3PGpBNEZGNDVGRjUOPGhAJVBFATj+2xE5Zj9AaDxjSTc3Skk4N0kAAAEAJgAAAdQCyAAGAAABITUhFQMjAVz+ygGu6XMCZGRV/Y0AAAMAL//yAgcC1gAbACcAMwAAFiYmNTQ2NyYmNTQ2NjMyFhYVFAYHFhYVFAYGIxI2NTQmIyIGFRQWMxI2NTQmIyIGFRQWM9hrPkY0LTg4Yj08YTg4LDVGPmxCLjw9LS89PS82SEk1NklINw42XztGYhQWTDU2WDMzWDY1SxcWYUU7XzYBujktKzc3Ky05/qhENDZJSTY0RAAAAgA1AAACBQLWABMAHwAAAQYjIiYmNTQ2NjMyFhYVFAYHAyMSNjU0JiMiBhUUFjMBSBwiPWE3PGpCQWo9HSaqda9GRjU1RUY0ASUROWY/QGg8PGhAJFBG/sgBckk4N0lJNzhJAAEALP+EANMAbQADAAAXNzMHLDZxZHzp6QAAAAABAFMAAADBAG0AAwAAMzUzFVNubW0AAAABAC0BLgIIAZsAAwAAARUhNQII/iUBm21tAAAAAwBN/7MCGgMGABUAHAAlAAAkBgcVIzUjETM1MxUWFhUUBgcVFhYVJTMyNTQjIxI2NTQmIyMVMwIaYlptpKRtU1k9NDlI/qBYiYlYp0lFSGNjhF8NZWECkmBlDVZFOksOAgxLPsNaV/4vLzAxLr4AAAEAQ/+7Ai8DBgAhAAAkNjcXBgcVIzUmJjU1NDY3NTMVFhcHJiYjIgYGFRUUFhYzAYRDIEhEXGxneXlnbFxESCFCJzNPLCxPM2seH0NKEFBPEZxzZnOcEVZXEEpDHx81XjtKO101AAAAAQBu/6ECAAJAACAAACQ2NxcGBxUjNSYmNTU0Njc1MxUWFhcHJiYjIgYVFRQWMwFqLw9YKmhhTVJSTmAxTBVYES8jMDY1MVEdHy9YEFVUDGtbSmBtDFZXCTQoLx0cPUBKOT0AAAMAQf+3AjMDBAAiACgALwAAAQM2NjcXBiMjByM3JicHIzcmJjU1NDY2NzczBxYXNzMHFhcAFxMmJwMmFxMGBhUVAe2AIjkdSFaCBhhZGxgWIlo0ICI7bUkYWhkcFB1bKhUP/tIYiBYbgz4FXS40Ahr+UgMeHERfT10IDHGtKGk+VVKCTghSVAUIYY0QEv4uCgHKCQP+R44eATgYZ0Y4AAACAEz/+wLUAoMAGwArAAAkBxcHJwYjIicHJzcmNTQ3JzcXNjMyFzcXBxYVBjY2NTQmJiMiBgYVFBYWMwKTK2xMbUBLS0BtTGwrKGlMaENNTUNoTGko2kUoKEUpKUUoKEUp9kNsTG0oKG1MbENNS0BpTGgrK2hMaUBLmClGKSlGKSlGKSlGKQAAAQBQ/7cCCQMGACkAACQGBxUjNSYnNxYWMzI2NTQmJyYmNTQ2NzUzFRYXByYmIyIGFRQWFxYWFQIJVUhtZ0hGHEoqNEA5O2ZjWUltVjxHHz4jLz44O2ljgmQRVlENSkodITAoJDASHl9LTGUNV1gUSUMiIDEoJC8SHl9KAAEAUP+3AgkDBgApAAAkBgcVIzUmJzcWFjMyNjU0JicmJjU0Njc1MxUWFwcmJiMiBhUUFhcWFhUCCVVIbWdIRhxKKjRAOTtmY1lJbVY8Rx8+Iy8+ODtpY4JkEVZRDUpKHSEwKCQwEh5fS0xlDVdYFElDIiAxKCQvEh5fSgADAFD/+AI5AxsAGgAmACoAAAEjESM1BgYjIiYmNTQ2NjMyFhc1IzUzNTMVMwI2NTQmIyIGFRQWMwchFSECOUhsEEcqNVEuLlE1K0YQn59sSOs3Ny8rNjYrrQF//oECcP4eNh4mNGA+PmA0JR+QWFNT/hk+MzM/PzMzPpJXAAAAAAEALP/yAhsCyAAnAAAlBgYjIiYnIzUzNSM1MzY2MzIWFwcmJiMiBgczByMVMwcjFhYzMjY3AhsaY0RldwtHRUVHCXdnQWEbUBA2JTY/B9ERwrARnAg+NSI2EGc1QH53UkNSeYE7NTUeI01JUkNSR0kgHQAAAwAw/7cCKQMGABcAHwAlAAABFRQGBxUjNSYmNTU0Njc1MxUWFwcmJxUGFhcRBgYVFQUjFTY2NQIpZVxsX21tX2xoRkgyNMsyLS0yASBVKisBg2trkhFTVROheFB3oBVSTw9ORC8LzYhtFgHMF2pKMiOxD0kxAAAAAgAk//ICNALIABUAKwAAARUhNSE2NTQmIyIGByc2MzIWFhUUBwUhFSEGFRQWMzI2NxcGIyImJjU0NyMCNP3wAV8NPi8jPh9HUXw8YTcH/i4CEP6bDkEzK0gcR1l8Qmc7CTcBylJSFyEqOCAhQmM1XTscFYVRGRwvOSEeS1k0Xj0bGAAAAQARAAACPQK6ABMAAAEjEyMDIxEjESM1MxEzETMTMwMzAj3o53zfDm1VVW0Q1nfe6wFB/r8BQf6/AUFUASX+2wEl/tsAAAAAAQAVAAACQwMHACsAABIWFzMVITUzLgI1NDY3NTMVNjMyFzUzFRYWFSM0JxUjNSYjIgcVIzUGBhWDX13a/iOMOEwvW1NQCBEPB1BWW25DUAcPEQhQHyEBM4tFY2MuU29HZYsbYlQBAVRjH6mGmjubvQEBvZ0ZVDgAAf/4AAACQwLCABkAAAEUBiMRBzU3NQc1NzUzFTcVBxU3FQcVMjY1AkPo5n19fX1uqKioqG+EAVCmqgEgLVctRi1XLa6HPFc8RjxXPOF6cAABABcAAAJBAsgAFwAAABYVFSM1NCYnESMRBgYVFSM1NDY3NTMVAdZrbTc8azs3bWp1awJStrTo7nmCEf5wAZASgnju6LW0EGdnAAAAAQAAAAACWALIABMAAAEjESMDIxEjESM1MxEzEzMDMxEzAlhGnMMFaEZGncQEAWhGATL+zgIc/eQBMmQBMv3kAhz+zgAEACQAAAKYAsAAHAAhACgALQAAASMWFRQHMxUjBgYjIxUjESM1MzUjNTM1MzIWFzMhMyYjIxYnIxUzNjUGNyMVMwKYSQEBSVodlHA+bE9PT0+2aowdXP5H0zVmOP0C+/wBWjPWOAHaCRIQCFJLT7sBVVIzUpRMSDOXEjMIEKA2NgAAAAACABkAAAI+AroAFgAfAAATFTMVIxUjNSM1MzUjNTMRMzIWFRQGIyczMjY1NCYjI+y6um1mZmZmwHWKkXtGPUtVVUs9ATldUoqKUl1SAS9nWVpnUjs0NDkAAQA+AAACGgK5ABkAAAEjFhczFSMGBiMjASMBNTMyNyE1MyYnIzUhAhq7KRV9bghtWxkBA4n/AXN4Fv7/+hpDnQHcAlsXL19NV/7uASVLRl8yFF4AAgBHAAAC2AK6AA0AGwAAATQmIyMRIxEhMhYVESMBERQGIyERMxEzMjY1EQG3NTqXagELa2RqASFhbf71apc3OAHuOTP9pgK6XGT+swIN/gZlWwIN/lM4NAHuAAABAFIAAAH7AsgAGwAAJRUhNTM1IzUzNTQ2MzIWFwcmJiMiBhUVMxUjFQH7/ldFOztfUkJUEVwJJhogJpSUX19fu12WWGNBPhweHy0pnV27AAIAMgAAAiYCugADAAsAABMhFSEVIRUjESMRIzIB9P4MAfTDbsMCumNlY/5xAY8AAAEAMgAAAiYCugAXAAABFTcVBxU3FQcVIzUHNTc1BzU3NSM1IRUBY5SUlJRvlJSUlMIB9AJYfzRXNEc0VzTkvDRXNEc0VzSnYmIAAAAEABsAAAMFAroAFwAaAB0AIAAAASMDIwMjAyMDIzUzAzMTMxMzEzMTMwMzIScHByMXJSMXAwVnQllIVklYQmdSP241VUNORFU0bj9S/qAVFWstFAFILhoBNf7LATX+ywE1XwEm/toBJv7aASb+2lhYX3BwcAAAAAABADMAAAIhAroAFgAAATMVIxUzFSMVIzUjNTM1IzUzAzMTEzMBfXaTk5Ntk5OTdqN1goJ1AVlSOVJ8fFI5UgFh/swBNAAAAAABAG7/oQIAAkAAIAAAJDY3FwYHFSM1JiY1NTQ2NzUzFRYWFwcmJiMiBhUVFBYzAWovD1gqaGFNUlJOYDFMFVgRLyMwNjUxUR0fL1gQVVQMa1tKYG0MVlcJNCgvHRw9QEo5PQAAAQBQ/7cCCQMGACkAACQGBxUjNSYnNxYWMzI2NTQmJyYmNTQ2NzUzFRYXByYmIyIGFRQWFxYWFQIJVUhtZ0hGHEoqNEA5O2ZjWUltVjxHHz4jLz44O2ljgmQRVlENSkodITAoJDASHl9LTGUNV1gUSUMiIDEoJC8SHl9KAAEAUgAAAfsCyAAbAAAlFSE1MzUjNTM1NDYzMhYXByYmIyIGFRUzFSMVAfv+V0U7O19SQlQRXAkmGiAmlJRfX1+7XZZYY0E+HB4fLSmdXbsABAAbAAADBQK6ABcAGgAdACAAAAEjAyMDIwMjAyM1MwMzEzMTMxMzEzMDMyEnBwcjFyUjFwMFZ0JZSFZJWEJnUj9uNVVDTkRVNG4/Uv6gFRVrLRQBSC4aATX+ywE1/ssBNV8BJv7aASb+2gEm/tpYWF9wcHAAAAAAAQAzAAACIQK6ABYAAAEzFSMVMxUjFSM1IzUzNSM1MwMzExMzAX12k5OTbZOTk3ajdYKCdQFZUjlSfHxSOVIBYf7MATQAAAAAAQAnAHICDgJYAAsAAAEjFSM1IzUzNTMVMwIOvmu+vmu+ATC+vmq+vgAAAAABAC0BLgIIAZsAAwAAARUhNQII/iUBm21tAAAAAQAAAAEAALtgETlfDzz1AAMD6AAAAADVtvhtAAAAANZpKuX/+P+EA3ADGwAAAAcAAgAAAAAAAAABAAADhP8zAAADjf/4AAADcAABAAAAAAAAAAAAAAAAAAAAYgJYAEgA6AAAAoYAFAJNAEoCVABAAn8ASgIsAEoCGABKAoAAQAKdAEoBAgBKAdwAGAJ3AEoCFQBKAyYASgJ/AD8CiwA5AlIASgKLADkCYQBKAi0ALAIhABcCdwA+AnwAHQONAB0CkQARAmIADgJIACwB8wAUAeYASgHTAEAB/wBKAbgASgGkAEoB/wBAAiYASgDzAEoBhQAYAfAASgGkAEoCggBKAiEASgIEADkB1ABKAgMAOQHiAEoBuAAsAbYAFwILAD4B8gAdArgAHQHyABEB0AAOAccALAI1AEABugALAjUAPQI1ADgCNQAYAjUAMQI1ADUCAQAmAjUALwI1ADUBFgAsARYAUwI1AC0CWABNAlgAQwJYAG4CWABBAyAATAJYAFACWABQAlgAUAJYACwCWAAwAlgAJAJYABECWAAVAlj/+AJYABcCWAAAArwAJAJYABkCWAA+AyAARwJYAFICWAAyAlgAMgMgABsCWAAzAlgAbgJYAFACWABSAyAAGwJYADMCNQAnAC0AAAAAABYAFgAyAGYAlAC0AMwA4gEUAS4BPAFYAXIBggGgAboB7AIOAkYCbgKmArgC1gLqAwoDJgM8A1QDbgOiA8oD7AQCBBYERARaBGgEhgScBKwEygTiBRIFMgVmBYwFxgXYBfoGDgYuBkgGXAZyBpYGqAbSBwAHHAdMB34HkAfcCA4IHAgoCDYIbgiiCNQJJAloCaYJ5AokCl4KmgrcCwALPAtkC4oLrAvuDBoMRAxyDJoMsgzYDRQNOA1qDagN0A4MDjAORg5UAAEAAABjADQABAAAAAAAAQACAB4ABAAAAGQAAAAAAAAAAAAxAlIAAQAAAAAAAAAzAAAAAQAAAAAAAQAPADMAAQAAAAAAAgAGAEIAAQAAAAAAAwAqAEgAAQAAAAAABAAWAHIAAQAAAAAABQAMAIgAAQAAAAAABgAWAJQAAQAAAAAABwAmAKoAAQAAAAAACAALANAAAQAAAAAACQAjANsAAQAAAAAACwAYAP4AAQAAAAAAEAAPARYAAQAAAAAAEQAGASUAAQAAAAAAEgAWASsAAQAAAAAAEwARAUEAAQAZACEAAAAzAVIAAQAZACEAAQAPAYUAAQAZACEAAgAGAZQAAQAZACEAAwAqAZoAAQAZACEABAAWAcQAAQAZACEABQAMAdoAAQAZACEABgAWAeYAAQAZACEABwAmAfwAAQAZACEACAALAiIAAQAZACEACQAjAi0AAQAZACEAEgAWAlAAAwABBAkAAABmAmYAAwABBAkAAQAsAswAAwABBAkAAgAOAvgAAwABBAkAAwBUAwYAAwABBAkABAAsA1oAAwABBAkABQAYA4YAAwABBAkABgAsA54AAwABBAkABwBMA8oAAwABBAkACAAWBBYAAwABBAkACQBGBCwAAwABBAkACwAwBHIAAwABBAkAEAAeBKIAAwABBAkAEQAMBMAAAwABBAkAEwAiBMwAAwABCAQAAABmBO4AAwABCAQAAQAsBVQAAwABCAQAAgAOBYAAAwABCAQABAAsBY4AAwABCAQABwBMBboAAwABCAQACAAWBgYAAwABCAQACQBGBhwAAwABCAQAEAAeBmIAAwABCAQAEQAMBoBDb3B5cmlnaHQgKGMpIDIwMTcgYnkgVGVuY2VudC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5XZUNoYXQgU2FucyBTdGRNZWRpdW1IYW55aSBXZUNoYXQgU2FucyBTdGQtTWVkaXVtOyBWZXJzaW9uIDEuMDBXZUNoYXQgU2FucyBTdGQtTWVkaXVtVmVyc2lvbiAxLjAwV2VDaGF0LVNhbnMtU3RkLU1lZGl1bVdlQ2hhdCBTYW5zIGlzIGEgdHJhZGVtYXJrIG9mIFRlbmNlbnQuSGFueWkgRm9udHNaSEFORyBYdWFuLCBXQU5HIFRpYW5iaSwgTElVIFhpYW95dWh0dHA6Ly93d3cuaGFueWkuY29tLmNuL1dlQ2hhdCBTYW5zIFN0ZE1lZGl1bVdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW3boiSjX7QKMTIzNDU2Nzg5MENvcHlyaWdodCAoYykgMjAxNyBieSBUZW5jZW50LiBBbGwgcmlnaHRzIHJlc2VydmVkLldlQ2hhdCBTYW5zIFN0ZE1lZGl1bUhhbnlpIFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW07IFZlcnNpb24gMS4wMFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW1WZXJzaW9uIDEuMDBXZUNoYXQtU2Fucy1TdGQtTWVkaXVtV2VDaGF0IFNhbnMgaXMgYSB0cmFkZW1hcmsgb2YgVGVuY2VudC5IYW55aSBGb250c1pIQU5HIFh1YW4sIFdBTkcgVGlhbmJpLCBMSVUgWGlhb3l1V2VDaGF0IFNhbnMgU3RkLU1lZGl1bQBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIASABhAG4AeQBpACAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQA7ACAAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBWAGUAcgBzAGkAbwBuACAAMQAuADAAMABXAGUAQwBoAGEAdAAtAFMAYQBuAHMALQBTAHQAZAAtAE0AZQBkAGkAdQBtAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAFQAZQBuAGMAZQBuAHQALgBIAGEAbgB5AGkAIABGAG8AbgB0AHMAWgBIAEEATgBHACAAWAB1AGEAbgAsACAAVwBBAE4ARwAgAFQAaQBhAG4AYgBpACwAIABMAEkAVQAgAFgAaQBhAG8AeQB1AGgAdAB0AHAAOgAvAC8AdwB3AHcALgBoAGEAbgB5AGkALgBjAG8AbQAuAGMAbgAvAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAFMAdABkAE0AZQBkAGkAdQBtIKwAogAkAKMgqQClAAoAMQAyADMANAA1ADYANwA4ADkAMABDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABUAGUAbgBjAGUAbgB0AC4ASABhAG4AeQBpACAARgBvAG4AdABzAFoASABBAE4ARwAgAFgAdQBhAG4ALAAgAFcAQQBOAEcAIABUAGkAYQBuAGIAaQAsACAATABJAFUAIABYAGkAYQBvAHkAdQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZABNAGUAZABpAHUAbQAAAAIAAAAAAAD/tQAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAYwAAAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQATABQAFQAWABcAGAAZABoAGwAcAA8AEQAQAQIBAwCEAQQAvQAHAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgCFARMBFAEVAJYBFgEXARgBGQEaAA4A7wd1bmkwRTNGB3VuaTIwQjUNY29sb25tb25ldGFyeQd1bmlGRTY5BGRvbmcERXVybwd1bmkyMEIyB3VuaTIwQjQHdW5pMjBBRAd1bmkyMEJFB3VuaTIwQkEHdW5pMjBCQwd1bmkyMEE2B3VuaTIwQjEHdW5pMjBCRAd1bmkyMEI5B3VuaTIwQUEHdW5pMjBCOAd1bmkyMEFFB3VuaTIwQTkHdW5pRkZFMAd1bmlGRjA0B3VuaUZGRTEHdW5pRkZFNgd1bmlGRkU1) format(\"truetype\")}@font-face{font-family:WeChatSansStd-Medium;src:url(data:application/octet-stream;base64,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AwYAAwABBAkABAAsA1oAAwABBAkABQAYA4YAAwABBAkABgAsA54AAwABBAkABwBMA8oAAwABBAkACAAWBBYAAwABBAkACQBGBCwAAwABBAkACwAwBHIAAwABBAkAEAAeBKIAAwABBAkAEQAMBMAAAwABBAkAEwAiBMwAAwABCAQAAABmBO4AAwABCAQAAQAsBVQAAwABCAQAAgAOBYAAAwABCAQABAAsBY4AAwABCAQABwBMBboAAwABCAQACAAWBgYAAwABCAQACQBGBhwAAwABCAQAEAAeBmIAAwABCAQAEQAMBoBDb3B5cmlnaHQgKGMpIDIwMTcgYnkgVGVuY2VudC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5XZUNoYXQgU2FucyBTdGRNZWRpdW1IYW55aSBXZUNoYXQgU2FucyBTdGQtTWVkaXVtOyBWZXJzaW9uIDEuMDBXZUNoYXQgU2FucyBTdGQtTWVkaXVtVmVyc2lvbiAxLjAwV2VDaGF0LVNhbnMtU3RkLU1lZGl1bVdlQ2hhdCBTYW5zIGlzIGEgdHJhZGVtYXJrIG9mIFRlbmNlbnQuSGFueWkgRm9udHNaSEFORyBYdWFuLCBXQU5HIFRpYW5iaSwgTElVIFhpYW95dWh0dHA6Ly93d3cuaGFueWkuY29tLmNuL1dlQ2hhdCBTYW5zIFN0ZE1lZGl1bVdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW3boiSjX7QKMTIzNDU2Nzg5MENvcHlyaWdodCAoYykgMjAxNyBieSBUZW5jZW50LiBBbGwgcmlnaHRzIHJlc2VydmVkLldlQ2hhdCBTYW5zIFN0ZE1lZGl1bUhhbnlpIFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW07IFZlcnNpb24gMS4wMFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW1WZXJzaW9uIDEuMDBXZUNoYXQtU2Fucy1TdGQtTWVkaXVtV2VDaGF0IFNhbnMgaXMgYSB0cmFkZW1hcmsgb2YgVGVuY2VudC5IYW55aSBGb250c1pIQU5HIFh1YW4sIFdBTkcgVGlhbmJpLCBMSVUgWGlhb3l1V2VDaGF0IFNhbnMgU3RkLU1lZGl1bQBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIASABhAG4AeQBpACAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQA7ACAAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBWAGUAcgBzAGkAbwBuACAAMQAuADAAMABXAGUAQwBoAGEAdAAtAFMAYQBuAHMALQBTAHQAZAAtAE0AZQBkAGkAdQBtAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAFQAZQBuAGMAZQBuAHQALgBIAGEAbgB5AGkAIABGAG8AbgB0AHMAWgBIAEEATgBHACAAWAB1AGEAbgAsACAAVwBBAE4ARwAgAFQAaQBhAG4AYgBpACwAIABMAEkAVQAgAFgAaQBhAG8AeQB1AGgAdAB0AHAAOgAvAC8AdwB3AHcALgBoAGEAbgB5AGkALgBjAG8AbQAuAGMAbgAvAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAFMAdABkAE0AZQBkAGkAdQBtIKwAogAkAKMgqQClAAoAMQAyADMANAA1ADYANwA4ADkAMABDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABUAGUAbgBjAGUAbgB0AC4ASABhAG4AeQBpACAARgBvAG4AdABzAFoASABBAE4ARwAgAFgAdQBhAG4ALAAgAFcAQQBOAEcAIABUAGkAYQBuAGIAaQAsACAATABJAFUAIABYAGkAYQBvAHkAdQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZABNAGUAZABpAHUAbQAAAAIAAAAAAAD/tQAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAYwAAAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQATABQAFQAWABcAGAAZABoAGwAcAA8AEQAQAQIBAwCEAQQAvQAHAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgCFARMBFAEVAJYBFgEXARgBGQEaAA4A7wd1bmkwRTNGB3VuaTIwQjUNY29sb25tb25ldGFyeQd1bmlGRTY5BGRvbmcERXVybwd1bmkyMEIyB3VuaTIwQjQHdW5pMjBBRAd1bmkyMEJFB3VuaTIwQkEHdW5pMjBCQwd1bmkyMEE2B3VuaTIwQjEHdW5pMjBCRAd1bmkyMEI5B3VuaTIwQUEHdW5pMjBCOAd1bmkyMEFFB3VuaTIwQTkHdW5pRkZFMAd1bmlGRjA0B3VuaUZGRTEHdW5pRkZFNgd1bmlGRkU1) format(\"truetype\")}@font-face{font-family:WeChatSansStd-Medium;src:url(data:application/octet-stream;base64,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AwYAAwABBAkABAAsA1oAAwABBAkABQAYA4YAAwABBAkABgAsA54AAwABBAkABwBMA8oAAwABBAkACAAWBBYAAwABBAkACQBGBCwAAwABBAkACwAwBHIAAwABBAkAEAAeBKIAAwABBAkAEQAMBMAAAwABBAkAEwAiBMwAAwABCAQAAABmBO4AAwABCAQAAQAsBVQAAwABCAQAAgAOBYAAAwABCAQABAAsBY4AAwABCAQABwBMBboAAwABCAQACAAWBgYAAwABCAQACQBGBhwAAwABCAQAEAAeBmIAAwABCAQAEQAMBoBDb3B5cmlnaHQgKGMpIDIwMTcgYnkgVGVuY2VudC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5XZUNoYXQgU2FucyBTdGRNZWRpdW1IYW55aSBXZUNoYXQgU2FucyBTdGQtTWVkaXVtOyBWZXJzaW9uIDEuMDBXZUNoYXQgU2FucyBTdGQtTWVkaXVtVmVyc2lvbiAxLjAwV2VDaGF0LVNhbnMtU3RkLU1lZGl1bVdlQ2hhdCBTYW5zIGlzIGEgdHJhZGVtYXJrIG9mIFRlbmNlbnQuSGFueWkgRm9udHNaSEFORyBYdWFuLCBXQU5HIFRpYW5iaSwgTElVIFhpYW95dWh0dHA6Ly93d3cuaGFueWkuY29tLmNuL1dlQ2hhdCBTYW5zIFN0ZE1lZGl1bVdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW3boiSjX7QKMTIzNDU2Nzg5MENvcHlyaWdodCAoYykgMjAxNyBieSBUZW5jZW50LiBBbGwgcmlnaHRzIHJlc2VydmVkLldlQ2hhdCBTYW5zIFN0ZE1lZGl1bUhhbnlpIFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW07IFZlcnNpb24gMS4wMFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW1WZXJzaW9uIDEuMDBXZUNoYXQtU2Fucy1TdGQtTWVkaXVtV2VDaGF0IFNhbnMgaXMgYSB0cmFkZW1hcmsgb2YgVGVuY2VudC5IYW55aSBGb250c1pIQU5HIFh1YW4sIFdBTkcgVGlhbmJpLCBMSVUgWGlhb3l1V2VDaGF0IFNhbnMgU3RkLU1lZGl1bQBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIASABhAG4AeQBpACAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQA7ACAAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBWAGUAcgBzAGkAbwBuACAAMQAuADAAMABXAGUAQwBoAGEAdAAtAFMAYQBuAHMALQBTAHQAZAAtAE0AZQBkAGkAdQBtAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAFQAZQBuAGMAZQBuAHQALgBIAGEAbgB5AGkAIABGAG8AbgB0AHMAWgBIAEEATgBHACAAWAB1AGEAbgAsACAAVwBBAE4ARwAgAFQAaQBhAG4AYgBpACwAIABMAEkAVQAgAFgAaQBhAG8AeQB1AGgAdAB0AHAAOgAvAC8AdwB3AHcALgBoAGEAbgB5AGkALgBjAG8AbQAuAGMAbgAvAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAFMAdABkAE0AZQBkAGkAdQBtIKwAogAkAKMgqQClAAoAMQAyADMANAA1ADYANwA4ADkAMABDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABUAGUAbgBjAGUAbgB0AC4ASABhAG4AeQBpACAARgBvAG4AdABzAFoASABBAE4ARwAgAFgAdQBhAG4ALAAgAFcAQQBOAEcAIABUAGkAYQBuAGIAaQAsACAATABJAFUAIABYAGkAYQBvAHkAdQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZABNAGUAZABpAHUAbQAAAAIAAAAAAAD/tQAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAYwAAAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQATABQAFQAWABcAGAAZABoAGwAcAA8AEQAQAQIBAwCEAQQAvQAHAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgCFARMBFAEVAJYBFgEXARgBGQEaAA4A7wd1bmkwRTNGB3VuaTIwQjUNY29sb25tb25ldGFyeQd1bmlGRTY5BGRvbmcERXVybwd1bmkyMEIyB3VuaTIwQjQHdW5pMjBBRAd1bmkyMEJFB3VuaTIwQkEHdW5pMjBCQwd1bmkyMEE2B3VuaTIwQjEHdW5pMjBCRAd1bmkyMEI5B3VuaTIwQUEHdW5pMjBCOAd1bmkyMEFFB3VuaTIwQTkHdW5pRkZFMAd1bmlGRjA0B3VuaUZGRTEHdW5pRkZFNgd1bmlGRkU1) format(\"truetype\")}@font-face{font-family:WeChatSansStd-Medium;src:url(data:application/octet-stream;base64,AAEAAAAOAIAAAwBgRFNJRwAAAAEAAADsAAAACEdERUYADwAAAAAA9AAAABBHUE9TvXTGagAAAQQAAAHKR1NVQhoeGpMAAALQAAAAfk9TLzJrL1pnAAADUAAAAGBjbWFwQHbxEAAAA7AAAAIWZ2x5Zvo1siwAAAXIAAAcqGhlYWQOn2bVAAAicAAAADZoaGVhBu4DIwAAIqgAAAAkaG10eNhnFGQAACLMAAABimxvY2E/+0eGAAAkWAAAAMhtYXhwANIAUwAAJSAAAAAgbmFtZVIudTIAACVAAAAI3nBvc3Tpjfc4AAAuIAAAAbAAAAABAAAAAAABAAAADAAAAAAAAAACAAAAAQAAAAoAHgAwAAFERkxUAAgABAAAAAD//wABAAAAAWtlcm4ACAAAAAMAAAABAAIAAwAIABAAGgACAAgAAQAaAAIACAACALwA8gACAAgAAQEEAAEBDgAEAAAACwAgACYALAA2ADwARgBQAG4AdACSAKQAAQA9//gAAQA///kAAgA9//QAP//2AAEAPf/1AAIAP//yAEH/9gACAD3/7gA//+kABwA4/+4AOf/0ADr/1gA8/90APv/yAD//7wBB/+IAAQA9/+4ABwA4/+4AOf/mADr/7gA7//YAPP/hAD3/7wBB/+IABAA3/+8AOv/yAD3/6gA//+gAAQBhAAAAAQB+AAQAAAAFABQAGgAgACoAMAABABb/+wABAAQAAAACAAL/+gAFAAAAAQAa//YAAQAY//gAAgBWAAQAAABsAHwAAgADAAD/qAAAAAAAAP+oAAEASgAEAAAAAQAMAAEASAAAAAEACwA2ADgAOQA6ADsAPAA9AD4APwBBAFsAAQAFAAIAAwAEABEAEwABAAYAAgAXABgAHAAxADIAAQABAEMAAgACABcAGAABADEAMgABAAIABAACAAIAAgAXABgAAQAcABwAAgAxADIAAQAAAAEAAAAKACAAOgABREZMVAAIAAQAAAAA//8AAgAAAAEAAmFhbHQADmZ3aWQAFAAAAAEAAAAAAAEAAQACAAYADgABAAAAAQAgAAEAAAABAAgAAgAgAAUAXABdAF4AXwBgAAIAEAAFAFwAXQBeAF8AYAABAAUARQBIAFcAWgBbAAAAAwI0AfQABQAIAooCWAAAAEsCigJYAAABXgAyATAAAAAABgAAAAAAAAAAAAABAAAAAgAAAAAAAAAASE5ZSQAAACD/5gOE/zMAAAOEAM0AAAEAAAAAAAH7AsgAAAAgAAIAAAADAAAAAwAAASIAAQAAAAAAHAADAAEAAAEiAAABBgAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAASAAAAAAAAGFAQkEANjc4OTo7PD0+PwAAAAAAAAACAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGwAAAAAAABwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARVcAAAAAAAAAAAAAAAAAAAAAWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAPQAAAAqACAABAAKACAAJAAuADkAWgB6AKUOPyChIKYgriCyILUguiC+IhL+af8E/+H/5v//AAAAIAAkACsAMABBAGEAog4/IKEgpiCpILEgtCC4ILwiEv5p/wT/4P/l////4QAkAAAABv/B/7sAAPIE36XfrAAAAAAAAAAAAADeUAAAAAAAAAAAAAEAAAAAACYAAAAAAAAAJgAAAAAAAAAmADAAMgA0ADgAAAA6ADoAOgA8AAAAYQBAAEIAQQBFAFcARwBbAFoAVgBKAEsATgBZAFMATABNAEQAWABVAFAAUQBUAE8ASQBdAFwAXgBgAF8AAAACAEgAAAIQAsgAAwAHAAATIREhJREhEUgByP44AXT+4ALI/ThNAi790gAAAAIAFAAAAnMCyAAHAAsAACUjByMTMxMjAwMjAwG57EN28nn0d2NUBFTS0gLI/TgBNAEI/vgAAAAAAwBKAAACKALIAA8AGAAhAAATMzIWFRQGBxUWFhUUBiMjEzI2NTQmIyMVEzI2NTQmIyMVSsl8ikMzOE2Lhc7NRk1QS1diTVJTQ2sCyGRaO1IPAw5VQl5oAZoyMTM1y/7ENzU1ONkAAAABAED/8gI0AtQAHQAANhYWMzI2NxcGIyImJjU1NDY2MzIXByYmIyIGBhUVrixQNSlEIUdZglR/RkZ/VIJZRyBFKTRRLPRlNyAhRmFNi1x5XIxNYUciIDdlQloAAAIASgAAAkQCyAAJABMAABMzMhYVFRQGIyM3MjY1NTQmIyMRSuSFkZGF5NlWXVxXawLIlpF6kZZjaWtaa2n9/gABAEoAAAIDAsgACwAAEyEVIRUhFSEVIRUhSgG5/rUBG/7lAUv+RwLIY8tj1GMAAAABAEoAAAIDAsgACQAAEyEVIRUhFSERI0oBuf61ARv+5W4CyGPLY/7JAAAAAAEAQP/yAk8C1AAhAAATNDY2MzIXByYjIgYGFRUUFhYzMjY1NSM1IRUUBiMiJiY1QEZ9UoZZSUJPMk4sKUovRk2VAQGGeVF7RAGfW41NYUQ/OGVBWkJlN19OIl9siKBNi1wAAAABAEoAAAJTAsgACwAAAREjESERIxEzESERAlNu/tNubgEtAsj9OAE8/sQCyP7WASoAAAAAAQBKAAAAuALIAAMAABMzESNKbm4CyP04AAAAAAEAGP/yAZkCyAAOAAABMxEUBiMiJic3FjMyNjUBLG1mWj5lHlQsPCkvAsj98F1pSDstSjk0AAAAAQBKAAACZQLIAAoAACEBESMRMxEBMwEBAdv+3W5uARyF/tMBOQFh/p8CyP68AUT+r/6JAAEASgAAAfYCyAAFAAATMxEhFSFKbgE+/lQCyP2bYwAAAQBKAAAC3ALIAA8AABMzEzMTMxEjESMDIwMjESNKk7YEs5JrBbFQsgRrAsj+KgHW/TgCJ/44Acj92QAAAQA/AAACQALIAAsAABMBMxEzESMBIxEjEb4BEQRtfv7vBW0CyP32Agr9OAIK/fYCyAAAAAIAOf/yAlIC1AARACAAABM0NjYzMhYWFRUUBgYjIiYmNRYWMzI2NTU0JiYjIgYVFTlDelBQeUNDeVBQekNtWEhHWChIL0hYAaBci01Ni1yAWolLS4laW21tWYQ8XTNwXIQAAAACAEoAAAI2AsgACgATAAATMzIWFRQGIyMRIxMyNjU0JiMjFUrjfYyTg2huzk9aWVBgAsh3amp4/vsBakI7PEL7AAAAAAIAOf+JAnkC1AAVACQAAAUnBiMiJiY1NTQ2NjMyFhYVFRQGBxcmNjU1NCYmIyIGFRUUFjMCJGIzQVJ+RUN6UFB5QyAfZuxYKEgvSFhYSHeBGEqJW4Bci01Ni1yAQG0og5BtWYQ8XTNwXIRZbQAAAAACAEoAAAJLAsgADQAWAAAhAyMRIxEzMhYVFAYHEwEzMjY1NCYjIwHLtl1u23WEUEnG/m1fRlBPR18BLf7TAshtYUhjFP7FAZI3MDM5AAAAAAEALP/yAgEC1AAkAAAWJic3FhYzMjY1NCcmJjU0NjYzMhYXByYjIgYVFBcWFhUUBgYjy3gnRB5VLTVLgGltPGY/P3QqSEBPNUN/bG1AbUIOMyhMHyI5Kk0oIGdNPF81Mi9EPzcsSCghaU88XzUAAAABABcAAAIKAsgABwAAEyM1IRUjESPawwHzwm4CZWNj/ZsAAAABAD7/8gI5AsgAEQAAFiY1ETMRFBYzMjY1ETMRFAYjxYduTERDTG6Gdw6UhQG9/jxSXV1SAcT+Q4SVAAABAB0AAAJfAsgABwAAEzMTMxMzAyMddqkEqXbkeQLI/cwCNP04AAAAAQAdAAADcALIAA8AABMzEzMTMxMzEzMDIwMjAyMde3YEfHN9BHR6tXZ8BH10Asj93gIi/d4CIv04AiL93gAAAAEAEQAAAoACyAALAAAhAwMjEwMzExMzAxMB96+uie7hhKang+DuAR/+4QF3AVH++wEF/q/+iQAAAQAOAAACVALIAAgAABsCMwMRIxEDkKGhgu1t7ALI/tcBKf5t/ssBNQGTAAABACwAAAIcAsgACQAANwEhNSEVASEVISwBWv62Adf+pQFk/hBRAhRjUf3sYwAAAAACABQAzQHgAsoABwALAAABIwcjEzMTIycnIwcBTqgrZ7FpsmdHNwM3AVOGAf3+A9uqqgAAAwBKAM0BwQLIAA8AGAAhAAATMzIWFRQGBxUWFhUUBiMjEzI2NTQmIyMVFzI2NTQmIyMVSp5ibDAmKzZtaKKgMzg6NT1FNzw6NkgCyEc/KDwLAgs+LkNKAScjIiIki94lJCUnlQAAAAABAEAAwQGyAtcAGQAANiYmNTU0NjYzMhcHJiMiBhUVFBYzMjcXBiPRXjMzXj5kPz8pNjVAQDU3KD8+ZcE4ZUJYQmU4SjoqUEI/QlAqOkkAAAIASgDNAcQCyAAJABMAABMzMhYVBxQGIyM3MjY1NTQmIyMRSqtjbAFsYqujOj4+OkQCyG5mU2ZuVkRFPEVF/rEAAAAAAQBKAM0BjwLIAAsAAAEVIxUzFSMVMxUhEQGP5sPD5v67AshQhFCHUAH7AAABAEoAzQGPAsgACQAAARUjFTMVIxUjEQGP5sPDXwLIUI9QzAH7AAAAAQBAAMMBzgLWAB8AABI2NjMyFwcmIyIGFRUUFjMyNjU1IzUzFRQGIyImJjU1QDRePmlBPCs9NkJAMSw3asZnWD5eMwI4ZjhNQDNRQjpCUDguFVNOZnQ4ZUJUAAABAEoAzQHbAsgACwAAAREjNSMVIxEzFTM1Adte1F9f1ALI/gXX1wH7zs4AAAEASgDNAKkCyAADAAATESMRqV8CyP4FAfsAAAABABgAwwFCAsgADwAAAREUBiMiJic3FhYzMjY1EQFCTkYxTxZJESIUHCACyP6RR086LyUcGSUiAWUAAAABAEoAzQHfAsgACgAAJScVIxEzFTczBxMBaL9fX7xzytHN9/cB++bm8f72AAEASgDNAYUCzAAFAAATETMVIRGp3P7FAsz+V1YB/wAAAQBKAM0CNwLIAA8AABMTMxMzESMRIwMjAyMRIxHJeAN1fl0DdER1A10CyP7JATf+BQFv/tUBK/6RAfsAAQBKAM0B1wLMAAsAAAEzETMRIwMjESMRMwF1A19nwgVfaAFyAVr+AQFZ/qcB/wAAAgA5AMABywLXABEAHwAAEjY2MzIWFhUVFAYGIyImJjU1FhYzMjY1NTQmIyIGFRU5Mls8PFsyMls8PFsyXzowMDo6MDA6AjdnOTlnQ1dCZDc3ZEJXlUZGOl89SEk8XwAAAgBKAM0BuALIAAoAEwAAEzIWFRQGIyMVIxEWNjU0JiMjFTP3WmdtYEJfzzg4NDw8AshYTk9YrgH79SkmJiqfAAIAOQB2AfAC1wAUACIAACUnBiMiJiY1NTQ2NjMyFhYVFRQHFyQWMzI2NTU0JiMiBhUVAadIKDU8WzIyWzw8WzInTP6oOjAwOjowMDp2XxU3ZEJXQ2c5OWdDV1I6ZbNGRjpfPUhJPF8AAgBKAM0BzALKAA0AFgAAJScjFSMRMzIWFRQGBxcBMzI2NTQmIyMBXHg7X6tXYDUxhv7dQi4xMS5CzczMAf1QSDNHEdoBHyYhIiYAAAEALADBAYwC1wAmAAA2Jic3FhYzMjY1NCYnJiY1NDY2MzIWFwcmIyIGFRQWFxYWFRQGBiOhVSA3FjwgJDApKlJRLE4xL1IfNTE4ICsmLFRRMlUywSMcRBcaJRsbJA0ZTjsrRCcgIEQvIhocIQ4ZSz4tRSYAAQAXAM0BnwLOAAcAABM1IRUjESMRFwGIlF8CeFZW/lUBqwAAAQA+AMEBzQLKABMAADYmJjUTMxEUFjMyNjURMxEUBgYjy1syAV46Ly86XjJaO8EyXDsBQP7HOERFNwE5/sA7XDIAAAABAB0AzQHWAsgABwAAExMzEzMDIwOFcwNzaKhqpwLI/oMBff4FAfsAAQAdAM0CmwLIAA8AABMTMxMzEzMTMwMjAyMDIwOJSQNVZFUDSWyEZVQEU2aEAsj+lQFr/pUBa/4FAWv+lQH7AAEAEQDNAeECyAALAAAlJwcjEyczFzczBxMBanBxeKihc29ucqGozcDAAQ3ura3u/vMAAAABAA4AzQHCAsgACAAAEzczAxUjNQMz6Ghyq1+qcQH9y/7d2NgBIwAAAQAsAM0BmwLIAAkAAAEjNSEVAzMVITUBGeEBXO30/pECclZF/qBWRQAAAAACAED/8gH1AtYADQAXAAAWJjU1NDYzMhYVFRQGIzY1NTQjIhUVFDOubm5tbG5ubG1tbW0OmpiElpiYloSYmmjGjMLCjMYAAAABAAsAAAE6AsgABgAAEwcnNzMRI8yFPMplbgI7Y1aa/TgAAAABAD0AAAH8AtYAGQAANxM2NjU0JiMiBgcnNjYzMhYWFRQGBwchFSE99jAmOi0rRxhaInZROl83Mj6yASf+QVMBETZRJSk0PTYxUFsyWDc2b0THZQABADj/8gIFAsgAHQAANxYWMzI2NTQmIyIHNTcjNSEVBzYWFhUUBgYjIiYnjBlHKTlJT0YpJZv9AYurPWA2PGtFRnUmrScrRzU8PAhbvWlYxwMxYENCaTtCPAAAAAIAGAAAAhACyAAKAA0AACUhNQEzETMVIxUjNREDAU/+yQEtd1RUbcKZRAHr/ihXmfABQP7AAAAAAQAx//ICBALIAB4AABYmJzcWFjMyNjU0JiMiByMRIRUhFTYzMhYWFRQGBiPPeSVZE0sqO0xJOEEvUQGA/u0uRTtdNTxsRQ5JQjUpMkw8OUo1AZtkvx85Z0JGbT0AAAAAAgA1//ICBQLIABMAHwAAFiYmNTQ2NxMzAzYzMhYWFRQGBiM2NjU0JiMiBhUUFjPcaj0dJ6l1pRwiPWE3PGpBNEZGNDVGRjUOPGhAJVBFATj+2xE5Zj9AaDxjSTc3Skk4N0kAAAEAJgAAAdQCyAAGAAABITUhFQMjAVz+ygGu6XMCZGRV/Y0AAAMAL//yAgcC1gAbACcAMwAAFiYmNTQ2NyYmNTQ2NjMyFhYVFAYHFhYVFAYGIxI2NTQmIyIGFRQWMxI2NTQmIyIGFRQWM9hrPkY0LTg4Yj08YTg4LDVGPmxCLjw9LS89PS82SEk1NklINw42XztGYhQWTDU2WDMzWDY1SxcWYUU7XzYBujktKzc3Ky05/qhENDZJSTY0RAAAAgA1AAACBQLWABMAHwAAAQYjIiYmNTQ2NjMyFhYVFAYHAyMSNjU0JiMiBhUUFjMBSBwiPWE3PGpCQWo9HSaqda9GRjU1RUY0ASUROWY/QGg8PGhAJFBG/sgBckk4N0lJNzhJAAEALP+EANMAbQADAAAXNzMHLDZxZHzp6QAAAAABAFMAAADBAG0AAwAAMzUzFVNubW0AAAABAC0BLgIIAZsAAwAAARUhNQII/iUBm21tAAAAAwBN/7MCGgMGABUAHAAlAAAkBgcVIzUjETM1MxUWFhUUBgcVFhYVJTMyNTQjIxI2NTQmIyMVMwIaYlptpKRtU1k9NDlI/qBYiYlYp0lFSGNjhF8NZWECkmBlDVZFOksOAgxLPsNaV/4vLzAxLr4AAAEAQ/+7Ai8DBgAhAAAkNjcXBgcVIzUmJjU1NDY3NTMVFhcHJiYjIgYGFRUUFhYzAYRDIEhEXGxneXlnbFxESCFCJzNPLCxPM2seH0NKEFBPEZxzZnOcEVZXEEpDHx81XjtKO101AAAAAQBu/6ECAAJAACAAACQ2NxcGBxUjNSYmNTU0Njc1MxUWFhcHJiYjIgYVFRQWMwFqLw9YKmhhTVJSTmAxTBVYES8jMDY1MVEdHy9YEFVUDGtbSmBtDFZXCTQoLx0cPUBKOT0AAAMAQf+3AjMDBAAiACgALwAAAQM2NjcXBiMjByM3JicHIzcmJjU1NDY2NzczBxYXNzMHFhcAFxMmJwMmFxMGBhUVAe2AIjkdSFaCBhhZGxgWIlo0ICI7bUkYWhkcFB1bKhUP/tIYiBYbgz4FXS40Ahr+UgMeHERfT10IDHGtKGk+VVKCTghSVAUIYY0QEv4uCgHKCQP+R44eATgYZ0Y4AAACAEz/+wLUAoMAGwArAAAkBxcHJwYjIicHJzcmNTQ3JzcXNjMyFzcXBxYVBjY2NTQmJiMiBgYVFBYWMwKTK2xMbUBLS0BtTGwrKGlMaENNTUNoTGko2kUoKEUpKUUoKEUp9kNsTG0oKG1MbENNS0BpTGgrK2hMaUBLmClGKSlGKSlGKSlGKQAAAQBQ/7cCCQMGACkAACQGBxUjNSYnNxYWMzI2NTQmJyYmNTQ2NzUzFRYXByYmIyIGFRQWFxYWFQIJVUhtZ0hGHEoqNEA5O2ZjWUltVjxHHz4jLz44O2ljgmQRVlENSkodITAoJDASHl9LTGUNV1gUSUMiIDEoJC8SHl9KAAEAUP+3AgkDBgApAAAkBgcVIzUmJzcWFjMyNjU0JicmJjU0Njc1MxUWFwcmJiMiBhUUFhcWFhUCCVVIbWdIRhxKKjRAOTtmY1lJbVY8Rx8+Iy8+ODtpY4JkEVZRDUpKHSEwKCQwEh5fS0xlDVdYFElDIiAxKCQvEh5fSgADAFD/+AI5AxsAGgAmACoAAAEjESM1BgYjIiYmNTQ2NjMyFhc1IzUzNTMVMwI2NTQmIyIGFRQWMwchFSECOUhsEEcqNVEuLlE1K0YQn59sSOs3Ny8rNjYrrQF//oECcP4eNh4mNGA+PmA0JR+QWFNT/hk+MzM/PzMzPpJXAAAAAAEALP/yAhsCyAAnAAAlBgYjIiYnIzUzNSM1MzY2MzIWFwcmJiMiBgczByMVMwcjFhYzMjY3AhsaY0RldwtHRUVHCXdnQWEbUBA2JTY/B9ERwrARnAg+NSI2EGc1QH53UkNSeYE7NTUeI01JUkNSR0kgHQAAAwAw/7cCKQMGABcAHwAlAAABFRQGBxUjNSYmNTU0Njc1MxUWFwcmJxUGFhcRBgYVFQUjFTY2NQIpZVxsX21tX2xoRkgyNMsyLS0yASBVKisBg2trkhFTVROheFB3oBVSTw9ORC8LzYhtFgHMF2pKMiOxD0kxAAAAAgAk//ICNALIABUAKwAAARUhNSE2NTQmIyIGByc2MzIWFhUUBwUhFSEGFRQWMzI2NxcGIyImJjU0NyMCNP3wAV8NPi8jPh9HUXw8YTcH/i4CEP6bDkEzK0gcR1l8Qmc7CTcBylJSFyEqOCAhQmM1XTscFYVRGRwvOSEeS1k0Xj0bGAAAAQARAAACPQK6ABMAAAEjEyMDIxEjESM1MxEzETMTMwMzAj3o53zfDm1VVW0Q1nfe6wFB/r8BQf6/AUFUASX+2wEl/tsAAAAAAQAVAAACQwMHACsAABIWFzMVITUzLgI1NDY3NTMVNjMyFzUzFRYWFSM0JxUjNSYjIgcVIzUGBhWDX13a/iOMOEwvW1NQCBEPB1BWW25DUAcPEQhQHyEBM4tFY2MuU29HZYsbYlQBAVRjH6mGmjubvQEBvZ0ZVDgAAf/4AAACQwLCABkAAAEUBiMRBzU3NQc1NzUzFTcVBxU3FQcVMjY1AkPo5n19fX1uqKioqG+EAVCmqgEgLVctRi1XLa6HPFc8RjxXPOF6cAABABcAAAJBAsgAFwAAABYVFSM1NCYnESMRBgYVFSM1NDY3NTMVAdZrbTc8azs3bWp1awJStrTo7nmCEf5wAZASgnju6LW0EGdnAAAAAQAAAAACWALIABMAAAEjESMDIxEjESM1MxEzEzMDMxEzAlhGnMMFaEZGncQEAWhGATL+zgIc/eQBMmQBMv3kAhz+zgAEACQAAAKYAsAAHAAhACgALQAAASMWFRQHMxUjBgYjIxUjESM1MzUjNTM1MzIWFzMhMyYjIxYnIxUzNjUGNyMVMwKYSQEBSVodlHA+bE9PT0+2aowdXP5H0zVmOP0C+/wBWjPWOAHaCRIQCFJLT7sBVVIzUpRMSDOXEjMIEKA2NgAAAAACABkAAAI+AroAFgAfAAATFTMVIxUjNSM1MzUjNTMRMzIWFRQGIyczMjY1NCYjI+y6um1mZmZmwHWKkXtGPUtVVUs9ATldUoqKUl1SAS9nWVpnUjs0NDkAAQA+AAACGgK5ABkAAAEjFhczFSMGBiMjASMBNTMyNyE1MyYnIzUhAhq7KRV9bghtWxkBA4n/AXN4Fv7/+hpDnQHcAlsXL19NV/7uASVLRl8yFF4AAgBHAAAC2AK6AA0AGwAAATQmIyMRIxEhMhYVESMBERQGIyERMxEzMjY1EQG3NTqXagELa2RqASFhbf71apc3OAHuOTP9pgK6XGT+swIN/gZlWwIN/lM4NAHuAAABAFIAAAH7AsgAGwAAJRUhNTM1IzUzNTQ2MzIWFwcmJiMiBhUVMxUjFQH7/ldFOztfUkJUEVwJJhogJpSUX19fu12WWGNBPhweHy0pnV27AAIAMgAAAiYCugADAAsAABMhFSEVIRUjESMRIzIB9P4MAfTDbsMCumNlY/5xAY8AAAEAMgAAAiYCugAXAAABFTcVBxU3FQcVIzUHNTc1BzU3NSM1IRUBY5SUlJRvlJSUlMIB9AJYfzRXNEc0VzTkvDRXNEc0VzSnYmIAAAAEABsAAAMFAroAFwAaAB0AIAAAASMDIwMjAyMDIzUzAzMTMxMzEzMTMwMzIScHByMXJSMXAwVnQllIVklYQmdSP241VUNORFU0bj9S/qAVFWstFAFILhoBNf7LATX+ywE1XwEm/toBJv7aASb+2lhYX3BwcAAAAAABADMAAAIhAroAFgAAATMVIxUzFSMVIzUjNTM1IzUzAzMTEzMBfXaTk5Ntk5OTdqN1goJ1AVlSOVJ8fFI5UgFh/swBNAAAAAABAG7/oQIAAkAAIAAAJDY3FwYHFSM1JiY1NTQ2NzUzFRYWFwcmJiMiBhUVFBYzAWovD1gqaGFNUlJOYDFMFVgRLyMwNjUxUR0fL1gQVVQMa1tKYG0MVlcJNCgvHRw9QEo5PQAAAQBQ/7cCCQMGACkAACQGBxUjNSYnNxYWMzI2NTQmJyYmNTQ2NzUzFRYXByYmIyIGFRQWFxYWFQIJVUhtZ0hGHEoqNEA5O2ZjWUltVjxHHz4jLz44O2ljgmQRVlENSkodITAoJDASHl9LTGUNV1gUSUMiIDEoJC8SHl9KAAEAUgAAAfsCyAAbAAAlFSE1MzUjNTM1NDYzMhYXByYmIyIGFRUzFSMVAfv+V0U7O19SQlQRXAkmGiAmlJRfX1+7XZZYY0E+HB4fLSmdXbsABAAbAAADBQK6ABcAGgAdACAAAAEjAyMDIwMjAyM1MwMzEzMTMxMzEzMDMyEnBwcjFyUjFwMFZ0JZSFZJWEJnUj9uNVVDTkRVNG4/Uv6gFRVrLRQBSC4aATX+ywE1/ssBNV8BJv7aASb+2gEm/tpYWF9wcHAAAAAAAQAzAAACIQK6ABYAAAEzFSMVMxUjFSM1IzUzNSM1MwMzExMzAX12k5OTbZOTk3ajdYKCdQFZUjlSfHxSOVIBYf7MATQAAAAAAQAnAHICDgJYAAsAAAEjFSM1IzUzNTMVMwIOvmu+vmu+ATC+vmq+vgAAAAABAC0BLgIIAZsAAwAAARUhNQII/iUBm21tAAAAAQAAAAEAALtgETlfDzz1AAMD6AAAAADVtvhtAAAAANZpKuX/+P+EA3ADGwAAAAcAAgAAAAAAAAABAAADhP8zAAADjf/4AAADcAABAAAAAAAAAAAAAAAAAAAAYgJYAEgA6AAAAoYAFAJNAEoCVABAAn8ASgIsAEoCGABKAoAAQAKdAEoBAgBKAdwAGAJ3AEoCFQBKAyYASgJ/AD8CiwA5AlIASgKLADkCYQBKAi0ALAIhABcCdwA+AnwAHQONAB0CkQARAmIADgJIACwB8wAUAeYASgHTAEAB/wBKAbgASgGkAEoB/wBAAiYASgDzAEoBhQAYAfAASgGkAEoCggBKAiEASgIEADkB1ABKAgMAOQHiAEoBuAAsAbYAFwILAD4B8gAdArgAHQHyABEB0AAOAccALAI1AEABugALAjUAPQI1ADgCNQAYAjUAMQI1ADUCAQAmAjUALwI1ADUBFgAsARYAUwI1AC0CWABNAlgAQwJYAG4CWABBAyAATAJYAFACWABQAlgAUAJYACwCWAAwAlgAJAJYABECWAAVAlj/+AJYABcCWAAAArwAJAJYABkCWAA+AyAARwJYAFICWAAyAlgAMgMgABsCWAAzAlgAbgJYAFACWABSAyAAGwJYADMCNQAnAC0AAAAAABYAFgAyAGYAlAC0AMwA4gEUAS4BPAFYAXIBggGgAboB7AIOAkYCbgKmArgC1gLqAwoDJgM8A1QDbgOiA8oD7AQCBBYERARaBGgEhgScBKwEygTiBRIFMgVmBYwFxgXYBfoGDgYuBkgGXAZyBpYGqAbSBwAHHAdMB34HkAfcCA4IHAgoCDYIbgiiCNQJJAloCaYJ5AokCl4KmgrcCwALPAtkC4oLrAvuDBoMRAxyDJoMsgzYDRQNOA1qDagN0A4MDjAORg5UAAEAAABjADQABAAAAAAAAQACAB4ABAAAAGQAAAAAAAAAAAAxAlIAAQAAAAAAAAAzAAAAAQAAAAAAAQAPADMAAQAAAAAAAgAGAEIAAQAAAAAAAwAqAEgAAQAAAAAABAAWAHIAAQAAAAAABQAMAIgAAQAAAAAABgAWAJQAAQAAAAAABwAmAKoAAQAAAAAACAALANAAAQAAAAAACQAjANsAAQAAAAAACwAYAP4AAQAAAAAAEAAPARYAAQAAAAAAEQAGASUAAQAAAAAAEgAWASsAAQAAAAAAEwARAUEAAQAZACEAAAAzAVIAAQAZACEAAQAPAYUAAQAZACEAAgAGAZQAAQAZACEAAwAqAZoAAQAZACEABAAWAcQAAQAZACEABQAMAdoAAQAZACEABgAWAeYAAQAZACEABwAmAfwAAQAZACEACAALAiIAAQAZACEACQAjAi0AAQAZACEAEgAWAlAAAwABBAkAAABmAmYAAwABBAkAAQAsAswAAwABBAkAAgAOAvgAAwABBAkAAwBUAwYAAwABBAkABAAsA1oAAwABBAkABQAYA4YAAwABBAkABgAsA54AAwABBAkABwBMA8oAAwABBAkACAAWBBYAAwABBAkACQBGBCwAAwABBAkACwAwBHIAAwABBAkAEAAeBKIAAwABBAkAEQAMBMAAAwABBAkAEwAiBMwAAwABCAQAAABmBO4AAwABCAQAAQAsBVQAAwABCAQAAgAOBYAAAwABCAQABAAsBY4AAwABCAQABwBMBboAAwABCAQACAAWBgYAAwABCAQACQBGBhwAAwABCAQAEAAeBmIAAwABCAQAEQAMBoBDb3B5cmlnaHQgKGMpIDIwMTcgYnkgVGVuY2VudC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5XZUNoYXQgU2FucyBTdGRNZWRpdW1IYW55aSBXZUNoYXQgU2FucyBTdGQtTWVkaXVtOyBWZXJzaW9uIDEuMDBXZUNoYXQgU2FucyBTdGQtTWVkaXVtVmVyc2lvbiAxLjAwV2VDaGF0LVNhbnMtU3RkLU1lZGl1bVdlQ2hhdCBTYW5zIGlzIGEgdHJhZGVtYXJrIG9mIFRlbmNlbnQuSGFueWkgRm9udHNaSEFORyBYdWFuLCBXQU5HIFRpYW5iaSwgTElVIFhpYW95dWh0dHA6Ly93d3cuaGFueWkuY29tLmNuL1dlQ2hhdCBTYW5zIFN0ZE1lZGl1bVdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW3boiSjX7QKMTIzNDU2Nzg5MENvcHlyaWdodCAoYykgMjAxNyBieSBUZW5jZW50LiBBbGwgcmlnaHRzIHJlc2VydmVkLldlQ2hhdCBTYW5zIFN0ZE1lZGl1bUhhbnlpIFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW07IFZlcnNpb24gMS4wMFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW1WZXJzaW9uIDEuMDBXZUNoYXQtU2Fucy1TdGQtTWVkaXVtV2VDaGF0IFNhbnMgaXMgYSB0cmFkZW1hcmsgb2YgVGVuY2VudC5IYW55aSBGb250c1pIQU5HIFh1YW4sIFdBTkcgVGlhbmJpLCBMSVUgWGlhb3l1V2VDaGF0IFNhbnMgU3RkLU1lZGl1bQBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIASABhAG4AeQBpACAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQA7ACAAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBWAGUAcgBzAGkAbwBuACAAMQAuADAAMABXAGUAQwBoAGEAdAAtAFMAYQBuAHMALQBTAHQAZAAtAE0AZQBkAGkAdQBtAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAFQAZQBuAGMAZQBuAHQALgBIAGEAbgB5AGkAIABGAG8AbgB0AHMAWgBIAEEATgBHACAAWAB1AGEAbgAsACAAVwBBAE4ARwAgAFQAaQBhAG4AYgBpACwAIABMAEkAVQAgAFgAaQBhAG8AeQB1AGgAdAB0AHAAOgAvAC8AdwB3AHcALgBoAGEAbgB5AGkALgBjAG8AbQAuAGMAbgAvAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAFMAdABkAE0AZQBkAGkAdQBtIKwAogAkAKMgqQClAAoAMQAyADMANAA1ADYANwA4ADkAMABDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABUAGUAbgBjAGUAbgB0AC4ASABhAG4AeQBpACAARgBvAG4AdABzAFoASABBAE4ARwAgAFgAdQBhAG4ALAAgAFcAQQBOAEcAIABUAGkAYQBuAGIAaQAsACAATABJAFUAIABYAGkAYQBvAHkAdQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZABNAGUAZABpAHUAbQAAAAIAAAAAAAD/tQAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAYwAAAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQATABQAFQAWABcAGAAZABoAGwAcAA8AEQAQAQIBAwCEAQQAvQAHAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgCFARMBFAEVAJYBFgEXARgBGQEaAA4A7wd1bmkwRTNGB3VuaTIwQjUNY29sb25tb25ldGFyeQd1bmlGRTY5BGRvbmcERXVybwd1bmkyMEIyB3VuaTIwQjQHdW5pMjBBRAd1bmkyMEJFB3VuaTIwQkEHdW5pMjBCQwd1bmkyMEE2B3VuaTIwQjEHdW5pMjBCRAd1bmkyMEI5B3VuaTIwQUEHdW5pMjBCOAd1bmkyMEFFB3VuaTIwQTkHdW5pRkZFMAd1bmlGRjA0B3VuaUZGRTEHdW5pRkZFNgd1bmlGRkU1) format(\"truetype\")}.wx_card_root .card_wrap .card_body_warp_banner .product_card&gt;:not(:first-child){margin-left:4px}.wx_card_root .card_wrap .card_body_warp_banner .banner_card{display:flex;width:100%}.wx_card_root .card_wrap .card_body_warp_banner .banner_card .banner{position:relative;height:100%}.wx_card_root .card_wrap .card_body_warp_banner .banner_card .banner .banner_image_wrap{position:relative}.wx_card_root .card_wrap .card_body_warp_banner .banner_card .banner .banner_image_wrap .banner_image{width:100%;border-radius:4px 4px 0 0;background-size:cover;background-position:center;-o-object-fit:cover;object-fit:cover}.wx_card_root .card_wrap .card_body_warp_banner .banner_card .banner .banner_image_wrap .banner_mask{background-color:#00000008;border-radius:4px 4px 0 0;position:absolute;top:0;right:0;bottom:0;left:0;z-index:10}.wx_card_root .card_wrap .card_body_warp_banner .banner_card .banner .banner_image_wrap .banner_type{width:20px;height:20px;position:absolute;bottom:2px;right:2px;z-index:20}.wx_card_root .card_wrap .card_body_warp_banner .banner_card .banner .banner_title_wrap{position:relative;height:27px;border-radius:0 0 4px 4px;padding-left:6px}.wx_card_root .card_wrap .card_body_warp_banner .banner_card .banner .banner_title_wrap .banner_title{font-size:12px;font-family:PingFang SC;font-weight:500;line-height:16.8px;color:var(--weui-GLYPH-WHITE-3, #ffffff);padding-top:4px;padding-bottom:6px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.wx_card_root .card_wrap .card_body_warp_banner .banner_card&gt;:not(:first-child){margin-left:6px}.wx_card_root .card_wrap .card_body_warp_banner .curated_card{display:flex;width:100%}.wx_card_root .card_wrap .card_body_warp_banner .curated_card .curated{width:100%;height:100%}.wx_card_root .card_wrap .card_body_warp_banner .curated_card .curated .curated_image_wrap{border-radius:4px;position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden}.wx_card_root .card_wrap .card_body_warp_banner .curated_card .curated .curated_image_wrap .mask-bg{border-radius:4px;position:absolute;top:3px;left:3px;right:3px;bottom:3px;background-image:url(https://res.wx.qq.com/shop/public/2025-03-10/f5d316c8-e902-44fe-80a1-5320cb32d508.png);background-size:cover}.wx_card_root .card_wrap .card_body_warp_banner .curated_card .curated .curated_image_wrap .set_cover_img{border-radius:4px;background-size:cover;background-position:center;-o-object-fit:cover;object-fit:cover}.wx_card_root .card_wrap .card_body_warp_banner .curated_card .curated .desc_wrap{display:flex;align-items:center;justify-content:start;height:20px;margin-top:4px}.wx_card_root .card_wrap .card_body_warp_banner .curated_card .curated .desc_wrap .desc{font-size:14px;font-family:PingFang SC;font-weight:400;color:var(--weui-FG-0, #000000);height:20px;line-height:20px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.wx_card_root .card_wrap .card_body_warp_banner .curated_card .curated .desc_wrap .count{font-size:12px;font-family:SF Pro Text,\"system-ui\";font-weight:500;height:20px;color:var(--weui-GLYPH-2, rgba(0, 0, 0, .3));line-height:20px;margin-left:4px}.wx_card_root .card_wrap .card_body_warp_banner .curated_card&gt;:not(:first-child){margin-left:6px}.wx_card_root .card_wrap .card_body_warp_banner .shop_icon_wrap{width:100%;display:flex;align-items:center;justify-content:flex-start;margin-top:8px}.wx_card_root .card_wrap .card_body_warp_banner .shop_icon_wrap .shop_icon{width:14px;height:14px;margin-right:2px;background-image:url(https://res.wx.qq.com/shop/public/2025-09-19/1c1526b5-99ba-49a3-9a82-5750bb722c63.png);background-repeat:no-repeat;background-size:contain}.wx_card_root .card_wrap .card_body_warp_banner .shop_icon_wrap .shop_name{font-size:12px;font-family:PingFang SC;font-weight:400;color:var(--weui-GLYPH-2, rgba(0, 0, 0, .55));line-height:16.8px}.wx_card_root .card_wrap .shop_status_desc{color:#0000004d;height:114px;display:flex;align-items:center;justify-content:center}@media (prefers-color-scheme: dark){.wx_card_root .card_wrap{background-color:#ffffff05}.wx_card_root .card_wrap .card_body_warp_banner .shop_icon_wrap .shop_icon{background-image:url(https://res.wx.qq.com/shop/public/2025-09-19/ad530d26-e227-4123-a070-cf5939d96d03.png)}.wx_card_root .card_wrap .shop_status_desc{color:#ffffff4d}.bluepacket_wx_img_placeholder{background-color:#ffffff05}}\n",
    n$3 = {
      loaded: "data-loaded",
      customstyle: "data-customstyle",
      scrollBlur: "data-scroll-blur",
      wapExportToken: "data-wap-export-token",
      appid: "data-appid",
      shopEncryptKey: "data-shop_encrypt_key",
      is_hover: "data-is-hover",
      is_selected: "data-is-selected"
    };
  function q$1(B) {
    var A = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : {};
    var e = o$6.call(this, n$3);
    return e = o$6.call(this, n$3), e.loaded = Number(e.loaded || 0), e.appid = e.appid || "", e.shopEncryptKey = e.shopEncryptKey || "", e.scrollBlur = Number(e.scrollBlur || 0), e.is_hover *= 1, e.is_selected *= 1, _objectSpread$5({
      platform: B,
      extraInfo: A
    }, e);
  }
  function aA() {
    var B = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    H$3(Object.assign(B, {
      Component: X$1,
      styleText: B.isDev ? B.devStyleText : v,
      customName: "mp-common-shopprofile",
      watchAttr: Object.values(n$3),
      getProps: q$1,
      eventName: ["document-click", "expose", "element-click", "onFrameReady", "card-click"]
    }));
  }

  var o$1 = (typeof globalThis === "undefined" ? "undefined" : _typeof$2(globalThis)) &lt; "u" ? globalThis : (typeof window === "undefined" ? "undefined" : _typeof$2(window)) &lt; "u" ? window : (typeof global === "undefined" ? "undefined" : _typeof$2(global)) &lt; "u" ? global : (typeof self === "undefined" ? "undefined" : _typeof$2(self)) &lt; "u" ? self : {};

  function _regeneratorRuntime() {  _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof$2(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof$2(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  function ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r &amp;&amp; (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
  function _objectSpread$4(e) { for (var r = 1; r &lt; arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) { defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
  function j(_x) {
    return _j.apply(this, arguments);
  }
  function _j() {
    _j = asyncToGenerator( _regeneratorRuntime().mark(function _callee31(i) {
      return _regeneratorRuntime().wrap(function _callee31$(_context31) {
        while (1) switch (_context31.prev = _context31.next) {
          case 0:
            return _context31.abrupt("return", new Promise(function (e) {
              R$4.invoke("handleEcsAction", {
                action: "openEcs",
                ecsJumpInfoBase64: i
              }, function (t) {
                e(t);
              });
            }));
          case 1:
          case "end":
            return _context31.stop();
        }
      }, _callee31);
    }));
    return _j.apply(this, arguments);
  }
  function P$1() {
    return _P.apply(this, arguments);
  }
  function _P() {
    _P = asyncToGenerator( _regeneratorRuntime().mark(function _callee32() {
      return _regeneratorRuntime().wrap(function _callee32$(_context32) {
        while (1) switch (_context32.prev = _context32.next) {
          case 0:
            return _context32.abrupt("return", new Promise(function (i) {
              R$4.invoke("handleEcsAction", {
                action: "checkAction",
                params: {
                  method: "isActionAvailable",
                  actionName: "openEcs",
                  actionVersion: "1"
                }
              }, function (e) {
                e &amp;&amp; e.result ? i(!0) : i(!1);
              });
            }));
          case 1:
          case "end":
            return _context32.stop();
        }
      }, _callee32);
    }));
    return _P.apply(this, arguments);
  }
  var ae = function ae(i) {
      return (Number(i) / 100).toFixed(2).replace(/([0-9]+(\.[0-9]+[1-9])?)(\.?0+$)/, "$1");
    },
    H$1 = 8,
    ne = {
      NORMAL: 1
    },
    _ = {
      CARD: 1,
      PRODUCT: 2
    },
    G$1 = {
      EXPOSE: 1,
      CLICK: 2
    };
  var l$2;
  function K$1() {
    var e, t;
    return {
      exportkey: Url.getQuery("exportkey"),
      __biz: window.biz,
      article_info: {
        mp_biz: (window == null ? void 0 : window.atob(window.biz || "")) || "",
        item_idx: Number(window.itemidx || window.idx),
        appmsgid: Number(window.mid),
        item_show_type: Number(window.item_show_type),
        mp_article_scene: Number(window.source),
        mp_sub_scene: Number(window.subscene),
        mp_get_a8key_scene: Number(window.ascene),
        carrier_type: ((t = (e = window.cgiData) == null ? void 0 : e.product_activity) == null ? void 0 : t.activity_type) || 0,
        search_click_id: Url.getQuery("search_click_id")
      }
    };
  }
  var se = 100;
  var M = 0;
  function W() {
    return _W.apply(this, arguments);
  }
  function _W() {
    _W = asyncToGenerator( _regeneratorRuntime().mark(function _callee33() {
      return _regeneratorRuntime().wrap(function _callee33$(_context33) {
        while (1) switch (_context33.prev = _context33.next) {
          case 0:
            return _context33.abrupt("return", l$2 || (window.__secPageAuthPromise ? new Promise(function (i) {
              window.__secPageAuthPromise.then(function () {
                l$2 = K$1(), i(l$2);
              });
            }) : (_typeof$2(window.itemidx || window.idx) &gt; "u" || _typeof$2(window.mid) &gt; "u" || _typeof$2(window.item_show_type) &gt; "u") &amp;&amp; M &lt; se ? (M++, new Promise(function (e) {
              setTimeout(function () {
                e(W());
              }, 16);
            })) : (l$2 = K$1(), l$2)));
          case 1:
          case "end":
            return _context33.stop();
        }
      }, _callee33);
    }));
    return _W.apply(this, arguments);
  }
  function ce(i, e) {
    var t = {
      base_req: {
        action: i
      },
      ext_info: JSON.stringify(e)
    };
    return {
      data: JSON.stringify(t)
    };
  }
  function X(i) {
    if (!i) return;
    var e = i.data;
    e.params &amp;&amp; (e.params = JSON.parse(e.params), e.params = JSON.stringify(_objectSpread$4(_objectSpread$4({}, e.params), {}, {
      scene: Number(window.source),
      subscene: Number(window.subscene),
      ClientVersion: parseInt(window.clientversion || "", 16),
      SessionId: window.sessionid || ""
    }))), ajax({
      type: "POST",
      url: "/mp/c_psmaterial_info?action=get_windowproduct",
      timeout: 5e3,
      dataType: "json",
      data: ce("ReportMMData23782", _objectSpread$4({}, e)),
      success: function success() {},
      error: function error() {
        console.log("[error]");
      }
    });
  }
  var ue = {
    mixins: [k$1],
    props: {
      shopAppid: {
        type: String,
        "default": ""
      },
      curatedSetKey: {
        type: String,
        "default": ""
      },
      platform: {
        type: String,
        "default": "web"
      }
    },
    data: function data() {
      return {
        getColletionResp: null,
        requestinggetCollectionCardResp: !1,
        _supportOpenEcs: void 0,
        forceUpdate: !1,
        iframeLoading: !0,
        isDark: window.matchMedia &amp;&amp; window.matchMedia("(prefers-color-scheme: dark)").matches,
        getShopCollectionPromise: null,
        productWidth: 0,
        productHeight: 0
      };
    },
    computed: {
      cardStyle: function cardStyle() {
        var i = {};
        return this.platform === "web" ? (i.width = "350px", this.isDark &amp;&amp; (i.background = "rgba(0, 0, 0, 0.02)")) : i.width = "100%", i;
      },
      placeholderStyle: function placeholderStyle() {
        var i = {
          height: "108px"
        };
        return this.platform === "web" ? i.width = "350px" : i.width = "100%", i;
      },
      collectionProfileName: function collectionProfileName() {
        var i, e;
        return ((e = (i = this.getColletionResp) == null ? void 0 : i.curated_set) == null ? void 0 : e.title) || "";
      },
      shopName: function shopName() {
        var i;
        return ((i = this.getColletionResp) == null ? void 0 : i.shop_name) || "";
      },
      showProduct: function showProduct() {
        var i, e;
        return (((e = (i = this.getColletionResp) == null ? void 0 : i.curated_set) == null ? void 0 : e.top_brief_products) || []).length &gt; 2;
      },
      products: function products() {
        var i, e;
        return (((e = (i = this.getColletionResp) == null ? void 0 : i.curated_set) == null ? void 0 : e.top_brief_products) || []).slice(0, 3);
      },
      collectionJumpInfo: function collectionJumpInfo() {
        var i, e;
        return ((e = (i = this.getColletionResp) == null ? void 0 : i.curated_set) == null ? void 0 : e.set_jump_info_base64_str) || "";
      },
      collectionStatus: function collectionStatus() {
        return 1;
      },
      isCollectionStatusNormal: function isCollectionStatusNormal() {
        return this.collectionStatus === ne.NORMAL;
      },
      statusDesc: function statusDesc() {
        return "合集异常";
      },
      isDel: function isDel() {
        var i, e;
        return ((e = (i = this.getColletionResp) == null ? void 0 : i.curated_set) == null ? void 0 : e.del_flag) === 1;
      },
      iconStyle: function iconStyle() {
        if (this.isDark &amp;&amp; this.platform === "web") return {
          backgroundImage: 'url("https://res.wx.qq.com/shop/public/2025-05-10/321b820e-8d8a-4083-8e0f-40b2b01fc8ef.png")'
        };
      },
      pruductStyle: function pruductStyle() {
        return {
          width: "".concat(this.productWidth, "px"),
          height: "".concat(this.productHeight, "px")
        };
      }
    },
    created: function created() {
      console.log("created this.shopAppid=".concat(this.shopAppid, " this.curatedSetKey=").concat(this.curatedSetKey)), this.getCollectionCard();
    },
    mounted: function mounted() {
      var _this = this;
      return asyncToGenerator( _regeneratorRuntime().mark(function _callee() {
        return _regeneratorRuntime().wrap(function _callee$(_context) {
          while (1) switch (_context.prev = _context.next) {
            case 0:
              _this.extraInfo.window &amp;&amp; _this.extraInfo.window.addEventListener("message", _this.handleMessage), _this.extraInfo.window &amp;&amp; _this.extraInfo.window.addEventListener("click", _this.handleDocumentClick), _this.reportExpose();
            case 1:
            case "end":
              return _context.stop();
          }
        }, _callee);
      }))();
    },
    beforeDestroy: function beforeDestroy() {
      this.extraInfo.window &amp;&amp; this.extraInfo.window.removeEventListener("message", this.handleMessage), this.extraInfo.window &amp;&amp; this.extraInfo.window.removeEventListener("click", this.handleDocumentClick);
    },
    watch: {
      shopAppid: {
        handler: function handler() {
          console.log("shopAppid change to", this.shopAppid), this.forceUpdateCollectionCard();
        }
      },
      curatedSetKey: {
        handler: function handler() {
          console.log("curatedSetKey change to", this.curatedSetKey), this.forceUpdateCollectionCard();
        }
      }
    },
    methods: {
      updateImagesSize: function updateImagesSize() {
        if (!this.products || !this.products.length || !this.$refs.products_container) return;
        var e = this.$refs.products_container.offsetWidth;
        this.productWidth = (e - 4 * 2) / 3, this.productHeight = this.productWidth;
      },
      handleDocumentClick: function handleDocumentClick(i) {
        this.$refs.js_custom_element.contains(i.target) || this.$emit("document-click", i);
      },
      formatPriceInit: function formatPriceInit(i) {
        return ae(i);
      },
      initReport: function initReport() {
        var _this2 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee2() {
          return _regeneratorRuntime().wrap(function _callee2$(_context2) {
            while (1) switch (_context2.prev = _context2.next) {
              case 0:
                _context2.next = 2;
                return W();
              case 2:
                _context2.next = 4;
                return _this2.getCollectionCard();
              case 4:
              case "end":
                return _context2.stop();
            }
          }, _callee2);
        }))();
      },
      reportExpose: function reportExpose() {
        var _this3 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee3() {
          return _regeneratorRuntime().wrap(function _callee3$(_context3) {
            while (1) switch (_context3.prev = _context3.next) {
              case 0:
                _context3.next = 2;
                return _this3.report(_.CARD, G$1.EXPOSE);
              case 2:
                _context3.next = 4;
                return _this3.report(_.PRODUCT, G$1.EXPOSE);
              case 4:
              case "end":
                return _context3.stop();
            }
          }, _callee3);
        }))();
      },
      report: function report(i, e, t) {
        var _this4 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee4() {
          var s, n, r, o, u, d, p, _u, _d;
          return _regeneratorRuntime().wrap(function _callee4$(_context4) {
            while (1) switch (_context4.prev = _context4.next) {
              case 0:
                if (!(_this4.platform !== "wechat")) {
                  _context4.next = 2;
                  break;
                }
                return _context4.abrupt("return");
              case 2:
                _context4.next = 4;
                return _this4.initReport();
              case 4:
                r = "";
                i === _.CARD ? r = "collection_card" : i === _.PRODUCT &amp;&amp; (r = "commodity_card");
                o = "";
                if (e === G$1.CLICK ? o = "element_click" : e === G$1.EXPOSE &amp;&amp; (o = "element_valid_expose"), i === _.PRODUCT &amp;&amp; e === G$1.EXPOSE) {
                  u = _this4.products;
                  for (d = 0; d &lt; u.length; ++d) {
                    p = {
                      logid: "23782",
                      data: {
                        event: o,
                        params: JSON.stringify({
                          page_name: "mp_article_page",
                          element_name: r,
                          productid: u[d].product_id,
                          mp_article_bizuin: l$2.article_info.mp_biz,
                          mp_article_appmsgid: l$2.article_info.appmsgid,
                          mp_article_item_idx: l$2.article_info.item_idx,
                          mp_article_item_show_type: l$2.article_info.item_show_type,
                          scene: l$2.article_info.mp_article_scene,
                          cardtype: H$1,
                          appid: _this4.shopAppid
                        })
                      }
                    };
                    X(p);
                  }
                } else {
                  _u = "";
                  _typeof$2(t) &lt; "u" &amp;&amp; (_u = (n = (s = _this4.products) == null ? void 0 : s[t]) == null ? void 0 : n.product_id);
                  _d = {
                    logid: "23782",
                    data: {
                      event: o,
                      params: JSON.stringify({
                        page_name: "mp_article_page",
                        element_name: r,
                        productid: _u,
                        mp_article_bizuin: l$2.article_info.mp_biz,
                        mp_article_appmsgid: l$2.article_info.appmsgid,
                        mp_article_item_idx: l$2.article_info.item_idx,
                        mp_article_item_show_type: l$2.article_info.item_show_type,
                        scene: l$2.article_info.mp_article_scene,
                        cardtype: H$1,
                        appid: _this4.shopAppid
                      })
                    }
                  };
                  X(_d);
                }
              case 8:
              case "end":
                return _context4.stop();
            }
          }, _callee4);
        }))();
      },
      forceUpdateCollectionCard: function forceUpdateCollectionCard() {
        var _this5 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee5() {
          return _regeneratorRuntime().wrap(function _callee5$(_context5) {
            while (1) switch (_context5.prev = _context5.next) {
              case 0:
                _this5.forceUpdate = !0;
                _context5.prev = 1;
                _context5.next = 4;
                return _this5.getCollectionCard();
              case 4:
                _context5.next = 9;
                break;
              case 6:
                _context5.prev = 6;
                _context5.t0 = _context5["catch"](1);
                console.error(_context5.t0);
              case 9:
                _this5.forceUpdate = !1;
              case 10:
              case "end":
                return _context5.stop();
            }
          }, _callee5, null, [[1, 6]]);
        }))();
      },
      getCollectionCard: function getCollectionCard() {
        var _this6 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee6() {
          var i, e, t, r;
          return _regeneratorRuntime().wrap(function _callee6$(_context6) {
            while (1) switch (_context6.prev = _context6.next) {
              case 0:
                if (!(!_this6.shopAppid || !_this6.curatedSetKey)) {
                  _context6.next = 2;
                  break;
                }
                return _context6.abrupt("return", Promise.reject({}));
              case 2:
                if (!(_this6.requestinggetCollectionCardResp &amp;&amp; _this6.getShopCollectionPromise)) {
                  _context6.next = 4;
                  break;
                }
                return _context6.abrupt("return", _this6.getShopCollectionPromise);
              case 4:
                if (!(_this6.getColletionResp &amp;&amp; !_this6.forceUpdate)) {
                  _context6.next = 6;
                  break;
                }
                return _context6.abrupt("return", _this6.getColletionResp);
              case 6:
                _this6.requestinggetCollectionCardResp = !0;
                _context6.prev = 7;
                _context6.next = 10;
                return W();
              case 10:
                _context6.next = 15;
                break;
              case 12:
                _context6.prev = 12;
                _context6.t0 = _context6["catch"](7);
                console.error("getMPInfo fail ".concat(_context6.t0, "."), _context6.t0);
              case 15:
                i = (l$2 == null ? void 0 : l$2.exportkey) || Url.getQuery("exportkey") || "", e = btoa(JSON.stringify((l$2 == null ? void 0 : l$2.article_info) || {})), t = _this6, r = "/mmec/biz_mpgetshopcuratedset?shop_appid=".concat(_this6.shopAppid, "&amp;curated_set_key=").concat(encodeURIComponent(_this6.curatedSetKey), "&amp;exportkey=").concat(i, "&amp;cardtype=").concat(H$1, "&amp;article_info=").concat(e);
                return _context6.abrupt("return", (_this6.getShopCollectionPromise = new Promise(function (o, s) {
                  ajax({
                    type: "GET",
                    url: r,
                    success: function success(n) {
                      if (console.log("/mmec/biz_mpgetshopcuratedset res", n), typeof n == "string") try {
                        n = JSON.parse(n);
                      } catch (u) {
                        n = {}, Log.error("/mmec/biz_mpgetshopcuratedset parse res error. res=".concat(n, " err=").concat(u));
                      }
                      t.getColletionResp = n, t.requestinggetCollectionCardResp = !1, setTimeout(function () {
                        t.updateImagesSize();
                      }), t.$emit("onFrameReady", {
                        nickName: t.collectionProfileName
                      }), t.iframeLoading = !1, o();
                    },
                    error: function error(n) {
                      t.requestinggetCollectionCardResp = !1, t.iframeLoading = !1, console.error("getCollectionCard err", n), s(n);
                    }
                  });
                }), _this6.getShopCollectionPromise));
              case 17:
              case "end":
                return _context6.stop();
            }
          }, _callee6, null, [[7, 12]]);
        }))();
      },
      supportOpenEcs: function supportOpenEcs() {
        var _this7 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee7() {
          return _regeneratorRuntime().wrap(function _callee7$(_context7) {
            while (1) switch (_context7.prev = _context7.next) {
              case 0:
                if (!(_typeof$2(_this7._supportOpenEcs) &lt; "u")) {
                  _context7.next = 4;
                  break;
                }
                _context7.t0 = _this7._supportOpenEcs;
                _context7.next = 8;
                break;
              case 4:
                _context7.next = 6;
                return P$1();
              case 6:
                _this7._supportOpenEcs = _context7.sent;
                _context7.t0 = _this7._supportOpenEcs;
              case 8:
                return _context7.abrupt("return", _context7.t0);
              case 9:
              case "end":
                return _context7.stop();
            }
          }, _callee7);
        }))();
      },
      openJumpInfo: function openJumpInfo(i) {
        var _this8 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee8() {
          var e, t, r, o;
          return _regeneratorRuntime().wrap(function _callee8$(_context8) {
            while (1) switch (_context8.prev = _context8.next) {
              case 0:
                if (!(_this8.platform === "wechat")) {
                  _context8.next = 16;
                  break;
                }
                if (!_this8.isDel) {
                  _context8.next = 4;
                  break;
                }
                (e = window == null ? void 0 : window.weui) == null || e.toast("商品合集已被删除", {
                  extClass: "weui-toast_text"
                });
                return _context8.abrupt("return");
              case 4:
                _context8.next = 6;
                return P$1();
              case 6:
                o = _context8.sent;
                if (!o) {
                  _context8.next = 13;
                  break;
                }
                console.log("supportOpenEcs=".concat(o, ", jumpInfo=").concat(i));
                _context8.next = 11;
                return j(i);
              case 11:
                _context8.next = 14;
                break;
              case 13:
                (t = window == null ? void 0 : window.weui) == null || t.toast("当前版本不支持打开店铺", {
                  extClass: "weui-toast_text"
                });
              case 14:
                _context8.next = 17;
                break;
              case 16:
                (r = window == null ? void 0 : window.weui) == null || r.toast("请在手机微信中打开", {
                  extClass: "weui-toast_text"
                });
              case 17:
              case "end":
                return _context8.stop();
            }
          }, _callee8);
        }))();
      },
      jumpSet: function jumpSet() {
        var _this9 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee9() {
          return _regeneratorRuntime().wrap(function _callee9$(_context9) {
            while (1) switch (_context9.prev = _context9.next) {
              case 0:
                console.log("点击"), _this9.openJumpInfo(_this9.collectionJumpInfo), _this9.report(_.CARD, G$1.CLICK);
              case 1:
              case "end":
                return _context9.stop();
            }
          }, _callee9);
        }))();
      },
      jumpProduct: function jumpProduct(i, e) {
        var _this10 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee10() {
          return _regeneratorRuntime().wrap(function _callee10$(_context10) {
            while (1) switch (_context10.prev = _context10.next) {
              case 0:
                _this10.openJumpInfo(i.detail_page_jump_info_base64_str || ""), _this10.report(_.PRODUCT, G$1.CLICK, e);
              case 1:
              case "end":
                return _context10.stop();
            }
          }, _callee10);
        }))();
      }
    }
  };
  var de = function de() {
      var e = this,
        t = e._self._c;
      return t("div", {
        staticClass: "shopcollection_warp"
      }, [e.iframeLoading ? t("div", {
        staticClass: "collection_wx_img_placeholder",
        style: e.placeholderStyle
      }) : e.isCollectionStatusNormal ? t("div", {
        staticClass: "card_wrap",
        style: e.cardStyle
      }, [e.collectionProfileName ? t("div", {
        staticClass: "card_head",
        on: {
          click: e.jumpSet
        }
      }, [t("div", {
        staticClass: "head_left"
      }, [t("div", {
        staticClass: "head_mid"
      }, [t("div", {
        staticClass: "head_mid_top"
      }, [e._v(e._s(e.collectionProfileName))])])]), e._m(0)]) : e._e(), e.showProduct ? t("div", {
        ref: "products_container",
        staticClass: "product_list"
      }, e._l(e.products, function (r, o) {
        return t("div", {
          staticClass: "product",
          style: e.pruductStyle,
          on: {
            click: function click(s) {
              return e.jumpProduct(r, o);
            }
          }
        }, [r.head_img_url ? t("img", {
          staticClass: "product_image",
          attrs: {
            src: r.head_img_url
          }
        }) : e._e(), t("div", {
          staticClass: "product_price"
        }, [e._v(" ¥" + e._s(e.formatPriceInit(r.price)) + " ")])]);
      }), 0) : e._e(), e.shopName ? t("div", {
        staticClass: "shop_icon_wrap"
      }, [t("div", {
        staticClass: "shop_icon",
        style: e.iconStyle
      }), t("div", {
        staticClass: "shop_name"
      }, [e._v(e._s(e.shopName))])]) : e._e()]) : t("div", {
        staticClass: "card_wrap",
        style: e.cardStyle
      }, [t("div", {
        staticClass: "shop_status_desc"
      }, [e._v(e._s(e.statusDesc))])])]);
    },
    pe = [function () {
      var i = this,
        e = i._self._c;
      return e("div", {
        staticClass: "head_right"
      }, [e("button", {
        staticClass: "tap_home_btn weui-btn weui-btn_default weui-btn_mini"
      }, [i._v("详情")])]);
    }],
    le = v$2(ue, de, pe, !1, null, null, null, null);
  var we = le.exports,
    R = {
      LINK: 1,
      SHOP: 2
    },
    x = {
      CARD: 1,
      PRODUCT: 2
    },
    C$2 = {
      EXPOSE: 1,
      CLICK: 2
    },
    T$2 = {
      Init: 1,
      On: 2,
      End: 3
    },
    ge = defineProperty(defineProperty(defineProperty({
      mixins: [k$1],
      components: {},
      props: {
        title: {
          type: String,
          "default": ""
        },
        encrypt_key: {
          type: String,
          "default": ""
        },
        isMock: {
          type: Number,
          "default": 0
        },
        cardtype: {
          type: Number,
          "default": 0
        }
      },
      data: function data() {
        return {
          iframeLoading: !1,
          isDark: window.matchMedia &amp;&amp; window.matchMedia("(prefers-color-scheme: dark)").matches,
          isShow: !0,
          resp: null,
          productWidth: 0,
          productHeight: 0,
          getShopCardPromise: null,
          updateShopCardPromise: null,
          requestingGetBulkBuyCardResp: !1,
          requestingGetQrcode: !1,
          getQrcodePromise: null,
          qrcodeUrl: ""
        };
      },
      computed: {
        cardStyle: function cardStyle() {
          var i = {};
          return this.platform === "web" ? (i.width = "350px", this.isDark &amp;&amp; (i.background = "rgba(0, 0, 0, 0.02)")) : i.width = "100%", i;
        },
        placeholderStyle: function placeholderStyle() {
          return _objectSpread$4({
            height: "108px"
          }, this.cardStyle);
        },
        productStyle: function productStyle() {
          return {
            width: "".concat(this.productWidth, "px")
          };
        },
        pruductImgStyle: function pruductImgStyle() {
          return {
            width: "".concat(this.productWidth, "px"),
            height: "".concat(this.productHeight, "px")
          };
        },
        bulkBuyActivityCard: function bulkBuyActivityCard() {
          var i;
          return (i = this.resp) == null ? void 0 : i.bulk_buy_activity_card;
        },
        activityInfo: function activityInfo() {
          var i;
          return (i = this.bulkBuyActivityCard) == null ? void 0 : i.activity_info;
        },
        storeInfo: function storeInfo() {
          var i;
          return (i = this.bulkBuyActivityCard) == null ? void 0 : i.store_info;
        },
        activityInfoTitle: function activityInfoTitle() {
          var i;
          return ((i = this.activityInfo) == null ? void 0 : i.title) || "";
        },
        participant: function participant() {
          var i;
          return (((i = this.activityInfo) == null ? void 0 : i.user_list) || []).slice(0, 6);
        },
        products: function products() {
          var i;
          return (((i = this.bulkBuyActivityCard) == null ? void 0 : i.products) || []).slice(0, 3);
        },
        shopName: function shopName() {
          var i;
          return ((i = this.storeInfo) == null ? void 0 : i.nick_name) || "";
        },
        activityInfoUserCountDesc: function activityInfoUserCountDesc() {
          var e, t, r;
          var i = (e = this.activityInfo) == null ? void 0 : e.status;
          return i === T$2.Init ? "" : i === T$2.On ? ((t = this.activityInfo) == null ? void 0 : t.progress_desc) || "" : i === T$2.End &amp;&amp; ((r = this.activityInfo) == null ? void 0 : r.user_count_desc) || "";
        },
        showProducts: function showProducts() {
          return this.products.length &gt;= 3;
        },
        reportCardtype: function reportCardtype() {
          return this.cardtype === R.SHOP ? 9 : 10;
        },
        jumpInfo: function jumpInfo() {
          var i;
          return ((i = this.bulkBuyActivityCard) == null ? void 0 : i.bulk_buy_activity_jump_info_base64_str) || "";
        },
        iconStyle: function iconStyle() {
          if (this.isDark &amp;&amp; this.platform === "web") return {
            backgroundImage: 'url("https://res.wx.qq.com/shop/public/2025-05-10/321b820e-8d8a-4083-8e0f-40b2b01fc8ef.png")'
          };
        },
        appid: function appid() {
          var i;
          return ((i = this.storeInfo) == null ? void 0 : i.appid) || "";
        },
        showActivityDecs: function showActivityDecs() {
          var e;
          return ((e = this.activityInfo) == null ? void 0 : e.status) !== T$2.End &amp;&amp; (this.participant.length || this.activityInfoUserCountDesc);
        }
      },
      created: function created() {
        var _this11 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee11() {
          return _regeneratorRuntime().wrap(function _callee11$(_context11) {
            while (1) switch (_context11.prev = _context11.next) {
              case 0:
                _this11.cardtype === R.SHOP &amp;&amp; (_this11.iframeLoading = !0), _this11.getCardData();
              case 1:
              case "end":
                return _context11.stop();
            }
          }, _callee11);
        }))();
      },
      mounted: function mounted() {
        var _this12 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee13() {
          return _regeneratorRuntime().wrap(function _callee13$(_context13) {
            while (1) switch (_context13.prev = _context13.next) {
              case 0:
                _context13.next = 2;
                return _this12.getCardData();
              case 2:
                R$4.on("onWindowFocusChanged", _this12.__onNativeFocusChange = function () {
                  var _ref = asyncToGenerator( _regeneratorRuntime().mark(function _callee12(i) {
                    return _regeneratorRuntime().wrap(function _callee12$(_context12) {
                      while (1) switch (_context12.prev = _context12.next) {
                        case 0:
                          (R$3() ? !(i.hasFocus * 1) : i.hasFocus) &amp;&amp; _this12.getCardData(!0);
                        case 1:
                        case "end":
                          return _context12.stop();
                      }
                    }, _callee12);
                  }));
                  return function (_x2) {
                    return _ref.apply(this, arguments);
                  };
                }());
                _this12.reportExpose();
              case 4:
              case "end":
                return _context13.stop();
            }
          }, _callee13);
        }))();
      },
      beforeDestroy: function beforeDestroy() {
        R$4.remove("onWindowFocusChanged", this.__onNativeFocusChange);
      }
    }, "beforeDestroy", function beforeDestroy() {
      document.removeEventListener("scroll", this.handleScroll, !0), window.removeEventListener("resize", this.handleScroll);
    }), "watch", {}), "methods", {
      formatPrice: function formatPrice(i) {
        return k$2(i);
      },
      clickLink: function clickLink(i) {
        var _this13 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee14() {
          var e;
          return _regeneratorRuntime().wrap(function _callee14$(_context14) {
            while (1) switch (_context14.prev = _context14.next) {
              case 0:
                if (!(_this13.platform === "wechat")) {
                  _context14.next = 4;
                  break;
                }
                _this13.jumpActivity();
                _context14.next = 17;
                break;
              case 4:
                i.currnetTarget || i.target;
                _context14.prev = 5;
                if (_this13.qrcodeUrl) {
                  _context14.next = 11;
                  break;
                }
                _context14.next = 9;
                return _this13.bizGetBulkBuyQrcode();
              case 9:
                e = _context14.sent;
                _this13.qrcodeUrl = "data:image/jpg;base64,".concat(e.qrcode_data);
              case 11:
                _context14.next = 17;
                break;
              case 13:
                _context14.prev = 13;
                _context14.t0 = _context14["catch"](5);
                console.error("get qrcode fail. code=".concat(_context14.t0.code, ", message=").concat(_context14.t0.message), _context14.t0);
                return _context14.abrupt("return");
              case 17:
              case "end":
                return _context14.stop();
            }
          }, _callee14, null, [[5, 13]]);
        }))();
      },
      updateImagesSize: function updateImagesSize() {
        if (!this.products || !this.products.length || !this.$refs.products_container) return;
        var e = this.$refs.products_container.offsetWidth;
        this.productWidth = (e - 4 * 2) / 3, this.productHeight = this.productWidth;
      },
      getCardData: function getCardData() {
        var _arguments = arguments,
          _this14 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee15() {
          var i, r, o, s, e, t;
          return _regeneratorRuntime().wrap(function _callee15$(_context15) {
            while (1) switch (_context15.prev = _context15.next) {
              case 0:
                i = _arguments.length &gt; 0 &amp;&amp; _arguments[0] !== undefined ? _arguments[0] : !1;
                if (_this14.encrypt_key) {
                  _context15.next = 3;
                  break;
                }
                return _context15.abrupt("return", Promise.reject({}));
              case 3:
                if (!i) {
                  _context15.next = 8;
                  break;
                }
                if (!_this14.updateShopCardPromise) {
                  _context15.next = 6;
                  break;
                }
                return _context15.abrupt("return", _this14.updateShopCardPromise);
              case 6:
                _context15.next = 12;
                break;
              case 8:
                if (!_this14.getShopCardPromise) {
                  _context15.next = 10;
                  break;
                }
                return _context15.abrupt("return", _this14.getShopCardPromise);
              case 10:
                if (!_this14.resp) {
                  _context15.next = 12;
                  break;
                }
                return _context15.abrupt("return", _this14.resp);
              case 12:
                e = _this14.bizGetBulkBuyCard(i);
                i ? _this14.updateShopCardPromise = e : _this14.getShopCardPromise = e;
                t = {};
                _context15.prev = 15;
                _context15.next = 18;
                return e;
              case 18:
                t = _context15.sent;
                _context15.next = 24;
                break;
              case 21:
                _context15.prev = 21;
                _context15.t0 = _context15["catch"](15);
                return _context15.abrupt("return", (console.error(_context15.t0), Log.error("bizGetBulkBuyCard fail, update=".concat(i, ", code=").concat(t.code, ", message=").concat(t.message)), i ? _this14.updateShopCardPromise = null : ((r = window == null ? void 0 : window.weui) == null || r.toast("\u8BF7\u6C42\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5 ".concat(t.code), {
                  extClass: "weui-toast_text"
                }), _this14.getShopCardPromise = null), Promise.reject(_context15.t0)));
              case 24:
                i ? (_this14.updateShopCardPromise = null, I$5(t) ? (Log.error("bizGetBulkBuyCard fail, update=".concat(i, ", code=").concat(t.code, ", message=").concat(t.message)), console.error("bizGetBulkBuyCard fail, update=".concat(i, ", code=").concat(t.code, ", message=").concat(t.message))) : t.bulk_buy_activity_card &amp;&amp; t.bulk_buy_activity_card.activity_info &amp;&amp; (_this14.resp.bulk_buy_activity_card = ((s = _this14.resp) == null ? void 0 : s.bulk_buy_activity_card) || {}, _this14.resp.bulk_buy_activity_card.activity_info = t.bulk_buy_activity_card.activity_info)) : I$5(t) ? ((o = window == null ? void 0 : window.weui) == null || o.toast("\u83B7\u53D6\u6570\u636E\u9519\u8BEF ".concat(t.code), {
                  extClass: "weui-toast_text"
                }), _this14.getShopCardPromise = null, Log.error("bizGetBulkBuyCard fail, update=".concat(i, ", code=").concat(t.code, ", message=").concat(t.message)), console.error("bizGetBulkBuyCard fail, update=".concat(i, ", code=").concat(t.code, ", message=").concat(t.message))) : (_this14.resp = t, setTimeout(function () {
                  _this14.updateImagesSize();
                }));
              case 25:
              case "end":
                return _context15.stop();
            }
          }, _callee15, null, [[15, 21]]);
        }))();
      },
      bizGetBulkBuyCard: function bizGetBulkBuyCard() {
        var _arguments2 = arguments,
          _this15 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee16() {
          var i, e, t, r, o, s, u, n;
          return _regeneratorRuntime().wrap(function _callee16$(_context16) {
            while (1) switch (_context16.prev = _context16.next) {
              case 0:
                i = _arguments2.length &gt; 0 &amp;&amp; _arguments2[0] !== undefined ? _arguments2[0] : !1;
                e = {};
                _context16.prev = 2;
                _context16.next = 5;
                return N$1();
              case 5:
                e = _context16.sent;
                _context16.next = 11;
                break;
              case 8:
                _context16.prev = 8;
                _context16.t0 = _context16["catch"](2);
                Log.error("getMPInfo fail ".concat(_context16.t0, "."), _context16.t0);
              case 11:
                t = Url.getQuery("exportkey") || "";
                r = i ? 1 : 0;
                o = window.wap_export_token;
                s = "/mmec/biz_getbulkbuycard?bulk_buy_activity_key=".concat(encodeURIComponent(_this15.encrypt_key), "&amp;query_type=").concat(r, "&amp;cardtype=").concat(_this15.reportCardtype, "&amp;exportkey=").concat(t);
                if (o ? s = "".concat(s, "&amp;wap_export_token=").concat(o) : s = "".concat(s, "&amp;exportkey=").concat(t), !i) {
                  u = btoa(JSON.stringify((e == null ? void 0 : e.article_info) || {}));
                  s = "".concat(s, "&amp;article_info=").concat(u);
                }
                n = _this15;
                return _context16.abrupt("return", (_this15.requestingGetBulkBuyCardResp = !0, new Promise(function (u, d) {
                  ajax({
                    type: "GET",
                    url: s,
                    success: function success(p) {
                      if (typeof p == "string") try {
                        p = JSON.parse(p);
                      } catch (g) {
                        return Log.error("/mmec/biz_getbulkbuycard parse res error. res=".concat(p, " err=").concat(g)), console.error("/mmec/biz_getbulkbuycard parse res error. res=".concat(p, " err=").concat(g)), d({
                          code: -1,
                          message: "parse res fail, ".concat(g.message)
                        });
                      }
                      i || (n.iframeLoading = !1), n.requestingGetBulkBuyCardResp = !1, u(p);
                    },
                    error: function error(p) {
                      i || (this.iframeLoading = !1), n.requestingGetBulkBuyCardResp = !1, Log.error("getShopCard err", p), console.error("getShopCard err", p), d(p);
                    }
                  });
                })));
              case 18:
              case "end":
                return _context16.stop();
            }
          }, _callee16, null, [[2, 8]]);
        }))();
      },
      bizGetBulkBuyQrcode: function bizGetBulkBuyQrcode() {
        var _this16 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee17() {
          var i, e, t, r, o;
          return _regeneratorRuntime().wrap(function _callee17$(_context17) {
            while (1) switch (_context17.prev = _context17.next) {
              case 0:
                if (_this16.encrypt_key) {
                  _context17.next = 2;
                  break;
                }
                return _context17.abrupt("return", Promise.reject({
                  code: -2,
                  message: "empty encrypt key"
                }));
              case 2:
                if (!(_this16.requestingGetQrcode &amp;&amp; _this16.getQrcodePromise)) {
                  _context17.next = 4;
                  break;
                }
                return _context17.abrupt("return", _this16.getQrcodePromise);
              case 4:
                _this16.requestingGetQrcode = !0;
                _context17.next = 7;
                return N$1();
              case 7:
                i = _context17.sent;
                e = Url.getQuery("exportkey") || "";
                t = "/mmec/biz_getbulkbuyqrcode?bulk_buy_activity_key=".concat(encodeURIComponent(_this16.encrypt_key), "&amp;cardtype=").concat(_this16.reportCardtype, "&amp;exportkey=").concat(e);
                r = btoa(JSON.stringify((i == null ? void 0 : i.article_info) || {}));
                t = "".concat(t, "&amp;article_info=").concat(r);
                o = _this16;
                return _context17.abrupt("return", (_this16.getQrcodePromise = new Promise(function (s, n) {
                  ajax({
                    type: "GET",
                    url: t,
                    success: function success(u) {
                      if (o.requestingGetQrcode = !1, typeof u == "string") try {
                        u = JSON.parse(u);
                      } catch (d) {
                        return Log.error("/mmec/biz_getbulkbuyqrcode parse res error. res=".concat(u, " err=").concat(d)), console.error("/mmec/biz_getbulkbuyqrcode parse res error. res=".concat(u, " err=").concat(d)), n({
                          code: -1,
                          message: "parse res fail, ".concat(d.message)
                        });
                      }
                      s(u);
                    },
                    error: function error(u) {
                      o.requestingGetQrcode = !1, Log.error("getShopCard err", u), console.error("getShopCard err", u), n(u);
                    }
                  });
                }), _this16.getQrcodePromise));
              case 14:
              case "end":
                return _context17.stop();
            }
          }, _callee17);
        }))();
      },
      initReport: function initReport() {
        var _this17 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee18() {
          return _regeneratorRuntime().wrap(function _callee18$(_context18) {
            while (1) switch (_context18.prev = _context18.next) {
              case 0:
                _context18.next = 2;
                return N$1();
              case 2:
                _context18.next = 4;
                return _this17.getCardData();
              case 4:
              case "end":
                return _context18.stop();
            }
          }, _callee18);
        }))();
      },
      reportExpose: function reportExpose() {
        var _this18 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee19() {
          return _regeneratorRuntime().wrap(function _callee19$(_context19) {
            while (1) switch (_context19.prev = _context19.next) {
              case 0:
                _context19.next = 2;
                return _this18.report(x.CARD, C$2.EXPOSE);
              case 2:
                _context19.t0 = _this18.cardtype === R.SHOP;
                if (!_context19.t0) {
                  _context19.next = 6;
                  break;
                }
                _context19.next = 6;
                return _this18.report(x.PRODUCT, C$2.EXPOSE);
              case 6:
              case "end":
                return _context19.stop();
            }
          }, _callee19);
        }))();
      },
      report: function report(i, e, t) {
        var _this19 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee20() {
          var n, u, r, o, s, d, p, g, _d2, _p;
          return _regeneratorRuntime().wrap(function _callee20$(_context20) {
            while (1) switch (_context20.prev = _context20.next) {
              case 0:
                if (!(_this19.platform !== "wechat")) {
                  _context20.next = 2;
                  break;
                }
                return _context20.abrupt("return");
              case 2:
                _context20.next = 4;
                return _this19.initReport();
              case 4:
                _context20.next = 6;
                return N$1();
              case 6:
                r = _context20.sent;
                o = "";
                _this19.cardtype === R.SHOP ? i === x.CARD ? o = "bulkbuy_card" : i === x.PRODUCT &amp;&amp; (o = "commodity_card") : _this19.cardtype === R.LINK &amp;&amp; (o = "bulkbuy_link");
                s = "";
                if (e === C$2.CLICK ? s = "element_click" : e === C$2.EXPOSE &amp;&amp; (s = "element_valid_expose"), i === x.PRODUCT &amp;&amp; e === C$2.EXPOSE) {
                  d = _this19.products;
                  for (p = 0; p &lt; d.length; ++p) {
                    g = {
                      logid: "23782",
                      data: {
                        event: s,
                        params: JSON.stringify({
                          page_name: "mp_article_page",
                          element_name: o,
                          productid: d[p].product_id,
                          mp_article_bizuin: r.article_info.mp_biz,
                          mp_article_appmsgid: r.article_info.appmsgid,
                          mp_article_item_idx: r.article_info.item_idx,
                          mp_article_item_show_type: r.article_info.item_show_type,
                          scene: r.article_info.mp_article_scene,
                          cardtype: _this19.reportCardtype,
                          appid: _this19.appid
                        })
                      }
                    };
                    O$5(g);
                  }
                } else {
                  _d2 = "";
                  _typeof$2(t) &lt; "u" &amp;&amp; (_d2 = (u = (n = _this19.products) == null ? void 0 : n[t]) == null ? void 0 : u.product_id);
                  _p = {
                    logid: "23782",
                    data: {
                      event: s,
                      params: JSON.stringify({
                        page_name: "mp_article_page",
                        element_name: o,
                        productid: _d2,
                        mp_article_bizuin: r.article_info.mp_biz,
                        mp_article_appmsgid: r.article_info.appmsgid,
                        mp_article_item_idx: r.article_info.item_idx,
                        mp_article_item_show_type: r.article_info.item_show_type,
                        scene: r.article_info.mp_article_scene,
                        cardtype: _this19.reportCardtype,
                        appid: _this19.appid
                      })
                    }
                  };
                  O$5(_p);
                }
              case 11:
              case "end":
                return _context20.stop();
            }
          }, _callee20);
        }))();
      },
      openJumpInfo: function openJumpInfo(i) {
        var _this20 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee21() {
          var e, t;
          return _regeneratorRuntime().wrap(function _callee21$(_context21) {
            while (1) switch (_context21.prev = _context21.next) {
              case 0:
                if (!(_this20.platform === "wechat")) {
                  _context21.next = 11;
                  break;
                }
                _context21.next = 3;
                return t$3();
              case 3:
                if (!_context21.sent) {
                  _context21.next = 8;
                  break;
                }
                _context21.next = 6;
                return i$2(i);
              case 6:
                _context21.next = 9;
                break;
              case 8:
                (e = window == null ? void 0 : window.weui) == null || e.toast("当前版本不支持打开活动", {
                  extClass: "weui-toast_text"
                });
              case 9:
                _context21.next = 12;
                break;
              case 11:
                (t = window == null ? void 0 : window.weui) == null || t.toast("请在手机微信中打开", {
                  extClass: "weui-toast_text"
                });
              case 12:
              case "end":
                return _context21.stop();
            }
          }, _callee21);
        }))();
      },
      jumpActivity: function jumpActivity() {
        this.openJumpInfo(this.jumpInfo), this.report(x.CARD, C$2.CLICK);
      }
    });
  var he = function he() {
      var e = this,
        t = e._self._c;
      return t("div", {
        staticClass: "common_buytogether_root"
      }, [e.iframeLoading ? t("div", {
        staticClass: "collection_wx_img_placeholder",
        style: e.placeholderStyle
      }) : e.cardtype === 1 ? t("div", {
        ref: "shotLink",
        staticClass: "link-wrap"
      }, [t("span", {
        staticClass: "product_card_text_wrp"
      }, [t("span", {
        staticClass: "product_text_link",
        on: {
          click: e.clickLink
        }
      }, [e._v(e._s(e.title))])])]) : e.cardtype === 2 ? t("div", {
        staticClass: "common_buytogether_card_wrap",
        style: e.cardStyle,
        on: {
          click: e.jumpActivity
        }
      }, [t("div", {
        staticClass: "card_head"
      }, [t("div", {
        staticClass: "head_left"
      }, [t("div", {
        staticClass: "head_left_top"
      }, [t("div", {
        staticClass: "icon"
      }), t("div", {
        staticClass: "title"
      }, [e._v(e._s(e.activityInfoTitle))])]), e.showActivityDecs ? t("div", {
        staticClass: "head_left_bottom"
      }, [t("div", {
        staticClass: "avatar_list"
      }, e._l(e.participant, function (r, o) {
        return t("img", {
          staticClass: "avatar",
          attrs: {
            src: r.head_img
          }
        });
      }), 0), t("div", {
        staticClass: "desc"
      }, [e._v('' + e._s(e.activityInfoUserCountDesc) + '')])]) : e._e()]), t("div", {
        staticClass: "head_right"
      }, [t("div", {
        staticClass: "tap_home_btn",
        on: {
          click: e.jumpActivity
        }
      }, [e._v('参与')])])]), e.showProducts ? t("div", {
        ref: "products_container",
        staticClass: "product_list"
      }, e._l(e.products, function (r, o) {
        return t("div", {
          staticClass: "product",
          style: e.productStyle
        }, [r.head_img ? t("img", {
          staticClass: "product_image",
          style: e.pruductImgStyle,
          attrs: {
            src: r.head_img
          }
        }) : e._e(), t("div", {
          staticClass: "product_price"
        }, [t("span", {
          staticClass: "selling_price"
        }, [e._v("¥" + e._s(e.formatPrice(r.price)))]), t("span", {
          staticClass: "before_selling_price"
        }, [e._v("¥" + e._s(e.formatPrice(r.strike_price))), t("span", {
          staticClass: "newlineationPrice"
        })])])]);
      }), 0) : e._e(), t("div", {
        staticClass: "shop_icon_wrap"
      }, [t("div", {
        staticClass: "shop_icon",
        style: e.iconStyle
      }), t("div", {
        staticClass: "shop_name"
      }, [e._v(e._s(e.shopName))])])]) : e._e()]);
    },
    fe = [],
    me = v$2(ge, he, fe, !1, null, null, null, null);
  var Ee = me.exports;
  var V = {
    exports: {}
  };
  (function (i) {
    (function (e) {
      var t = function t(a, c, h) {
          if (!p(c) || S(c) || A(c) || D(c) || d(c)) return c;
          var m,
            I = 0,
            $ = 0;
          if (g(c)) for (m = [], $ = c.length; I &lt; $; I++) m.push(t(a, c[I], h));else {
            m = {};
            for (var U in c) Object.prototype.hasOwnProperty.call(c, U) &amp;&amp; (m[a(U, h)] = t(a, c[U], h));
          }
          return m;
        },
        r = function r(a, c) {
          c = c || {};
          var h = c.separator || "_",
            m = c.split || /(?=[A-Z])/;
          return a.split(m).join(h);
        },
        o = function o(a) {
          return y(a) ? a : (a = a.replace(/[\-_\s]+(.)?/g, function (c, h) {
            return h ? h.toUpperCase() : "";
          }), a.substr(0, 1).toLowerCase() + a.substr(1));
        },
        s = function s(a) {
          var c = o(a);
          return c.substr(0, 1).toUpperCase() + c.substr(1);
        },
        n = function n(a, c) {
          return r(a, c).toLowerCase();
        },
        u = Object.prototype.toString,
        d = function d(a) {
          return typeof a == "function";
        },
        p = function p(a) {
          return a === Object(a);
        },
        g = function g(a) {
          return u.call(a) == "[object Array]";
        },
        S = function S(a) {
          return u.call(a) == "[object Date]";
        },
        A = function A(a) {
          return u.call(a) == "[object RegExp]";
        },
        D = function D(a) {
          return u.call(a) == "[object Boolean]";
        },
        y = function y(a) {
          return a = a - 0, a === a;
        },
        E = function E(a, c) {
          var h = c &amp;&amp; "process" in c ? c.process : c;
          return typeof h != "function" ? a : function (m, I) {
            return h(m, a, I);
          };
        },
        b = {
          camelize: o,
          decamelize: n,
          pascalize: s,
          depascalize: n,
          camelizeKeys: function camelizeKeys(a, c) {
            return t(E(o, c), a);
          },
          decamelizeKeys: function decamelizeKeys(a, c) {
            return t(E(n, c), a, c);
          },
          pascalizeKeys: function pascalizeKeys(a, c) {
            return t(E(s, c), a);
          },
          depascalizeKeys: function depascalizeKeys() {
            return this.decamelizeKeys.apply(this, arguments);
          }
        };
      i.exports ? i.exports = b : e.humps = b;
    })(o$1);
  })(V);
  var be = V.exports;
  var _e = {
    name: "SwiperImageProduct",
    props: {
      list: {
        type: Array,
        "default": function _default() {
          return [];
        }
      },
      currentIndex: {
        type: Number,
        "default": 0
      },
      width: {
        type: Number,
        "default": 0
      },
      height: {
        type: Number,
        "default": 0
      },
      hideIndicator: {
        type: Boolean,
        "default": !1
      },
      maxIndicatorIndex: {
        type: Number,
        "default": 0
      },
      mode: {
        type: String,
        "default": "aspectFill"
      },
      pictureClass: {
        type: String,
        "default": ""
      }
    },
    data: function data() {
      return {
        innerCurrentIndex: 0,
        startClientX: 0,
        startClientY: 0,
        currentClientX: 0,
        lastClientX: 0,
        isFirstTouch: !0,
        catchMove: !0,
        direction: "none",
        isTransitioning: !1,
        touchStartTime: 0
      };
    },
    computed: {
      swiperList: function swiperList() {
        return this.list || [];
      },
      wrapperStyle: function wrapperStyle() {
        var i = {
          height: "".concat(this.height, "px"),
          transform: "translateX(-".concat(this.innerCurrentIndex * this.width, "px)")
        };
        return this.isTransitioning &amp;&amp; (i.transition = "all 0.45s cubic-bezier(0.25, 0.1, 0.25, 1)"), i;
      }
    },
    watch: {
      currentIndex: {
        handler: function handler(i) {
          this.innerCurrentIndex = i, this.checkBottomPosition();
        },
        immediate: !0
      },
      list: {
        handler: function handler() {},
        immediate: !0
      }
    },
    mounted: function mounted() {
      this.width === 0 &amp;&amp; this.$emit("update:width", window.innerWidth), console.log("swiperList props", this.props);
    },
    methods: {
      getItemStyle: function getItemStyle(i, e) {
        return {
          width: "".concat(this.width, "px"),
          alignItems: i.width &gt; i.height ? "center" : "flex-start"
        };
      },
      getImageWrapperStyle: function getImageWrapperStyle(i) {
        var e = {
          position: "relative",
          display: "inline-block"
        };
        if (i.width &amp;&amp; i.height) {
          var t = this.width,
            r = this.height,
            o = i.width / i.height,
            s = t / r;
          o &gt;= s ? (e.width = "100%", e.height = "".concat(t / o, "px"), i.computedHeight = t / o) : (e.width = "".concat(r * o, "px"), e.height = "100%", i.computedWidth = r * o);
        } else e.maxWidth = "100%", e.maxHeight = "100%";
        return e;
      },
      getImageStyle: function getImageStyle(i) {
        var e = {
          width: "100%",
          height: "100%",
          objectFit: "contain",
          display: "block"
        };
        return this.pictureClass &amp;&amp; (e["class"] = this.pictureClass), e;
      },
      getLabelStyle: function getLabelStyle(i, e) {
        var o = i.labelName ? i.labelName.length : 0,
          s = 8,
          n = 7,
          u = 4,
          d = 4,
          p = 12,
          g = e.computedWidth || this.width,
          S = s + d + o * p + d + n + u * 2,
          A = Math.min(S, g - 12 * 2);
        var D, y, E, b;
        if (i.x !== void 0) {
          var a = i.x,
            c = a / 100 * g;
          c &lt; 12 ? D = "12px" : c + A &gt; g - 12 ? E = "12px" : D = "".concat(a, "%");
        } else if (i.right !== void 0) {
          var _a = i.right;
          _a / 100 * g &lt; 12 + A ? E = "".concat(12 + A, "px") : E = "".concat(_a, "%");
        }
        if (i.y !== void 0) {
          var _a2 = i.y,
            _c = _a2 / 100 * this.height;
          _c &lt; 12 ? y = "12px" : _c + 20.5 &gt; this.height - 12 ? b = "12px" : y = "".concat(_a2, "%");
        } else if (i.bottom !== void 0) {
          var _a3 = i.bottom;
          _a3 / 100 * this.height &lt; 12 + 20.5 ? b = "".concat(12 + 20.5, "px") : b = "".concat(_a3, "%");
        }
        return {
          position: "absolute",
          left: D || "auto",
          top: y || "auto",
          right: E || "auto",
          bottom: b || "auto",
          backgroundColor: i.backgroundColor || "rgba(76, 76, 76, 0.5)",
          color: i.color || "#fff",
          padding: i.padding || "2px 4px",
          borderRadius: i.borderRadius || "100px",
          fontSize: i.fontSize || "12px",
          zIndex: i.zIndex || 1e3,
          maxWidth: "".concat(A, "px"),
          whiteSpace: "nowrap",
          overflow: "hidden",
          textOverflow: "ellipsis",
          boxSizing: "border-box"
        };
      },
      handleTouchStart: function handleTouchStart(i) {
        this.touchStartTime = Date.now();
        var e = i.touches[0];
        this.startClientX = e.clientX, this.startClientY = e.clientY, this.currentClientX = this.innerCurrentIndex * this.width, this.lastClientX = this.currentClientX, this.isFirstTouch = !0, this.catchMove = !0, this.isTransitioning = !1;
      },
      handleTouchMove: function handleTouchMove(i) {
        this.$emit("touchMove", {
          event: i
        });
        var e = i.touches[0];
        if (this.isFirstTouch) {
          this.isFirstTouch = !1;
          var t = Math.abs(e.clientX - this.startClientX);
          Math.abs(e.clientY - this.startClientY) &gt; t ? this.catchMove = !1 : this.catchMove = !0;
        }
        if (this.catchMove) {
          i.preventDefault();
          var _t = e.clientX - this.startClientX;
          this.currentClientX = -(this.innerCurrentIndex * this.width) + _t, this.direction = this.currentClientX &lt; this.lastClientX ? "left" : "right", this.$refs.swiperWrapper.style.transform = "translateX(".concat(this.currentClientX, "px)"), this.lastClientX = this.currentClientX;
        }
      },
      handleTouchEnd: function handleTouchEnd(i) {
        var e = Math.abs(this.lastClientX - this.innerCurrentIndex * this.width);
        var t = -1;
        e &gt; 50 &amp;&amp; (this.direction === "right" ? t = Math.max(this.innerCurrentIndex - 1, 0) : this.direction === "left" &amp;&amp; (t = Math.min(this.innerCurrentIndex + 1, this.swiperList.length - 1)), t !== -1 &amp;&amp; this.innerCurrentIndex !== t &amp;&amp; (this.innerCurrentIndex = t, this.$emit("change", {
          index: t,
          data: this.swiperList[t]
        }), this.$emit("update:currentIndex", t), this.$emit("current-index-change", t))), this.setIndexPosition();
      },
      setIndexPosition: function setIndexPosition() {
        var _this21 = this;
        this.isTransitioning = !0, this.$refs.swiperWrapper.style.transform = "translateX(-".concat(this.innerCurrentIndex * this.width, "px)"), setTimeout(function () {
          _this21.isTransitioning = !1;
        }, 450);
      },
      handleImageLoad: function handleImageLoad(i, e) {},
      handleLabelClick: function handleLabelClick(i, e, t) {
        this.$emit("tagClick", {
          labelPage: i.labelPage,
          productId: i.productId,
          pairingId: e.pairingId
        });
      },
      checkBottomPosition: function checkBottomPosition() {}
    }
  };
  var Ge = function Ge() {
      var e = this,
        t = e._self._c;
      return e.width ? t("div", {
        staticClass: "swiper-out"
      }, [t("div", {
        ref: "swiperWrapper",
        staticClass: "swiper-wrapper",
        style: e.wrapperStyle,
        on: {
          touchstart: e.handleTouchStart,
          touchmove: e.handleTouchMove,
          touchend: e.handleTouchEnd
        }
      }, e._l(e.swiperList, function (r, o) {
        return t("div", {
          key: o,
          staticClass: "swiper-item",
          style: e.getItemStyle(r, o)
        }, [t("div", {
          staticClass: "image-container"
        }, [t("div", {
          staticClass: "image-wrapper",
          style: e.getImageWrapperStyle(r)
        }, [t("img", {
          staticClass: "swiper-image",
          style: e.getImageStyle(r),
          attrs: {
            src: r.src,
            alt: r.alt || ""
          },
          on: {
            load: function load(s) {
              return e.handleImageLoad(s, o);
            }
          }
        }), r.labelList &amp;&amp; r.labelList.length ? t("div", {
          staticClass: "label-container"
        }, e._l(r.labelList, function (s) {
          return t("div", {
            key: s.productId,
            staticClass: "label-item",
            staticStyle: {
              "pointer-events": "auto",
              position: "absolute"
            },
            style: e.getLabelStyle(s, r),
            on: {
              click: function click(n) {
                return e.handleLabelClick(s, r, o);
              }
            }
          }, [e._v(" " + e._s(s.labelName) + " ")]);
        }), 0) : e._e()])])]);
      }), 0), e.swiperList.length &gt; 1 &amp;&amp; !e.hideIndicator ? t("div", {
        staticClass: "swiper-indicator"
      }, [t("span", {
        staticClass: "indicator-text"
      }, [e._v(e._s(e.innerCurrentIndex + 1) + "/" + e._s(e.swiperList.length))])]) : e._e()]) : e._e();
    },
    Ae = [],
    xe = v$2(_e, Ge, Ae, !1, null, null, null, null);
  var Ce = xe.exports,
    Re = {
      name: "SwiperIndicator",
      props: {
        swiperList: {
          type: Array,
          "default": function _default() {
            return [];
          }
        },
        currentIndex: {
          type: Number,
          "default": 0
        },
        hideIndicator: {
          type: Boolean,
          "default": !1
        },
        maxIndicatorIndex: {
          type: Number,
          "default": 0
        }
      },
      data: function data() {
        return {
          innerCurrentIndex: 0
        };
      },
      watch: {
        currentIndex: {
          handler: function handler(i) {
            this.innerCurrentIndex = i;
          },
          immediate: !0
        }
      },
      methods: {
        handleDotClick: function handleDotClick(i) {
          i !== this.currentIndex &amp;&amp; (this.$emit("change", {
            index: i,
            data: this.swiperList[i]
          }), this.$emit("update:currentIndex", i));
        }
      }
    };
  var Be = function Be() {
      var e = this,
        t = e._self._c;
      return e.swiperList.length &gt; 1 &amp;&amp; !e.hideIndicator &amp;&amp; e.maxIndicatorIndex === 0 ? t("div", {
        staticClass: "swiper-indicator-wrap-bg"
      }, [t("div", {
        staticClass: "swiper-indicator-wrap"
      }, e._l(e.swiperList, function (r, o) {
        return t("div", {
          key: o,
          staticClass: "swiper-indicator-dot",
          "class": {
            active: e.innerCurrentIndex === o
          },
          on: {
            click: function click(s) {
              return e.handleDotClick(o);
            }
          }
        });
      }), 0)]) : e._e();
    },
    Ne = [],
    Le = v$2(Re, Be, Ne, !1, null, null, null, null);
  var De = Le.exports,
    O$2 = {
      title: "国风搭配测试测测",
      shopInfo: {
        shopName: "麦当劳",
        path: "/main/pages/shop/shop?&amp;realappid=wx2b255582a7b4bfd0&amp;shopId=10000000089216",
        appid: "wx2b255582a7b4bfd0",
        shopTag: "https://res.wx.qq.com/shop/public/2024-09-26/eb336270-6883-4391-8e4c-4c26230baa2e.svg"
      },
      shopName: "麦当劳",
      shopAppid: "wx2b255582a7b4bfd0",
      shopIcon: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/67aac669000122322aba0bcd0e745415000000a100004f50?imageView2/1/w/583/h/583/format/webp|imageMogr2/auto-orient/strip/ignore-error/1",
      headSwiper: [{
        index: 0,
        src: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/67778ec700022d7518cc772027908e0b000000a100004f50",
        width: 800,
        height: 800,
        pairingId: "4066145054106112",
        labelList: [{
          x: "96",
          y: "32",
          productId: "10000151274966",
          productShortName: "休闲裤",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000151274966"
          },
          labelName: "休闲裤",
          productName: "限购-开发自动化测试专用-勿动！！！",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SH/reserved/6639fef400081a7f009acd91cf86bc1e000000a100004f50",
          productPrice: "100000"
        }, {
          x: "30",
          y: "54",
          productId: "10000128560001",
          productShortName: "宠物配饰",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000128560001"
          },
          labelName: "宠物配饰",
          productName: "狗狗的漂亮衣服-多个限时抢购",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/6641cdc800086320026f8b1d27908e0b000000a000004f50",
          productPrice: "10"
        }, {
          x: "18",
          y: "20",
          productId: "10000072904047",
          productShortName: "羽绒服",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000072904047"
          },
          labelName: "羽绒服",
          productName: "（搭配购）预售测试款女外套冬款黑色M",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/65376f0c0005f86c0be3041984f90115000000a000004f50",
          productPrice: "19900"
        }, {
          x: "48",
          y: "22",
          productId: "10000163612743",
          productShortName: "休闲裤",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000163612743"
          },
          labelName: "休闲裤",
          productName: "(搭配购)韩版牛仔裤修身版型好大码将军同款",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/672c793c000cdecf2d7b0f2995918e0b000000a000004f50",
          productPrice: "15000"
        }],
        type: "pairingImg",
        showLabel: !0,
        showHeight: 520
      }, {
        index: 1,
        src: "https://wst.wxapp.tc.qq.com/161/20304/snscosdownload/SZ/reserved/68a317e100049bee200d67fd6f7c4315000000a100004f50",
        width: 800,
        height: 600,
        pairingId: "4066145054106112",
        labelList: [{
          x: "51",
          y: "40",
          productId: "10000151274966",
          productShortName: "休闲裤",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000151274966"
          },
          labelName: "休闲裤",
          productName: "限购-开发自动化测试专用-勿动！！！",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SH/reserved/6639fef400081a7f009acd91cf86bc1e000000a100004f50",
          productPrice: "100000"
        }, {
          x: "56",
          y: "74",
          productId: "10000128560001",
          productShortName: "宠物配饰",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000128560001"
          },
          labelName: "宠物配饰",
          productName: "狗狗的漂亮衣服-多个限时抢购",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/6641cdc800086320026f8b1d27908e0b000000a000004f50",
          productPrice: "10"
        }, {
          x: "25",
          y: "64",
          productId: "10000072904047",
          productShortName: "羽绒服",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000072904047"
          },
          labelName: "羽绒服",
          productName: "（搭配购）预售测试款女外套冬款黑色M",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/65376f0c0005f86c0be3041984f90115000000a000004f50",
          productPrice: "19900"
        }, {
          x: "77",
          y: "54",
          productId: "10000163612743",
          productShortName: "休闲裤",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000163612743"
          },
          labelName: "休闲裤",
          productName: "(搭配购)韩版牛仔裤修身版型好大码将军同款",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/672c793c000cdecf2d7b0f2995918e0b000000a000004f50",
          productPrice: "15000"
        }, {
          x: "64",
          y: "8",
          productId: "10000000089216",
          productShortName: "家居服套装",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000000089216"
          },
          labelName: "家居服套装",
          productName: "(搭配购)2025款冬季男女保暖睡衣",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/6426b72e000aa70a28f4d1d805618809000000a000004f50",
          productPrice: "1"
        }],
        type: "pairingImg",
        showLabel: !0,
        showHeight: 520
      }, {
        index: 2,
        src: "https://wst.wxapp.tc.qq.com/161/20304/snscosdownload/SZ/reserved/688c891d000674562b1663a705a3ae1e000000a100004f50",
        width: 900,
        height: 1100,
        pairingId: "4066145054106112",
        labelList: [{
          x: "29",
          y: "66",
          productId: "10000151274966",
          productShortName: "休闲裤",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000151274966"
          },
          labelName: "休闲裤",
          productName: "限购-开发自动化测试专用-勿动！！！",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SH/reserved/6639fef400081a7f009acd91cf86bc1e000000a100004f50",
          productPrice: "100000"
        }, {
          x: "34",
          y: "58",
          productId: "10000128560001",
          productShortName: "宠物配饰",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000128560001"
          },
          labelName: "宠物配饰",
          productName: "狗狗的漂亮衣服-多个限时抢购",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/6641cdc800086320026f8b1d27908e0b000000a000004f50",
          productPrice: "10"
        }, {
          x: "8",
          y: "32",
          productId: "10000072904047",
          productShortName: "羽绒服",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000072904047"
          },
          labelName: "羽绒服",
          productName: "（搭配购）预售测试款女外套冬款黑色M",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/65376f0c0005f86c0be3041984f90115000000a000004f50",
          productPrice: "19900"
        }, {
          x: "52",
          y: "32",
          productId: "10000163612743",
          productShortName: "休闲裤",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000163612743"
          },
          labelName: "休闲裤",
          productName: "(搭配购)韩版牛仔裤修身版型好大码将军同款",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/672c793c000cdecf2d7b0f2995918e0b000000a000004f50",
          productPrice: "15000"
        }, {
          x: "71",
          y: "54",
          productId: "10000000089216",
          productShortName: "家居服套装",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000000089216"
          },
          labelName: "家居服套装",
          productName: "(搭配购)2025款冬季男女保暖睡衣",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/6426b72e000aa70a28f4d1d805618809000000a000004f50",
          productPrice: "1"
        }],
        type: "pairingImg",
        showLabel: !0,
        showHeight: 520
      }, {
        index: 3,
        src: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/67778ec700022d7518cc772027908e0b000000a100004f50",
        width: 800,
        height: 800,
        pairingId: "4066145054106112",
        labelList: [{
          x: "66",
          y: "32",
          productId: "10000151274966",
          productShortName: "休闲裤",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000151274966"
          },
          labelName: "休闲裤",
          productName: "限购-开发自动化测试专用-勿动！！！",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SH/reserved/6639fef400081a7f009acd91cf86bc1e000000a100004f50",
          productPrice: "100000"
        }, {
          x: "30",
          y: "54",
          productId: "10000128560001",
          productShortName: "宠物配饰",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000128560001"
          },
          labelName: "宠物配饰",
          productName: "狗狗的漂亮衣服-多个限时抢购",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/6641cdc800086320026f8b1d27908e0b000000a000004f50",
          productPrice: "10"
        }, {
          x: "18",
          y: "20",
          productId: "10000072904047",
          productShortName: "羽绒服",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000072904047"
          },
          labelName: "羽绒服",
          productName: "（搭配购）预售测试款女外套冬款黑色M",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/65376f0c0005f86c0be3041984f90115000000a000004f50",
          productPrice: "19900"
        }, {
          x: "48",
          y: "22",
          productId: "10000163612743",
          productShortName: "休闲裤",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000163612743"
          },
          labelName: "休闲裤",
          productName: "(搭配购)韩版牛仔裤修身版型好大码将军同款",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/672c793c000cdecf2d7b0f2995918e0b000000a000004f50",
          productPrice: "15000"
        }],
        type: "pairingImg",
        showLabel: !0,
        showHeight: 520
      }],
      pairingCreator: {
        pairingCreatorName: "罗意威LOEWE",
        pairingCreatorTag: "https://res.wx.qq.com/shop/public/2024-09-26/eb336270-6883-4391-8e4c-4c26230baa2e.svg"
      }
    },
    q = 13;
  var w$1;
  var ye = {
    components: {
      SwiperProduct: Ce,
      SwiperIndicator: De
    },
    mixins: [k$1],
    props: {
      shopAppid: {
        type: String,
        "default": ""
      },
      pairingId: {
        type: String,
        "default": ""
      },
      talentAppid: {
        type: String,
        "default": ""
      },
      isMock: {
        type: Number,
        "default": 0
      }
    },
    data: function data() {
      return {
        getPairingResp: null,
        requestinggetPairing: !1,
        _supportOpenEcs: void 0,
        forceUpdate: !1,
        iframeLoading: !0,
        isDark: window.matchMedia &amp;&amp; window.matchMedia("(prefers-color-scheme: dark)").matches,
        getPairingPromise: null,
        containerWidth: 350,
        swiperHeight: 350,
        currentSwiperIndex: 0,
        pairingData: {
          pairingCreator: {
            pairingCreatorName: "",
            pairingCreatorTag: "",
            pairingCreatorTagDark: ""
          }
        }
      };
    },
    computed: {
      cardStyle: function cardStyle() {
        var i = {};
        return this.platform === "web" ? (i.width = "350px", this.isDark &amp;&amp; (i.background = "rgba(0, 0, 0, 0.02)")) : i.width = "100%", i;
      },
      containerStyle: function containerStyle() {
        var i = {
          background: "rgba(255, 255, 255, 0.03)"
        };
        return this.isDark &amp;&amp; (i.background = "rgba(0, 0, 0, 0.03)"), i;
      },
      placeholderStyle: function placeholderStyle() {
        var i = {
          height: "108px"
        };
        return this.platform === "web" ? i.width = "350px" : i.width = "100%", i;
      },
      pairingCreatorTag: function pairingCreatorTag() {
        return this.isDark ? this.pairingData.pairingCreator.pairingCreatorTagDark : this.pairingData.pairingCreator.pairingCreatorTag;
      }
    },
    created: function created() {
      var _this22 = this;
      console.log("created this.shopAppid=".concat(this.shopAppid, " this.talentAppid=").concat(this.talentAppid)), this.getPairingCard(), window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", function (i) {
        _this22.isDark = i.matches;
      });
    },
    mounted: function mounted() {
      var _this23 = this;
      return asyncToGenerator( _regeneratorRuntime().mark(function _callee22() {
        return _regeneratorRuntime().wrap(function _callee22$(_context22) {
          while (1) switch (_context22.prev = _context22.next) {
            case 0:
              _this23.extraInfo.window &amp;&amp; _this23.extraInfo.window.addEventListener("message", _this23.handleMessage), _this23.extraInfo.window &amp;&amp; _this23.extraInfo.window.addEventListener("click", _this23.handleDocumentClick);
            case 1:
            case "end":
              return _context22.stop();
          }
        }, _callee22);
      }))();
    },
    beforeDestroy: function beforeDestroy() {
      this.extraInfo.window &amp;&amp; this.extraInfo.window.removeEventListener("message", this.handleMessage), this.extraInfo.window &amp;&amp; this.extraInfo.window.removeEventListener("click", this.handleDocumentClick);
    },
    watch: {
      shopAppid: {
        handler: function handler() {
          console.log("shopAppid change to", this.shopAppid), this.forceUpdatePairingCard();
        }
      },
      talentAppid: {
        handler: function handler() {
          console.log("talentAppid change to", this.talentAppid), this.forceUpdatePairingCard();
        }
      }
    },
    methods: {
      handleDocumentClick: function handleDocumentClick(i) {
        this.$refs.js_custom_element.contains(i.target) || this.$emit("document-click", i);
      },
      forceUpdatePairingCard: function forceUpdatePairingCard() {
        var _this24 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee23() {
          return _regeneratorRuntime().wrap(function _callee23$(_context23) {
            while (1) switch (_context23.prev = _context23.next) {
              case 0:
                _this24.forceUpdate = !0;
                _context23.prev = 1;
                _context23.next = 4;
                return _this24.getPairingCard();
              case 4:
                _context23.next = 9;
                break;
              case 6:
                _context23.prev = 6;
                _context23.t0 = _context23["catch"](1);
                console.error(_context23.t0);
              case 9:
                _this24.forceUpdate = !1;
              case 10:
              case "end":
                return _context23.stop();
            }
          }, _callee23, null, [[1, 6]]);
        }))();
      },
      getPairingCard: function getPairingCard() {
        var _this25 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee24() {
          var i, e, o, t, r;
          return _regeneratorRuntime().wrap(function _callee24$(_context24) {
            while (1) switch (_context24.prev = _context24.next) {
              case 0:
                if (!(!_this25.shopAppid &amp;&amp; !_this25.talentAppid)) {
                  _context24.next = 2;
                  break;
                }
                return _context24.abrupt("return", Promise.reject({}));
              case 2:
                if (!(_this25.requestinggetPairing &amp;&amp; _this25.getPairingPromise)) {
                  _context24.next = 4;
                  break;
                }
                return _context24.abrupt("return", _this25.getPairingPromise);
              case 4:
                if (!(_this25.getPairingResp &amp;&amp; !_this25.forceUpdate)) {
                  _context24.next = 6;
                  break;
                }
                return _context24.abrupt("return", _this25.getPairingResp);
              case 6:
                _this25.requestinggetPairing = !0;
                _context24.next = 9;
                return N$1();
              case 9:
                w$1 = _context24.sent;
                i = (w$1 == null ? void 0 : w$1.exportkey) || Url.getQuery("exportkey") || "", e = btoa(JSON.stringify((w$1 == null ? void 0 : w$1.article_info) || {}));
                if (!(_this25.computedContainerWidth(), _this25.isMock)) {
                  _context24.next = 14;
                  break;
                }
                o = _this25;
                return _context24.abrupt("return", new Promise(function (s, n) {
                  o.iframeLoading = !1, o.getPairingResp = O$2, o.pairingData = O$2, o.requestinggetPairing = !1, o.$emit("onFrameReady", {
                    nickName: o.talentAppid
                  }), console.log("this.iframeLoading", o.iframeLoading), console.log("containerWidth----", document.getElementById("shopparing_card_wrap")), _this25.computedSwiperHeight(O$2.headSwiper), s(O$2);
                }));
              case 14:
                t = _this25, r = "/mmec/biz_getproductpairinginfo?shop_appid=".concat(_this25.shopAppid, "&amp;pairing_id=").concat(_this25.pairingId, "&amp;talent_appid=").concat(_this25.talentAppid, "&amp;exportkey=").concat(i, "&amp;cardtype=").concat(q, "&amp;article_info=").concat(e);
                return _context24.abrupt("return", (_this25.getPairingPromise = new Promise(function (o, s) {
                  ajax({
                    type: "GET",
                    url: r,
                    success: function success(n) {
                      if (console.log("/mmec/biz_getproductpairinginfo res", n), typeof n == "string") try {
                        n = JSON.parse(n);
                      } catch (u) {
                        n = {}, Log.error("/mmec/biz_getproductpairinginfo parse res error. res=".concat(n, " err=").concat(u));
                      }
                      t.getPairingResp = n, t.formatPairingData(n), t.requestinggetPairing = !1, t.$emit("onFrameReady", {
                        nickName: t.talentAppid
                      }), t.iframeLoading = !1, o();
                    },
                    error: function error(n) {
                      t.requestinggetPairing = !1, t.iframeLoading = !1, console.error("getPairingCard err", n), s(n);
                    }
                  });
                }), _this25.getPairingPromise));
              case 16:
              case "end":
                return _context24.stop();
            }
          }, _callee24);
        }))();
      },
      formatPairingData: function formatPairingData(i) {
        var _this26 = this;
        var e = be.camelizeKeys(i),
          t = {};
        console.log("formatPairingData------", e), e.productList.forEach(function (o) {
          t[o.productId] = o;
        });
        var r = e.imgList.map(function (o) {
          var s;
          return {
            src: o.imgUrl,
            width: o.imgWidth,
            height: o.imgHeight,
            pairingId: i.pairingId,
            labelList: (s = o == null ? void 0 : o.labelList) == null ? void 0 : s.map(function (n) {
              var u = t[n.productId] || {};
              return _objectSpread$4(_objectSpread$4({}, n), u);
            })
          };
        });
        return this.pairingData = {
          pairingCreator: {
            pairingCreatorName: e.pairingCreatorName,
            pairingCreatorTag: e.pairingCreatorTag,
            pairingCreatorTagDark: e.pairingCreatorTagDark
          },
          jumpInfo: e.ecsJumpInfoBase64Str,
          pairingId: e.pairingId,
          headSwiper: r,
          productNum: e.productList.length,
          title: e.title,
          isOffline: e.status !== 20001
        }, console.log("headSwiper", r), this.computedSwiperHeight(r), r.length &gt; 0 &amp;&amp; (r[0].labelList.forEach(function (o) {
          _this26.report("commodity_card", "element_valid_expose", o.productId);
        }), this.report("match_buy_button", "element_valid_expose", "")), e;
      },
      computedContainerWidth: function computedContainerWidth() {
        var e;
        var i = this.platform === "web" ? 350 : (e = this.$refs.shopparing_warp) == null ? void 0 : e.offsetWidth;
        this.containerWidth = i;
      },
      computedSwiperHeight: function computedSwiperHeight(i) {
        var e = this.containerWidth || 350;
        if (!i || !i.length) return 350;
        var t = i[0],
          r = t.width,
          o = t.height;
        if (!r || !o) return 350;
        var s = r / o,
          n = 16 / 9,
          u = 3 / 4;
        var d = 0;
        s &gt; n ? d = e * 9 / 16 : s &lt; u ? d = e * 4 / 3 : d = e / s, this.swiperHeight = Math.round(d);
      },
      supportOpenEcs: function supportOpenEcs() {
        var _this27 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee25() {
          return _regeneratorRuntime().wrap(function _callee25$(_context25) {
            while (1) switch (_context25.prev = _context25.next) {
              case 0:
                if (!(_typeof$2(_this27._supportOpenEcs) &lt; "u")) {
                  _context25.next = 4;
                  break;
                }
                _context25.t0 = _this27._supportOpenEcs;
                _context25.next = 8;
                break;
              case 4:
                _context25.next = 6;
                return P$1();
              case 6:
                _this27._supportOpenEcs = _context25.sent;
                _context25.t0 = _this27._supportOpenEcs;
              case 8:
                return _context25.abrupt("return", _context25.t0);
              case 9:
              case "end":
                return _context25.stop();
            }
          }, _callee25);
        }))();
      },
      openJumpInfo: function openJumpInfo(i) {
        var _this28 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee26() {
          var e, t, r;
          return _regeneratorRuntime().wrap(function _callee26$(_context26) {
            while (1) switch (_context26.prev = _context26.next) {
              case 0:
                if (!(_this28.platform === "wechat")) {
                  _context26.next = 13;
                  break;
                }
                _context26.next = 3;
                return P$1();
              case 3:
                r = _context26.sent;
                if (!r) {
                  _context26.next = 10;
                  break;
                }
                console.log("supportOpenEcs=".concat(r, ", jumpInfo=").concat(i));
                _context26.next = 8;
                return j(i);
              case 8:
                _context26.next = 11;
                break;
              case 10:
                (e = window == null ? void 0 : window.weui) == null || e.toast("当前版本不支持打开店铺", {
                  extClass: "weui-toast_text"
                });
              case 11:
                _context26.next = 14;
                break;
              case 13:
                console.log("jumpInfo", i), (t = window == null ? void 0 : window.weui) == null || t.toast("请在手机微信中打开", {
                  extClass: "weui-toast_text"
                });
              case 14:
              case "end":
                return _context26.stop();
            }
          }, _callee26);
        }))();
      },
      jumpPairingBuy: function jumpPairingBuy() {
        var _this29 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee27() {
          var i;
          return _regeneratorRuntime().wrap(function _callee27$(_context27) {
            while (1) switch (_context27.prev = _context27.next) {
              case 0:
                console.log("点击"), _this29.openJumpInfo((i = _this29.pairingData) == null ? void 0 : i.jumpInfo), _this29.report("match_buy_button", "element_click", "");
              case 1:
              case "end":
                return _context27.stop();
            }
          }, _callee27);
        }))();
      },
      jumpProduct: function jumpProduct(i) {
        var _this30 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee28() {
          return _regeneratorRuntime().wrap(function _callee28$(_context28) {
            while (1) switch (_context28.prev = _context28.next) {
              case 0:
                console.log("jumpProduct", i), _this30.openJumpInfo(i.labelPage.ecsJumpInfoBase64Str || ""), _this30.report("commodity_card", "element_click", i.productId);
              case 1:
              case "end":
                return _context28.stop();
            }
          }, _callee28);
        }))();
      },
      handleSwiperIndexChange: function handleSwiperIndexChange(i) {
        this.currentSwiperIndex = i;
      },
      handleIndicatorChange: function handleIndicatorChange(i) {
        this.currentSwiperIndex = i.index, this.$refs.swiperProduct &amp;&amp; (this.$refs.swiperProduct.innerCurrentIndex = i.index, this.$refs.swiperProduct.setIndexPosition());
      },
      handleIndicatorUpdate: function handleIndicatorUpdate(i) {
        this.currentSwiperIndex = i, this.$refs.swiperProduct &amp;&amp; (this.$refs.swiperProduct.innerCurrentIndex = i, this.$refs.swiperProduct.setIndexPosition());
      },
      initReport: function initReport() {
        var _this31 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee29() {
          return _regeneratorRuntime().wrap(function _callee29$(_context29) {
            while (1) switch (_context29.prev = _context29.next) {
              case 0:
                _context29.t0 = w$1;
                if (_context29.t0) {
                  _context29.next = 5;
                  break;
                }
                _context29.next = 4;
                return N$1();
              case 4:
                w$1 = _context29.sent;
              case 5:
                _context29.t1 = _this31.pairingData.headSwiper.length;
                if (_context29.t1) {
                  _context29.next = 9;
                  break;
                }
                _context29.next = 9;
                return _this31.getPairingCard();
              case 9:
              case "end":
                return _context29.stop();
            }
          }, _callee29);
        }))();
      },
      report: function report(i, e) {
        var _arguments3 = arguments,
          _this32 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee30() {
          var t, r;
          return _regeneratorRuntime().wrap(function _callee30$(_context30) {
            while (1) switch (_context30.prev = _context30.next) {
              case 0:
                t = _arguments3.length &gt; 2 &amp;&amp; _arguments3[2] !== undefined ? _arguments3[2] : "";
                if (!(console.log(window, window.source, w$1, "--report"), _this32.platform !== "wechat")) {
                  _context30.next = 3;
                  break;
                }
                return _context30.abrupt("return");
              case 3:
                _context30.next = 5;
                return _this32.initReport();
              case 5:
                r = {
                  logid: "23782",
                  data: {
                    event: e,
                    params: JSON.stringify({
                      page_name: "mp_article_page",
                      element_name: i,
                      productid: t || "",
                      mp_article_bizuin: w$1.article_info.mp_biz,
                      mp_article_appmsgid: w$1.article_info.appmsgid,
                      mp_article_item_idx: w$1.article_info.item_idx,
                      mp_article_item_show_type: w$1.article_info.item_show_type,
                      scene: w$1.article_info.mp_article_scene,
                      cardtype: q,
                      appid: _this32.shopAppid,
                      talent_appid: _this32.talentAppid
                    })
                  }
                };
                O$5(r);
              case 7:
              case "end":
                return _context30.stop();
            }
          }, _callee30);
        }))();
      }
    }
  };
  var Ie = function Ie() {
      var e = this,
        t = e._self._c;
      return t("div", {
        ref: "shopparing_warp",
        "class": e.isDark ? "shopparing_warp dark-mode" : "shopparing_warp",
        style: e.containerStyle
      }, [e.iframeLoading ? t("div", {
        staticClass: "shopparing_wx_img_placeholder",
        style: e.placeholderStyle
      }) : t("div", {
        ref: "shopparing_card_wrap",
        staticClass: "shopparing_card_wrap",
        style: e.cardStyle,
        attrs: {
          id: "shopparing_card_wrap"
        }
      }, [e.pairingData.isOffline ? t("div", {
        staticClass: "shopparing-offline-card"
      }, [t("span", {
        staticClass: "shopparing-offline-card-text"
      }, [e._v("该搭配已下架")])]) : [t("SwiperProduct", {
        ref: "swiperProduct",
        attrs: {
          width: e.containerWidth,
          height: e.swiperHeight,
          list: e.pairingData.headSwiper
        },
        on: {
          tagClick: e.jumpProduct,
          "current-index-change": e.handleSwiperIndexChange
        }
      }), t("SwiperIndicator", {
        attrs: {
          "swiper-list": e.pairingData.headSwiper,
          "current-index": e.currentSwiperIndex,
          "hide-indicator": !1,
          "max-indicator-index": 0
        },
        on: {
          change: e.handleIndicatorChange,
          "update:current-index": e.handleIndicatorUpdate
        }
      }), t("div", {
        staticClass: "pairing-card-footer"
      }, [t("div", {
        staticClass: "pairing-card-footer__info"
      }, [t("div", {
        staticClass: "pairing-card-footer__info-text"
      }, [t("div", {
        staticClass: "pairing-card-footer__title"
      }, [e._v(e._s(e.pairingData.title))]), t("div", {
        staticClass: "pairing-card-footer__desc"
      }, [e._v("共" + e._s(e.pairingData.productNum) + "件")])]), t("button", {
        staticClass: "pairing-card-footer__btn",
        on: {
          click: e.jumpPairingBuy
        }
      }, [e._v("搭配买")])]), t("div", {
        staticClass: "pairing-card-footer__brand"
      }, [t("span", {
        staticClass: "pairing-card-footer__brand-icon"
      }), t("span", {
        staticClass: "pairing-card-footer__brand-text"
      }, [e._v(e._s(e.pairingData.pairingCreator.pairingCreatorName))]), e.pairingCreatorTag ? t("img", {
        staticClass: "pairing-card-footer__brand-rtag",
        attrs: {
          src: e.pairingCreatorTag,
          alt: "RIcon"
        }
      }) : e._e()])])]], 2)]);
    },
    Fe = [],
    Te = v$2(ye, Ie, Fe, !1, null, null, null, null);
  var Oe = Te.exports;
  var ve = {
    components: {
      CommonShopcollection: we,
      CommonShopBuyTogether: Ee,
      CommonShopShopparing: Oe
    },
    mixins: [k$1],
    props: {
      type: {
        type: [Number, String],
        required: !0
      },
      json: {
        type: String,
        required: !0
      }
    },
    computed: {
      data: function data() {
        return _objectSpread$4(_objectSpread$4({}, JSON.parse(this.json || "{}")), {}, {
          platform: this.platform
        });
      },
      classObject: function classObject() {
        var e;
        var i = "";
        return this.type == 1 ? i = "wx_card_root_common_shopcollection" : this.type == 2 &amp;&amp; (i = "wx_card_root_common_buytogether", ["8", "10"].includes(window.item_show_type) &amp;&amp; ((e = this.data) == null ? void 0 : e.cardtype) === R.LINK &amp;&amp; (i = "wx_card_root_common_buytogether wx_card_root_common_buytogether_inline")), i;
      }
    },
    mounted: function mounted() {
      this.extraInfo.window &amp;&amp; this.extraInfo.window.addEventListener("click", this.handleDocumentClick);
    },
    beforeDestroy: function beforeDestroy() {
      this.extraInfo.window &amp;&amp; this.extraInfo.window.removeEventListener("click", this.handleDocumentClick);
    },
    methods: {
      handleDocumentClick: function handleDocumentClick(i) {
        this.$refs.js_custom_element.contains(i.target) || this.$emit("document-click", i);
      }
    }
  };
  var Pe = function Pe() {
      var e = this,
        t = e._self._c;
      return t("div", {
        ref: "js_custom_element",
        staticClass: "wx_card_root",
        "class": e.classObject
      }, [+e.type == 1 ? t("CommonShopcollection", e._b({}, "CommonShopcollection", e.data, !1)) : e._e(), +e.type == 2 ? t("CommonShopBuyTogether", e._b({}, "CommonShopBuyTogether", e.data, !1)) : e._e(), +e.type == 3 ? t("CommonShopShopparing", e._b({}, "CommonShopShopparing", e.data, !1)) : e._e()], 1);
    },
    ke = [],
    Se = v$2(ve, Pe, ke, !1, null, "6cb961c5", null, null);
  var Ue = Se.exports,
    He = ".wx_hover_card:before{content:\" \";position:absolute;top:0;left:0;right:0;bottom:0;border-radius:8px;box-sizing:border-box;border:1px solid rgba(7,193,96,.3);pointer-events:none;z-index:9}.wx_selected_card:before{content:\" \";position:absolute;top:0;left:0;right:0;bottom:0;border-radius:8px;border:1.5px solid #07C160;box-sizing:border-box;background:rgba(7,193,96,.1);pointer-events:none;z-index:9}body,.wx-root{--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #07C160;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0_5: rgba(0, 0, 0, .9);--weui-GLYPH-0: rgba(0, 0, 0, .9);--weui-GLYPH-1: rgba(0, 0, 0, .55);--weui-GLYPH-2: rgba(0, 0, 0, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #91D300;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #1485EE;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #95EC69;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #FA9D3B;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6467F0;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #FA5151;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .05);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #FFC300;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #FA9D3B;--weui-YELLOW: #FFC300;--weui-GREEN: #91D300;--weui-LIGHTGREEN: #95EC69;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1485EE;--weui-PURPLE: #6467F0;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #FA9D3B;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #10AEFF;--weui-REDORANGE: #FF6146;--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-BG-0: #ededed;--weui-BG-1: #f7f7f7;--weui-BG-2: #fff;--weui-BG-3: #f7f7f7;--weui-BG-4: #4c4c4c;--weui-BG-5: #fff;--weui-FG-0: rgba(0, 0, 0, .9);--weui-FG-HALF: rgba(0, 0, 0, .9);--weui-FG-1: rgba(0, 0, 0, .55);--weui-FG-2: rgba(0, 0, 0, .3);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-FG-5: rgba(0, 0, 0, .05);--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #fa9d3b;--weui-YELLOW: #ffc300;--weui-GREEN: #91d300;--weui-LIGHTGREEN: #95ec69;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1485ee;--weui-PURPLE: #6467f0;--weui-WHITE: #fff;--weui-LINK: #576b95;--weui-TEXTGREEN: #06ae56;--weui-FG: #000;--weui-BG: #fff;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: #fa9d3b;--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: #06ae56;--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: #10aeff;--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05);--weui-REDORANGE: #ff6146}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2c2c2c;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-FG-5: rgba(255, 255, 255, .1);--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-FG: #fff;--weui-BG: #000;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-REDORANGE: #ff6146}}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2c2c2c;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-FG-5: rgba(255, 255, 255, .1);--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-FG: #fff;--weui-BG: #000;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-REDORANGE: #ff6146}.wx-root[data-weui-mode=care],body[data-weui-mode=care]{--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #007DBB;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #018942;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0_5: #000000;--weui-GLYPH-0: #000000;--weui-GLYPH-1: rgba(0, 0, 0, .6);--weui-GLYPH-2: rgba(0, 0, 0, .42);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #4F8400;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #0075E2;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #2E8800;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #E17719;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #D14730;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6265F1;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #DC3636;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .1);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #BB8E00;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-RED: #DC3636;--weui-ORANGERED: #D14730;--weui-ORANGE: #E17719;--weui-YELLOW: #BB8E00;--weui-GREEN: #4F8400;--weui-LIGHTGREEN: #2E8800;--weui-TEXTGREEN: #06AE56;--weui-BLUE: #007DBB;--weui-INDIGO: #0075E2;--weui-PURPLE: #6265F1;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #E17719;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #007DBB;--weui-REDORANGE: #D14730;--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-BG-0: #ededed;--weui-BG-1: #f7f7f7;--weui-BG-2: #fff;--weui-BG-3: #f7f7f7;--weui-BG-4: #4c4c4c;--weui-BG-5: #fff;--weui-FG-0: #000000;--weui-FG-HALF: #000000;--weui-FG-1: rgba(0, 0, 0, .6);--weui-FG-2: rgba(0, 0, 0, .42);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-FG-5: rgba(0, 0, 0, .05);--weui-RED: #dc3636;--weui-ORANGERED: #d14730;--weui-ORANGE: #e17719;--weui-YELLOW: #bb8e00;--weui-GREEN: #4f8400;--weui-LIGHTGREEN: #2e8800;--weui-BRAND: #018942;--weui-BLUE: #007dbb;--weui-INDIGO: #0075e2;--weui-PURPLE: #6265f1;--weui-WHITE: #fff;--weui-LINK: #576b95;--weui-TEXTGREEN: #06ae56;--weui-FG: #000;--weui-BG: #fff;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: #e17719;--weui-TAG-BACKGROUND-ORANGE: rgba(225, 119, 25, .1);--weui-TAG-TEXT-GREEN: #06ae56;--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: #007dbb;--weui-TAG-BACKGROUND-BLUE: rgba(0, 125, 187, .1);--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05);--weui-REDORANGE: #d14730}@media (prefers-color-scheme: dark){.wx-root[data-weui-mode=care]:not([data-weui-theme=light]),body[data-weui-mode=care]:not([data-weui-theme=light]){--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2c2c2c;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-FG-5: rgba(255, 255, 255, .1);--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-FG: #fff;--weui-BG: #000;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-REDORANGE: #ff6146}}.wx-root[data-weui-mode=care][data-weui-theme=dark],body[data-weui-mode=care][data-weui-theme=dark]{--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2c2c2c;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-FG-5: rgba(255, 255, 255, .1);--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-FG: #fff;--weui-BG: #000;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-REDORANGE: #ff6146}.wx-root,body{--weui-BG-COLOR-ACTIVE: #ececec}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-COLOR-ACTIVE: #373737}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-COLOR-ACTIVE: #373737}}body,.wx-root,page{--weui-BTN-HEIGHT: 48;--weui-BTN-HEIGHT-MEDIUM: 40;--weui-BTN-HEIGHT-SMALL: 32}.wx-root,body{--weui-BTN-ACTIVE-MASK: rgba(0, 0, 0, .1)}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BTN-ACTIVE-MASK: rgba(255, 255, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BTN-ACTIVE-MASK: rgba(255, 255, 255, .1)}}.wx-root,body{--weui-BTN-DEFAULT-ACTIVE-BG: #e6e6e6}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BTN-DEFAULT-ACTIVE-BG: rgba(255, 255, 255, .126)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BTN-DEFAULT-ACTIVE-BG: rgba(255, 255, 255, .126)}}.wx-root,body{--weui-DIALOG-LINE-COLOR: rgba(0, 0, 0, .1)}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-DIALOG-LINE-COLOR: rgba(255, 255, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-DIALOG-LINE-COLOR: rgba(255, 255, 255, .1)}}.weui-btn{position:relative;display:block;width:184px;margin-left:auto;margin-right:auto;padding:12px 24px;box-sizing:border-box;font-weight:500;font-size:17px;text-align:center;text-decoration:none;color:#fff;line-height:1.41176471;border-radius:8px;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;-moz-user-select:none;user-select:none}.weui-btn:active:before{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background-color:var(--weui-BTN-ACTIVE-MASK);border-radius:8px}.weui-btn:active.weui-btn_loading:before,.weui-btn:active.weui-btn_disabled:before,.weui-btn:active[disabled]:before{display:none}.weui-btn_block{width:auto}.weui-btn_inline{display:inline-block}.weui-btn_default{color:var(--weui-FG-0);background-color:var(--weui-FG-5)}.weui-btn_default:not(.weui-btn_disabled):visited{color:var(--weui-FG-0)}.weui-btn_primary{background-color:var(--weui-BRAND)}.weui-btn_primary:not(.weui-btn_disabled):visited{color:#fff}.weui-btn_warn{color:var(--weui-RED);background-color:var(--weui-FG-5)}.weui-btn_warn:not(.weui-btn_disabled):visited{color:var(--weui-RED)}.weui-btn_overlay{color:var(--weui-BRAND);background-color:#fff}.weui-btn_overlay:not(.weui-btn_disabled):visited{color:var(--weui-BRAND)}.weui-btn_disabled,.weui-btn[disabled]{color:var(--weui-FG-4);background-color:var(--weui-BG-1)}.weui-btn_loading .weui-loading{margin:-.2em 8px 0 0}.weui-btn_loading .weui-mask-loading{margin:-.2em 8px 0 0;color:currentColor}.weui-btn_loading .weui-primary-loading{margin:-.2em 8px 0 0;vertical-align:middle;color:currentColor}.weui-btn_loading .weui-primary-loading:before{content:\"\"}.weui-btn_loading.weui-btn_primary{color:var(--weui-WHITE)}.weui-btn_cell{position:relative;display:block;margin-left:auto;margin-right:auto;box-sizing:border-box;font-size:17px;text-align:center;text-decoration:none;color:#fff;line-height:1.41176471;padding:16px;-webkit-tap-highlight-color:rgba(0,0,0,0);overflow:hidden;background-color:var(--weui-BG-5)}.weui-btn_cell+.weui-btn_cell{margin-top:16px}.weui-btn_cell:active{background-color:var(--weui-BG-COLOR-ACTIVE)}.weui-btn_cell__icon{display:inline-block;vertical-align:middle;width:24px;height:24px;margin:-.2em .34em 0 0}.weui-btn_cell-default{color:var(--weui-FG-0)}.weui-btn_cell-primary{color:var(--weui-LINK)}.weui-btn_cell-warn{color:var(--weui-RED)}.weui-bottom-fixed-opr-page{height:100%;display:flex;flex-direction:column}.weui-bottom-fixed-opr-page__content{min-height:0;flex:1;padding-bottom:80px;box-sizing:border-box;overflow-y:auto;-webkit-overflow-scrolling:touch}.weui-bottom-fixed-opr-page__tool{padding:16px 32px 24px;padding:16px calc(32px + constant(safe-area-inset-right)) calc(24px + constant(safe-area-inset-bottom)) calc(32px + constant(safe-area-inset-left));padding:16px calc(32px + env(safe-area-inset-right)) calc(24px + env(safe-area-inset-bottom)) calc(32px + env(safe-area-inset-left));background:#ffffff;position:relative;z-index:50}.weui-bottom-fixed-opr-page__tool:before{content:\"\";height:80px;background:linear-gradient(to top,#ffffff,rgba(255,255,255,0));position:absolute;bottom:calc(100% - 1px);left:0;right:0;transform:translateZ(0);pointer-events:none}.wx-root[data-weui-theme=dark] .weui-bottom-fixed-opr-page__tool,body[data-weui-theme=dark] .weui-bottom-fixed-opr-page__tool{background:#191919}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]) .weui-bottom-fixed-opr-page__tool,body:not([data-weui-theme=light]) .weui-bottom-fixed-opr-page__tool{background:#191919}}.wx-root[data-weui-theme=dark] .weui-bottom-fixed-opr-page__tool:before,body[data-weui-theme=dark] .weui-bottom-fixed-opr-page__tool:before{background:linear-gradient(to top,#191919,rgba(25,25,25,0))}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]) .weui-bottom-fixed-opr-page__tool:before,body:not([data-weui-theme=light]) .weui-bottom-fixed-opr-page__tool:before{background:linear-gradient(to top,#191919,rgba(25,25,25,0))}}.weui-bottom-fixed-opr-page__tips{margin-bottom:24px;padding:0 32px;text-align:center}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr{display:flex;align-items:center;justify-content:center}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn{width:184px;padding-left:16px;padding-right:16px}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2),.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn{margin:0 8px;width:136px}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2):first-child,.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn:first-child{margin-left:0}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2):last-child,.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn:last-child{margin-right:0}.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr{flex-direction:column}.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2),.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn{width:184px;margin:16px 0 0}.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2):first-child,.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn:first-child{margin-top:0}.weui-bottom-fixed-opr-page.weui-form{padding-top:0}.weui-bottom-fixed-opr-page.weui-form .weui-form__bd{padding-top:56px;padding-top:calc(56px + constant(safe-area-inset-top));padding-top:calc(56px + env(safe-area-inset-top))}.weui-bottom-fixed-opr-page.weui-form .weui-form__ft{padding-bottom:0}.weui-bottom-fixed-opr-page.weui-form .weui-form__control-area{margin-bottom:0}.weui-bottom-fixed-opr-page.weui-half-screen-dialog{padding:0}.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__hd,.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__bd,.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__ft{padding-left:24px;padding-left:calc(24px + constant(safe-area-inset-left));padding-left:calc(24px + env(safe-area-inset-left));padding-right:24px;padding-right:calc(24px + constant(safe-area-inset-right));padding-right:calc(24px + env(safe-area-inset-right))}.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__bd{padding-bottom:80px}.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__ft{padding-bottom:64px;padding-bottom:calc(64px + constant(safe-area-inset-bottom));padding-bottom:calc(64px + env(safe-area-inset-bottom))}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog{padding:0}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-half-screen-dialog__hd{padding:0 24px;padding:0 calc(24px + constant(safe-area-inset-right)) 0 calc(24px + constant(safe-area-inset-left));padding:0 calc(24px + env(safe-area-inset-right)) 0 calc(24px + env(safe-area-inset-left))}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-half-screen-dialog__bd{padding-bottom:0;display:flex;flex-direction:column}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-half-screen-dialog__ft{padding:0}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-bottom-fixed-opr-page{flex:1;min-height:0}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-bottom-fixed-opr-page__content{padding:0 24px;padding:0 calc(24px + constant(safe-area-inset-right)) 0 calc(24px + constant(safe-area-inset-left));padding:0 calc(24px + env(safe-area-inset-right)) 0 calc(24px + env(safe-area-inset-left))}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-bottom-fixed-opr{padding:16px 0 64px;padding:16px 0 calc(64px + constant(safe-area-inset-bottom));padding:16px 0 calc(64px + env(safe-area-inset-bottom))}button.weui-btn,input.weui-btn{border-width:0;outline:0;-webkit-appearance:none}button.weui-btn:focus,input.weui-btn:focus{outline:0}button.weui-btn_inline,input.weui-btn_inline,button.weui-btn_mini,input.weui-btn_mini{width:auto}.weui-btn_medium{font-size:14px;padding:10px 24px;line-height:calc((var(--weui-BTN-HEIGHT-MEDIUM) - 20) / 14)}.weui-btn_mini{display:inline-block;width:auto;line-height:calc((32 - 12) / 14);padding:6px 12px;font-size:14px;border-radius:6px}.weui-btn_xmini{display:inline-block;width:auto;padding:4px 12px;line-height:calc((28 - 8) / 14);font-size:14px;font-weight:500;border-radius:4px}.weui-btn+.weui-btn{margin-top:16px}.weui-btn.weui-btn_mini+.weui-btn.weui-btn_mini{margin-top:auto}.weui-btn.weui-btn_xmini+.weui-btn.weui-btn_xmini{margin-top:auto}.weui-btn.weui-btn_inline+.weui-btn.weui-btn_inline{margin-left:16px}.weui-btn-area{margin:48px 16px 8px}.weui-btn-area_inline{display:flex}.weui-btn-area_inline .weui-btn{margin-top:auto;margin-right:16px;width:100%;flex:1}.weui-btn-area_inline .weui-btn:last-child{margin-right:0}.weui-btn_reset{background:transparent;border:0;padding:0;outline:0;font-size:inherit}.weui-btn_icon{background:transparent;border:0;padding:0;outline:0;font-size:0}.weui-btn_icon:active [class*=weui-icon-]{color:var(--weui-FG-1)}.collection_wx_img_placeholder{width:100%;background-color:#00000005;background:var(--weui-BG-2) url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='80px' height='80px' viewBox='0 0 80 80' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3E9.\u5143\u7D20/\u52A0\u8F7D/Black%3C/title%3E%3Cdefs%3E%3ClinearGradient x1='94.0869141%25' y1='0%25' x2='94.0869141%25' y2='90.559082%25' id='linearGradient-1'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.67370605%25' x2='100%25' y2='90.6286621%25' id='linearGradient-2'%3E%3Cstop stop-color='%23606060' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cg id='\u9875\u9762-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' opacity='0.9'%3E%3Cg id='LoadingDefault'%3E%3Cpath d='M40,0 C62.09139,0 80,17.90861 80,40 C80,62.09139 62.09139,80 40,80 L40,73 C58.2253967,73 73,58.2253967 73,40 C73,21.7746033 58.2253967,7 40,7 L40,0 Z' id='\u8DEF\u5F84' fill='url(%23linearGradient-1)'%3E%3C/path%3E%3Cpath d='M40,0 L40,7 C21.7746033,7 7,21.7746033 7,40 C7,58.2253967 21.7746033,73 40,73 L40,80 C17.90861,80 0,62.09139 0,40 C0,17.90861 17.90861,0 40,0 Z' id='\u8DEF\u5F84' fill='url(%23linearGradient-2)'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23606060' cx='40.5' cy='3.5' r='3.5'%3E%3C/circle%3E%3C/g%3E%3CanimateTransform attributeName='transform' begin='0s' dur='1s' type='rotate' values='0 40 40;360 40 40' repeatCount='indefinite'/%3E%3C/g%3E%3C/svg%3E%0A\") no-repeat 50% 50%!important;background-size:16px!important;border-radius:8px}.wx_card_root_common_shopcollection{display:flex;flex-direction:column;-webkit-user-select:none;-moz-user-select:none;user-select:none;align-items:center;position:relative}.wx_card_root_common_shopcollection .shopcollection_warp{width:100%;display:flex;justify-content:center}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap{width:100%;background-color:#00000005;border-radius:8px;padding:16px 16px 8px;margin:0;box-sizing:border-box}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .card_head{width:100%;display:flex;flex-direction:row;justify-content:space-between}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .card_head .head_left{display:flex;align-items:center}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .card_head .head_left .head_mid{display:flex;flex-direction:column}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .card_head .head_left .head_mid .head_mid_top{font-size:17px;font-family:PingFang SC;color:var(--weui-FG-0);line-height:21px;word-break:break-all;margin-right:4px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;opacity:.9}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .card_head .head_right .tap_home_btn{font-weight:400!important;background-color:var(--weui-FG-5, rgba(0, 0, 0, .05));display:flex;align-items:center;height:32px}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .product_list{display:flex;width:100%;justify-content:space-between;margin-top:22px}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .product_list .product{position:relative}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .product_list .product .product_image{width:100%;height:100%;border-radius:2px}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .product_list .product .product_price{bottom:4px;right:4px;position:absolute;border-radius:2px;padding:0 3px;height:15px;font-size:14px;font-family:WeChatSansStd-Medium;font-weight:400;color:#fff;line-height:15px;background-color:#0003}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .product_list :not(:first-child){margin-left:4px}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .shop_icon_wrap{width:100%;display:flex;align-items:center;justify-content:flex-start;margin-top:12px}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .shop_icon_wrap .shop_icon{width:14px;height:14px;margin-right:2px;background-image:url(https://res.wx.qq.com/shop/public/2025-05-10/321b820e-8d8a-4083-8e0f-40b2b01fc8ef.png);background-repeat:no-repeat;background-size:contain}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .shop_icon_wrap .shop_name{font-size:12px;font-family:PingFang SC;font-weight:400;color:var(--weui-GLYPH-1, rgba(0, 0, 0, .55));line-height:16.8px}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .shop_status_desc{color:#0000004d;height:114px;display:flex;align-items:center;justify-content:center}@media (prefers-color-scheme: dark){.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap{background-color:#ffffff05}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .shop_icon_wrap .shop_icon{background-image:url(https://res.wx.qq.com/shop/public/2025-05-21/8f4c69e9-a78b-4c26-a4ce-affa1c47366d.png)}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .shop_status_desc{color:#ffffff4d}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .collection_wx_img_placeholder{background-color:#ffffff05}}.wx_card_root_common_buytogether{display:flex;flex-direction:column;-webkit-user-select:none;-moz-user-select:none;user-select:none;position:relative;width:100%}.wx_card_root_common_buytogether_inline{display:inline-block!important;width:auto!important}.common_buytogether_root{display:flex;flex-direction:column;-webkit-user-select:none;-moz-user-select:none;user-select:none;align-items:center;position:relative}.common_buytogether_root .collection_wx_img_placeholder{width:100%;background-color:var(--weui-BG-2, rgba(0, 0, 0, .02)) url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='80px' height='80px' viewBox='0 0 80 80' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3E9.\u5143\u7D20/\u52A0\u8F7D/Black%3C/title%3E%3Cdefs%3E%3ClinearGradient x1='94.0869141%25' y1='0%25' x2='94.0869141%25' y2='90.559082%25' id='linearGradient-1'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.67370605%25' x2='100%25' y2='90.6286621%25' id='linearGradient-2'%3E%3Cstop stop-color='%23606060' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cg id='\u9875\u9762-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' opacity='0.9'%3E%3Cg id='LoadingDefault'%3E%3Cpath d='M40,0 C62.09139,0 80,17.90861 80,40 C80,62.09139 62.09139,80 40,80 L40,73 C58.2253967,73 73,58.2253967 73,40 C73,21.7746033 58.2253967,7 40,7 L40,0 Z' id='\u8DEF\u5F84' fill='url(%23linearGradient-1)'%3E%3C/path%3E%3Cpath d='M40,0 L40,7 C21.7746033,7 7,21.7746033 7,40 C7,58.2253967 21.7746033,73 40,73 L40,80 C17.90861,80 0,62.09139 0,40 C0,17.90861 17.90861,0 40,0 Z' id='\u8DEF\u5F84' fill='url(%23linearGradient-2)'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23606060' cx='40.5' cy='3.5' r='3.5'%3E%3C/circle%3E%3C/g%3E%3CanimateTransform attributeName='transform' begin='0s' dur='1s' type='rotate' values='0 40 40;360 40 40' repeatCount='indefinite'/%3E%3C/g%3E%3C/svg%3E%0A\") no-repeat 50% 50%!important;background-size:16px!important;border-radius:8px}.common_buytogether_root .link-wrap{align-items:center;flex-grow:1;display:flex;justify-content:center}.common_buytogether_root .link-wrap .product_card_text_wrp{-webkit-user-select:none;-moz-user-select:none;user-select:none;display:inline;font-family:PingFang SC}.common_buytogether_root .link-wrap .product_card_text_wrp .product_text_link:before{display:inline-block;mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='25' height='25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.798 13.728c-.32 0-.636-.032-.942-.096-1.792-.378-3.042-1.754-3.042-3.348 0-.426.088-.84.262-1.232l.008-.02 2.008-4.498a3.696 3.696 0 013.372-2.186h9.8A3.697 3.697 0 0120.662 4.6l1.984 4.432c.178.402.268.82.268 1.248 0 1.596-1.252 2.974-3.044 3.348a4.63 4.63 0 01-2.176-.074c-.816-.23-1.514-.68-2.002-1.268-.798.846-2.018 1.368-3.326 1.368-1.308 0-2.52-.52-3.322-1.364-.488.59-1.188 1.042-2.014 1.274-.394.11-.808.168-1.23.168l-.002-.004zM3.46 9.632l-.01.022c-.09.2-.136.412-.136.63 0 .878.762 1.65 1.85 1.88.47.098.994.082 1.458-.048.766-.214 1.368-.728 1.576-1.34a1.43 1.43 0 00.046-.158.748.748 0 111.448-.056l.026.07.012.03c.392.892 1.448 1.49 2.634 1.49s2.25-.602 2.636-1.498c.02-.046.034-.082.046-.12a.744.744 0 01.754-.502.75.75 0 01.688.588c.012.056.026.108.042.152.214.62.802 1.118 1.572 1.334.466.132.99.148 1.46.048 1.092-.228 1.852-1.002 1.852-1.88 0-.216-.046-.43-.138-.636l-1.988-4.44-.008-.018-.018-.036a2.19 2.19 0 00-1.998-1.296h-9.8c-.864 0-1.648.51-2 1.298-.008.016-.014.032-.022.046L3.46 9.634v-.002zm8.904 12.01c-4.142 0-7.566-2.634-7.794-5.996a.75.75 0 111.498-.102c.174 2.578 2.94 4.598 6.298 4.598s6.122-2.02 6.296-4.598a.75.75 0 111.498.102c-.228 3.362-3.652 5.996-7.794 5.996h-.002z' fill='%23576B95'/%3E%3C/svg%3E\");-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='25' height='25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.798 13.728c-.32 0-.636-.032-.942-.096-1.792-.378-3.042-1.754-3.042-3.348 0-.426.088-.84.262-1.232l.008-.02 2.008-4.498a3.696 3.696 0 013.372-2.186h9.8A3.697 3.697 0 0120.662 4.6l1.984 4.432c.178.402.268.82.268 1.248 0 1.596-1.252 2.974-3.044 3.348a4.63 4.63 0 01-2.176-.074c-.816-.23-1.514-.68-2.002-1.268-.798.846-2.018 1.368-3.326 1.368-1.308 0-2.52-.52-3.322-1.364-.488.59-1.188 1.042-2.014 1.274-.394.11-.808.168-1.23.168l-.002-.004zM3.46 9.632l-.01.022c-.09.2-.136.412-.136.63 0 .878.762 1.65 1.85 1.88.47.098.994.082 1.458-.048.766-.214 1.368-.728 1.576-1.34a1.43 1.43 0 00.046-.158.748.748 0 111.448-.056l.026.07.012.03c.392.892 1.448 1.49 2.634 1.49s2.25-.602 2.636-1.498c.02-.046.034-.082.046-.12a.744.744 0 01.754-.502.75.75 0 01.688.588c.012.056.026.108.042.152.214.62.802 1.118 1.572 1.334.466.132.99.148 1.46.048 1.092-.228 1.852-1.002 1.852-1.88 0-.216-.046-.43-.138-.636l-1.988-4.44-.008-.018-.018-.036a2.19 2.19 0 00-1.998-1.296h-9.8c-.864 0-1.648.51-2 1.298-.008.016-.014.032-.022.046L3.46 9.634v-.002zm8.904 12.01c-4.142 0-7.566-2.634-7.794-5.996a.75.75 0 111.498-.102c.174 2.578 2.94 4.598 6.298 4.598s6.122-2.02 6.296-4.598a.75.75 0 111.498.102c-.228 3.362-3.652 5.996-7.794 5.996h-.002z' fill='%23576B95'/%3E%3C/svg%3E\");background-color:currentColor;-webkit-mask-size:contain;mask-size:contain;height:1.1em;width:1.1em;content:\"\";vertical-align:middle;margin-right:2px;margin-top:-.16em}.common_buytogether_root .link-wrap .product_card_text_wrp .product_text_link{text-decoration:none;padding:2px 4px;color:var(--weui-LINK, #576b95);cursor:default;-webkit-user-drag:none;border-radius:4px}.common_buytogether_root .common_buytogether_card_wrap{width:100%;background-color:#00000005;border-radius:8px;padding:16px 16px 8px;margin:0;box-sizing:border-box}.common_buytogether_root .common_buytogether_card_wrap .card_head{width:100%;display:flex;flex-direction:row;justify-content:space-between}.common_buytogether_root .common_buytogether_card_wrap .card_head .head_left{display:flex;flex-direction:column;justify-content:center}.common_buytogether_root .common_buytogether_card_wrap .card_head .head_left .head_left_top{display:flex;justify-content:center}.common_buytogether_root .common_buytogether_card_wrap .card_head .head_left .head_left_top .icon{background-image:url(https://res.wx.qq.com/shop/public/2025-06-05/3c0a6519-c7ac-424b-9d1e-6096a089e49b.png);width:24px;height:24px;background-size:cover}.common_buytogether_root .common_buytogether_card_wrap .card_head .head_left .head_left_top .title{flex:1;margin-right:16px;margin-left:5px;font-size:17px;font-family:PingFang SC;font-weight:500;color:var(--weui-ORANGERED-100, #ff6146);line-height:24px}.common_buytogether_root .common_buytogether_card_wrap .card_head .head_left .head_left_bottom{margin-top:6px;display:flex;align-items:center;text-align:center}.common_buytogether_root .common_buytogether_card_wrap .card_head .head_left .head_left_bottom .avatar_list{display:flex;align-items:center}.common_buytogether_root .common_buytogether_card_wrap .card_head .head_left .head_left_bottom .avatar_list .avatar{width:16px;height:16px;border-radius:2px}.common_buytogether_root .common_buytogether_card_wrap .card_head .head_left .head_left_bottom .avatar_list&gt;:not(:first-child){margin-left:2px}.common_buytogether_root .common_buytogether_card_wrap .card_head .head_left .head_left_bottom .desc{margin-left:6px;font-size:12px;font-family:PingFang SC;font-weight:400;color:var(--weui-GLYPH-1);line-height:16px}.common_buytogether_root .common_buytogether_card_wrap .card_head .head_right .tap_home_btn{padding:0 12px!important;border-radius:6px;white-space:nowrap;text-align:center;display:flex;justify-content:center;align-items:center;height:32px;font-size:14px;font-family:PingFang SC;font-weight:500;color:var(--weui-GLYPH-WHITE-3, #ffffff);background-color:var(--weui-ORANGERED-100, #ff6146);border:0}.common_buytogether_root .common_buytogether_card_wrap .product_list{display:flex;width:100%;margin-top:16px}.common_buytogether_root .common_buytogether_card_wrap .product_list .product{display:flex;flex-direction:column}.common_buytogether_root .common_buytogether_card_wrap .product_list .product .product_image{width:100%;border-radius:4px}.common_buytogether_root .common_buytogether_card_wrap .product_list .product .product_price{margin-top:4px}.common_buytogether_root .common_buytogether_card_wrap .product_list .product .product_price .selling_price{font-size:17px;font-family:WeChatSansStd-Medium;font-weight:500;color:var(--weui-GLYPH-0);line-height:19px}.common_buytogether_root .common_buytogether_card_wrap .product_list .product .product_price .before_selling_price{margin-left:2px;position:relative;font-size:12px;font-family:WeChatSansStd-Medium;font-weight:400;color:#afafaf;line-height:16px}.common_buytogether_root .common_buytogether_card_wrap .product_list .product .product_price .newlineationPrice{position:absolute;height:2px;top:50%;left:50%;transform:scaleY(.5) translate(-50%,-50%);width:100%;background:#AFAFAF;border-top:1px solid #fff;border-bottom:1px solid #fff}.common_buytogether_root .common_buytogether_card_wrap .product_list&gt;:not(:first-child){margin-left:4px}.common_buytogether_root .common_buytogether_card_wrap .shop_icon_wrap{width:100%;display:flex;align-items:center;justify-content:flex-start;margin-top:8px}.common_buytogether_root .common_buytogether_card_wrap .shop_icon_wrap .shop_icon{width:14px;height:14px;margin-right:2px;background-image:url(https://res.wx.qq.com/shop/public/2025-05-10/321b820e-8d8a-4083-8e0f-40b2b01fc8ef.png);background-size:contain;background-position:center center;flex-shrink:0}.common_buytogether_root .common_buytogether_card_wrap .shop_icon_wrap .shop_name{font-size:12px;font-family:PingFang SC;font-weight:400;color:var(--weui-GLYPH-1, rgba(0, 0, 0, .55));line-height:16.8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}.common_buytogether_root .qrcode-wrapper{display:flex;align-items:center;padding:10px 12px 10px 10px}.common_buytogether_root .qrcode-wrapper .qrcode{width:76px;height:76px;margin-right:14px}.common_buytogether_root .qrcode-wrapper .desc{font-size:12px;line-height:17px;font-weight:400;display:flex;flex-direction:column;color:var(--weui-FG-0)}@media (prefers-color-scheme: dark){.common_buytogether_root .common_buytogether_card_wrap{background-color:#ffffff05}.common_buytogether_root .common_buytogether_card_wrap .product_list .product .product_price .before_selling_price{color:#5e5e5e}.common_buytogether_root .common_buytogether_card_wrap .product_list .product .product_price .newlineationPrice{background:#5E5E5E;border-top:1px solid #1E1E1E;border-bottom:1px solid #1E1E1E}.common_buytogether_root .common_buytogether_card_wrap .shop_icon_wrap .shop_icon{background-image:url(https://res.wx.qq.com/shop/public/2025-05-21/8f4c69e9-a78b-4c26-a4ce-affa1c47366d.png)}.common_buytogether_root .collection_wx_img_placeholder{background-color:#ffffff05}.common_buytogether_root .qrcode-wrapper .qrcode{filter:invert(1)}}.shopparing_warp{width:100%;display:flex;justify-content:center;background:rgba(255,255,255,.03);-webkit-user-select:none;-moz-user-select:none;user-select:none}.shopparing_warp .shopparing-offline-card{display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.03);height:120px;border-radius:8px}.shopparing_warp .shopparing-offline-card-text{color:#0000004d;font-size:14px}.pairing-card-footer{background:rgba(0,0,0,.02);border-radius:0 0 16px 16px;padding:8px 16px;box-sizing:border-box;min-height:72px}.pairing-card-footer__info{display:flex;align-items:center;justify-content:space-between;flex:1;min-width:0}.pairing-card-footer__title{font-size:15px;color:#000000e6;font-weight:500;flex:1;margin-right:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pairing-card-footer__desc{font-size:14px;color:#0000004d}.pairing-card-footer__brand{display:flex;align-items:center;font-size:13px;color:#b2b2b2;margin-top:12px}.pairing-card-footer__brand-icon{font-size:14px;height:1em;width:1em;margin:0 2px;background-image:url(https://res.wx.qq.com/op_res/jXYqVlv0Bp4U5kA7rRVadiXJa4OoJ3XBiu6NnGwip81QtLP4_tC88GRmSpCoFfkcr2wD4gexp2x7bkYGGRP4Mw);background-repeat:no-repeat;background-size:contain}.pairing-card-footer__brand-text{color:#0000004d}.pairing-card-footer__brand-rtag{font-size:14px;height:1em;width:1em;margin:0 2px}.pairing-card-footer__btn{background:#ff6146;color:#fff;border:none;border-radius:6px;font-size:15px;font-weight:500;padding:5.5px 18px;cursor:pointer;transition:background .2s}.pairing-card-footer__btn:active{background:#ff6146}.dark-mode .shopparing-offline-card{background:rgba(255,255,255,.03)}.dark-mode .shopparing-offline-card-text{color:#ffffff4d}.dark-mode .swiper-wrapper,.dark-mode .swiper-wrapper .image-container{background:#111}.dark-mode .pairing-card-footer{background:rgba(0,0,0,.03)}.dark-mode .pairing-card-footer__title{color:#fffc}.dark-mode .pairing-card-footer__desc{font-size:14px;color:#ffffff4d}.dark-mode .pairing-card-footer__brand{color:#ffffff4d}.dark-mode .pairing-card-footer__brand-icon{color:#ffffff4d;background-image:url(https://res.wx.qq.com/op_res/jXYqVlv0Bp4U5kA7rRVadr_IVVcYZeY_bErEeSJQ0eAObBEiF9qnYrc_HLdsY8q6nQQ5T3WHhgVq1pF5a9XRbg)}.dark-mode .pairing-card-footer__brand-text{color:#ffffff4d}.swiper-out{overflow:hidden;position:relative;background-color:#ededed;border-radius:8px 8px 0 0}.swiper-out .swiper-wrapper{background-color:#ededed;display:flex;will-change:transform}.swiper-out .swiper-item{display:flex;flex-shrink:0;align-items:center}.swiper-out .swiper-item .image-container{position:relative;width:100%;height:100%;background-color:#ededed;display:flex;align-items:center;justify-content:center}.swiper-out .swiper-item .image-container .image-wrapper{position:relative;display:inline-block;max-width:100%;max-height:100%}.swiper-out .swiper-item .image-container .swiper-image{display:block;max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain;transition:opacity .1s;background-color:#ededed}.swiper-out .swiper-item .image-container .label-container{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;overflow:hidden}.swiper-out .swiper-item .image-container .label-container .label-item{display:flex;align-items:center;border-radius:100px;width:-moz-max-content;width:max-content;padding:0 4px;box-sizing:border-box;background:rgba(76,76,76,.5);pointer-events:fill;position:absolute;min-width:0}.swiper-out .swiper-item .image-container .label-container .label-item:before{content:\"\";width:8px;height:8px;border-radius:50%;border:2px solid #a5a5a5;background-color:#fff;margin-right:4px;z-index:9;box-sizing:border-box;position:relative;flex-shrink:0}.swiper-out .swiper-item .image-container .label-container .label-item:after{content:\"\";display:block;width:7px;height:14px;-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg width='12' height='24' viewBox='0 0 12 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M2.4541 6.58068L3.51476 5.52002L9.29366 11.2989C9.68378 11.689 9.68724 12.3181 9.29366 12.7117L3.51476 18.4906L2.4541 17.4299L7.87872 12.0053L2.4541 6.58068Z' fill='black'/%3E %3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg width='12' height='24' viewBox='0 0 12 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M2.4541 6.58068L3.51476 5.52002L9.29366 11.2989C9.68378 11.689 9.68724 12.3181 9.29366 12.7117L3.51476 18.4906L2.4541 17.4299L7.87872 12.0053L2.4541 6.58068Z' fill='black'/%3E %3C/svg%3E\");-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:cover;mask-size:cover;background-color:#fff;margin-left:4px;flex-shrink:0}.swiper-out .swiper-item .image-container .label-container .label-item:hover{opacity:.8}.swiper-out .swiper-indicator{position:absolute;bottom:4px;right:8px;border-radius:12px;padding:4px 8px;z-index:1000}.swiper-out .swiper-indicator .indicator-text{font-size:12px;color:#fff;font-weight:500;text-shadow:0 0 .5px rgba(0,0,0,.2)}.swiper-out .swiper-indicator-wrap-bg{background-color:#fff;width:100%}.swiper-out .swiper-indicator-wrap-bg .swiper-indicator-wrap{background:rgba(0,0,0,.02);padding-top:4px;width:100%;display:flex;justify-content:center;z-index:10000}.swiper-out .swiper-indicator-wrap-bg .swiper-indicator-wrap .swiper-indicator-dot{background:rgba(0,0,0,.3);width:5px;height:5px;border-radius:50%;margin-right:3px;transition:opacity .3s}.swiper-out .swiper-indicator-wrap-bg .swiper-indicator-wrap .swiper-indicator-dot:last-child{margin-right:0}.swiper-out .swiper-indicator-wrap-bg .swiper-indicator-wrap .swiper-indicator-dot.active{width:12px;height:4.5px;background:rgba(0,0,0,.9);border-radius:3px}.dark-mode .swiper-out,.dark-mode .swiper-out .swiper-wrapper,.dark-mode .swiper-out .swiper-wrapper .image-container,.dark-mode .swiper-out .swiper-wrapper .image-container .swiper-image{background:#111}.swiper-indicator-wrap-bg{background-color:#fff;width:100%}.swiper-indicator-wrap-bg .swiper-indicator-wrap{background:rgba(0,0,0,.02);padding-top:4px;width:100%;display:flex;justify-content:center;z-index:10000}.swiper-indicator-wrap-bg .swiper-indicator-wrap .swiper-indicator-dot{background:rgba(0,0,0,.1);width:5px;height:5px;border-radius:50%;margin-right:3px;transition:opacity .3s;cursor:pointer}.swiper-indicator-wrap-bg .swiper-indicator-wrap .swiper-indicator-dot:last-child{margin-right:0}.swiper-indicator-wrap-bg .swiper-indicator-wrap .swiper-indicator-dot.active{width:12px;height:4.5px;background:rgba(0,0,0,.9);border-radius:3px}.swiper-indicator-wrap-bg .swiper-indicator-wrap .swiper-indicator-dot:hover{opacity:.8}.dark-mode .swiper-indicator-wrap-bg{background:#191919}.dark-mode .swiper-indicator-wrap-bg .swiper-indicator-dot{background:rgba(255,255,255,.1)}.dark-mode .swiper-indicator-wrap-bg .swiper-indicator-dot.active{background:rgba(255,255,255,.8)}\n",
    J = {
      type: "data-type",
      json: "data-json"
    };
  function Ye(i) {
    var e = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : {};
    var t = o$6.call(this, J);
    return _objectSpread$4({
      platform: i,
      extraInfo: e
    }, t);
  }
  function Ze() {
    var i = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    H$3(Object.assign(i, {
      Component: Ue,
      styleText: i.isDev ? i.devStyleText : He,
      customName: i.customName || "mp-common-shoptag",
      watchAttr: Object.values(J),
      getProps: Ye,
      eventName: ["document-click", "onFrameReady", "expose", "element-click"]
    }));
  }

  var g$2 = {
    canJumpOnTap: false,
    isNonWechat: false,
    data: null,
    appidInfoResp: null,
    appidInfoCatchErr: null,
    appInfoSucQueue: [],
    appInfoErrQueue: [],
    appidSnInfo: [],
    appidSnDict: {},
    getInfoState: 0
  };
  var weAppUserNameSuffix = '@app';
  function getWeAppUserName(userName) {
    return userName.indexOf(weAppUserNameSuffix) &gt; -1 ? userName : "".concat(userName).concat(weAppUserNameSuffix);
  }
  function getDefaultWeappScene() {
    var itemShowType = window.item_show_type * 1;
    var serviceType = window.service_type * 1;
    var scene;
    switch (itemShowType) {
      case 8:
        scene = serviceType === 5 ? 1432 : 1426;
        break;
      case 10:
        scene = 1427;
        break;
      case 5:
        scene = 1152;
        break;
      case 7:
        scene = 1429;
        break;
      default:
        scene = 1058;
    }
    return scene;
  }
  initEnv();
  function initEnv() {
    var uaMatch = navigator.userAgent.match(/MicroMessenger\/(\d+)\.(\d+)\.(\d+)/);
    if (uaMatch) {
      var version1 = Number(uaMatch[1]);
      var version2 = Number(uaMatch[2]);
      var version3 = Number(uaMatch[3]);
      if (version1 &gt; 6) g$2.canJumpOnTap = true;else if (version1 === 6 &amp;&amp; version2 &gt; 5) g$2.canJumpOnTap = true;else if (version1 === 6 &amp;&amp; version2 === 5 &amp;&amp; version3 &gt;= 3) g$2.canJumpOnTap = true;
    } else {
      if (!navigator.userAgent.match(/MicroMessenger\//) &amp;&amp; !navigator.userAgent.match(/wxwork/)) {
        g$2.isNonWechat = true;
      }
    }
    
    if (Device.os.windows &amp;&amp; window.clientversion) {
      if (parseInt(window.clientversion, 16) &gt;= 0x63050000) {
        g$2.canJumpOnTap = true;
      }
    } else if (Device.os.Mac &amp;&amp; window.clientversion) {
      if (parseInt(window.clientversion, 16) &gt;= 0x13000000) {
        g$2.canJumpOnTap = true;
      }
    }
    if (navigator.userAgent.match(/wxwork/)) {
      g$2.canJumpOnTap = true;
    }
    batchGetInfo();
  }
  function batchGetInfo() {
    try {
      g$2.appidSnInfo = JSON.parse(window.weapp_sn_arr_json).weapp_card_list;
    } catch (e) {
      g$2.appidSnInfo = [];
    }
    if (!g$2.appidSnInfo || g$2.appidSnInfo.length == 0) {
      g$2.getInfoState = 1;
      excuteQueue();
      return;
    }
    var args = {
      __biz: window.biz || "",
      mid: window.mid || "",
      idx: window.idx || "",
      uin: window.uin || "",
      key: window.key || "",
      pass_ticket: window.pass_ticket || "",
      weapp_num: g$2.appidSnInfo.length
    };
    var appidListDict = {};
    var snListDict = {};
    for (var i = 0; i &lt; args.weapp_num; i++) {
      var appid = g$2.appidSnInfo[i].appid;
      var sn = g$2.appidSnInfo[i].sn;
      if (appidListDict[appid]) {
        appidListDict[appid].push(i);
      } else {
        appidListDict[appid] = [i];
        args["weapp_appid_".concat(i)] = g$2.appidSnInfo[i].appid;
        g$2.appidSnDict[appid] = sn;
      }
      if (snListDict[sn]) {
        snListDict[sn].push(i);
      } else {
        snListDict[sn] = [i];
        args["weapp_sn_".concat(i)] = g$2.appidSnInfo[i].sn;
      }
    }
    var baseUrl = '/mp/appmsg_weapp?action=batch_get_weapp';
    for (var k in args) {
      baseUrl += "&amp;".concat(k, "=").concat(encodeURIComponent(args[k]));
    }
    ajax({
      url: baseUrl,
      type: 'GET',
      dataType: 'json',
      async: true,
      success: function success(ret) {
        try {
          console.log('weapp_common success:', ret);
          g$2.appidInfoResp = ret;
          if (ret.base_resp.ret) throw new Error("Fetch weapp info but get ret=".concat(ret.base_resp.ret));
          g$2.data = {
            infoMap: {},
            appid: ret.appid || "",
            appmsg_compact_url: ret.appmsg_compact_url || "",
            pathArgs: "appid=".concat(encodeURIComponent(ret.appid)).concat(ret.appmsg_compact_url ? "&amp;appmsg_compact_url=".concat(encodeURIComponent(ret.appmsg_compact_url)) : '')
          };
          var appidInfoArr = ret.weapp_info;
          for (var _i = 0; _i &lt; appidInfoArr.length; _i++) {
            var _appid = appidInfoArr[_i].weapp_appid;
            g$2.data.infoMap[_appid] = appidInfoArr[_i];
          }
          g$2.getInfoState = 4;
        } catch (e) {
          g$2.getInfoState = 3;
          g$2.appidInfoCatchErr = e;
        }
        excuteQueue();
      },
      error: function error() {
        g$2.getInfoState = 2;
        excuteQueue();
      }
    });
  }
  function excuteQueue() {
    if (g$2.getInfoState == 1 || g$2.getInfoState == 2) {
      for (var i = 0, il = g$2.appInfoErrQueue.length; i &lt; il; i++) {
        var a = g$2.appInfoErrQueue[i];
        if (typeof a === "function") {
          a({
            code: g$2.getInfoState
          });
        }
      }
    } else if (g$2.getInfoState == 3) {
      for (var _i3 = 0, _il = g$2.appInfoErrQueue.length; _i3 &lt; _il; _i3++) {
        var _a = g$2.appInfoErrQueue[_i3];
        if (typeof _a === "function") {
          _a({
            code: g$2.getInfoState,
            resp: g$2.appidInfoResp,
            catchErr: g$2.appidInfoCatchErr
          });
        }
      }
    } else if (g$2.getInfoState == 4) {
      for (var _i4 = 0, _il2 = g$2.appInfoSucQueue.length; _i4 &lt; _il2; _i4++) {
        var _a2 = g$2.appInfoSucQueue[_i4];
        if (typeof _a2 === "function") {
          _a2({
            resp: g$2.appidInfoResp,
            data: g$2.data
          });
        }
      }
    }
    g$2.appInfoErrQueue = [];
    g$2.appInfoSucQueue = [];
  }
  
  function getAppidInfo(opt) {
    console.log('getAppidInfo', g$2);
    if ((g$2.getInfoState == 1 || g$2.getInfoState == 2) &amp;&amp; typeof opt.onError === "function") {
      opt.onError({
        code: g$2.getInfoState
      });
    } else if (g$2.getInfoState == 3 &amp;&amp; typeof opt.onError === "function") {
      opt.onError({
        code: g$2.getInfoState,
        resp: g$2.appidInfoResp,
        catchErr: g$2.appidInfoCatchErr
      });
    } else if (g$2.getInfoState == 4 &amp;&amp; typeof opt.onSuccess === "function") {
      opt.onSuccess({
        resp: g$2.appidInfoResp,
        data: g$2.data
      });
    } else {
      if (typeof opt.onSuccess === "function") {
        g$2.appInfoSucQueue.push(opt.onSuccess);
      }
      if (typeof opt.onError === "function") {
        g$2.appInfoErrQueue.push(opt.onError);
      }
    }
  }
  function getAppidCode(opt, cb) {
    var args = {
      __biz: window.biz || '',
      mid: window.mid || '',
      idx: window.idx || '',
      weapp_appid: opt.appid || '',
      weapp_sn: g$2.appidSnDict[opt.appid] || '',
      path: opt.path || ''
    };
    var baseUrl = '/mp/appmsg_weapp?action=get_wxa_code';
    for (var k in args) {
      baseUrl += "&amp;".concat(k, "=").concat(encodeURIComponent(args[k]));
    }
    ajax({
      url: baseUrl,
      type: 'GET',
      dataType: 'json',
      async: true,
      success: function success(ret) {
        if (ret.base_resp &amp;&amp; ret.base_resp.ret === 0) {
          cb &amp;&amp; cb(ret.url);
        } else {
          cb &amp;&amp; cb();
        }
      },
      error: function error() {
        cb &amp;&amp; cb();
      }
    });
  }
  function getRelativeURL(path) {
    if (!path) {
      return "";
    }
    var r = "";
    var qmIndex = path.indexOf('?');
    var pathArgs = g$2.data &amp;&amp; g$2.data.pathArgs ? g$2.data.pathArgs : '';
    if (qmIndex &gt;= 0) {
      r = "".concat(path.slice(0, qmIndex) + (qmIndex &gt; 0 ? '.html' : '') + path.slice(qmIndex), "&amp;").concat(pathArgs);
    } else {
      r = path + (path !== '' ? '.html?' : '?') + pathArgs;
    }
    return r.replace(/&amp;amp;/g, '&amp;');
  }
  function getcpsRelativeURL(path) {
    var r = "";
    var qmIndex = path.indexOf('?');
    r = path.slice(0, qmIndex) + (qmIndex &gt; 0 ? '.html' : '') + path.slice(qmIndex);
    return r;
  }
  
  function jumpUrl$1(opt) {
    opt = opt || {};
    var _o;
    if (opt.options) {
      _o = opt.options;
      if (_o.relativeURL) {
        _o.relativeURL = _o.relativeURL.replace(/&amp;amp;/g, '&amp;');
        if (_o.relativeURL.indexOf('.html') &lt; 0) {
          _o.relativeURL = getRelativeURL(_o.relativeURL);
        }
      }
    } else if (opt.appid &amp;&amp; (g$2.data || opt.cps_weapp_username)) {
      var info;
      if (opt.cps_weapp_username)
        {
          info = {};
          info.weapp_username = opt.cps_weapp_username;
          info.app_version = opt.cps_weapp_version;
        } else {
        info = g$2.data.infoMap[opt.appid];
      }
      if (info) {
        _o = {
          userName: info.weapp_username,
          scene: opt.scene,
          sceneNote: opt.sceneNote,
          relativeURL: getRelativeURL(opt.path)
        };
        if (info.app_version !== undefined) {
          _o.appVersion = info.app_version;
        }
        if (opt.cps_weapp_username) _o.relativeURL = getcpsRelativeURL(opt.path);
      }
    }
    if (_o) {
      if (opt.privateExtraData) {
        _o.privateExtraData = opt.privateExtraData;
      }
      if (opt.sourceAppId) {
        _o.sourceAppId = opt.sourceAppId;
      } else {
        _o.sourceAppId = window.source_appid;
      }
      _o.scene = _o.scene || getDefaultWeappScene();
      _o.appVersion = _o.appVersion || 1;
      _o.userName = getWeAppUserName(_o.userName);
      _o.sceneNote = "".concat(opt.weapp_type_name, ":").concat(_o.sourceAppId, ":").concat(_o.sceneNote || '');
      console.log('weapp257', _o);
      if (!g$2.canJumpOnTap) {
        if (g$2.isNonWechat) {
          if (typeof opt.beforeNonWechatWarn !== "function" || opt.beforeNonWechatWarn() !== false) {
            handlingNonWechat();
          }
        } else {
          if (typeof opt.beforeJumpBackupPage !== "function" || opt.beforeJumpBackupPage() !== false) {
            jumpBackupPage(opt.appid);
          }
        }
      } else {
        R$4.invoke('openWeApp', _o, function (res) {
          if (res.err_msg === 'system:function_not_exist') {
            if (g$2.isNonWechat) {
              if (typeof opt.beforeNonWechatWarn !== "function" || opt.beforeNonWechatWarn() !== false) {
                handlingNonWechat();
              }
            } else {
              if (typeof opt.beforeJumpBackupPage !== "function" || opt.beforeJumpBackupPage() !== false) {
                jumpBackupPage(opt.appid);
              }
            }
          } else if (typeof opt.onJsapiCallback === "function") {
            opt.onJsapiCallback(res);
          }
        });
      }
    }
  }
  function jumpBackupPage(appid) {
    location.href = "https://mp.weixin.qq.com/mp/waerrpage?type=upgrade&amp;appid=".concat(encodeURIComponent(appid), "#wechat_redirect");
  }
  function handlingNonWechat() {
    setTimeout(function () {
      try {
        window.weui.alert('请在微信内打开小程序');
      } catch (err) {
        alert('请在微信内打开小程序');
      }
    }, 0);
  }
  
  function preloadMiniProgram(userName) {
    var args = {
      userNames: [getWeAppUserName(userName)]
    };
    R$4.invoke('preloadMiniProgramContacts', args);
    R$4.invoke('preloadMiniProgramEnv', args);
    jsmonitorReport$1.setSum(114217, 2, 1);
  }
  var r$4 = {
    canJumpOnTap: g$2.canJumpOnTap,
    isNonWechat: g$2.isNonWechat,
    getAppidInfo: getAppidInfo,
    getAppidCode: getAppidCode,
    appidSnInfo: g$2.appidSnInfo,
    getRelativeURL: getRelativeURL,
    jumpUrl: jumpUrl$1,
    preloadMiniProgram: preloadMiniProgram,
    getDefaultWeappScene: getDefaultWeappScene
  };

  function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r &amp;&amp; (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
  function _objectSpread$3(e) { for (var r = 1; r &lt; arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) { defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
  var w = function w() {
      var e = this,
        i = e._self._c;
      return i("div", {
        ref: "js_custom_element",
        staticClass: "wx-root weapp_root",
        "class": [e.platformClassname]
      }, [e.type === "text" ? i("a", {
        staticClass: "weapp_text",
        attrs: {
          href: "javascript:;",
          tabindex: "0"
        }
      }, [e._v("\n    " + e._s(e.textContent) + "\u8FD9\u91CC\u662F\u6587\u5B57\u5C0F\u7A0B\u5E8F\n  ")]) : e.type === "card" ? i("div", {
        staticClass: "weapp_card appmsg_card_context wx_tap_card wx_card_root",
        "class": [e.is_hover === 1 ? "wx_hover_card" : "", e.is_selected === 1 ? "wx_selected_card" : ""],
        attrs: {
          role: "option",
          title: e.platform === "wechat" ? "轻点两下打开" : ""
        }
      }, [i("div", {
        staticClass: "weapp_card_bd"
      }, [i("div", {
        staticClass: "weapp_card_profile weui-flex weui-flex_align-center"
      }, [i("img", {
        staticClass: "weapp_card_avatar js_weapp_card_avatar_img",
        attrs: {
          alt: "",
          "data-weappavatar": e.avatar,
          src: e.platform !== "wechat" ? e.avatar : "https://res.wx.qq.com/op_res/NN_GToMiIjsXzgPzF9-74ZzwR3cA9-fv3o9eWo8f5gQWqx71CmGlY8kFxuIxZaG0TB1bFeMCmh1DGN_pWMRg0A"
        }
      }), e._v(" "), i("div", {
        staticClass: "weui-flex__item"
      }, [i("div", {
        staticClass: "weapp_card_nickname_wrp weui-flex weui-flex_align-center"
      }, [i("span", {
        staticClass: "weapp_card_nickname"
      }, [e._v(e._s(e.nickname))]), e._v(" "), i("span", {
        staticClass: "weui-hidden_abs"
      }, [e._v("，")]), e._v(" "), e.hasGuaranteeFlag === 1 ? i("span", {
        staticClass: "guarantee_icon js_guarantee"
      }, [e._v("交易担保")]) : e._e(), e._v(" "), i("span", {
        staticClass: "weui-hidden_abs"
      }, [e._v("，")]), e._v(" "), e.relievedBuyFlag === 1 ? i("span", {
        staticClass: "wx_key_tag safe_buy_icon js_relived_buy"
      }, [e._v("放心买")]) : e._e(), e._v(" "), i("span", {
        staticClass: "weui-hidden_abs"
      }, [e._v("，")])])])]), e._v(" "), i("div", {
        staticClass: "weapp_card_info"
      }, [i("div", {
        staticClass: "weapp_card_title"
      }, [e._v(e._s(e.title))]), e._v(" "), i("div", {
        staticClass: "weapp_card_thumb_wrp weui-circle-loading_before"
      }, [i("img", {
        staticClass: "weapp_card_thumb js_weapp_card_thumb_img",
        attrs: {
          alt: "",
          "data-weappcover": e.imageUrl,
          src: e.platform !== "wechat" ? e.imageUrl : ""
        }
      })])])]), e._v(" "), e._m(0)]) : e.type === "image" ? i("a", {
        staticClass: "weapp_img",
        attrs: {
          href: "javascript:;",
          tabindex: "0"
        }
      }, [e._t("miniprogram_image")], 2) : e.type === "quote" ? i("div", {
        staticClass: "quote-container wx_tap_card",
        on: {
          click: e.onQuoteClick
        }
      }, [i("img", {
        staticClass: "quote-image",
        attrs: {
          src: e.imageUrl
        }
      }), e._v(" "), i("div", {
        staticClass: "quote-caption"
      }, [i("div", {
        staticClass: "quote-nickname"
      }, [e._v(e._s(e.title))]), e._v(" "), e.desc ? i("div", {
        staticClass: "quote-label"
      }, [e._v("\n        \u5C0F\u7A0B\u5E8F"), i("span", {
        staticStyle: {
          margin: "0 4px"
        }
      }, [e._v("·")]), e._v(e._s(e.desc) + "\n      ")]) : i("div", {
        staticClass: "quote-label"
      }, [e._v("小程序")])])]) : e.type === "map" ? i("div", {
        staticClass: "map-container wx_tap_card",
        on: {
          click: e.onQuoteClick
        }
      }, [i("img", {
        staticClass: "map-image",
        attrs: {
          src: e.imageUrl
        }
      }), e._v(" "), i("div", {
        staticClass: "map-caption"
      }, [i("div", {
        staticClass: "map-title"
      }, [e._v("路线：" + e._s(e.title))]), e._v(" "), i("div", {
        staticClass: "map-label"
      }, [e._v("腾讯地图·小程序")])])]) : e._e()]);
    },
    l$1 = [function () {
      var a = this,
        e = a._self._c;
      return e("div", {
        staticClass: "weapp_card_ft"
      }, [e("span", {
        staticClass: "weapp_card_logo"
      }, [a._v("小程序")])]);
    }];
  function s$2(a) {
    var e = typeof a == "function" ? a.options : a;
    return w &amp;&amp; (e.render = w, e.staticRenderFns = l$1, e._compiled = !0), {
      exports: a,
      options: e
    };
  }
  var g$1 = {
      name: "mp-common-miniprogram",
      template: s$2,
      mixins: [k$1],
      props: {
        appid: {
          type: String,
          "default": ""
        },
        desc: {
          type: String,
          "default": ""
        },
        is_hover: {
          type: Number,
          "default": 0
        },
        is_selected: {
          type: Number,
          "default": 0
        },
        path: {
          type: String,
          "default": ""
        },
        avatar: {
          type: String,
          "default": ""
        },
        serviceType: {
          type: String,
          "default": ""
        },
        hasGuaranteeFlag: {
          type: Number,
          "default": 0
        },
        relievedBuyFlag: {
          type: Number,
          "default": 0
        },
        imageUrl: {
          type: String,
          "default": ""
        },
        username: {
          type: String,
          "default": ""
        },
        title: {
          type: String,
          "default": ""
        },
        nickname: {
          type: String,
          "default": ""
        },
        type: {
          type: String,
          "default": "text"
        },
        textContent: {
          type: String,
          "default": ""
        }
      },
      methods: {
        onQuoteClick: function onQuoteClick() {
          this.platform === "wechat" &amp;&amp; r$4.jumpUrl({
            options: {
              userName: this.username,
              relativeURL: Url.addParam(this.path, "appid", this.appid, !0),
              sourceAppId: this.appid
            },
            weapp_type_name: "card"
          });
        }
      }
    },
    n$2 = "body,.wx-root,page{--weui-BTN-HEIGHT: 48;--weui-BTN-HEIGHT-MEDIUM: 40;--weui-BTN-HEIGHT-SMALL: 32}.wx-root,body{--weui-BTN-ACTIVE-MASK: rgba(0, 0, 0, .1)}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BTN-ACTIVE-MASK: rgba(255, 255, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BTN-ACTIVE-MASK: rgba(255, 255, 255, .1)}}.wx-root,body{--weui-BTN-DEFAULT-ACTIVE-BG: #e6e6e6}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BTN-DEFAULT-ACTIVE-BG: rgba(255, 255, 255, .126)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BTN-DEFAULT-ACTIVE-BG: rgba(255, 255, 255, .126)}}.wx-root,body{--weui-DIALOG-LINE-COLOR: rgba(0, 0, 0, .1)}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-DIALOG-LINE-COLOR: rgba(255, 255, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-DIALOG-LINE-COLOR: rgba(255, 255, 255, .1)}}.weui-flex{display:flex}.weui-flex__item{flex:1;min-width:0}.weui-primary-loading{font-size:16px;display:inline-flex;position:relative;width:1em;height:1em;vertical-align:middle;color:#606060;animation:circleLoading 1s steps(60,end) infinite}.weui-primary-loading__dot{position:absolute;top:0;left:50%;margin-left:-.04375em;width:.0875em;height:.0875em;border-top-right-radius:100%;border-bottom-right-radius:100%;background:currentColor}.weui-primary-loading:before,.weui-primary-loading:after{content:\"\";display:block;width:.5em;height:1em;box-sizing:border-box;border:.0875em solid;border-color:currentColor}.weui-primary-loading:before{border-right-width:0;border-top-left-radius:1em;border-bottom-left-radius:1em;-webkit-mask-image:linear-gradient(180deg,#000000 8%,rgba(0,0,0,.3) 95%)}.weui-primary-loading:after{border-left-width:0;border-top-right-radius:1em;border-bottom-right-radius:1em;-webkit-mask-image:linear-gradient(180deg,rgba(0,0,0,0) 8%,rgba(0,0,0,.3) 95%)}.weui-primary-loading__dot{position:absolute;top:0;left:50%;margin-left:-.04375em;width:.0875em;height:.0875em;border-top-right-radius:.0875em;border-bottom-right-radius:.0875em;background:currentColor}@keyframes circleLoading{0%{transform:rotate3d(0,0,1,0)}to{transform:rotate3d(0,0,1,360deg)}}.weui-primary-loading_brand{color:var(--weui-BRAND)}.weui-primary-loading_transparent{color:#ededed}.weui-loading{font-size:16px;width:1em;height:1em;display:inline-block;vertical-align:middle;background:transparent url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='80px' height='80px' viewBox='0 0 80 80' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3Eloading%3C/title%3E%3Cdefs%3E%3ClinearGradient x1='94.0869141%25' y1='0%25' x2='94.0869141%25' y2='90.559082%25' id='linearGradient-1'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.67370605%25' x2='100%25' y2='90.6286621%25' id='linearGradient-2'%3E%3Cstop stop-color='%23606060' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' opacity='0.9'%3E%3Cg%3E%3Cpath d='M40,0 C62.09139,0 80,17.90861 80,40 C80,62.09139 62.09139,80 40,80 L40,73 C58.2253967,73 73,58.2253967 73,40 C73,21.7746033 58.2253967,7 40,7 L40,0 Z' fill='url(%23linearGradient-1)'%3E%3C/path%3E%3Cpath d='M40,0 L40,7 C21.7746033,7 7,21.7746033 7,40 C7,58.2253967 21.7746033,73 40,73 L40,80 C17.90861,80 0,62.09139 0,40 C0,17.90861 17.90861,0 40,0 Z' fill='url(%23linearGradient-2)'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23606060' cx='40.5' cy='3.5' r='3.5'%3E%3C/circle%3E%3C/g%3E%3CanimateTransform attributeName='transform' begin='0s' dur='1s' type='rotate' values='0 40 40;360 40 40' repeatCount='indefinite'/%3E%3C/g%3E%3C/svg%3E%0A\") no-repeat;background-size:100%}.weui-loading.weui-loading_transparent,.weui-loading.weui-icon_toast,.weui-btn_loading.weui-btn_primary .weui-loading{background-image:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='80px' height='80px' viewBox='0 0 80 80' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3Eloading%3C/title%3E%3Cdefs%3E%3ClinearGradient x1='94.0869141%25' y1='0%25' x2='94.0869141%25' y2='90.559082%25' id='linearGradient-1'%3E%3Cstop stop-color='%23ededed' stop-opacity='0' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23ededed' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.67370605%25' x2='100%25' y2='90.6286621%25' id='linearGradient-2'%3E%3Cstop stop-color='%23ededed' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23ededed' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' opacity='0.9'%3E%3Cg%3E%3Cpath d='M40,0 C62.09139,0 80,17.90861 80,40 C80,62.09139 62.09139,80 40,80 L40,73 C58.2253967,73 73,58.2253967 73,40 C73,21.7746033 58.2253967,7 40,7 L40,0 Z' fill='url(%23linearGradient-1)'%3E%3C/path%3E%3Cpath d='M40,0 L40,7 C21.7746033,7 7,21.7746033 7,40 C7,58.2253967 21.7746033,73 40,73 L40,80 C17.90861,80 0,62.09139 0,40 C0,17.90861 17.90861,0 40,0 Z' fill='url(%23linearGradient-2)'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23ededed' cx='40.5' cy='3.5' r='3.5'%3E%3C/circle%3E%3C/g%3E%3CanimateTransform attributeName='transform' begin='0s' dur='1s' type='rotate' values='0 40 40;360 40 40' repeatCount='indefinite'/%3E%3C/g%3E%3C/svg%3E%0A\")}.weui-mask-loading{display:inline-block;vertical-align:middle;font-size:16px;width:1em;height:1em;-webkit-mask:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='80px' height='80px' viewBox='0 0 80 80' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3Eloading%3C/title%3E%3Cdefs%3E%3ClinearGradient x1='94.0869141%25' y1='0%25' x2='94.0869141%25' y2='90.559082%25' id='linearGradient-1'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.67370605%25' x2='100%25' y2='90.6286621%25' id='linearGradient-2'%3E%3Cstop stop-color='%23606060' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' opacity='0.9'%3E%3Cg%3E%3Cpath d='M40,0 C62.09139,0 80,17.90861 80,40 C80,62.09139 62.09139,80 40,80 L40,73 C58.2253967,73 73,58.2253967 73,40 C73,21.7746033 58.2253967,7 40,7 L40,0 Z' fill='url(%23linearGradient-1)'%3E%3C/path%3E%3Cpath d='M40,0 L40,7 C21.7746033,7 7,21.7746033 7,40 C7,58.2253967 21.7746033,73 40,73 L40,80 C17.90861,80 0,62.09139 0,40 C0,17.90861 17.90861,0 40,0 Z' fill='url(%23linearGradient-2)'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23606060' cx='40.5' cy='3.5' r='3.5'%3E%3C/circle%3E%3C/g%3E%3CanimateTransform attributeName='transform' begin='0s' dur='1s' type='rotate' values='0 40 40;360 40 40' repeatCount='indefinite'/%3E%3C/g%3E%3C/svg%3E%0A\") 0 0 no-repeat;mask:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='80px' height='80px' viewBox='0 0 80 80' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3Eloading%3C/title%3E%3Cdefs%3E%3ClinearGradient x1='94.0869141%25' y1='0%25' x2='94.0869141%25' y2='90.559082%25' id='linearGradient-1'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.67370605%25' x2='100%25' y2='90.6286621%25' id='linearGradient-2'%3E%3Cstop stop-color='%23606060' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' opacity='0.9'%3E%3Cg%3E%3Cpath d='M40,0 C62.09139,0 80,17.90861 80,40 C80,62.09139 62.09139,80 40,80 L40,73 C58.2253967,73 73,58.2253967 73,40 C73,21.7746033 58.2253967,7 40,7 L40,0 Z' fill='url(%23linearGradient-1)'%3E%3C/path%3E%3Cpath d='M40,0 L40,7 C21.7746033,7 7,21.7746033 7,40 C7,58.2253967 21.7746033,73 40,73 L40,80 C17.90861,80 0,62.09139 0,40 C0,17.90861 17.90861,0 40,0 Z' fill='url(%23linearGradient-2)'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23606060' cx='40.5' cy='3.5' r='3.5'%3E%3C/circle%3E%3C/g%3E%3CanimateTransform attributeName='transform' begin='0s' dur='1s' type='rotate' values='0 40 40;360 40 40' repeatCount='indefinite'/%3E%3C/g%3E%3C/svg%3E%0A\") 0 0 no-repeat;-webkit-mask-size:cover;mask-size:cover;background-color:currentColor;color:#606060}@keyframes weuiLoading{0%{transform:rotate3d(0,0,1,0)}to{transform:rotate3d(0,0,1,360deg)}}.wx-root,body{--weui-BG-COLOR-ACTIVE: #ececec}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-COLOR-ACTIVE: #373737}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-COLOR-ACTIVE: #373737}}[class^=weui-icon-][class^=weui-icon-],[class^=weui-icon-][class*=\" weui-icon-\"],[class*=\" weui-icon-\"][class^=weui-icon-],[class*=\" weui-icon-\"][class*=\" weui-icon-\"]{display:inline-block;vertical-align:middle;font-size:10px;width:2.4em;height:2.4em;-webkit-mask-position:50% 50%;mask-position:50% 50%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%;background-color:currentColor}.weui-icon-circle{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%221000%22%20height%3D%221000%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M500%20916.667C269.881%20916.667%2083.333%20730.119%2083.333%20500%2083.333%20269.881%20269.881%2083.333%20500%2083.333c230.119%200%20416.667%20186.548%20416.667%20416.667%200%20230.119-186.548%20416.667-416.667%20416.667zm0-50c202.504%200%20366.667-164.163%20366.667-366.667%200-202.504-164.163-366.667-366.667-366.667-202.504%200-366.667%20164.163-366.667%20366.667%200%20202.504%20164.163%20366.667%20366.667%20366.667z%22%20fill-rule%3D%22evenodd%22%20fill-opacity%3D%22.9%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%221000%22%20height%3D%221000%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M500%20916.667C269.881%20916.667%2083.333%20730.119%2083.333%20500%2083.333%20269.881%20269.881%2083.333%20500%2083.333c230.119%200%20416.667%20186.548%20416.667%20416.667%200%20230.119-186.548%20416.667-416.667%20416.667zm0-50c202.504%200%20366.667-164.163%20366.667-366.667%200-202.504-164.163-366.667-366.667-366.667-202.504%200-366.667%20164.163-366.667%20366.667%200%20202.504%20164.163%20366.667%20366.667%20366.667z%22%20fill-rule%3D%22evenodd%22%20fill-opacity%3D%22.9%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-download{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M11.25%2012.04l-1.72-1.72-1.06%201.06%202.828%202.83a1%201%200%20001.414-.001l2.828-2.828-1.06-1.061-1.73%201.73V7h-1.5v5.04zm0-5.04V2h1.5v5h6.251c.55%200%20.999.446.999.996v13.008a.998.998%200%2001-.996.996H4.996A.998.998%200%20014%2021.004V7.996A1%201%200%20014.999%207h6.251z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M11.25%2012.04l-1.72-1.72-1.06%201.06%202.828%202.83a1%201%200%20001.414-.001l2.828-2.828-1.06-1.061-1.73%201.73V7h-1.5v5.04zm0-5.04V2h1.5v5h6.251c.55%200%20.999.446.999.996v13.008a.998.998%200%2001-.996.996H4.996A.998.998%200%20014%2021.004V7.996A1%201%200%20014.999%207h6.251z%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-info{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-.75-12v7h1.5v-7h-1.5zM12%209a1%201%200%20100-2%201%201%200%20000%202z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-.75-12v7h1.5v-7h-1.5zM12%209a1%201%200%20100-2%201%201%200%20000%202z%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-safe-success{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201000%201000%22%3E%3Cpath%20d%3D%22M500.9%204.6C315.5%2046.7%20180.4%2093.1%2057.6%20132c0%20129.3.2%20231.7.2%20339.7%200%20304.2%20248.3%20471.6%20443.1%20523.7C695.7%20943.3%20944%20775.9%20944%20471.7c0-108%20.2-210.4.2-339.7C821.4%2093.1%20686.3%2046.7%20500.9%204.6zm248.3%20349.1l-299.7%20295c-2.1%202-5.3%202-7.4-.1L304.4%20506.1c-2-2.1-2.3-5.7-.6-8l18.3-24.9c1.7-2.3%205-2.8%207.2-1l112.2%2086c2.3%201.8%206%201.7%208.1-.1l274.7-228.9c2.2-1.8%205.7-1.7%207.7.3l17%2016.8c2.2%202.1%202.2%205.3.2%207.4z%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%23070202%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201000%201000%22%3E%3Cpath%20d%3D%22M500.9%204.6C315.5%2046.7%20180.4%2093.1%2057.6%20132c0%20129.3.2%20231.7.2%20339.7%200%20304.2%20248.3%20471.6%20443.1%20523.7C695.7%20943.3%20944%20775.9%20944%20471.7c0-108%20.2-210.4.2-339.7C821.4%2093.1%20686.3%2046.7%20500.9%204.6zm248.3%20349.1l-299.7%20295c-2.1%202-5.3%202-7.4-.1L304.4%20506.1c-2-2.1-2.3-5.7-.6-8l18.3-24.9c1.7-2.3%205-2.8%207.2-1l112.2%2086c2.3%201.8%206%201.7%208.1-.1l274.7-228.9c2.2-1.8%205.7-1.7%207.7.3l17%2016.8c2.2%202.1%202.2%205.3.2%207.4z%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%23070202%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-safe-warn{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201000%201000%22%3E%3Cpath%20d%3D%22M500.9%204.5c-185.4%2042-320.4%2088.4-443.2%20127.3%200%20129.3.2%20231.7.2%20339.6%200%20304.1%20248.2%20471.4%20443%20523.6%20194.7-52.2%20443-219.5%20443-523.6%200-107.9.2-210.3.2-339.6C821.3%2092.9%20686.2%2046.5%20500.9%204.5zm-26.1%20271.1h52.1c5.8%200%2010.3%204.7%2010.1%2010.4l-11.6%20313.8c-.1%202.8-2.5%205.2-5.4%205.2h-38.2c-2.9%200-5.3-2.3-5.4-5.2L464.8%20286c-.2-5.8%204.3-10.4%2010-10.4zm26.1%20448.3c-20.2%200-36.5-16.3-36.5-36.5s16.3-36.5%2036.5-36.5%2036.5%2016.3%2036.5%2036.5-16.4%2036.5-36.5%2036.5z%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%23020202%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201000%201000%22%3E%3Cpath%20d%3D%22M500.9%204.5c-185.4%2042-320.4%2088.4-443.2%20127.3%200%20129.3.2%20231.7.2%20339.6%200%20304.1%20248.2%20471.4%20443%20523.6%20194.7-52.2%20443-219.5%20443-523.6%200-107.9.2-210.3.2-339.6C821.3%2092.9%20686.2%2046.5%20500.9%204.5zm-26.1%20271.1h52.1c5.8%200%2010.3%204.7%2010.1%2010.4l-11.6%20313.8c-.1%202.8-2.5%205.2-5.4%205.2h-38.2c-2.9%200-5.3-2.3-5.4-5.2L464.8%20286c-.2-5.8%204.3-10.4%2010-10.4zm26.1%20448.3c-20.2%200-36.5-16.3-36.5-36.5s16.3-36.5%2036.5-36.5%2036.5%2016.3%2036.5%2036.5-16.4%2036.5-36.5%2036.5z%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%23020202%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-success{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-1.177-7.86l-2.765-2.767L7%2012.431l3.119%203.121a1%201%200%20001.414%200l5.952-5.95-1.062-1.062-5.6%205.6z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-1.177-7.86l-2.765-2.767L7%2012.431l3.119%203.121a1%201%200%20001.414%200l5.952-5.95-1.062-1.062-5.6%205.6z%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-success-circle{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6zm-1.172-6.242l5.809-5.808.848.849-5.95%205.95a1%201%200%2001-1.414%200L7%2012.426l.849-.849%202.98%202.98z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6zm-1.172-6.242l5.809-5.808.848.849-5.95%205.95a1%201%200%2001-1.414%200L7%2012.426l.849-.849%202.98%202.98z%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-success-no-circle{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M8.657%2018.435L3%2012.778l1.414-1.414%204.95%204.95L20.678%205l1.414%201.414-12.02%2012.021a1%201%200%2001-1.415%200z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M8.657%2018.435L3%2012.778l1.414-1.414%204.95%204.95L20.678%205l1.414%201.414-12.02%2012.021a1%201%200%2001-1.415%200z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-waiting{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.75%2011.38V6h-1.5v6l4.243%204.243%201.06-1.06-3.803-3.804zM12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.75%2011.38V6h-1.5v6l4.243%204.243%201.06-1.06-3.803-3.804zM12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-waiting-circle{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.6%2011.503l3.891%203.891-.848.849L11.4%2012V6h1.2v5.503zM12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.6%2011.503l3.891%203.891-.848.849L11.4%2012V6h1.2v5.503zM12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6z%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-warn{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-.763-15.864l.11%207.596h1.305l.11-7.596h-1.525zm.759%2010.967c.512%200%20.902-.383.902-.882%200-.5-.39-.882-.902-.882a.878.878%200%2000-.896.882c0%20.499.396.882.896.882z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-.763-15.864l.11%207.596h1.305l.11-7.596h-1.525zm.759%2010.967c.512%200%20.902-.383.902-.882%200-.5-.39-.882-.902-.882a.878.878%200%2000-.896.882c0%20.499.396.882.896.882z%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-outlined-warn{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12ZM20.8 12C20.8 16.8601 16.8601 20.8 12 20.8C7.13989 20.8 3.2 16.8601 3.2 12C3.2 7.13989 7.13989 3.2 12 3.2C16.8601 3.2 20.8 7.13989 20.8 12ZM12.6592 6.43115L12.5713 13.4917H11.4287L11.3408 6.43115H12.6592ZM11.165 16.2383C11.165 16.707 11.5312 17.0732 12 17.0732C12.4761 17.0732 12.835 16.707 12.835 16.2383C12.835 15.7622 12.4761 15.4033 12 15.4033C11.5312 15.4033 11.165 15.7622 11.165 16.2383Z' fill='black' /%3E%3C/svg%3E%0A\");mask-image:url(\"data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12ZM20.8 12C20.8 16.8601 16.8601 20.8 12 20.8C7.13989 20.8 3.2 16.8601 3.2 12C3.2 7.13989 7.13989 3.2 12 3.2C16.8601 3.2 20.8 7.13989 20.8 12ZM12.6592 6.43115L12.5713 13.4917H11.4287L11.3408 6.43115H12.6592ZM11.165 16.2383C11.165 16.707 11.5312 17.0732 12 17.0732C12.4761 17.0732 12.835 16.707 12.835 16.2383C12.835 15.7622 12.4761 15.4033 12 15.4033C11.5312 15.4033 11.165 15.7622 11.165 16.2383Z' fill='black' /%3E%3C/svg%3E%0A\")}.weui-icon-info-circle{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6zM11.4%2010h1.2v7h-1.2v-7zm.6-1a1%201%200%20110-2%201%201%200%20010%202z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6zM11.4%2010h1.2v7h-1.2v-7zm.6-1a1%201%200%20110-2%201%201%200%20010%202z%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-cancel{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6z%22%20fill-rule%3D%22nonzero%22%2F%3E%3Cpath%20d%3D%22M12.849%2012l3.11%203.111-.848.849L12%2012.849l-3.111%203.11-.849-.848L11.151%2012l-3.11-3.111.848-.849L12%2011.151l3.111-3.11.849.848L12.849%2012z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6z%22%20fill-rule%3D%22nonzero%22%2F%3E%3Cpath%20d%3D%22M12.849%2012l3.11%203.111-.848.849L12%2012.849l-3.111%203.11-.849-.848L11.151%2012l-3.11-3.111.848-.849L12%2011.151l3.111-3.11.849.848L12.849%2012z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E)}.weui-icon-search{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M16.31%2015.561l4.114%204.115-.848.848-4.123-4.123a7%207%200%2011.857-.84zM16.8%2011a5.8%205.8%200%2010-11.6%200%205.8%205.8%200%200011.6%200z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M16.31%2015.561l4.114%204.115-.848.848-4.123-4.123a7%207%200%2011.857-.84zM16.8%2011a5.8%205.8%200%2010-11.6%200%205.8%205.8%200%200011.6%200z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-clear{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M13.06%2012l3.006-3.005-1.06-1.06L12%2010.938%208.995%207.934l-1.06%201.06L10.938%2012l-3.005%203.005%201.06%201.06L12%2013.062l3.005%203.005%201.06-1.06L13.062%2012zM12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M13.06%2012l3.006-3.005-1.06-1.06L12%2010.938%208.995%207.934l-1.06%201.06L10.938%2012l-3.005%203.005%201.06%201.06L12%2013.062l3.005%203.005%201.06-1.06L13.062%2012zM12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010z%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-back{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm1.999-6.563L10.68%2012%2014%208.562%2012.953%207.5%209.29%2011.277a1.045%201.045%200%20000%201.446l3.663%203.777L14%2015.437z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm1.999-6.563L10.68%2012%2014%208.562%2012.953%207.5%209.29%2011.277a1.045%201.045%200%20000%201.446l3.663%203.777L14%2015.437z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-delete{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M6.774%206.4l.812%2013.648a.8.8%200%2000.798.752h7.232a.8.8%200%2000.798-.752L17.226%206.4H6.774zm11.655%200l-.817%2013.719A2%202%200%200115.616%2022H8.384a2%202%200%2001-1.996-1.881L5.571%206.4H3.5v-.7a.5.5%200%2001.5-.5h16a.5.5%200%2001.5.5v.7h-2.071zM14%203a.5.5%200%2001.5.5v.7h-5v-.7A.5.5%200%200110%203h4zM9.5%209h1.2l.5%209H10l-.5-9zm3.8%200h1.2l-.5%209h-1.2l.5-9z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M6.774%206.4l.812%2013.648a.8.8%200%2000.798.752h7.232a.8.8%200%2000.798-.752L17.226%206.4H6.774zm11.655%200l-.817%2013.719A2%202%200%200115.616%2022H8.384a2%202%200%2001-1.996-1.881L5.571%206.4H3.5v-.7a.5.5%200%2001.5-.5h16a.5.5%200%2001.5.5v.7h-2.071zM14%203a.5.5%200%2001.5.5v.7h-5v-.7A.5.5%200%200110%203h4zM9.5%209h1.2l.5%209H10l-.5-9zm3.8%200h1.2l-.5%209h-1.2l.5-9z%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-success-no-circle-thin{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M8.864%2016.617l-5.303-5.303-1.061%201.06%205.657%205.657a1%201%200%20001.414%200L21.238%206.364l-1.06-1.06L8.864%2016.616z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M8.864%2016.617l-5.303-5.303-1.061%201.06%205.657%205.657a1%201%200%20001.414%200L21.238%206.364l-1.06-1.06L8.864%2016.616z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-arrow{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M2.454%206.58l1.06-1.06%205.78%205.779a.996.996%200%20010%201.413l-5.78%205.779-1.06-1.061%205.425-5.425-5.425-5.424z%22%20fill%3D%22%23B2B2B2%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M2.454%206.58l1.06-1.06%205.78%205.779a.996.996%200%20010%201.413l-5.78%205.779-1.06-1.061%205.425-5.425-5.425-5.424z%22%20fill%3D%22%23B2B2B2%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-arrow-bold{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20height%3D%2224%22%20width%3D%2212%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M10.157%2012.711L4.5%2018.368l-1.414-1.414%204.95-4.95-4.95-4.95L4.5%205.64l5.657%205.657a1%201%200%20010%201.414z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20height%3D%2224%22%20width%3D%2212%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M10.157%2012.711L4.5%2018.368l-1.414-1.414%204.95-4.95-4.95-4.95L4.5%205.64l5.657%205.657a1%201%200%20010%201.414z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-back-arrow{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M3.343%2012l7.071%207.071L9%2020.485l-7.778-7.778a1%201%200%20010-1.414L9%203.515l1.414%201.414L3.344%2012z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M3.343%2012l7.071%207.071L9%2020.485l-7.778-7.778a1%201%200%20010-1.414L9%203.515l1.414%201.414L3.344%2012z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-back-arrow-thin{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M10%2019.438L8.955%2020.5l-7.666-7.79a1.02%201.02%200%20010-1.42L8.955%203.5%2010%204.563%202.682%2012%2010%2019.438z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M10%2019.438L8.955%2020.5l-7.666-7.79a1.02%201.02%200%20010-1.42L8.955%203.5%2010%204.563%202.682%2012%2010%2019.438z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-close{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M12.25 10.6932L6.05682 4.5L5 5.55682L11.1932 11.75L5 17.9432L6.05682 19L12.25 12.8068L18.4432 19L19.5 17.9432L13.3068 11.75L19.5 5.55682L18.4432 4.5L12.25 10.6932Z' fill='black' /%3E%3C/svg%3E%0A\");mask-image:url(\"data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M12.25 10.6932L6.05682 4.5L5 5.55682L11.1932 11.75L5 17.9432L6.05682 19L12.25 12.8068L18.4432 19L19.5 17.9432L13.3068 11.75L19.5 5.55682L18.4432 4.5L12.25 10.6932Z' fill='black' /%3E%3C/svg%3E%0A\")}.weui-icon-close-thin{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.25%2010.693L6.057%204.5%205%205.557l6.193%206.193L5%2017.943%206.057%2019l6.193-6.193L18.443%2019l1.057-1.057-6.193-6.193L19.5%205.557%2018.443%204.5z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.25%2010.693L6.057%204.5%205%205.557l6.193%206.193L5%2017.943%206.057%2019l6.193-6.193L18.443%2019l1.057-1.057-6.193-6.193L19.5%205.557%2018.443%204.5z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-back-circle{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6zm1.999-5.363L12.953%2016.5%209.29%2012.723a1.045%201.045%200%20010-1.446L12.953%207.5%2014%208.563%2010.68%2012%2014%2015.438z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6zm1.999-5.363L12.953%2016.5%209.29%2012.723a1.045%201.045%200%20010-1.446L12.953%207.5%2014%208.563%2010.68%2012%2014%2015.438z%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-success{color:var(--weui-BRAND)}.weui-icon-waiting{color:var(--weui-BLUE)}.weui-icon-warn{color:var(--weui-RED)}.weui-icon-info{color:var(--weui-BLUE)}.weui-icon-success-circle,.weui-icon-success-no-circle,.weui-icon-success-no-circle-thin{color:var(--weui-BRAND)}.weui-icon-waiting-circle{color:var(--weui-BLUE)}.weui-icon-circle{color:var(--weui-FG-2)}.weui-icon-download{color:var(--weui-BRAND)}.weui-icon-info-circle{color:var(--weui-FG-2)}.weui-icon-safe-success{color:var(--weui-BRAND)}.weui-icon-safe-warn{color:var(--weui-YELLOW)}.weui-icon-cancel{color:var(--weui-RED)}.weui-icon-search{color:var(--weui-FG-1)}.weui-icon-clear{color:var(--weui-FG-2)}.weui-icon-clear:active{color:var(--weui-FG-1)}.weui-icon-delete.weui-icon_gallery-delete{color:var(--weui-WHITE)}.weui-icon-arrow.weui-icon-arrow,.weui-icon-arrow.weui-icon-arrow-bold,.weui-icon-arrow.weui-icon-back-arrow,.weui-icon-arrow.weui-icon-back-arrow-thin,.weui-icon-arrow-bold.weui-icon-arrow,.weui-icon-arrow-bold.weui-icon-arrow-bold,.weui-icon-arrow-bold.weui-icon-back-arrow,.weui-icon-arrow-bold.weui-icon-back-arrow-thin,.weui-icon-back-arrow.weui-icon-arrow,.weui-icon-back-arrow.weui-icon-arrow-bold,.weui-icon-back-arrow.weui-icon-back-arrow,.weui-icon-back-arrow.weui-icon-back-arrow-thin,.weui-icon-back-arrow-thin.weui-icon-arrow,.weui-icon-back-arrow-thin.weui-icon-arrow-bold,.weui-icon-back-arrow-thin.weui-icon-back-arrow,.weui-icon-back-arrow-thin.weui-icon-back-arrow-thin{width:1.2em}.weui-icon-arrow,.weui-icon-arrow-bold{color:var(--weui-FG-2)}.weui-icon-back-arrow,.weui-icon-back-arrow-thin,.weui-icon-back,.weui-icon-back-circle{color:var(--weui-FG-0)}.weui-icon_msg.weui-icon_msg{width:6.4em;height:6.4em}.weui-icon_msg.weui-icon_msg.weui-icon-warn{color:var(--weui-RED)}.weui-icon_msg.weui-icon_msg.weui-icon-info-circle{color:var(--weui-BLUE)}.weui-icon_msg-primary.weui-icon_msg-primary{width:6.4em;height:6.4em}.weui-icon_msg-primary.weui-icon_msg-primary.weui-icon-warn{color:var(--weui-YELLOW)}.weui-hidden_abs{opacity:0;position:absolute;width:1px;height:1px;overflow:hidden}.weui-a11y_ref{display:none}.weui-hidden-space:empty:before{content:\"\xA0\";position:absolute;width:1px;height:1px;overflow:hidden}.weui-a11y-combo{position:relative}.weui-a11y-combo__helper{opacity:0;position:absolute;width:100%;height:100%;overflow:hidden}.weui-a11y-combo__content{position:relative;z-index:1}.weui-wa-hotarea-el{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);min-width:44px;min-height:44px;width:100%;height:100%}.weui-wa-hotarea-el__wrp,.weui-wa-hotarea,.weui-wa-hotarea_before{position:relative}.weui-wa-hotarea-el__wrp a,.weui-wa-hotarea a,.weui-wa-hotarea_before a,.weui-wa-hotarea-el__wrp button,.weui-wa-hotarea button,.weui-wa-hotarea_before button,.weui-wa-hotarea-el__wrp navigator,.weui-wa-hotarea navigator,.weui-wa-hotarea_before navigator{position:relative;z-index:1}.weui-wa-hotarea_before:before,.weui-wa-hotarea:after{content:\"\";pointer-events:auto;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);min-width:44px;min-height:44px;width:100%;height:100%}.wx-root{position:relative;pointer-events:auto;font-family:system-ui,-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Hiragino Sans GB,Microsoft YaHei UI,Microsoft YaHei,Arial,sans-serif}.wx_card_root{position:relative}.wxw_hide{display:none!important}.wx_uninteractive{pointer-events:none}body,.wx-root{--weui-BG-0: #ededed;--weui-BG-1: #f7f7f7;--weui-BG-2: #fff;--weui-BG-3: #f7f7f7;--weui-BG-4: #4c4c4c;--weui-BG-5: #fff;--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #fa9d3b;--weui-YELLOW: #ffc300;--weui-GREEN: #91d300;--weui-LIGHTGREEN: #95ec69;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1485ee;--weui-PURPLE: #6467f0;--weui-WHITE: #fff;--weui-LINK: #576b95;--weui-TEXTGREEN: #06ae56;--weui-BG: #fff;--weui-TAG-TEXT-ORANGE: #fa9d3b;--weui-TAG-TEXT-GREEN: #06ae56;--weui-TAG-TEXT-BLUE: #10aeff;--weui-REDORANGE: #ff6146;--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #07C160;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0: rgba(0, 0, 0, .9);--weui-FG-0_5: rgba(0, 0, 0, .9);--weui-FG-1: rgba(0, 0, 0, .55);--weui-FG-2: rgba(0, 0, 0, .3);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-GLYPH-0: rgba(0, 0, 0, .9);--weui-GLYPH-1: rgba(0, 0, 0, .55);--weui-GLYPH-2: rgba(0, 0, 0, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #91D300;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #1485EE;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #95EC69;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #FA9D3B;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6467F0;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #FA5151;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .05);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #FFC300;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-FG-HALF: rgba(0, 0, 0, .9);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #FA9D3B;--weui-YELLOW: #FFC300;--weui-GREEN: #91D300;--weui-LIGHTGREEN: #95EC69;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1485EE;--weui-PURPLE: #6467F0;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #FA9D3B;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #10AEFF;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05);--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-FG: #000;--weui-FG-5: rgba(0, 0, 0, .05);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-5: #2c2c2c;--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-REDORANGE: #ff6146;--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG: #fff;--weui-BG: #000;--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6)}}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-5: #2c2c2c;--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-REDORANGE: #ff6146;--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG: #fff;--weui-BG: #000;--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6)}.wx-root[data-weui-mode=care],body[data-weui-mode=care]{--weui-BG-0: #ededed;--weui-BG-1: #f7f7f7;--weui-BG-2: #fff;--weui-BG-3: #f7f7f7;--weui-BG-4: #4c4c4c;--weui-BG-5: #fff;--weui-RED: #dc3636;--weui-ORANGERED: #d14730;--weui-ORANGE: #e17719;--weui-YELLOW: #bb8e00;--weui-GREEN: #4f8400;--weui-LIGHTGREEN: #2e8800;--weui-BLUE: #007dbb;--weui-INDIGO: #0075e2;--weui-PURPLE: #6265f1;--weui-WHITE: #fff;--weui-LINK: #576b95;--weui-TEXTGREEN: #06ae56;--weui-BG: #fff;--weui-TAG-TEXT-ORANGE: #e17719;--weui-TAG-TEXT-GREEN: #06ae56;--weui-TAG-TEXT-BLUE: #007dbb;--weui-REDORANGE: #d14730;--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #007DBB;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #018942;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0: #000000;--weui-FG-0_5: #000000;--weui-FG-1: rgba(0, 0, 0, .6);--weui-FG-2: rgba(0, 0, 0, .42);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-GLYPH-0: #000000;--weui-GLYPH-1: rgba(0, 0, 0, .6);--weui-GLYPH-2: rgba(0, 0, 0, .42);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #4F8400;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #0075E2;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #2E8800;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #E17719;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #D14730;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6265F1;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #DC3636;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .1);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #BB8E00;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-FG-HALF: #000000;--weui-RED: #DC3636;--weui-ORANGERED: #D14730;--weui-ORANGE: #E17719;--weui-YELLOW: #BB8E00;--weui-GREEN: #4F8400;--weui-LIGHTGREEN: #2E8800;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #018942;--weui-BLUE: #007DBB;--weui-INDIGO: #0075E2;--weui-PURPLE: #6265F1;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #E17719;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #007DBB;--weui-REDORANGE: #D14730;--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-FG: #000;--weui-FG-5: rgba(0, 0, 0, .05);--weui-TAG-BACKGROUND-ORANGE: rgba(225, 119, 25, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(0, 125, 187, .1);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05)}@media (prefers-color-scheme: dark){.wx-root[data-weui-mode=care]:not([data-weui-theme=light]),body[data-weui-mode=care]:not([data-weui-theme=light]){--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-5: #2c2c2c;--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-REDORANGE: #ff6146;--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-FG: #fff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-BG: #000;--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5)}}.wx-root[data-weui-mode=care][data-weui-theme=dark],body[data-weui-mode=care][data-weui-theme=dark]{--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-5: #2c2c2c;--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-REDORANGE: #ff6146;--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-FG: #fff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-BG: #000;--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5)}.wx-root,body{--APPMSGCARD-BG: #FAFAFA}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--APPMSGCARD-BG: #1E1E1E}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--APPMSGCARD-BG: #1E1E1E}}.wx-root,body{--APPMSGCARD-LINE-BG: rgba(0, 0, 0, .07)}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--APPMSGCARD-LINE-BG: rgba(255, 255, 255, .07)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--APPMSGCARD-LINE-BG: rgba(255, 255, 255, .07)}}.appmsg_card_context{position:relative;background-color:var(--APPMSGCARD-BG);border-radius:8px;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.appmsg_card_context:hover{cursor:pointer}.wxw_img{vertical-align:bottom}.wx_img_link{position:relative;display:inline-block;vertical-align:bottom;-webkit-user-select:none;-moz-user-select:none;user-select:none}.wx_img_link:before,.wx_img_link:after{content:\"\";position:absolute;top:8px;right:8px;width:20px;height:20px;display:flex;align-items:center;justify-content:center;z-index:1}.wx_img_link:before{background:rgba(95,95,95,.5);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:100%}.wx_img_link:after{-webkit-mask:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E  %3Cg fill='%23576B95'%3E    %3Cpath d='M8.566 7.434l-1.98-1.98-.754.755 1.257 1.257H2.333v1.067H7.09L5.832 9.79l.754.755 1.98-1.98a.8.8 0 0 0 0-1.132z'/%3E    %3Cpath d='M4.333 11.8H3.267v1.067a.8.8 0 0 0 .797.8h7.805a.8.8 0 0 0 .798-.798V3.131a.799.799 0 0 0-.798-.798H4.064a.8.8 0 0 0-.797.8V4.2h1.066v-.8H11.6v9.2H4.333v-.8z'/%3E  %3C/g%3E%3C/svg%3E\") no-repeat 50% 50%;mask:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E  %3Cg fill='%23576B95'%3E    %3Cpath d='M8.566 7.434l-1.98-1.98-.754.755 1.257 1.257H2.333v1.067H7.09L5.832 9.79l.754.755 1.98-1.98a.8.8 0 0 0 0-1.132z'/%3E    %3Cpath d='M4.333 11.8H3.267v1.067a.8.8 0 0 0 .797.8h7.805a.8.8 0 0 0 .798-.798V3.131a.799.799 0 0 0-.798-.798H4.064a.8.8 0 0 0-.797.8V4.2h1.066v-.8H11.6v9.2H4.333v-.8z'/%3E  %3C/g%3E%3C/svg%3E\") no-repeat 50% 50%;-webkit-mask-size:14px;mask-size:14px;background:#FFFFFF}.wx_img_link_center:before,.wx_img_link_center:after{top:50%;margin-top:-10px}.wx_key_tag{display:inline-block;vertical-align:middle;padding:2px 4px;font-size:12px;line-height:calc((20 - 4) / 12);border-radius:2px;max-width:70%;width:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;font-style:normal;letter-spacing:normal;background:var(--weui-TAG-BACKGROUND-BLACK);color:var(--weui-FG-2)}.wx_text_link:before{content:\"\";display:inline-block;vertical-align:middle;width:1em;height:1em;-webkit-mask:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E  %3Cg fill='%23576B95'%3E    %3Cpath d='M8.566 7.434l-1.98-1.98-.754.755 1.257 1.257H2.333v1.067H7.09L5.832 9.79l.754.755 1.98-1.98a.8.8 0 0 0 0-1.132z'/%3E    %3Cpath d='M4.333 11.8H3.267v1.067a.8.8 0 0 0 .797.8h7.805a.8.8 0 0 0 .798-.798V3.131a.799.799 0 0 0-.798-.798H4.064a.8.8 0 0 0-.797.8V4.2h1.066v-.8H11.6v9.2H4.333v-.8z'/%3E  %3C/g%3E%3C/svg%3E\") no-repeat 50% 50%;mask:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E  %3Cg fill='%23576B95'%3E    %3Cpath d='M8.566 7.434l-1.98-1.98-.754.755 1.257 1.257H2.333v1.067H7.09L5.832 9.79l.754.755 1.98-1.98a.8.8 0 0 0 0-1.132z'/%3E    %3Cpath d='M4.333 11.8H3.267v1.067a.8.8 0 0 0 .797.8h7.805a.8.8 0 0 0 .798-.798V3.131a.799.799 0 0 0-.798-.798H4.064a.8.8 0 0 0-.797.8V4.2h1.066v-.8H11.6v9.2H4.333v-.8z'/%3E  %3C/g%3E%3C/svg%3E\") no-repeat 50% 50%;-webkit-mask-size:cover;mask-size:cover;background-color:currentColor;margin:-.3em 1px 0 2px}.wx_text_link:empty{display:none}:host(.wx_tap_highlight_active) .wx_tap_link{opacity:.5}:host(.wx_tap_highlight_active) .wx_tap_card{background-color:#f3f3f3}:host(.wx_tap_highlight_active) .wx_tap_cell{background-color:#0000000d}@media (prefers-color-scheme: dark){:host(.wx_tap_highlight_active) .wx_tap_card{background-color:#252525}:host(.wx_tap_highlight_active) .wx_tap_cell{background-color:#ffffff1a}}.wx_css_active :active{opacity:.5}.weui-flex__item{min-width:0}.weui-flex_align-center{align-items:center}[tabindex]{outline:0}.weui-circle-loading,.weui-circle-loading_before:before{display:inline-block;vertical-align:middle;font-size:16px;width:1em;height:1em;-webkit-mask:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='80' viewBox='0 0 80 80'%3E  %3Cdefs%3E    %3ClinearGradient id='42ecdbc5-cb5f-41dc-88b6-1ee9f740fee0-a' x1='94.087%25' x2='94.087%25' y1='0%25' y2='90.559%25'%3E      %3Cstop offset='0%25' stop-color='%23EDEDED' stop-opacity='0'/%3E      %3Cstop offset='100%25' stop-color='%23EDEDED' stop-opacity='.3'/%3E    %3C/linearGradient%3E    %3ClinearGradient id='42ecdbc5-cb5f-41dc-88b6-1ee9f740fee0-b' x1='100%25' x2='100%25' y1='8.674%25' y2='90.629%25'%3E      %3Cstop offset='0%25' stop-color='%23EDEDED'/%3E      %3Cstop offset='100%25' stop-color='%23EDEDED' stop-opacity='.3'/%3E    %3C/linearGradient%3E  %3C/defs%3E  %3Cg fill='none' opacity='.9'%3E    %3Cpath fill='url(%2342ecdbc5-cb5f-41dc-88b6-1ee9f740fee0-a)' d='M40 0c22.091 0 40 17.909 40 40S62.091 80 40 80v-7c18.225 0 33-14.775 33-33S58.225 7 40 7V0z'/%3E    %3Cpath fill='url(%2342ecdbc5-cb5f-41dc-88b6-1ee9f740fee0-b)' d='M40 0v7C21.775 7 7 21.775 7 40s14.775 33 33 33v7C17.909 80 0 62.091 0 40S17.909 0 40 0z'/%3E    %3Ccircle cx='40.5' cy='3.5' r='3.5' fill='%23EDEDED'/%3E  %3C/g%3E%3C/svg%3E\") no-repeat 50% 50%;mask:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='80' viewBox='0 0 80 80'%3E  %3Cdefs%3E    %3ClinearGradient id='42ecdbc5-cb5f-41dc-88b6-1ee9f740fee0-a' x1='94.087%25' x2='94.087%25' y1='0%25' y2='90.559%25'%3E      %3Cstop offset='0%25' stop-color='%23EDEDED' stop-opacity='0'/%3E      %3Cstop offset='100%25' stop-color='%23EDEDED' stop-opacity='.3'/%3E    %3C/linearGradient%3E    %3ClinearGradient id='42ecdbc5-cb5f-41dc-88b6-1ee9f740fee0-b' x1='100%25' x2='100%25' y1='8.674%25' y2='90.629%25'%3E      %3Cstop offset='0%25' stop-color='%23EDEDED'/%3E      %3Cstop offset='100%25' stop-color='%23EDEDED' stop-opacity='.3'/%3E    %3C/linearGradient%3E  %3C/defs%3E  %3Cg fill='none' opacity='.9'%3E    %3Cpath fill='url(%2342ecdbc5-cb5f-41dc-88b6-1ee9f740fee0-a)' d='M40 0c22.091 0 40 17.909 40 40S62.091 80 40 80v-7c18.225 0 33-14.775 33-33S58.225 7 40 7V0z'/%3E    %3Cpath fill='url(%2342ecdbc5-cb5f-41dc-88b6-1ee9f740fee0-b)' d='M40 0v7C21.775 7 7 21.775 7 40s14.775 33 33 33v7C17.909 80 0 62.091 0 40S17.909 0 40 0z'/%3E    %3Ccircle cx='40.5' cy='3.5' r='3.5' fill='%23EDEDED'/%3E  %3C/g%3E%3C/svg%3E\") no-repeat 50% 50%;-webkit-mask-size:cover;mask-size:cover;background-color:currentColor;color:#606060;animation:circleLoading 1s steps(60,end) infinite}.weui-circle-loading_before:before{content:\"\"}.weui-circle-loading.weui-circle-loading_white{color:#ededed}.weui-circle-loading_before.weui-circle-loading_white:before{color:#ededed}.wx_hover_card:before{content:\" \";position:absolute;top:0;left:0;right:0;bottom:0;border-radius:8px;box-sizing:border-box;border:1px solid rgba(7,193,96,.3);pointer-events:none;z-index:9}.wx_selected_card:before{content:\" \";position:absolute;top:0;left:0;right:0;bottom:0;border-radius:8px;border:1.5px solid #07C160;box-sizing:border-box;background:rgba(7,193,96,.1);pointer-events:none;z-index:9}.wx-root,body,.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-REDORANGE: #FF6146}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-REDORANGE: #FF6146}}img{pointer-events:none}.common-web .weapp_card{margin:0 auto;max-width:350px}.weapp_img,.weapp_card{-webkit-user-select:none;-moz-user-select:none;user-select:none}.weapp_text{color:var(--weui-LINK)}.weapp_text:before{content:\"\";display:inline-block;vertical-align:middle;width:1em;height:1em;-webkit-mask:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E  %3Cg fill='%23576B95'%3E    %3Cpath d='M8.566 7.434l-1.98-1.98-.754.755 1.257 1.257H2.333v1.067H7.09L5.832 9.79l.754.755 1.98-1.98a.8.8 0 0 0 0-1.132z'/%3E    %3Cpath d='M4.333 11.8H3.267v1.067a.8.8 0 0 0 .797.8h7.805a.8.8 0 0 0 .798-.798V3.131a.799.799 0 0 0-.798-.798H4.064a.8.8 0 0 0-.797.8V4.2h1.066v-.8H11.6v9.2H4.333v-.8z'/%3E  %3C/g%3E%3C/svg%3E\") no-repeat 50% 50%;mask:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E  %3Cg fill='%23576B95'%3E    %3Cpath d='M8.566 7.434l-1.98-1.98-.754.755 1.257 1.257H2.333v1.067H7.09L5.832 9.79l.754.755 1.98-1.98a.8.8 0 0 0 0-1.132z'/%3E    %3Cpath d='M4.333 11.8H3.267v1.067a.8.8 0 0 0 .797.8h7.805a.8.8 0 0 0 .798-.798V3.131a.799.799 0 0 0-.798-.798H4.064a.8.8 0 0 0-.797.8V4.2h1.066v-.8H11.6v9.2H4.333v-.8z'/%3E  %3C/g%3E%3C/svg%3E\") no-repeat 50% 50%;-webkit-mask-size:cover;mask-size:cover;background-color:currentColor;margin:-.3em 1px 0 2px}.weapp_text:empty{display:none}.weapp_text:before{-webkit-mask-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E  %3Cpath fill='%23576B95' fill-rule='evenodd' d='M10.933 8.529l-.138.002c-.418 0-.662-.3-.505-.644a.902.902 0 0 1 .638-.496c.767-.18 1.288-.765 1.288-1.445 0-.824-.807-1.496-1.815-1.496-1.007 0-1.814.672-1.814 1.496v4.108c0 1.447-1.327 2.613-2.96 2.613-1.634 0-2.96-1.166-2.96-2.613 0-1.269 1.027-2.352 2.426-2.558h.112c.317 0 .545.185.545.45a.488.488 0 0 1-.006.092.348.348 0 0 1-.034.102c-.101.23-.36.429-.638.496-.761.18-1.288.76-1.288 1.418 0 .824.807 1.496 1.815 1.496 1.007 0 1.814-.672 1.814-1.496V5.946c0-1.447 1.327-2.613 2.96-2.613 1.634 0 2.96 1.166 2.96 2.613 0 1.275-1.003 2.346-2.4 2.583z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E  %3Cpath fill='%23576B95' fill-rule='evenodd' d='M10.933 8.529l-.138.002c-.418 0-.662-.3-.505-.644a.902.902 0 0 1 .638-.496c.767-.18 1.288-.765 1.288-1.445 0-.824-.807-1.496-1.815-1.496-1.007 0-1.814.672-1.814 1.496v4.108c0 1.447-1.327 2.613-2.96 2.613-1.634 0-2.96-1.166-2.96-2.613 0-1.269 1.027-2.352 2.426-2.558h.112c.317 0 .545.185.545.45a.488.488 0 0 1-.006.092.348.348 0 0 1-.034.102c-.101.23-.36.429-.638.496-.761.18-1.288.76-1.288 1.418 0 .824.807 1.496 1.815 1.496 1.007 0 1.814-.672 1.814-1.496V5.946c0-1.447 1.327-2.613 2.96-2.613 1.634 0 2.96 1.166 2.96 2.613 0 1.275-1.003 2.346-2.4 2.583z'/%3E%3C/svg%3E\")}.weapp_img{position:relative;display:inline-block;vertical-align:bottom;-webkit-user-select:none;-moz-user-select:none;user-select:none}.weapp_img:before,.weapp_img:after{content:\"\";position:absolute;top:8px;right:8px;width:20px;height:20px;display:flex;align-items:center;justify-content:center;z-index:1}.weapp_img:before{background:rgba(95,95,95,.5);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:100%}.weapp_img:after{-webkit-mask:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E  %3Cg fill='%23576B95'%3E    %3Cpath d='M8.566 7.434l-1.98-1.98-.754.755 1.257 1.257H2.333v1.067H7.09L5.832 9.79l.754.755 1.98-1.98a.8.8 0 0 0 0-1.132z'/%3E    %3Cpath d='M4.333 11.8H3.267v1.067a.8.8 0 0 0 .797.8h7.805a.8.8 0 0 0 .798-.798V3.131a.799.799 0 0 0-.798-.798H4.064a.8.8 0 0 0-.797.8V4.2h1.066v-.8H11.6v9.2H4.333v-.8z'/%3E  %3C/g%3E%3C/svg%3E\") no-repeat 50% 50%;mask:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E  %3Cg fill='%23576B95'%3E    %3Cpath d='M8.566 7.434l-1.98-1.98-.754.755 1.257 1.257H2.333v1.067H7.09L5.832 9.79l.754.755 1.98-1.98a.8.8 0 0 0 0-1.132z'/%3E    %3Cpath d='M4.333 11.8H3.267v1.067a.8.8 0 0 0 .797.8h7.805a.8.8 0 0 0 .798-.798V3.131a.799.799 0 0 0-.798-.798H4.064a.8.8 0 0 0-.797.8V4.2h1.066v-.8H11.6v9.2H4.333v-.8z'/%3E  %3C/g%3E%3C/svg%3E\") no-repeat 50% 50%;-webkit-mask-size:14px;mask-size:14px;background:#FFFFFF}.weapp_img:after{-webkit-mask-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E  %3Cpath fill='%23576B95' fill-rule='evenodd' d='M10.933 8.529l-.138.002c-.418 0-.662-.3-.505-.644a.902.902 0 0 1 .638-.496c.767-.18 1.288-.765 1.288-1.445 0-.824-.807-1.496-1.815-1.496-1.007 0-1.814.672-1.814 1.496v4.108c0 1.447-1.327 2.613-2.96 2.613-1.634 0-2.96-1.166-2.96-2.613 0-1.269 1.027-2.352 2.426-2.558h.112c.317 0 .545.185.545.45a.488.488 0 0 1-.006.092.348.348 0 0 1-.034.102c-.101.23-.36.429-.638.496-.761.18-1.288.76-1.288 1.418 0 .824.807 1.496 1.815 1.496 1.007 0 1.814-.672 1.814-1.496V5.946c0-1.447 1.327-2.613 2.96-2.613 1.634 0 2.96 1.166 2.96 2.613 0 1.275-1.003 2.346-2.4 2.583z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E  %3Cpath fill='%23576B95' fill-rule='evenodd' d='M10.933 8.529l-.138.002c-.418 0-.662-.3-.505-.644a.902.902 0 0 1 .638-.496c.767-.18 1.288-.765 1.288-1.445 0-.824-.807-1.496-1.815-1.496-1.007 0-1.814.672-1.814 1.496v4.108c0 1.447-1.327 2.613-2.96 2.613-1.634 0-2.96-1.166-2.96-2.613 0-1.269 1.027-2.352 2.426-2.558h.112c.317 0 .545.185.545.45a.488.488 0 0 1-.006.092.348.348 0 0 1-.034.102c-.101.23-.36.429-.638.496-.761.18-1.288.76-1.288 1.418 0 .824.807 1.496 1.815 1.496 1.007 0 1.814-.672 1.814-1.496V5.946c0-1.447 1.327-2.613 2.96-2.613 1.634 0 2.96 1.166 2.96 2.613 0 1.275-1.003 2.346-2.4 2.583z'/%3E%3C/svg%3E\");-webkit-mask-size:15px;mask-size:15px}.weapp_card{line-height:1.4}.weapp_card_bd{padding:12px 12px 0}.weapp_card_ft{padding:8px 12px;text-align:left}.weapp_card_profile{overflow:hidden}.weapp_card_avatar{font-size:10px;width:2em;height:2em;margin-right:6px;flex-shrink:0}.avatar-img{border-radius:50%;-o-object-fit:cover;object-fit:cover}.weapp_card_nickname{width:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;font-size:14px;line-height:1.4;color:var(--weui-FG-1)}.weapp_card_title{margin:8px 0 12px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;color:var(--weui-FG-0);font-size:17px;text-align:left}.weapp_card_thumb_wrp{position:relative;padding-bottom:80%;overflow:hidden;border-radius:2px}.weapp_card_thumb_wrp:before{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.weapp_card_thumb{position:absolute;width:100%;top:50%;left:50%;transform:translate(-50%,-50%);-webkit-touch-callout:none}.weapp_card_logo{font-size:14px;color:var(--weui-FG-1)}.weapp_card_logo:before{content:\"\";display:inline-block;vertical-align:middle;width:18px;height:18px;margin-top:-.2em;margin-right:4px;background-size:cover;background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 18 18'%3E  %3Cpath fill='%236467F0' fill-rule='evenodd' d='M12.753 9.743l-.177.003c-.535 0-.846-.393-.645-.845a1.16 1.16 0 0 1 .816-.651c.981-.237 1.648-1.004 1.648-1.897 0-1.081-1.032-1.963-2.322-1.963s-2.322.882-2.322 1.963v5.392c0 1.899-1.698 3.428-3.788 3.428s-3.788-1.53-3.788-3.428c0-1.665 1.314-3.087 3.105-3.357h.144c.405 0 .697.243.697.589a.64.64 0 0 1-.008.122.464.464 0 0 1-.044.134c-.13.301-.46.562-.816.651-.974.236-1.648.998-1.648 1.86 0 1.082 1.032 1.964 2.322 1.964s2.322-.882 2.322-1.963V6.353c0-1.899 1.698-3.428 3.788-3.428s3.788 1.53 3.788 3.428c0 1.674-1.283 3.079-3.072 3.39z'/%3E%3C/svg%3E\")}.guarantee_icon{display:inline-block;flex-shrink:0;margin-left:8px;font-size:10px;vertical-align:middle;width:1.6em;height:1.6em;text-indent:-999em;background-size:cover;background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E  %3Cg fill='none' fill-rule='evenodd'%3E    %3Cpath d='M0 0h16v16H0z'/%3E    %3Cpath fill='%2307C160' fill-opacity='.1' d='M9.155.976l4.357 2.513a2.307 2.307 0 0 1 1.155 1.998v5.026c0 .824-.44 1.586-1.155 1.998l-4.357 2.513a2.311 2.311 0 0 1-2.31 0l-4.357-2.513a2.307 2.307 0 0 1-1.155-1.998V5.487c0-.824.44-1.586 1.155-1.998L6.845.976a2.311 2.311 0 0 1 2.31 0z'/%3E    %3Cpath fill='%2307C160' fill-rule='nonzero' d='M9.155.976l4.357 2.513a2.307 2.307 0 0 1 1.155 1.998v5.026c0 .824-.44 1.586-1.155 1.998l-4.357 2.513a2.311 2.311 0 0 1-2.31 0l-4.357-2.513a2.307 2.307 0 0 1-1.155-1.998V5.487c0-.824.44-1.586 1.155-1.998L6.845.976a2.311 2.311 0 0 1 2.31 0zm-.4.693a1.511 1.511 0 0 0-1.51 0L2.888 4.182c-.467.27-.755.767-.755 1.305v5.026c0 .538.288 1.036.755 1.305l4.357 2.513c.467.27 1.043.27 1.51 0l4.357-2.513c.467-.27.755-.767.755-1.305V5.487c0-.538-.288-1.036-.755-1.305L8.755 1.669z'/%3E    %3Cpath fill='%2307C160' fill-rule='nonzero' d='M6.783 4.804h4.025v2.56H6.783v-2.56zm1.64 6.54V9.289c-.49.69-1.08 1.204-2.023 1.802l-.445-.69c1.05-.514 1.64-.997 2.131-1.672H6.37v-.697h2.055V7.48h.743v.552h2.07v.697h-1.84c.499.629 1.173 1.135 2.093 1.58l-.421.72a7.73 7.73 0 0 1-1.902-1.725v2.04h-.743zm-3.25.023V7.748c-.169.26-.36.514-.56.767l-.467-.69c.529-.729 1.288-2.162 1.594-3.305l.798.192c-.192.59-.391 1.142-.621 1.656v4.999h-.744zm2.4-5.827v1.089h2.445V5.54H7.573z'/%3E  %3C/g%3E%3C/svg%3E\")}.safe_buy_icon{display:inline-flex;align-items:center;padding:2px 4px;margin-left:6px;background-color:#ff61461a;color:transparent;font-size:0}.safe_buy_icon:before{color:#ff6146;font-size:10px;content:\"\";display:inline-block;vertical-align:middle;width:3.3em;height:1.2em;-webkit-mask:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='33' height='12' viewBox='0 0 33 12'%3E  %3Cpath fill='%23FF6146' fill-rule='evenodd' d='M28.196 8.24c.522.221 1.023.473 1.502.755.466.274.907.574 1.325.9a.127.127 0 0 1 .01.19l-.624.617a.127.127 0 0 1-.17.007c-.489-.4-.914-.733-1.275-.998a9.878 9.878 0 0 0-1.21-.762.127.127 0 0 1-.045-.184l.334-.48a.127.127 0 0 1 .153-.045zm-.505-4.714c.07 0 .126.057.126.127v.938c0 .49-.084 1.638-.179 2.044h3.677c.07 0 .127.057.127.127v.683c0 .07-.057.127-.127.127h-4.003a3.584 3.584 0 0 1-.257.461c-.16.24-.315.486-.513.7-1.242 1.345-3.219 2.005-5.93 1.982a.127.127 0 0 1-.125-.127v-.377c0-.067.053-.123.12-.126 2.334-.108 4.066-.776 5.197-2.004a4.16 4.16 0 0 0 .37-.509h-3.867a.127.127 0 0 1-.127-.127v-.683c0-.07.057-.127.127-.127h4.287c.128-.417.243-1.542.243-2.044v-.938c0-.07.057-.127.127-.127zM6.718 1.228l.728.12a.127.127 0 0 1 .103.152c-.098.461-.182.82-.254 1.075l-.034.119h2.813c.056 0 .103.036.12.087l.006.04v.683a.127.127 0 0 1-.086.12l-.04.007h-.58C9.41 5.28 9.02 6.696 8.303 7.857c.451.64 1.064 1.147 1.84 1.524.446.216 1.276.446 2.49.688.044.01.08.04.094.081l.008.044v.376a.126.126 0 0 1-.142.126c-1.426-.178-2.408-.39-2.947-.635a5.608 5.608 0 0 1-1.911-1.41c-.325.393-.61.66-1.09 1.077-.3.26-.695.53-1.187.81a.127.127 0 0 1-.135-.007l-.034-.035-.43-.669a.127.127 0 0 1 .047-.18c.521-.278.92-.533 1.196-.763.446-.372.763-.683 1.063-1.078a12.19 12.19 0 0 1-1.127-2.495 11.178 11.178 0 0 1-.404.502.127.127 0 0 1-.139.016l-.039-.031-.449-.532a.127.127 0 0 1-.005-.157c.246-.334.425-.598.536-.792.355-.62.637-1.333.847-2.138.05-.188.112-.471.188-.851a.127.127 0 0 1 .069-.09l.036-.01h.04zm-3.5.004c.16.344.276.599.347.765.102.24.192.468.271.687h1.391c.07 0 .127.057.127.127v.673c0 .07-.057.126-.127.126h-2.35v.826c0 .162-.01.316-.01.468h1.058c.527 0 .954.42.951.93-.01 2.001-.061 3.26-.144 3.775-.106.59-.559.886-1.36.886-.09 0-.31-.014-.658-.043a.126.126 0 0 1-.112-.094l-.153-.575a.127.127 0 0 1 .133-.159c.294.024.508.036.643.036.338 0 .537-.163.601-.488.06-.313.092-1.363.103-3.132a.241.241 0 0 0-.24-.24h-.864a14.394 14.394 0 0 1-.61 3.334 5.72 5.72 0 0 1-.66 1.362.127.127 0 0 1-.175.039l-.014-.01-.586-.499a.127.127 0 0 1-.025-.163 6.1 6.1 0 0 0 .652-1.38c.332-1.071.519-2.408.532-4.047V3.61h-.884a.127.127 0 0 1-.126-.126V2.81c0-.07.056-.127.126-.127h1.77c-.116-.273-.3-.658-.55-1.153a.127.127 0 0 1 .08-.18l.715-.188a.126.126 0 0 1 .147.069zm11.66 2.124c.055 0 .103.036.12.087l.006.04-.022 4.968c0 .48.43.87.926.87h1.34a.909.909 0 0 0 .638-.257.852.852 0 0 0 .262-.618l-.005-.958a.127.127 0 0 1 .168-.12l.729.254c.05.018.084.065.085.119l.005.7c.003.493-.194.958-.554 1.308-.36.35-.818.542-1.328.542h-1.34c-1.05 0-1.904-.825-1.904-1.84V3.483c0-.07.056-.127.126-.127h.747zm-2.34 1.033l.002.001.71.144a.127.127 0 0 1 .1.147c-.194 1.071-.354 1.852-.48 2.343-.132.511-.355 1.206-.668 2.083a.127.127 0 0 1-.185.066l-.642-.386a.127.127 0 0 1-.055-.15c.298-.85.505-1.501.623-1.954.125-.478.274-1.209.447-2.19a.127.127 0 0 1 .147-.104zm7-.192c.372.89.654 1.602.846 2.135.194.541.426 1.21.695 2.006a.127.127 0 0 1-.07.156l-.684.297a.127.127 0 0 1-.17-.076c-.291-.852-.54-1.558-.743-2.119a35.45 35.45 0 0 0-.832-2.063.127.127 0 0 1 .031-.145l.034-.022a.127.127 0 0 1 .012-.004l.726-.237c.062-.02.13.011.155.072zM8.557 3.631H6.934c-.105.254-.211.5-.327.724A12.43 12.43 0 0 0 7.703 6.95c.495-.947.78-2.057.854-3.32zm14.676.81c.41.16.765.32 1.065.48.29.153.592.328.91.525a.127.127 0 0 1 .039.178l-.372.55a.127.127 0 0 1-.176.035 24.441 24.441 0 0 0-.927-.597 6.58 6.58 0 0 0-.958-.466.127.127 0 0 1-.057-.19l.326-.47a.127.127 0 0 1 .15-.045zm.779-1.235c.404.15.753.295 1.046.44.303.148.63.324.98.527a.127.127 0 0 1 .04.18l-.37.55a.127.127 0 0 1-.174.036 19.512 19.512 0 0 0-.99-.6 7.84 7.84 0 0 0-.947-.436.127.127 0 0 1-.057-.191l.324-.46a.127.127 0 0 1 .148-.046zM30.333.225a.33.33 0 0 1 .333.38c-.005.051 0 .146.005.186l.044.292c.018.116.04.231.071.344.032.111.075.221.14.317a.761.761 0 0 0 .236.222 1.161 1.161 0 0 0 .53.154c.116.007.149.002.223.002a.34.34 0 0 1 .335.344.34.34 0 0 1-.335.344c-.074 0-.107-.005-.224.001a1.162 1.162 0 0 0-.529.155.75.75 0 0 0-.237.222 1.086 1.086 0 0 0-.139.317c-.072.256-.088.52-.115.784-.005.04-.01.135-.005.184a.331.331 0 0 1-.333.382.331.331 0 0 1-.331-.382.999.999 0 0 0-.006-.184c-.033-.264-.041-.526-.115-.784a1.086 1.086 0 0 0-.139-.317.75.75 0 0 0-.237-.222 1.162 1.162 0 0 0-.529-.155c-.116-.006-.149-.001-.223-.001a.34.34 0 0 1-.335-.344.34.34 0 0 1 .335-.344c.074 0 .107.005.223-.002a1.161 1.161 0 0 0 .529-.154.761.761 0 0 0 .237-.222c.065-.096.108-.206.14-.317.03-.113.052-.228.071-.344l.043-.292c.006-.04.01-.135.006-.185a.33.33 0 0 1 .332-.38zm-14.52 1.062c.324.369.586.671.787.909l.18.216.075.091c.257.318.578.75.962 1.296a.127.127 0 0 1-.035.18l-.628.409a.127.127 0 0 1-.175-.036 23.946 23.946 0 0 0-.9-1.268 35.338 35.338 0 0 0-1.06-1.265.127.127 0 0 1 .013-.178l.017-.013.603-.365a.127.127 0 0 1 .161.024zm12.314.701c.054 0 .085.056.056.1-.073.115-.176.247-.18.388-.005.114.076.222.117.32a.065.065 0 0 1-.063.089h-5.382a.127.127 0 0 1-.126-.127v-.643c0-.07.056-.127.126-.127z'/%3E%3C/svg%3E\") no-repeat 50% 50%;mask:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='33' height='12' viewBox='0 0 33 12'%3E  %3Cpath fill='%23FF6146' fill-rule='evenodd' d='M28.196 8.24c.522.221 1.023.473 1.502.755.466.274.907.574 1.325.9a.127.127 0 0 1 .01.19l-.624.617a.127.127 0 0 1-.17.007c-.489-.4-.914-.733-1.275-.998a9.878 9.878 0 0 0-1.21-.762.127.127 0 0 1-.045-.184l.334-.48a.127.127 0 0 1 .153-.045zm-.505-4.714c.07 0 .126.057.126.127v.938c0 .49-.084 1.638-.179 2.044h3.677c.07 0 .127.057.127.127v.683c0 .07-.057.127-.127.127h-4.003a3.584 3.584 0 0 1-.257.461c-.16.24-.315.486-.513.7-1.242 1.345-3.219 2.005-5.93 1.982a.127.127 0 0 1-.125-.127v-.377c0-.067.053-.123.12-.126 2.334-.108 4.066-.776 5.197-2.004a4.16 4.16 0 0 0 .37-.509h-3.867a.127.127 0 0 1-.127-.127v-.683c0-.07.057-.127.127-.127h4.287c.128-.417.243-1.542.243-2.044v-.938c0-.07.057-.127.127-.127zM6.718 1.228l.728.12a.127.127 0 0 1 .103.152c-.098.461-.182.82-.254 1.075l-.034.119h2.813c.056 0 .103.036.12.087l.006.04v.683a.127.127 0 0 1-.086.12l-.04.007h-.58C9.41 5.28 9.02 6.696 8.303 7.857c.451.64 1.064 1.147 1.84 1.524.446.216 1.276.446 2.49.688.044.01.08.04.094.081l.008.044v.376a.126.126 0 0 1-.142.126c-1.426-.178-2.408-.39-2.947-.635a5.608 5.608 0 0 1-1.911-1.41c-.325.393-.61.66-1.09 1.077-.3.26-.695.53-1.187.81a.127.127 0 0 1-.135-.007l-.034-.035-.43-.669a.127.127 0 0 1 .047-.18c.521-.278.92-.533 1.196-.763.446-.372.763-.683 1.063-1.078a12.19 12.19 0 0 1-1.127-2.495 11.178 11.178 0 0 1-.404.502.127.127 0 0 1-.139.016l-.039-.031-.449-.532a.127.127 0 0 1-.005-.157c.246-.334.425-.598.536-.792.355-.62.637-1.333.847-2.138.05-.188.112-.471.188-.851a.127.127 0 0 1 .069-.09l.036-.01h.04zm-3.5.004c.16.344.276.599.347.765.102.24.192.468.271.687h1.391c.07 0 .127.057.127.127v.673c0 .07-.057.126-.127.126h-2.35v.826c0 .162-.01.316-.01.468h1.058c.527 0 .954.42.951.93-.01 2.001-.061 3.26-.144 3.775-.106.59-.559.886-1.36.886-.09 0-.31-.014-.658-.043a.126.126 0 0 1-.112-.094l-.153-.575a.127.127 0 0 1 .133-.159c.294.024.508.036.643.036.338 0 .537-.163.601-.488.06-.313.092-1.363.103-3.132a.241.241 0 0 0-.24-.24h-.864a14.394 14.394 0 0 1-.61 3.334 5.72 5.72 0 0 1-.66 1.362.127.127 0 0 1-.175.039l-.014-.01-.586-.499a.127.127 0 0 1-.025-.163 6.1 6.1 0 0 0 .652-1.38c.332-1.071.519-2.408.532-4.047V3.61h-.884a.127.127 0 0 1-.126-.126V2.81c0-.07.056-.127.126-.127h1.77c-.116-.273-.3-.658-.55-1.153a.127.127 0 0 1 .08-.18l.715-.188a.126.126 0 0 1 .147.069zm11.66 2.124c.055 0 .103.036.12.087l.006.04-.022 4.968c0 .48.43.87.926.87h1.34a.909.909 0 0 0 .638-.257.852.852 0 0 0 .262-.618l-.005-.958a.127.127 0 0 1 .168-.12l.729.254c.05.018.084.065.085.119l.005.7c.003.493-.194.958-.554 1.308-.36.35-.818.542-1.328.542h-1.34c-1.05 0-1.904-.825-1.904-1.84V3.483c0-.07.056-.127.126-.127h.747zm-2.34 1.033l.002.001.71.144a.127.127 0 0 1 .1.147c-.194 1.071-.354 1.852-.48 2.343-.132.511-.355 1.206-.668 2.083a.127.127 0 0 1-.185.066l-.642-.386a.127.127 0 0 1-.055-.15c.298-.85.505-1.501.623-1.954.125-.478.274-1.209.447-2.19a.127.127 0 0 1 .147-.104zm7-.192c.372.89.654 1.602.846 2.135.194.541.426 1.21.695 2.006a.127.127 0 0 1-.07.156l-.684.297a.127.127 0 0 1-.17-.076c-.291-.852-.54-1.558-.743-2.119a35.45 35.45 0 0 0-.832-2.063.127.127 0 0 1 .031-.145l.034-.022a.127.127 0 0 1 .012-.004l.726-.237c.062-.02.13.011.155.072zM8.557 3.631H6.934c-.105.254-.211.5-.327.724A12.43 12.43 0 0 0 7.703 6.95c.495-.947.78-2.057.854-3.32zm14.676.81c.41.16.765.32 1.065.48.29.153.592.328.91.525a.127.127 0 0 1 .039.178l-.372.55a.127.127 0 0 1-.176.035 24.441 24.441 0 0 0-.927-.597 6.58 6.58 0 0 0-.958-.466.127.127 0 0 1-.057-.19l.326-.47a.127.127 0 0 1 .15-.045zm.779-1.235c.404.15.753.295 1.046.44.303.148.63.324.98.527a.127.127 0 0 1 .04.18l-.37.55a.127.127 0 0 1-.174.036 19.512 19.512 0 0 0-.99-.6 7.84 7.84 0 0 0-.947-.436.127.127 0 0 1-.057-.191l.324-.46a.127.127 0 0 1 .148-.046zM30.333.225a.33.33 0 0 1 .333.38c-.005.051 0 .146.005.186l.044.292c.018.116.04.231.071.344.032.111.075.221.14.317a.761.761 0 0 0 .236.222 1.161 1.161 0 0 0 .53.154c.116.007.149.002.223.002a.34.34 0 0 1 .335.344.34.34 0 0 1-.335.344c-.074 0-.107-.005-.224.001a1.162 1.162 0 0 0-.529.155.75.75 0 0 0-.237.222 1.086 1.086 0 0 0-.139.317c-.072.256-.088.52-.115.784-.005.04-.01.135-.005.184a.331.331 0 0 1-.333.382.331.331 0 0 1-.331-.382.999.999 0 0 0-.006-.184c-.033-.264-.041-.526-.115-.784a1.086 1.086 0 0 0-.139-.317.75.75 0 0 0-.237-.222 1.162 1.162 0 0 0-.529-.155c-.116-.006-.149-.001-.223-.001a.34.34 0 0 1-.335-.344.34.34 0 0 1 .335-.344c.074 0 .107.005.223-.002a1.161 1.161 0 0 0 .529-.154.761.761 0 0 0 .237-.222c.065-.096.108-.206.14-.317.03-.113.052-.228.071-.344l.043-.292c.006-.04.01-.135.006-.185a.33.33 0 0 1 .332-.38zm-14.52 1.062c.324.369.586.671.787.909l.18.216.075.091c.257.318.578.75.962 1.296a.127.127 0 0 1-.035.18l-.628.409a.127.127 0 0 1-.175-.036 23.946 23.946 0 0 0-.9-1.268 35.338 35.338 0 0 0-1.06-1.265.127.127 0 0 1 .013-.178l.017-.013.603-.365a.127.127 0 0 1 .161.024zm12.314.701c.054 0 .085.056.056.1-.073.115-.176.247-.18.388-.005.114.076.222.117.32a.065.065 0 0 1-.063.089h-5.382a.127.127 0 0 1-.126-.127v-.643c0-.07.056-.127.126-.127z'/%3E%3C/svg%3E\") no-repeat 50% 50%;-webkit-mask-size:cover;mask-size:cover;background-color:currentColor}.quote-container{padding:12px;border-radius:8px;background-color:var(--weui-BG-1);display:flex;align-items:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.quote-container .quote-image{font-size:44px;width:1em;height:1em;border-radius:50%}.quote-container .quote-nickname{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.quote-container .quote-caption{flex:1;width:200px;margin-left:8px;line-height:1.4;font-size:15px;color:var(--weui-FG-0)}.quote-container .quote-label{color:var(--weui-FG-2);font-size:14px;margin-top:2px}.map-container{padding:12px;border-radius:8px;background-color:var(--weui-BG-1);display:flex;align-items:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.map-container .map-image{font-size:44px;width:1em;height:1em;border-radius:1px}.map-container .map-title{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.map-container .map-caption{flex:1;width:300px;margin-left:8px;line-height:1.4;font-size:15px;color:var(--weui-FG-0)}.map-container .map-label{color:var(--weui-FG-2);font-size:14px}\n",
    c$1 = {
      path: "data-miniprogram-path",
      nickname: "data-miniprogram-nickname",
      avatar: "data-miniprogram-avatar",
      title: "data-miniprogram-title",
      desc: "data-miniprogram-desc",
      imageUrl: "data-miniprogram-imageurl",
      type: "data-miniprogram-type",
      textContent: "data-miniprogram-textcontent",
      serviceType: "data-miniprogram-servicetype",
      appid: "data-miniprogram-appid",
      is_hover: "data-is-hover",
      is_selected: "data-is-selected",
      applink: "data-miniprogram-applink",
      imageurlBack: "data-miniprogram-imageurlback",
      cropperInfo: "data-miniprogram-cropperinfo",
      username: "data-miniprogram-username"
    };
  function d$1(a) {
    var e = {};
    return e = o$6.call(this, c$1), e.is_hover *= 1, e.is_selected *= 1, _objectSpread$3(_objectSpread$3({}, e), {}, {
      platform: a
    });
  }
  function h() {
    var a = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    H$3(Object.assign(a, {
      Component: a.isDev ? a.devComponent : g$1,
      styleText: a.isDev ? a.devStyleText : n$2,
      customName: a.customName || "mp-common-miniprogram",
      watchAttr: ["data-miniprogram-appid", "data-is-hover", "data-is-selected", "data-miniprogram-title", "data-miniprogram-desc"],
      getProps: d$1
    }));
  }

  
  try {
    if (typeof parent.window.hasListenMpPageAction === 'undefined') {
      parent.window.hasListenMpPageAction = false;
    }
    if (typeof parent.window.hasListenStateChange === 'undefined') {
      parent.window.hasListenStateChange = false;
    }
  } catch (error) {
  }
  var mpPageActionCb = [];
  var stateChangeCb = [];
  var HistoryLS = new LS('history4secondopen');
  var HistoryKey = 'from';
  var hasListenPopstateForSecOpenReload = false;
  
  var webComptStatus = {
    status: 'loading'
  };
  var webComptInitCb = [];
  var directionHandlerId = 0;
  var directionChangeHandlersMap = {};
  function isNativePage() {
    return Url.getQuery('isNativePage') === '1' || Url.getQuery('isNativePage') === '2';
  }
  
  function debounce$1(func) {
    var wait = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 50;
    var timeout;
    return function () {
      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key &lt; _len; _key++) {
        args[_key] = arguments[_key];
      }
      var context = this;
      var later = function later() {
        timeout = null;
        func.apply(context, args);
      };
      if (timeout) {
        return;
      }
      timeout = setTimeout(later, wait);
    };
  }
  
  function checkIntersect(rectA, rectB) {
    return !(rectB.right &lt; rectA.left || rectB.left &gt; rectA.right || rectB.bottom &lt; rectA.top || rectB.top &gt; rectA.bottom);
  }
  var utils = {
    isNativePage: isNativePage,
    isNewNativePage: function isNewNativePage() {
      return Url.getQuery('isNativePage') === '2';
    },
    isOldNativePage: function isOldNativePage() {
      return Url.getQuery('isNativePage') === '1';
    },
    __useWcSlPlayer: false,
    isWcSlPage: function isWcSlPage() {
      return utils.__useWcSlPlayer;
    },
    getPlayerType: function getPlayerType() {
      if (isNativePage()) {
        return 2;
      }
      return 1;
    },
    getParam: function getParam(key) {
      if (!key) return null;
      var m = location.href.match(new RegExp("(\\?|&amp;)".concat(key, "=([^&amp;]+)")));
      return m ? m[2] : null;
    },
    
    insertAfter: function insertAfter(newElement, targetElement) {
      var parentElement = targetElement.parentNode;
      if (parentElement.lastChild === targetElement) {
        parentElement.appendChild(newElement);
      } else {
        parentElement.insertBefore(newElement, targetElement.nextSibling);
      }
    },
    getInnerHeight: function getInnerHeight() {
      var innerHeightFromApp = window.getInnerHeight &amp;&amp; window.getInnerHeight();
      return innerHeightFromApp || window.innerHeight || document.documentElement.clientHeight;
    },
    getInnerWidth: function getInnerWidth() {
      return window.innerWidth || document.documentElement.clientWidth;
    },
    getScrollTop: function getScrollTop() {
      return document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
    },
    getDocumentHeight: function getDocumentHeight() {
      return document.body.scrollHeight;
    },
    getElementActualTop: function getElementActualTop(element) {
      var elRect = element.getBoundingClientRect();
      var actualTop = elRect.top + this.getScrollTop();
      return actualTop;
    },
    getElementTop: function getElementTop(element) {
      return element.getBoundingClientRect().top;
    },
    getElementHeight: function getElementHeight(element) {
      return element.getBoundingClientRect().height;
    },
    getOrientation: function getOrientation() {
      var _a, _b;
      return (_b = (_a = window.screen.orientation) === null || _a === void 0 ? void 0 : _a.angle) !== null &amp;&amp; _b !== void 0 ? _b : window.orientation;
    },
    getDirection: function getDirection() {
      var orientation = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : utils.getOrientation();
      return (MMVersion.isIPad ? [90, 270] : [0, 180]).indexOf(orientation) &gt; -1 ? 'vertical' : 'horizontal';
    },
    listenDirectionChange: function listenDirectionChange(cb) {
      var _a, _b;
      if ((_b = (_a = window.screen) === null || _a === void 0 ? void 0 : _a.orientation) === null || _b === void 0 ? void 0 : _b.addEventListener) {
        directionChangeHandlersMap[directionHandlerId] = function (e) {
          cb === null || cb === void 0 ? void 0 : cb(utils.getDirection(e.target.angle), e.target.angle);
        };
        window.screen.orientation.addEventListener('change', directionChangeHandlersMap[directionHandlerId]);
      } else {
        directionChangeHandlersMap[directionHandlerId] = function () {
          var orientation = utils.getOrientation();
          cb === null || cb === void 0 ? void 0 : cb(utils.getDirection(orientation), orientation);
        };
        window.addEventListener('orientationchange', directionChangeHandlersMap[directionHandlerId]);
      }
      return directionHandlerId++;
    },
    unlistenDirectionChange: function unlistenDirectionChange(handlerId) {
      var _a, _b;
      if ((_b = (_a = window.screen) === null || _a === void 0 ? void 0 : _a.orientation) === null || _b === void 0 ? void 0 : _b.removeEventListener) {
        window.screen.orientation.removeEventListener('change', directionChangeHandlersMap[handlerId]);
      } else {
        window.removeEventListener('orientationchange', directionChangeHandlersMap[handlerId]);
      }
      delete directionChangeHandlersMap[handlerId];
    },
    isScrollEnd: function isScrollEnd(threshold) {
      return this.getScrollTop() + this.getInnerHeight() + threshold &gt;= this.getDocumentHeight();
    },
    
    listenStateChange: function listenStateChange() {
      var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
      stateChangeCb.push(opt.cb);
      try {
        if (parent.window.hasListenStateChange) {
          return;
        }
      } catch (error) {
      }
      R$4.on('activity:state_change', function (res) {
        stateChangeCb.forEach(function (callback) {
          callback(res);
        });
      });
      try {
        parent.window.hasListenStateChange = true;
      } catch (error) {
      }
    },
    
    listenMpPageAction: function listenMpPageAction(cb) {
      mpPageActionCb.push(cb);
      try {
        if (parent.window.hasListenMpPageAction) {
          return;
        }
      } catch (error) {
      }
      R$4.on('onMPPageAction', function (res) {
        mpPageActionCb.forEach(function (callback) {
          callback(res);
        });
      });
      try {
        parent.window.hasListenMpPageAction = true;
      } catch (error) {
      }
    },
    getIosMainVersion: function getIosMainVersion() {
      var versionInfo = navigator.userAgent.toLowerCase().match(/cpu iphone os (.*?) like mac os/);
      return versionInfo &amp;&amp; versionInfo[1] &amp;&amp; parseInt(versionInfo[1].split('_')[0], 10);
    },
    
    report120081: function report120081(key, times) {
      jsmonitorReport$1.setSum(120081, key, times);
      jsmonitorReport$1.send();
    },
    loadNewPageKeepingHistoryStackIfSecOpen: function loadNewPageKeepingHistoryStackIfSecOpen(url) {
      if (window.__second_open__ &amp;&amp; typeof url === 'string' &amp;&amp; /^https?:\/\/mp.weixin.qq.com\//.test(url)) {
        HistoryLS.set(HistoryKey, location.href, Date.now() + 10000);
      }
      location.href = "".concat(url.replace(/#.*$/, ''), "#wechat_redirect");
    },
    initNewPageHistoryStackFromSecOpen: function initNewPageHistoryStackFromSecOpen() {
      var fromUrl = HistoryLS.get(HistoryKey);
      if (fromUrl &amp;&amp; typeof fromUrl === 'string' &amp;&amp; /^https?:\/\/mp.weixin.qq.com\//.test(fromUrl)) {
        HistoryLS.remove(HistoryKey);
        if (history &amp;&amp; history.replaceState &amp;&amp; history.pushState) {
          var curUrl = location.href;
          try {
            history.replaceState({
              __mock_secopen_history_stack_reload__: 1
            }, '', fromUrl);
            history.pushState({
              __mock_secopen_history_stack_reload__: 1
            }, '', curUrl);
          } catch (e) {
            console.error('[initNewPageHistoryStackFromSecOpen]', e);
          }
        }
      }
      if (!hasListenPopstateForSecOpenReload) {
        hasListenPopstateForSecOpenReload = true;
        window.addEventListener('popstate', function (e) {
          if (e.state &amp;&amp; e.state.__mock_secopen_history_stack_reload__ === 1) {
            location.reload();
          }
        });
      }
    },
    initWebCompt: function initWebCompt(webComptList, callback) {
      var flushCb = function flushCb() {
        while (webComptInitCb.length) {
          var cb = webComptInitCb.shift();
          cb(webComptStatus);
        }
      };
      if (MMVersion.isWechat &amp;&amp; !MMVersion.isInMiniProgram &amp;&amp; (Device.os.iphone &amp;&amp; Device.os.getNumVersion() &gt;= 10.3 &amp;&amp; (MMVersion.gtVersion('7.0.14', 1) &amp;&amp; Device.os.getNumVersion() &lt; 15 || MMVersion.gtVersion('8.0.7')) || Device.os.android &amp;&amp; MMVersion.gtVersion('7.0.15', 1) &amp;&amp; Device.os.getNumVersion() &gt;= 5 || Device.os.harmony &amp;&amp; MMVersion.compareHexVersion('0xf3800c00'))) {
        document.addEventListener('WeixinOpenTagsReady', function () {
          webComptStatus = {
            status: 'ready'
          };
          flushCb();
        });
        document.addEventListener('WeixinOpenTagsError', function (e) {
          webComptStatus = {
            status: 'error',
            error: e &amp;&amp; e.detail &amp;&amp; e.detail.errMsg
          };
          flushCb();
        });
        R$4.invoke('handleMPPageAction', {
          action: 'wxConfig',
          appid: 'wxmpfakeid',
          webComptList: webComptList,
          url: location.href
        }, function (res) {
          console.log('wx config web compt result', webComptList, res);
          Log.info('wx config web compt result', webComptList, JSON.stringify(res));
          if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf(':ok') === -1) {
            webComptStatus = {
              status: 'error',
              error: res.err_msg
            };
            flushCb();
          }
          if (typeof callback === 'function') {
            callback(res);
          }
        });
      } else {
        var res = {
          err_msg: 'handleMPPageAction:fail_webcompt unsupported'
        };
        console.log('wx config web compt result', webComptList, res);
        Log.info('wx config web compt result', webComptList, JSON.stringify(res));
        webComptStatus = {
          status: 'error',
          error: res.err_msg
        };
        flushCb();
        if (typeof callback === 'function') {
          callback(res);
        }
      }
    },
    initWebComptForWcSlVideoSharePage: function initWebComptForWcSlVideoSharePage() {
      var initAfterConfWxOpen = function initAfterConfWxOpen(res) {
        if (res.err_msg.indexOf(':ok') !== -1) {
          utils.initNewPageHistoryStackFromSecOpen();
        } else {
          window.__failConfigWxOpen = true;
          Log.info('failed to config wxopen: res not ok');
          jsmonitorReport$1.setSum(221515, Device.os.iphone ? 7 : 8, 1);
          window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; res &amp;&amp; window.WX_BJ_REPORT.BadJs.report('WcSlPlayer:CfgError', (window.__second_open__ ? 'secopen:' : 'h5:') + JSON.stringify(res));
        }
      };
      if (MMVersion.isAndroid) {
        var clientVer = MMVersion.getInner();
        if (clientVer &gt; '27001037' &amp;&amp; clientVer &lt; '27001060' || clientVer &gt;= '27001100') {
          utils.initWebCompt(['wxOpen' ], initAfterConfWxOpen);
        } else if (MMVersion.gtVersion('7.0.15', 1)) {
          window.__failConfigWxOpen = true;
          Log.info('failed to config wxopen: android version check failed (gt 7.0.15)');
        } else {
          window.__failConfigWxOpen = true;
          Log.info('failed to config wxopen: android version check failed');
        }
      } else if (MMVersion.isIOS) {
        if (MMVersion.gtVersion('7.0.15', 1)) {
          utils.initWebCompt(['wxOpen' ], initAfterConfWxOpen);
        } else {
          window.__failConfigWxOpen = true;
          Log.info('failed to config wxopen: ios version check failed');
        }
      } else {
        window.__failConfigWxOpen = true;
      }
    },
    
    getWebComptStatus: function getWebComptStatus(cb) {
      if (typeof cb !== 'function') {
        return webComptStatus;
      }
      if (webComptStatus.status === 'loading') {
        webComptInitCb.push(cb);
      } else {
        cb(webComptStatus);
      }
      return true;
    },
    
    supportImmersiveMode: MMVersion.isWechat &amp;&amp; !MMVersion.isInMiniProgram &amp;&amp; (MMVersion.isIOS &amp;&amp; MMVersion.gtVersion('8.0.9', 1) || MMVersion.isAndroid &amp;&amp; MMVersion.gtVersion('8.0.9', 1)),
    debounce: debounce$1,
    
    bindDebounceScrollEvent: function bindDebounceScrollEvent(fn) {
      var scrollEle = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : window;
      var wait = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : 50;
      var useCapture = arguments.length &gt; 3 &amp;&amp; arguments[3] !== undefined ? arguments[3] : false;
      var debounceFn = debounce$1(fn, wait);
      DomEvent.on(scrollEle, 'scroll', '', debounceFn, useCapture);
    },
    checkIntersect: checkIntersect,
    
    clickRange: function clickRange(evt) {
      var selection = window.getSelection();
      var range = selection.rangeCount &amp;&amp; selection.getRangeAt(0);
      if (!range || range.collapsed || !range.intersectsNode(evt.target)) {
        return false;
      }
      var rangeClientRects = range.getClientRects();
      var targetLineHeight = parseFloat(getComputedStyle(evt.target).lineHeight, 10);
      var targetRect = evt.target.getBoundingClientRect();
      for (var i in rangeClientRects) {
        if (rangeClientRects.hasOwnProperty(i)) {
          var rect = rangeClientRects[i];
          var extraHeight = targetLineHeight ? (targetLineHeight - rect.height) / 2 : 0;
          if (rect.width &amp;&amp; checkIntersect(rect, targetRect) &amp;&amp; evt.clientX &gt;= rect.left &amp;&amp; evt.clientX &lt;= rect.right &amp;&amp; evt.clientY &gt;= rect.top - extraHeight &amp;&amp; evt.clientY &lt;= rect.bottom + extraHeight) {
            return true;
          }
        }
      }
    },
    once: function once(fn) {
      return function () {
        if (fn) {
          for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
            args[_key2] = arguments[_key2];
          }
          var ret = fn.apply(this, args);
          fn = null;
          return ret;
        }
      };
    },
    getRealHeightOfIOSNativePanel: function getRealHeightOfIOSNativePanel(oriHeight, callback) {
      if (MMVersion.isIOS) {
        R$4.invoke('handleDeviceInfo', {
          action: 'getUIParams'
        }, function (res) {
          var realHeight = oriHeight;
          if (res.isShowBottomBar) {
            realHeight -= res.bottomBarHeight;
          }
          realHeight = Math.max(realHeight, 0);
          typeof callback === 'function' &amp;&amp; callback(realHeight);
        });
      } else {
        typeof callback === 'function' &amp;&amp; callback(oriHeight);
      }
    }
  };

  
  var dealLikeReadShow_en = function dealLikeReadShow_en(realNum, showZero) {
    var defaultStr = showZero ? '0' : '';
    if (typeof LANG === 'undefined' || !window.LANG) {
      return parseInt(realNum) === 0 ? defaultStr : realNum;
    }
    if (window.LANG == 'en') {
      var showHTML = '';
      if (parseInt(realNum) &gt; 100000) {
        showHTML = "".concat(100, "k+");
      } else if (parseInt(realNum) &gt; 10000 &amp;&amp; parseInt(realNum) &lt;= 100000) {
        var num = "".concat(parseInt(realNum) / 1000);
        var dotIndex = num.indexOf('.');
        if (dotIndex === -1) {
          showHTML = "".concat(num, "k");
        } else {
          showHTML = "".concat(num.substring(0, dotIndex), ".").concat(num.charAt(dotIndex + 1), "k");
        }
      } else if (parseInt(realNum) === 0) {
        showHTML = defaultStr;
      } else {
        showHTML = realNum;
      }
      return showHTML;
    }
    return defaultStr;
  };
  var i18n = {
    dealLikeReadShow_en: dealLikeReadShow_en
  };
  function wxWorkJSAPI() {
    if (MMVersion.isWxWork &amp;&amp; (MMVersion.isAndroid || MMVersion.isIOS)) {
      if (MMVersion.cpVersion('4.1.12', 1, true, 'wxwork')) {
        console.log('[jsapi openMPURLInWechat] mpURL:', window.location.href);
        R$4.invoke('wwapp2.openMPURLInWechat', {
          mpURL: window.location.href
        }, function (res) {
          console.log('[jsapi openMPURLInWechat] res:', res, JSON.stringify(res));
        });
      } else {
        window.weui.alert('请升级企业微信版本');
      }
    } else {
      window.weui.alert('请使用手机版微信');
    }
  }

  MMVersion.isIOS &amp;&amp; MMVersion.compareHexVersion('18003C31') || MMVersion.isAndroid &amp;&amp; MMVersion.compareHexVersion('28003E11');
  var canUsePrivateShare = MMVersion.isIOS &amp;&amp; MMVersion.compareHexVersion('18003622') || MMVersion.isAndroid &amp;&amp; MMVersion.compareHexVersion('2800353C') || Device.os.unifiedPC &amp;&amp; MMVersion.cpVersion('4.0.6', 1, true, 'unifiedpc') &amp;&amp; getOriginExpVal('unified_share_card_style_pc') !== '0'
  ;
  function sendAppMessage(opt, callback) {
    var forceFallback = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    var jsapiName = canUsePrivateShare &amp;&amp; !forceFallback ? 'sendAppMessagePrivate' : 'sendAppMessage';
    console.log('[share] try to share:', jsapiName, opt, forceFallback);
    Log.info("[share] try to share: ".concat(jsapiName, " ").concat(JSON.stringify(opt), " forceFallback:").concat(forceFallback));
    R$4.invoke(jsapiName, opt, function (res) {
      console.log('[share] try to share res:', res, jsapiName, opt, forceFallback);
      if (!(res &amp;&amp; res.err_msg &amp;&amp; (res.err_msg.indexOf(':ok') !== -1 || res.err_msg.indexOf(':confirm') !== -1
      || res.err_msg.indexOf(':cancel') !== -1
      )) &amp;&amp; canUsePrivateShare &amp;&amp; !forceFallback) {
        sendAppMessage(opt, callback, true);
      } else {
        typeof callback === 'function' &amp;&amp; callback(res);
      }
    });
  }
  function shareTimeline(opt, callback) {
    var forceFallback = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    var jsapiName = canUsePrivateShare &amp;&amp; !forceFallback ? 'shareTimelinePrivate' : 'shareTimeline';
    console.log('[share] try to share:', jsapiName, opt, forceFallback);
    Log.info("[share] try to share: ".concat(jsapiName, " ").concat(JSON.stringify(opt), " forceFallback:").concat(forceFallback));
    R$4.invoke(jsapiName, opt, function (res) {
      console.log('[share] try to share res:', res, jsapiName, opt, forceFallback);
      if (!(res &amp;&amp; res.err_msg &amp;&amp; (res.err_msg.indexOf(':ok') !== -1 || res.err_msg.indexOf('cancel') !== -1)) &amp;&amp; canUsePrivateShare &amp;&amp; !forceFallback) {
        shareTimeline(opt, callback, true);
      } else {
        typeof callback === 'function' &amp;&amp; callback(res);
      }
    });
  }

  var e = {
      d: function d(t, r) {
        for (var i in r) e.o(r, i) &amp;&amp; !e.o(t, i) &amp;&amp; Object.defineProperty(t, i, {
          enumerable: !0,
          get: r[i]
        });
      },
      o: function o(e, t) {
        return Object.prototype.hasOwnProperty.call(e, t);
      }
    },
    t = {};
  e.d(t, {
    A: function A() {
      return s$1;
    },
    Q: function Q() {
      return a$2;
    }
  });
  var r$3 = function r(e, t) {
      var r = {};
      for (var i in e) Object.prototype.hasOwnProperty.call(e, i) &amp;&amp; t.indexOf(i) &lt; 0 &amp;&amp; (r[i] = e[i]);
      if (null != e &amp;&amp; "function" == typeof Object.getOwnPropertySymbols) {
        var n = 0;
        for (i = Object.getOwnPropertySymbols(e); n &lt; i.length; n++) t.indexOf(i[n]) &lt; 0 &amp;&amp; Object.prototype.propertyIsEnumerable.call(e, i[n]) &amp;&amp; (r[i[n]] = e[i[n]]);
      }
      return r;
    },
    i$1 = function i(e, t, r) {
      if (r || 2 === arguments.length) for (var i, n = 0, o = t.length; n &lt; o; n++) !i &amp;&amp; n in t || (i || (i = Array.prototype.slice.call(t, 0, n)), i[n] = t[n]);
      return e.concat(i || Array.prototype.slice.call(t));
    },
    n$1 = function n(e) {
      if ("object" == _typeof$3(e) &amp;&amp; e) return e;
      if ("string" == typeof e) try {
        return JSON.parse(e);
      } catch (e) {
        return;
      }
    },
    o = function o(e) {
      return 173 === e ? 95 : 166 === e ? 147 : [205, 207, 206].includes(e) ? 135 : 78;
    };
  function a$2(e) {
    var t,
      a,
      s = e.thirdExtParam,
      d = void 0 === s ? "" : s,
      m = e.kvItems,
      p = void 0 === m ? [] : m,
      l = e.sessionKvItems,
      c = void 0 === l ? [] : l,
      u = e.scene,
      x = void 0 === u ? -1 : u,
      y = (e.query, e.parentType),
      h = r$3(e, ["thirdExtParam", "kvItems", "sessionKvItems", "scene", "query", "parentType"]),
      g = {
        crossExtReqParams: [],
        sessionExtReqParams: [],
        originThirdExtParam: ""
      };
    try {
      if (console.warn("mpThirdExtParamToSearchExtParam init extReqParams:", g), !d) throw new Error("mpThirdExtParamToSearchExtParam thirdExtParam 不存在");
      var _ = JSON.parse(decodeURIComponent(d));
      if (_) {
        if (g.originThirdExtParam = JSON.stringify({
          s1sKeywordsData: null == _ ? void 0 : _.s1sKeywordsData,
          mp_bizuin_msgid_msgidx: null == _ ? void 0 : _.mp_bizuin_msgid_msgidx,
          mp_finger_search_query_pos: null == _ ? void 0 : _.mp_finger_search_query_pos
        }), null == _ ? void 0 : _.s1sKeywordsData) {
          var v = (_ || {}).s1sKeywordsData,
            P = void 0 === v ? {} : v,
            f = P.enterId,
            E = void 0 === f ? 0 : f,
            S = P.s1sContextInfo,
            q = void 0 === S ? "{}" : S,
            T = P.s1sStatInfo,
            I = void 0 === T ? "{}" : T,
            R = P.sessionId,
            O = void 0 === R ? "" : R,
            b = P.postype,
            C = n$1(decodeURIComponent(q)) || {},
            k = n$1(decodeURIComponent(I)) || {},
            w = k.bizuin,
            j = void 0 === w ? 0 : w,
            z = k.msgid,
            J = void 0 === z ? 0 : z,
            N = k.msgidx,
            V = void 0 === N ? 0 : N,
            A = C.mixerCommonContext,
            D = void 0 === A ? "" : A,
            U = (C.isNeedUpdateGPTInfo, C.S1SPageType);
          if ([2, 5].includes(void 0 === U ? 1 : U)) return {
            thirdExtParam: d
          };
          g.crossExtReqParams.push({
            key: "parentSearchID",
            textValue: [y || o(x), E || k.enterId, "", "".concat(j, "_").concat(J, "_").concat(V), encodeURIComponent(JSON.stringify({
              enterId: E || k.enterId,
              sessionId: O,
              s1sStatInfo: k,
              postype: b,
              mpBizuinMsgidMsgidx: (null == _ ? void 0 : _.mp_bizuin_msgid_msgidx) || "".concat(j, "_").concat(J, "_").concat(V),
              mpFingerSearchQueryPos: null == _ ? void 0 : _.mp_finger_search_query_pos,
              docid: null == h ? void 0 : h.docid
            }))].join(":").replace(/,/g, ";")
          }), D &amp;&amp; g.crossExtReqParams.push({
            key: "mixerCommonContext",
            textValue: D
          });
        } else g.crossExtReqParams.push({
          key: "parentSearchID",
          textValue: [y || o(x), 0, "", "", encodeURIComponent(JSON.stringify({
            mpBizuinMsgidMsgidx: null == _ ? void 0 : _.mp_bizuin_msgid_msgidx,
            mpFingerSearchQueryPos: null == _ ? void 0 : _.mp_finger_search_query_pos,
            docid: null == h ? void 0 : h.docid
          }))].join(":").replace(/,/g, ";")
        });
        (null == _ ? void 0 : _.mpSelectedContent) &amp;&amp; g.sessionExtReqParams.push({
          key: "mpSelectedContent",
          textValue: _.mpSelectedContent
        }), (null == _ ? void 0 : _.mpSelectActionType) &amp;&amp; g.sessionExtReqParams.push({
          key: "mpSelectActionType",
          textValue: String(_.mpSelectActionType)
        }), (null == _ ? void 0 : _.mp_bizuin_msgid_msgidx) &amp;&amp; g.sessionExtReqParams.push({
          key: "mpBizuinMsgidMsgidx",
          textValue: _.mp_bizuin_msgid_msgidx
        }), (null == _ ? void 0 : _.mp_finger_search_query_context) &amp;&amp; g.sessionExtReqParams.push({
          key: "mpFingerSearchQueryContext",
          textValue: _.mp_finger_search_query_context
        }), (null == _ ? void 0 : _.mp_finger_search_query_pos) &amp;&amp; g.sessionExtReqParams.push({
          key: "mpFingerSearchQueryPos",
          textValue: String(_.mp_finger_search_query_pos)
        }), !(null == _ ? void 0 : _.aiH5Link) &amp;&amp; !(null == _ ? void 0 : _.aiH5Title) || [206].includes(x) || g.sessionExtReqParams.push({
          key: "aiSearchUploadInfo",
          textValue: JSON.stringify({
            uploadFiles: [{
              fileType: 4,
              fileContentDetail: {
                mpContentDetail: {
                  title: null == _ ? void 0 : _.aiH5Title
                }
              },
              url: String(null == _ ? void 0 : _.aiH5Link)
            }],
            contentType: 4,
            allowedContentType: 4
          })
        });
      }
      return (null == p ? void 0 : p.length) &amp;&amp; (t = g.crossExtReqParams).push.apply(t, p), (null == c ? void 0 : c.length) &amp;&amp; (a = g.sessionExtReqParams).push.apply(a, c), h &amp;&amp; Object.keys(h).length &amp;&amp; (g.otherJsApiParams = h), console.warn("mpThirdExtParamToSearchExtParam extReqParams:", g), {
        thirdExtParam: encodeURIComponent(JSON.stringify(g)),
        extReqParams: JSON.stringify(i$1(i$1([], g.crossExtReqParams, !0), g.sessionExtReqParams, !0))
      };
    } catch (e) {
      return console.error("mpThirdExtParamToSearchExtParam err:", e), {
        thirdExtParam: d
      };
    }
  }
  var s$1 = {
    mpThirdExtParamToSearchExtParam: a$2
  };
  t.A;
    var m = t.Q;

  var pageHeight = utils.getInnerHeight();
  var pageWidth = utils.getInnerWidth();
  var g = {
    inWechat: MMVersion.isWechat,
    windowWechat: MMVersion.isWindowsWechat,
    macWechat: MMVersion.isMacWechat,
    emojiImg: '&lt;img src="https://res.wx.qq.com/mmbizappmsg/zh_CN/images/pic/pic_blank.gif" class="icon_emotion_single #style#" alt="#name#"&gt;',
    emojiDataMap: {}
  };
  function getParam(key) {
    if (!key) return null;
    var m = location.href.match(new RegExp("(\\?|&amp;)".concat(key, "=([^&amp;]+)")));
    return m ? m[2].split('#')[0] : null;
  }
  function getParams(loca) {
    var vars = [];
    var params = {};
    if (!loca) {
      try {
        loca = window.top.location;
        vars = loca.search.substring(1).split('&amp;');
      } catch (e) {
        loca = window.location;
        vars = loca.search.substring(1).split('&amp;');
      }
    }
    if (typeof loca === 'string') {
      loca = new URL(loca);
      vars = loca.search.substring(1).split('&amp;');
    }
    for (var i = 0; i &lt; vars.length; i++) {
      var pair = vars[i].split('=');
      var key = decodeURIComponent(pair.shift());
      if (typeof params[key] === 'undefined') {
        params[key] = decodeURIComponent(pair.join('='));
      }
    }
    return params;
  }
  function genUrl(host, params, hash) {
    if (typeof host !== 'string') {
      return '';
    }
    if (params &amp;&amp; _typeof$3(params) === 'object' &amp;&amp; Object.keys(params).length) {
      host += "?".concat(Object.keys(params).map(function (k) {
        return "".concat(k, "=").concat(encodeURIComponent(params[k]));
      }).join('&amp;'));
    }
    if (hash &amp;&amp; typeof hash === 'string') {
      host += "#".concat(hash);
    }
    return host;
  }
  var jumpUrl = function jumpUrl(url, newWin) {
    var opt = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : {};
    var _a, _b;
    var openUrlWithExtraWebview = function openUrlWithExtraWebview() {
      R$4.invoke('openUrlWithExtraWebview', {
        url: url,
        'openType': 1
      }, function (res) {
        var _a;
        if (((_a = res.err_msg) === null || _a === void 0 ? void 0 : _a.indexOf('ok')) === -1) {
          if (newWin === true) {
            window.parent.open(url);
          } else {
            window.parent.location.href = url;
          }
        }
      });
    };
    if (!g.inWechat) {
      if (newWin === true) {
        window.open(url);
      } else {
        location.href = url;
      }
    } else {
      R$4.invoke('openWebViewUseFastLoad', {
        url: url,
        item_show_type: (_b = (_a = opt.itemShowType) !== null &amp;&amp; _a !== void 0 ? _a : window.item_show_type * 1) !== null &amp;&amp; _b !== void 0 ? _b : 0,
        openType: 0,
        scene: 1
      }, function (res) {
        if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf('ok') === -1) {
          openUrlWithExtraWebview();
        }
      });
    }
  };
  var closeWin = function closeWin() {
    if (!g.inWechat || g.windowWechat || g.macWechat) {
      window.close();
    } else {
      R$4.invoke('closeWindow', function (res) {
        if (res.err_msg.indexOf('ok') == -1) {
          window.close();
        }
      });
    }
  };
  function setTwoTabHeight(id) {
    if (window.hasChannelTwoTab &amp;&amp; utils.isNewNativePage()) {
      var scrollHeight;
      scrollHeight = document.getElementById('tab').offsetTop - window.__minHeight;
      var bodyHeight = document.body.offsetHeight;
      var minMountHeight = pageHeight + scrollHeight;
      if (bodyHeight &lt; minMountHeight) {
        var emptyHeight = scrollHeight + pageHeight - document.body.offsetHeight;
        var emptyElement = document.createElement('div');
        emptyElement.setAttribute('class', 'empty_comment_element');
        emptyElement.style.cssText = "height: ".concat(emptyHeight, "px;");
        document.getElementById(id).appendChild(emptyElement);
      }
      window.minMountHeight = minMountHeight;
    }
  }
  var getId = function getId(id) {
    return document.getElementById(id);
  };
  
  var shareReport = function shareReport(shareSource) {
    var opt = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : {};
    if (shareSource === 'album') {
      var postData = {
        bizuin: window.biz,
        url: "".concat(opt.url),
        ActionType: opt.actionType * 1,
        Scene: window.source * 1,
        Network: "".concat(window.__networkType),
        AlbumId: "".concat(opt.albumId),
        AlbumType: opt.albumType * 1,
        ExpType: window.exptype || '',
        EnterId: window.enterid || '',
        SessionId: window.sessionid || '',
        ExpSessionIdStr: window.expsessionid || '',
        RecReqID: Url.getQuery('req_id') * 1 || 0
      };
      w$5.report(10380, postData, {
        success: function success(res) {
          if (res.err_code * 1 !== 0) {
            if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; window.WX_BJ_REPORT.BadJs) {
              window.WX_BJ_REPORT.BadJs.report('mmdata report failed', 'log_id: 10380', {
                mid: 'mmbizwap:album_Monitor',
                _info: {
                  postData: postData,
                  errCode: res.err_code,
                  errMsg: res.err_msg
                }
              });
            }
          }
        }
      });
    }
  };
  var getByClass = function getByClass(className, el) {
    return (el || document).getElementsByClassName(className);
  };
  var trim = function trim(str) {
    return "".concat(str || '').replace(/^\s+|\s+$/g, '');
  };
  var qs = function qs(selector, el) {
    return (el || document).querySelector(selector);
  };
  var qsAll = function qsAll(selector, el) {
    return (el || document).querySelectorAll(selector);
  };
  
  var changeURLArg = function changeURLArg(url, arg, argVal) {
    var pattern = new RegExp("".concat(arg, "=[^&amp;]*"), 'gi');
    var replaceText = "".concat(arg, "=").concat(argVal);
    if (pattern.test(url)) return url.replace(pattern, replaceText);
    return url.replace(/(#.*)?$/, "".concat(url.indexOf('?') &gt; -1 ? '&amp;' : '?').concat(replaceText, "$1"));
  };
  
  function getNetWorkType() {
    DomEvent.on(window, 'load', function () {
      if (!window.__networkType &amp;&amp; g.inWechat) {
        var nettypeMap = {
          'network_type:fail': 'fail',
          'network_type:edge': '2g/3g',
          'network_type:wwan': '2g/3g',
          'network_type:wifi': 'wifi'
        };
        R$4.invoke('getNetworkType', {}, function (res) {
          window.__networkType = nettypeMap[res.err_msg];
        });
      }
    }, false);
  }
  
  var sceneType = [1, 24, 2, 3, 43, 22, 23, 5];
  function shareMessage() {
    var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    var shareOpt = {
      appId: opt.appId,
      img_url: opt.img_url,
      img_width: opt.img_width,
      img_height: opt.img_height,
      link: opt.link.replace(/&lt;br\/&gt;/g, '\n'),
      desc: opt.desc.replace(/&lt;br\/&gt;/g, '\n'),
      title: opt.title
    };
    getNetWorkType();
    if (!/#wechat_redirect/.test(shareOpt.link)) {
      shareOpt.link += '#wechat_redirect';
    }
    var shareSource = '';
    var reportData = {
      url: shareOpt.link,
      actionType: 0
    };
    var shareReportCallback = shareReport;
    if (opt.isAlbum) {
      shareSource = 'album';
      shareOpt = Object.assign({
        album_id: opt.album_id,
        album_type: opt.album_type
      }, shareOpt);
      reportData = Object.assign({
        albumId: opt.album_id,
        albumType: opt.album_type
      }, reportData);
    } else if (typeof opt.shareReport === 'function') {
      shareReportCallback = function shareReportCallback(shareSource, reportData) {
        return opt.shareReport(reportData.actionType);
      };
    }
    R$4.on('menu:share:appmessage', function (argv) {
      var actionType;
      if (!!argv &amp;&amp; argv.scene === 'favorite') {
        actionType = 24;
        shareOpt.link = changeURLArg(shareOpt.link, 'scene', sceneType[1]);
      } else {
        actionType = 1;
        shareOpt.link = changeURLArg(shareOpt.link, 'scene', sceneType[0]);
      }
      if (typeof opt.beforeShare === 'function') {
        try {
          shareOpt = opt.beforeShare('menu:share:appmessage', shareOpt) || shareOpt;
        } catch (e) {
        }
      }
      reportData.url = shareOpt.link;
      reportData.actionType = actionType;
      shareReportCallback(shareSource, reportData);
      sendAppMessage(shareOpt);
    });
    R$4.on('menu:share:timeline', function () {
      shareOpt.link = changeURLArg(shareOpt.link, 'scene', sceneType[2]);
      reportData.url = shareOpt.link;
      reportData.actionType = 2;
      if (typeof opt.beforeShare === 'function') {
        try {
          shareOpt = opt.beforeShare('menu:share:timeline', shareOpt) || shareOpt;
        } catch (e) {
        }
      }
      shareReportCallback(shareSource, reportData);
      shareTimeline(shareOpt);
    });
    R$4.on('menu:share:weiboApp', function () {
      shareOpt.link = changeURLArg(shareOpt.link, 'scene', sceneType[3]);
      reportData.url = shareOpt.link;
      reportData.actionType = 3;
      if (typeof opt.beforeShare === 'function') {
        try {
          shareOpt = opt.beforeShare('menu:share:weiboApp', shareOpt) || shareOpt;
        } catch (e) {
        }
      }
      shareReportCallback(shareSource, reportData);
      R$4.invoke('shareWeiboApp', {
        img_url: shareOpt.img_url,
        link: shareOpt.link,
        title: shareOpt.title
      });
    });
    R$4.on('menu:share:facebook', function () {
      shareOpt.link = changeURLArg(shareOpt.link, 'scene', sceneType[4]);
      reportData.url = shareOpt.link;
      reportData.actionType = 7;
      if (typeof opt.beforeShare === 'function') {
        try {
          shareOpt = opt.beforeShare('menu:share:facebook', shareOpt) || shareOpt;
        } catch (e) {
        }
      }
      shareReportCallback(shareSource, reportData);
      R$4.invoke('shareFB', shareOpt);
    });
    R$4.on('menu:share:QZone', function () {
      shareOpt.link = changeURLArg(shareOpt.link, 'scene', sceneType[5]);
      reportData.url = shareOpt.link;
      reportData.actionType = 5;
      if (typeof opt.beforeShare === 'function') {
        try {
          shareOpt = opt.beforeShare('menu:share:QZone', shareOpt) || shareOpt;
        } catch (e) {
        }
      }
      shareReportCallback(shareSource, reportData);
      R$4.invoke('shareQZone', shareOpt);
    });
    R$4.on('menu:share:qq', function () {
      shareOpt.link = changeURLArg(shareOpt.link, 'scene', sceneType[6]);
      reportData.url = shareOpt.link;
      reportData.actionType = 5;
      if (typeof opt.beforeShare === 'function') {
        try {
          shareOpt = opt.beforeShare('menu:share:qq', shareOpt) || shareOpt;
        } catch (e) {
        }
      }
      shareReportCallback(shareSource, reportData);
      R$4.invoke('shareQQ', shareOpt);
    });
    R$4.on('menu:share:email', function () {
      shareOpt.link = changeURLArg(shareOpt.link, 'scene', sceneType[7]);
      reportData.url = shareOpt.link;
      reportData.actionType = 5;
      if (typeof opt.beforeShare === 'function') {
        try {
          shareOpt = opt.beforeShare('menu:share:email', shareOpt) || shareOpt;
        } catch (e) {
        }
      }
      shareReportCallback(shareSource, reportData);
      R$4.invoke('sendEmail', {
        content: shareOpt.link,
        title: shareOpt.title
      });
    });
  }
  function getQuery(strName) {
    var strHref = window.location.href;
    var intPos = strHref.indexOf('?');
    var strRight = strHref.substr(intPos + 1);
    var arrTmp = strRight.split('&amp;');
    for (var i = 0; i &lt; arrTmp.length; i++) {
      var arrTemp = arrTmp[i].split('=');
      if (arrTemp[0].toUpperCase() == strName.toUpperCase()) return arrTemp[1];
    }
    return '';
  }
  function goProfile() {
    var urlOpts = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    var jsapiInvokeOpts = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : {};
    var cb = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : function () {};
    var bizAccountStatus = arguments.length &gt; 3 ? arguments[3] : undefined;
    jsapiInvokeOpts.extra = JSON.stringify({
      pageItemShowType: window.item_show_type
    });
    var callProfileJSAPI = function callProfileJSAPI() {
      var _a, _b;
      if ((jsapiInvokeOpts.servicetype * 1 === 5 || ((_b = (_a = jsapiInvokeOpts.username) === null || _a === void 0 ? void 0 : _a.startsWith) === null || _b === void 0 ? void 0 : _b.call(_a, 'phacct_'))) &amp;&amp; !supportPhotoAccounts(false)) {
        if (photoAccountsEnableProfileExt()) {
          R$4.invoke('openUrlWithExtraWebview', {
            url: "https://mp.weixin.qq.com/mp/profile_ext?action=home&amp;__biz=".concat(urlOpts.biz, "#wechat_redirect"),
            openType: 1
          }, cb);
        } else {
          supportPhotoAccounts();
        }
        return;
      } else {
        R$4.invoke('profile', jsapiInvokeOpts, cb);
      }
    };
    if (MMVersion.isWxWork) {
      wxWorkJSAPI();
    } else if (MMVersion.isDonutAPP) {
      callProfileJSAPI();
    } else if (!MMVersion.isWechat) {
      window.weui.alert('请在微信内打开');
    } else if (bizAccountStatus === 1 || bizAccountStatus === 5) {
      openUrl$1.openUrlWithExtraWebview("https://mp.weixin.qq.com/mp/getprofiletransferpage?__biz=".concat(urlOpts.biz, "#wechat_redirect"));
    } else if (MMVersion.isWechat &amp;&amp; (MMVersion.isIOS || MMVersion.isAndroid || MMVersion.isHarmony || MMVersion.isWindows &amp;&amp; MMVersion.cpVersion('3.4.5', 1, true, 'windows') || MMVersion.isMacWechat &amp;&amp; MMVersion.cpVersion('3.5.0', 1, true, 'mac') || Device.os.unifiedPC)) {
      callProfileJSAPI();
    } else {
      location.href = "/mp/profile_ext?action=home&amp;__biz=".concat(urlOpts.biz, "&amp;scene=").concat(urlOpts.scene, "#wechat_redirect");
    }
  }
  function prepareNativePage(list, attr) {
    R$4.invoke('createWebViewForFastLoad', {
      scene: 1
    }, function (res) {
      list.forEach(function (item) {
        R$4.invoke('downloadPageDataForFastLoad', {
          itemList: [{
            item_show_type: 5,
            url: item[attr]
          }]
        }, function (res) {
          console.log(res);
        });
      });
    });
  }
  function debounce(func, wait) {
    var immediate = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    var timeout;
    return function () {
      var context = this;
      var args = arguments;
      var later = function later() {
        timeout = null;
        if (!immediate) func.apply(context, args);
      };
      var callNow = immediate &amp;&amp; !timeout;
      clearTimeout(timeout);
      timeout = setTimeout(later, wait);
      if (callNow) func.apply(context, args);
    };
  }
  function formatSeconds(value) {
    var second = parseInt(value, 10);
    var middle = 0;
    var hour = 0;
    if (second &gt; 60) {
      middle = parseInt(second / 60, 10);
      second = parseInt(second % 60, 10);
      if (middle &gt; 60) {
        hour = parseInt(middle / 60, 10);
        middle = parseInt(middle % 60, 10);
      }
    }
    if (second &lt; 10) {
      second = "0".concat(second);
    }
    var result = ":".concat(second);
    if (middle &gt; 0) {
      if (middle &lt; 10) {
        middle = "0".concat(middle);
      }
      result = middle + result;
    } else {
      result = "00".concat(result);
    }
    if (hour &gt; 0) {
      if (parseInt(hour, 10) === 0) {
        hour = '';
      } else {
        if (hour &lt; 10) {
          hour = "0".concat(hour);
        }
      }
      result = "".concat(hour, ":").concat(result);
    }
    return result;
  }
  function formatReadNum(value, showZero) {
    if (window.LANG === 'en') {
      return i18n.dealLikeReadShow_en(value, showZero);
    }
    var result = '';
    if (parseInt(value, 10) &gt; 100000) {
      result = 10 + '万+';
    } else if (parseInt(value, 10) &gt; 10000 &amp;&amp; parseInt(value, 10) &lt;= 100000) {
      var num = '' + parseInt(value, 10) / 10000;
      var dotIndex = num.indexOf('.');
      if (dotIndex === -1) {
        result = num + '万';
      } else {
        result = num.substr(0, dotIndex) + '.' + num.charAt(dotIndex + 1) + '万';
      }
    } else if (parseInt(value, 10) === 0) {
      result = showZero ? '0' : '';
    } else {
      result = value || '';
    }
    return result;
  }
  function throttle(fun, delay) {
    var last;
    var deferTimer;
    return function () {
      var that = this;
      var args = arguments;
      var now = +new Date();
      if (last &amp;&amp; now &lt; last + delay) {
        clearTimeout(deferTimer);
        deferTimer = setTimeout(function () {
          last = now;
          fun.apply(that, args);
        }, delay);
      } else {
        last = now;
        fun.apply(that, args);
      }
    };
  }
  function getScrollTop() {
    var scrollTop = 0;
    var bodyScrollTop = 0;
    var documentScrollTop = 0;
    if (document.body) {
      bodyScrollTop = document.body.scrollTop;
    }
    if (document.documentElement) {
      documentScrollTop = document.documentElement.scrollTop;
    }
    scrollTop = bodyScrollTop - documentScrollTop &gt; 0 ? bodyScrollTop : documentScrollTop;
    return scrollTop;
  }
  function getScrollHeight() {
    var scrollHeight = 0;
    var bSH;
    var dSH;
    if (document.body) {
      bSH = document.body.scrollHeight;
    }
    if (document.documentElement) {
      dSH = document.documentElement.scrollHeight;
    }
    scrollHeight = bSH - dSH &gt; 0 ? bSH : dSH;
    return scrollHeight;
  }
  function getWindowHeight() {
    var windowHeight = 0;
    if (document.compatMode === 'CSS1Compat') {
      windowHeight = document.documentElement.clientHeight;
    } else {
      windowHeight = document.body.clientHeight;
    }
    return windowHeight;
  }
  function openAllVideoPage() {
    var opts = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    var url = "".concat(location.origin, "/mp/profile_ext?action=home&amp;real_type=43&amp;__biz=").concat(opts.biz, "&amp;scene=").concat(opts.scene, "#wechat_redirect");
    jumpUrl(url, true);
  }
  function openAlbumPage() {
    var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    var url = "".concat(opt.albumLink.replace('#wechat_redirect', ''), "&amp;scene=").concat(opt.scene, "&amp;is_first_screen=1&amp;subscene=").concat(opt.subscene, "&amp;vid=").concat(opt.vid, "&amp;count=").concat(opt.pageCount ? opt.pageCount : 3, "&amp;from_msgid=").concat(opt.curMsgid ? opt.curMsgid : '', "&amp;from_itemidx=").concat(opt.curItemidx ? opt.curItemidx : '', "&amp;scenenote=").concat(opt.scenenote, "#wechat_redirect");
    jumpUrl(url, true);
  }
  function getElementTop(element) {
    return element.getBoundingClientRect().top;
  }
  function getElementHeight(element) {
    return element.getBoundingClientRect().height;
  }
  function isPageEnd() {
    return getScrollTop() + getWindowHeight() + 30 &gt;= getScrollHeight();
  }
  function getMoreVideoInfo(url, vid) {
    return "".concat(Url.getQuery('__biz', url), "_").concat(Url.getQuery('mid', url), "_").concat(Url.getQuery('idx', url), "_").concat(vid);
  }
  function formatAlbumnReadNum(readNum, magnitude) {
    var isEn = window.LANG === 'en';
    var unit = isEn ? 'k' : '万';
    var readNumWording = '';
    var magnit = magnitude * 10000;
    var magnitShow = isEn ? magnitude * 10 : magnitude;
    readNum = parseInt(readNum, 10);
    if (readNum &gt; magnit) {
      readNumWording = "".concat(magnitShow + unit, "+");
    } else if (readNum &gt;= 10000 &amp;&amp; readNum &lt;= magnit) {
      var num = "".concat(isEn ? readNum / 1000 : readNum / 10000);
      var dotIndex = num.indexOf('.');
      if (dotIndex === -1) {
        readNumWording = num + unit;
      } else {
        readNumWording = "".concat(num.substr(0, dotIndex), ".").concat(num.charAt(dotIndex + 1)).concat(unit);
      }
    } else {
      readNumWording = readNum;
    }
    return readNumWording || 0;
  }
  
  var checkExposedStatus = function checkExposedStatus(el) {
    var ratio = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 0.5;
    var direction = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : 'vertical';
    var container = arguments.length &gt; 3 &amp;&amp; arguments[3] !== undefined ? arguments[3] : window;
    if (!el) return false;
    var isExposed = false;
    var verticalRatio = 0;
    var horizontalRatio = 0;
    var checkVertical = false;
    var checkHorizontal = false;
    var containerWidth = container === container.window ? pageWidth : container.getBoundingClientRect().width;
    var containerHeight = container === container.window ? pageHeight : container.getBoundingClientRect().height;
    if (typeof ratio === 'number') {
      verticalRatio = ratio;
      horizontalRatio = ratio;
    } else {
      verticalRatio = ratio.vertical;
      horizontalRatio = ratio.horizontal;
    }
    switch (direction) {
      case 'vertical':
        checkVertical = true;
        break;
      case 'horizontal':
        checkHorizontal = true;
        break;
      case 'all':
        checkVertical = true;
        checkHorizontal = true;
        break;
    }
    var rect = el.getBoundingClientRect();
    if (checkVertical) {
      var offsetHeight = rect.height * verticalRatio;
      if (rect.bottom &gt; offsetHeight &amp;&amp; rect.top &lt; containerHeight - offsetHeight) {
        isExposed = true;
      }
    }
    if (!checkHorizontal) return isExposed;
    
    if (checkVertical &amp;&amp; !isExposed) return isExposed;
    
    var offsetWidth = rect.width * horizontalRatio;
    if (rect.right &gt; offsetWidth &amp;&amp; rect.left &lt; containerWidth - offsetWidth) {
      isExposed = true;
    } else {
      isExposed = false;
    }
    return isExposed;
  };
  var isParent = function isParent(el, parent) {
    while (el) {
      if (el === parent) return true;
      el = el.parentNode;
    }
    return false;
  };
  var goUrl = function goUrl(url) {
    var params = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : {};
    var type = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : 'webview';
    if (!url) return;
    if (!/^http/.test(url)) url = "".concat(location.protocol, "//").concat(location.host).concat(url);
    var paramsStr = (url.indexOf('?') === -1 ? '?' : '&amp;') + Object.keys(params).map(function (key) {
      return "".concat(key, "=").concat(params[key]);
    }).join('&amp;');
    var hashIdx = url.indexOf('#');
    if (hashIdx === -1) {
      url += "".concat(paramsStr, "#wechat_redirect");
    } else {
      url = url.slice(0, hashIdx) + paramsStr + url.slice(hashIdx);
    }
    switch (type) {
      case 'webview':
        if (navigator.userAgent.indexOf('MicroMessenger') !== -1 &amp;&amp; (MMVersion.isIOS || MMVersion.isAndroid || MMVersion.isWp)) {
          R$4.invoke('openUrlWithExtraWebview', {
            url: url,
            openType: 1
          }, function (res) {
            if (res.err_msg.indexOf('ok') === -1) {
              location.href = url;
            }
          });
        } else {
          window.open(url);
        }
        break;
      case 'href':
      default:
        location.href = url;
    }
  };
  var getUrlParamsMap = function getUrlParamsMap(url) {
    if (!url || !url.length) return {};
    var paramStart = url.indexOf('?');
    var paramMap = {};
    if (paramStart &gt; -1) {
      url.slice(paramStart + 1, url.indexOf('#') &gt; -1 ? url.indexOf('#') : undefined).split('&amp;').forEach(function (param) {
        if (param) {
          var valueStart = param.indexOf('=');
          if (valueStart &gt; -1) {
            paramMap[param.slice(0, valueStart)] = param.slice(valueStart + 1);
          } else {
            paramMap[param] = '';
          }
        }
      });
    }
    return paramMap;
  };
  
  var numFormat2Unit = function numFormat2Unit() {
    var num = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : 0;
    var radix = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 1;
    if (typeof num !== 'number' || typeof radix !== 'number') throw new Error("".concat(num, " and ").concat(radix, " should be a number."));
    var param = {
      value: 0,
      unit: ''
    };
    var limit = 10000;
    var units = ['', '万', '亿', '万亿'];
    var factor = 0;
    if (window.LANG === 'en') {
      limit = 1000;
      units = ['', 'k', 'm', 'b'];
    }
    if (num &lt; limit) {
      param.value = num;
      param.unit = '';
    } else {
      factor = Math.floor(Math.log(num) / Math.log(limit));
      param.value = (num / Math.pow(limit, factor)).toFixed(radix);
      param.unit = units[factor];
    }
    return param.value + param.unit;
  };
  var getDefaultFontSize = function getDefaultFontSize(parentElement) {
    parentElement = parentElement || document.body;
    var div = document.createElement('div');
    div.style.width = '1000em';
    parentElement.appendChild(div);
    var pixels = div.offsetWidth / 1000;
    parentElement.removeChild(div);
    return pixels;
  };
  var _ref = function () {
      var style = document.createElement('style');
      style.innerHTML = '*:not(input):not(textarea):not([contenteditable="true"]) { -webkit-touch-callout: none !important; -webkit-user-select: none !important; -khtml-user-select: none !important; -moz-user-select: none !important; -ms-user-select: none !important; user-select: none !important; }';
      return {
        enableSelect: function enableSelect() {
          document.head.contains(style) &amp;&amp; document.head.removeChild(style);
        },
        disableSelect: function disableSelect() {
          Log.log('disableSelect');
          document.head.appendChild(style);
        }
      };
    }(),
    enableSelect = _ref.enableSelect,
    disableSelect = _ref.disableSelect;
  var addZero = function addZero(v) {
    var size = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 2;
    for (var i = 0, len = size - "".concat(v).length; i &lt; len; i++) {
      v = "0".concat(v);
    }
    return "".concat(v);
  };
  
  var formatTimeToMinute = function formatTimeToMinute(createTime) {
    if (createTime.length === 10) {
      createTime *= 1000;
    }
    var date = new Date(+createTime);
    var hours = addZero(date.getHours());
    var minutes = addZero(date.getMinutes());
    return "".concat(hours, ":").concat(minutes);
  };
  function formatTime(timestamp) {
    var now = window.parseInt(Date.now() / 1000);
    var diff = now - timestamp;
    var wording = '';
    if (diff &lt; 2 * 60) {
      wording = '1分钟前';
    } else if (diff &lt; 60 * 60) {
      var t = window.parseInt(diff / 60);
      wording = t + '分钟前';
    } else if (diff &lt; 2 * 60 * 60) {
      wording = '1小时前';
    } else if (diff &lt; 24 * 60 * 60) {
      var _t = window.parseInt(diff / (60 * 60));
      wording = _t + '小时前';
    } else {
      var dayDiff = diff / (24 * 60 * 60);
      if (dayDiff &lt;= 1) {
        wording = '1天前';
      } else if (dayDiff &gt; 1) {
        var _t2 = window.parseInt(dayDiff);
        wording = _t2 + '天前';
      }
    }
    return wording;
  }
  
  function goSouyisou(jsapiOpt) {
    var type = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 'openWXSearchPage';
    var cb = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : function () {};
    jsapiOpt.thirdExtParam = Object.assign(jsapiOpt.thirdExtParam || {}, {
      mp_bizuin_msgid_msgidx: "".concat(atob(window.biz), "_").concat(window.mid, "_").concat(window.idx),
      aiH5Link: location.href,
      aiH5Title: window.msg_title
    });
    jsapiOpt.thirdExtParam = encodeURIComponent(JSON.stringify(jsapiOpt.thirdExtParam));
    Object.assign(jsapiOpt, m(jsapiOpt));
    if (MMVersion.isWechat) {
      R$4.invoke(type, jsapiOpt, cb);
    }
  }
  
  function searchWordToSouyisou(query, contextInfo, statInfo) {
    var options = arguments.length &gt; 3 &amp;&amp; arguments[3] !== undefined ? arguments[3] : {
      useHalfPage: false,
      halfPageParam: {},
      thirdExtParam: {}
    };
    var halfPageParam = options.halfPageParam || {};
    var useHalfPage = options.useHalfPage || false;
    var params = Object.assign(Object.assign({
      query: query
    }, halfPageParam), {
      thirdExtParam: Object.assign({
        s1sKeywordsData: Object.assign({
          s1sContextInfo: contextInfo,
          s1sStatInfo: statInfo
        }, options.postype !== undefined &amp;&amp; {
          postype: options.postype
        })
      }, options.thirdExtParam)
    });
    if (useHalfPage) {
      goSouyisou(params, 'openWXSearchHalfPage');
    } else {
      goSouyisou(params);
    }
  }
  
  var setPubTimeNew = function setPubTimeNew(svrTime, oriCreateTime) {
    var withoutZero = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    var oriTimestamp = oriCreateTime * 1;
    var dateObj = new Date(oriTimestamp * 1000);
    var now = new Date(svrTime * 1000);
    var padStart = function padStart(v) {
      return "0".concat(v).slice(-2);
    };
    var year = dateObj.getFullYear();
    var month = withoutZero ? dateObj.getMonth() + 1 : padStart(dateObj.getMonth() + 1);
    var date = withoutZero ? dateObj.getDate() : padStart(dateObj.getDate());
    var hour = padStart(dateObj.getHours());
    var minute = padStart(dateObj.getMinutes());
    var diffMs = now - dateObj;
    var diffMinutes = Math.floor(diffMs / (1000 * 60));
    var today = new Date(now);
    today.setHours(0, 0, 0, 0);
    var yesterday = new Date(today);
    yesterday.setDate(yesterday.getDate() - 1);
    var yearStart = new Date(now.getFullYear(), 0, 1);
    var showDate = '';
    if (dateObj &gt;= today) {
      if (diffMinutes &lt; 60) {
        if (diffMinutes === 0) {
          showDate = '刚刚';
        } else {
          showDate = "".concat(diffMinutes, "\u5206\u949F\u524D");
        }
      } else {
        showDate = "\u4ECA\u5929".concat(hour, ":").concat(minute);
      }
    } else if (dateObj &gt;= yesterday) {
      showDate = "\u6628\u5929".concat(hour, ":").concat(minute);
    } else if (dateObj &gt;= yearStart) {
      showDate = "".concat(parseInt(month, 10), "\u6708").concat(parseInt(date, 10), "\u65E5").concat(hour, ":").concat(minute);
    } else {
      showDate = "".concat(year, "\u5E74").concat(parseInt(month, 10), "\u6708").concat(parseInt(date, 10), "\u65E5").concat(hour, ":").concat(minute);
    }
    return showDate;
  };
  function formatDate(ts) {
    var now = new Date().getTime();
    var diff = now / 1000 - ts;
    var year = new Date().getFullYear();
    var sDate = new Date(ts * 1000);
    var res = '';
    if (diff &lt; 60) {
      res = "".concat(Math.floor(diff), "\u79D2\u524D");
    } else if (diff &lt; 60 * 60) {
      res = "".concat(Math.floor(diff / 60), "\u5206\u949F\u524D");
    } else if (diff &lt; 24 * 60 * 60) {
      res = "".concat(Math.floor(diff / 60 / 60), "\u5C0F\u65F6\u524D");
    } else if (diff &lt; 2 * 24 * 60 * 60) {
      res = '昨天';
    } else if (diff &lt; 24 * 60 * 60 * 7) {
      res = "".concat(Math.floor(diff / 24 / 60 / 60), "\u5929\u524D");
    } else if (sDate.getFullYear() === year) {
      res = "".concat(sDate.getMonth() + 1, "\u6708").concat(sDate.getDate(), "\u65E5");
    } else {
      res = "".concat(sDate.getFullYear(), "\u5E74").concat(sDate.getMonth() + 1, "\u6708").concat(sDate.getDate(), "\u65E5");
    }
    return res;
  }
  var calLanguageRatio = function calLanguageRatio(htmlContent) {
    var text = htmlContent.replace(/\s+/g, '');
    var chineseMatches = text.match(/[\u4e00-\u9fa5]/g) || [];
    var englishMatches = text.match(/[a-zA-Z]/g) || [];
    var chineseCount = chineseMatches.length;
    var englishCount = englishMatches.length;
    var ratio = englishCount / chineseCount;
    return ratio &gt; 1;
  };
  var A = {
    jumpUrl: jumpUrl,
    closeWin: closeWin,
    trim: trim,
    getId: getId,
    qs: qs,
    qsAll: qsAll,
    inWechat: g.inWechat,
    windowWechat: g.windowWechat,
    macWechat: g.macWechat,
    getParam: getParam,
    getParams: getParams,
    genUrl: genUrl,
    prepareNativePage: prepareNativePage,
    debounce: debounce,
    throttle: throttle,
    formatReadNum: formatReadNum,
    formatSeconds: formatSeconds,
    formatTimeToMinute: formatTimeToMinute,
    setTwoTabHeight: setTwoTabHeight,
    getByClass: getByClass,
    getScrollTop: getScrollTop,
    getScrollHeight: getScrollHeight,
    getWindowHeight: getWindowHeight,
    shareMessage: shareMessage,
    getElementTop: getElementTop,
    formatAlbumnReadNum: formatAlbumnReadNum,
    getElementHeight: getElementHeight,
    getQuery: getQuery,
    openAllVideoPage: openAllVideoPage,
    getNetWorkType: getNetWorkType,
    getMoreVideoInfo: getMoreVideoInfo,
    isPageEnd: isPageEnd,
    openAlbumPage: openAlbumPage,
    checkExposedStatus: checkExposedStatus,
    isParent: isParent,
    goUrl: goUrl,
    changeURLArg: changeURLArg,
    getUrlParamsMap: getUrlParamsMap,
    numFormat2Unit: numFormat2Unit,
    goProfile: goProfile,
    getDefaultFontSize: getDefaultFontSize,
    enableSelect: enableSelect,
    disableSelect: disableSelect,
    formatTime: formatTime,
    goSouyisou: goSouyisou,
    searchWordToSouyisou: searchWordToSouyisou,
    setPubTimeNew: setPubTimeNew,
    formatDate: formatDate,
    calLanguageRatio: calLanguageRatio
  };

  var html = function html(_str, encode) {
    var replace = ['&amp;#96;', '`', '&amp;#39;', '\'', '&amp;quot;', '"', '&amp;nbsp;', ' ', '&amp;gt;', '&gt;', '&amp;lt;', '&lt;', '&amp;yen;', '¥', '&amp;amp;', '&amp;', '&amp;#60;', '&lt;', '&amp;#62;', '&gt;'];
    
    var replaceReverse = ['&amp;', '&amp;amp;', '¥', '&amp;yen;', '&lt;', '&amp;lt;', '&gt;', '&amp;gt;', ' ', '&amp;nbsp;', '"', '&amp;quot;', '\'', '&amp;#39;', '`', '&amp;#96;'];
    var str = _str;
    var target;
    if (encode) {
      target = replaceReverse;
    } else {
      target = replace;
    }
    for (var i = 0; i &lt; target.length; i += 2) {
      str = str.replace(new RegExp(target[i], 'g'), target[i + 1]);
    }
    return str;
  };
  var htmlDecode = function htmlDecode(str) {
    return html(str, false);
  };

  function ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r &amp;&amp; (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
  function _objectSpread$2(e) { for (var r = 1; r &lt; arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) { defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
  var a$1 = {
    name: "mp-common-article",
    mixins: [k$1],
    props: {
      articleData: {
        type: Object,
        required: !0
      }
    },
    computed: {
      bizAttrName: function bizAttrName() {
        return getBizAttrName(this.articleData.service_type, this.platform);
      },
      articleUrl: function articleUrl() {
        return htmlDecode(this.articleData.content_url);
      }
    },
    mounted: function mounted() {
      R$4.invoke("downloadPageDataForFastLoad", {
        itemList: [{
          item_show_type: this.articleData.item_show_type,
          url: this.articleUrl
        }]
      }, function (E) {
        console.log("downloadPageDataForFastLoad", E);
      });
    },
    methods: {
      handleClick: function handleClick() {
        A.jumpUrl(this.articleUrl, !0, {
          itemShowType: this.articleData.item_show_type
        });
      }
    }
  };
  var F$2 = function F() {
      var e = this,
        i = e._self._c;
      return i("div", {
        ref: "js_custom_element",
        staticClass: "article-container wx-root wx_tap_card",
        on: {
          click: e.handleClick
        }
      }, [e.articleData.cover_url ? i("img", {
        staticClass: "article-cover",
        attrs: {
          src: e.articleData.cover_url
        }
      }) : e._e(), i("div", {
        staticClass: "article-header"
      }, [i("div", {
        staticClass: "article-title"
      }, [e._v(e._s(e.articleData.title))]), i("div", {
        staticClass: "article-author"
      }, [e._v(e._s(e.bizAttrName)), i("span", {
        staticStyle: {
          margin: "0 4px"
        }
      }, [e._v("·")]), e._v(e._s(e.articleData.nickname))])])]);
    },
    r$2 = [],
    T$1 = v$2(a$1, F$2, r$2, !1, null, "d9670aa0", null, null);
  var C$1 = T$1.exports,
    I$1 = "body,.wx-root{--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #07C160;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0: rgba(0, 0, 0, .9);--weui-FG-0_5: rgba(0, 0, 0, .9);--weui-FG-1: rgba(0, 0, 0, .55);--weui-FG-2: rgba(0, 0, 0, .3);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-GLYPH-0: rgba(0, 0, 0, .9);--weui-GLYPH-1: rgba(0, 0, 0, .55);--weui-GLYPH-2: rgba(0, 0, 0, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #91D300;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #1485EE;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #95EC69;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #FA9D3B;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6467F0;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #FA5151;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .05);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #FFC300;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-FG-HALF: rgba(0, 0, 0, .9);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #FA9D3B;--weui-YELLOW: #FFC300;--weui-GREEN: #91D300;--weui-LIGHTGREEN: #95EC69;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1485EE;--weui-PURPLE: #6467F0;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #FA9D3B;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #10AEFF;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05);--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-FG: #000;--weui-FG-5: rgba(0, 0, 0, .05);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG: #fff;--weui-BG: #000;--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6)}}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG: #fff;--weui-BG: #000;--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6)}.wx-root[data-weui-mode=care],body[data-weui-mode=care]{--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #007DBB;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #018942;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0: #000000;--weui-FG-0_5: #000000;--weui-FG-1: rgba(0, 0, 0, .6);--weui-FG-2: rgba(0, 0, 0, .42);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-GLYPH-0: #000000;--weui-GLYPH-1: rgba(0, 0, 0, .6);--weui-GLYPH-2: rgba(0, 0, 0, .42);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #4F8400;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #0075E2;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #2E8800;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #E17719;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #D14730;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6265F1;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #DC3636;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .1);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #BB8E00;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-FG-HALF: #000000;--weui-RED: #DC3636;--weui-ORANGERED: #D14730;--weui-ORANGE: #E17719;--weui-YELLOW: #BB8E00;--weui-GREEN: #4F8400;--weui-LIGHTGREEN: #2E8800;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #018942;--weui-BLUE: #007DBB;--weui-INDIGO: #0075E2;--weui-PURPLE: #6265F1;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #E17719;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #007DBB;--weui-REDORANGE: #D14730;--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-FG: #000;--weui-FG-5: rgba(0, 0, 0, .05);--weui-TAG-BACKGROUND-ORANGE: rgba(225, 119, 25, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(0, 125, 187, .1);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05)}@media (prefers-color-scheme: dark){.wx-root[data-weui-mode=care]:not([data-weui-theme=light]),body[data-weui-mode=care]:not([data-weui-theme=light]){--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-FG: #fff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-BG: #000;--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5)}}.wx-root[data-weui-mode=care][data-weui-theme=dark],body[data-weui-mode=care][data-weui-theme=dark]{--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-FG: #fff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-BG: #000;--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5)}.wx-root{position:relative;pointer-events:auto;font-family:system-ui,-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Hiragino Sans GB,Microsoft YaHei UI,Microsoft YaHei,Arial,sans-serif}.wx_card_root{position:relative}.wxw_hide{display:none!important}.wx_uninteractive{pointer-events:none}:host(.wx_tap_highlight_active) .wx_tap_link{opacity:.5}:host(.wx_tap_highlight_active) .wx_tap_card{background-color:#f3f3f3}:host(.wx_tap_highlight_active) .wx_tap_cell{background-color:#0000000d}@media (prefers-color-scheme: dark){:host(.wx_tap_highlight_active) .wx_tap_card{background-color:#252525}:host(.wx_tap_highlight_active) .wx_tap_cell{background-color:#ffffff1a}}.wx_css_active :active{opacity:.5}.wx-root,body{--weui-BG-A2: rgba(0, 0, 0, .02)}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-A2: rgba(255, 255, 255, .02)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-A2: rgba(255, 255, 255, .02)}}.article-container{display:flex;width:100%;box-sizing:border-box;padding:13px 12px;align-items:center;justify-content:space-between;background-color:var(--weui-BG-A2);border-radius:8px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.article-container .article-header{flex:1;width:200px;font-size:15px;color:var(--weui-FG-0);line-height:1.4}.article-container .article-title{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.article-container .article-author{margin-top:1px;font-size:14px;color:var(--weui-FG-2)}.article-container .article-cover{font-size:44px;width:1em;height:1em;border-radius:2px;margin-right:8px}\n",
    u = {
      articleData: "data-article-data"
    };
  function O$1(E) {
    var e = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : {};
    var i = o$6.call(this, u);
    return i.articleData = JSON.parse(i.articleData || "{}"), _objectSpread$2({
      platform: E,
      extraInfo: e
    }, i);
  }
  function c() {
    var E = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    H$3(Object.assign(E, {
      Component: C$1,
      styleText: E.isDev ? E.devStyleText : I$1,
      customName: E.customName || "mp-common-article",
      watchAttr: Object.values(u),
      getProps: O$1
    }));
  }

  var arrayLikeToArray = arrayLikeToArray$2;
  function _arrayWithoutHoles(arr) {
    if (Array.isArray(arr)) return arrayLikeToArray(arr);
  }
  var arrayWithoutHoles$1 = _arrayWithoutHoles;

  function _iterableToArray(iter) {
    if (typeof Symbol !== "undefined" &amp;&amp; Symbol.iterator in Object(iter)) return Array.from(iter);
  }
  var iterableToArray$1 = _iterableToArray;

  function _nonIterableSpread() {
    throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }
  var nonIterableSpread$1 = _nonIterableSpread;

  var arrayWithoutHoles = arrayWithoutHoles$1;
  var iterableToArray = iterableToArray$1;
  var unsupportedIterableToArray = unsupportedIterableToArray$2;
  var nonIterableSpread = nonIterableSpread$1;
  function _toConsumableArray(arr) {
    return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();
  }
  var toConsumableArray = _toConsumableArray;

  var r$1 = function r(e) {
    o__default["default"].config.silent || console.warn(e);
  };
  var i = {
    name: "intersect",
    "abstract": !0,
    props: {
      threshold: {
        type: Array,
        required: !1,
        "default": function _default() {
          return [0, 0.2];
        }
      },
      root: {
        type: (typeof HTMLElement === "undefined" ? "undefined" : _typeof$2(HTMLElement)) &lt; "u" ? HTMLElement : Object,
        required: !1,
        "default": function _default() {
          return null;
        }
      },
      rootMargin: {
        type: String,
        required: !1,
        "default": function _default() {
          return "0px 0px 0px 0px";
        }
      }
    },
    mounted: function mounted() {
      var e = this;
      this.observer = new IntersectionObserver(function (n) {
        n[0].isIntersecting ? e.$emit("enter", [n[0]]) : e.$emit("leave", [n[0]]), e.$emit("change", [n[0]]);
      }, {
        threshold: this.threshold,
        root: this.root,
        rootMargin: this.rootMargin
      }), this.$nextTick(function () {
        if (e.$slots["default"] &amp;&amp; e.$slots["default"].length &gt; 1) r$1("[VueIntersect] You may only wrap one element in a &lt;intersect&gt; component.");else if (!e.$slots["default"] || e.$slots["default"].length &lt; 1) {
          r$1("[VueIntersect] You must have one child inside a &lt;intersect&gt; component.");
          return;
        }
        e.observer.observe(e.$slots["default"][0].elm);
      });
    },
    destroyed: function destroyed() {
      this.$emit("destroyed"), this.observer.disconnect();
    },
    render: function render() {
      return this.$slots["default"] ? this.$slots["default"][0] : null;
    }
  };

  function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r &amp;&amp; (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
  function _objectSpread$1(e) { for (var r = 1; r &lt; arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
  var b$1 = {
    name: "mp-common-gameprofile",
    mixins: [k$1],
    components: {
      Intersect: i
    },
    props: {
      gameprofileData: {
        type: Object,
        required: !0
      }
    },
    data: function data() {
      return {
        isExposed: !1
      };
    },
    computed: {
      userTitleList: function userTitleList() {
        var e;
        var E = (e = this.gameprofileData) == null ? void 0 : e.user_title_list;
        return E != null &amp;&amp; E.length ? toConsumableArray(E).sort(function (i, u) {
          return i.text_color === "#CC9C00" &amp;&amp; u.text_color !== "#CC9C00" ? -1 : i.text_color !== "#CC9C00" &amp;&amp; u.text_color === "#CC9C00" ? 1 : 0;
        }) : [];
      }
    },
    methods: {
      onExposed: function onExposed() {
        var i, u, w, G;
        if (this.isExposed) return;
        console.log("gameprofile onExposed");
        var E = ((u = (i = this.gameprofileData) == null ? void 0 : i.jump_info) == null ? void 0 : u.appid) || "",
          e = ((G = (w = this.gameprofileData) == null ? void 0 : w.jump_info) == null ? void 0 : G.page) || "";
        w$5.report(36513, {
          optype: 1,
          style: 1,
          linktype: 4,
          game: "".concat(E, "_").concat(e)
        }), this.isExposed = !0;
      },
      handleClick: function handleClick() {
        var i, u, w, G, A, B, R, a, r, L, N;
        var E = ((u = (i = this.gameprofileData) == null ? void 0 : i.jump_info) == null ? void 0 : u.appid) || "",
          e = ((G = (w = this.gameprofileData) == null ? void 0 : w.jump_info) == null ? void 0 : G.page) || "";
        if (w$5.report(36513, {
          optype: 2,
          style: 1,
          linktype: 4,
          game: "".concat(E, "_").concat(e)
        }), Device.os.pc) {
          (A = window == null ? void 0 : window.weui) == null || A.alert("请使用移动端微信打开");
          return;
        }
        E &amp;&amp; R$4.invoke("openLiteApp", {
          appId: E,
          page: e,
          isTransparent: !1,
          query: {
            ssid: ((a = (R = (B = this.gameprofileData) == null ? void 0 : B.jump_info) == null ? void 0 : R.query) == null ? void 0 : a.ssid) || 0,
            username: ((N = (L = (r = this.gameprofileData) == null ? void 0 : r.jump_info) == null ? void 0 : L.query) == null ? void 0 : N.username) || ""
          }
        });
      }
    }
  };
  var l = function l() {
      var e = this,
        i = e._self._c;
      return i("Intersect", {
        attrs: {
          "root-margin": "0px 0px -40px 0px"
        },
        on: {
          enter: e.onExposed
        }
      }, [i("div", {
        ref: "js_custom_element",
        staticClass: "game-profile-card wx-root wx_tap_card",
        on: {
          click: e.handleClick
        }
      }, [i("div", {
        staticClass: "game-profile-content"
      }, [e.gameprofileData.user_info.head_img_url ? i("img", {
        staticClass: "game-profile-cover",
        attrs: {
          src: e.gameprofileData.user_info.head_img_url
        }
      }) : e._e(), i("div", {
        staticClass: "game-profile-info"
      }, [i("div", {
        staticClass: "game-profile-nickname"
      }, [e._v(e._s(e.gameprofileData.user_info.nick_name))]), e.userTitleList.length ? i("div", {
        staticClass: "game-profile-logos"
      }, e._l(e.userTitleList, function (u) {
        return i("div", {
          "class": ["game-profile-logo", u.text_color === "#CC9C00" ? "orange" : ""]
        }, [e._v(e._s(u.title))]);
      }), 0) : e._e()])]), i("div", {
        staticClass: "game-profile-footer"
      }, [e._v("游戏名片")])])]);
    },
    n = [],
    P = v$2(b$1, l, n, !1, null, "48c01721", null, null);
  var H = P.exports,
    s = "body,.wx-root{--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #07C160;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0: rgba(0, 0, 0, .9);--weui-FG-0_5: rgba(0, 0, 0, .9);--weui-FG-1: rgba(0, 0, 0, .55);--weui-FG-2: rgba(0, 0, 0, .3);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-GLYPH-0: rgba(0, 0, 0, .9);--weui-GLYPH-1: rgba(0, 0, 0, .55);--weui-GLYPH-2: rgba(0, 0, 0, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #91D300;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #1485EE;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #95EC69;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #FA9D3B;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6467F0;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #FA5151;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .05);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #FFC300;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-FG-HALF: rgba(0, 0, 0, .9);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #FA9D3B;--weui-YELLOW: #FFC300;--weui-GREEN: #91D300;--weui-LIGHTGREEN: #95EC69;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1485EE;--weui-PURPLE: #6467F0;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #FA9D3B;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #10AEFF;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05);--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-FG: #000;--weui-FG-5: rgba(0, 0, 0, .05);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG: #fff;--weui-BG: #000;--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6)}}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG: #fff;--weui-BG: #000;--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6)}.wx-root[data-weui-mode=care],body[data-weui-mode=care]{--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #007DBB;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #018942;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0: #000000;--weui-FG-0_5: #000000;--weui-FG-1: rgba(0, 0, 0, .6);--weui-FG-2: rgba(0, 0, 0, .42);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-GLYPH-0: #000000;--weui-GLYPH-1: rgba(0, 0, 0, .6);--weui-GLYPH-2: rgba(0, 0, 0, .42);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #4F8400;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #0075E2;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #2E8800;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #E17719;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #D14730;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6265F1;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #DC3636;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .1);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #BB8E00;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-FG-HALF: #000000;--weui-RED: #DC3636;--weui-ORANGERED: #D14730;--weui-ORANGE: #E17719;--weui-YELLOW: #BB8E00;--weui-GREEN: #4F8400;--weui-LIGHTGREEN: #2E8800;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #018942;--weui-BLUE: #007DBB;--weui-INDIGO: #0075E2;--weui-PURPLE: #6265F1;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #E17719;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #007DBB;--weui-REDORANGE: #D14730;--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-FG: #000;--weui-FG-5: rgba(0, 0, 0, .05);--weui-TAG-BACKGROUND-ORANGE: rgba(225, 119, 25, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(0, 125, 187, .1);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05)}@media (prefers-color-scheme: dark){.wx-root[data-weui-mode=care]:not([data-weui-theme=light]),body[data-weui-mode=care]:not([data-weui-theme=light]){--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-FG: #fff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-BG: #000;--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5)}}.wx-root[data-weui-mode=care][data-weui-theme=dark],body[data-weui-mode=care][data-weui-theme=dark]{--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-FG: #fff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-BG: #000;--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5)}.wx-root{position:relative;pointer-events:auto;font-family:system-ui,-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Hiragino Sans GB,Microsoft YaHei UI,Microsoft YaHei,Arial,sans-serif}.wx_card_root{position:relative}.wxw_hide{display:none!important}.wx_uninteractive{pointer-events:none}:host(.wx_tap_highlight_active) .wx_tap_link{opacity:.5}:host(.wx_tap_highlight_active) .wx_tap_card{background-color:#f3f3f3}:host(.wx_tap_highlight_active) .wx_tap_cell{background-color:#0000000d}@media (prefers-color-scheme: dark){:host(.wx_tap_highlight_active) .wx_tap_card{background-color:#252525}:host(.wx_tap_highlight_active) .wx_tap_cell{background-color:#ffffff1a}}.wx_css_active :active{opacity:.5}.game-profile-card{display:flex;flex-direction:column;width:100%;box-sizing:border-box;padding:12px 12px 8px;background-color:#00000005;border-radius:8px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.game-profile-card .game-profile-content{width:100%;display:flex;flex-direction:row;align-items:center;overflow:hidden}.game-profile-card .game-profile-content .game-profile-cover{flex-shrink:0;font-size:44px;margin-right:10px;width:1em;height:1em;border:.5px solid var(--weui-SECONDARY-BG);border-radius:50%}.game-profile-card .game-profile-content .game-profile-info{display:flex;flex-direction:column;overflow:hidden}.game-profile-card .game-profile-content .game-profile-info .game-profile-nickname{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:15px;line-height:1.4;color:var(--weui-FG-0)}.game-profile-card .game-profile-content .game-profile-info .game-profile-logos{margin-top:1px;font-size:14px;line-height:1.4;color:var(--weui-FG-2);height:1.4em}.game-profile-card .game-profile-content .game-profile-info .game-profile-logos .game-profile-logo{display:inline-block;margin-right:8px;flex-shrink:0}.game-profile-card .game-profile-content .game-profile-info .game-profile-logos .game-profile-logo.orange{color:var(--weui-ORANGE)}.game-profile-card .game-profile-content .game-profile-info .game-profile-logos .game-profile-logo:last-child{margin-right:0}.game-profile-card .game-profile-footer{margin-top:10px;font-size:14px;line-height:1.4;color:var(--weui-FG-2)}@media (prefers-color-scheme: dark){.game-profile-card{background-color:#ffffff05}}\n",
    F$1 = {
      gameprofileData: "data-gameprofile-data"
    };
  function p(E) {
    var e = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : {};
    var i = o$6.call(this, F$1);
    return i.gameprofileData = JSON.parse(i.gameprofileData || "{}"), _objectSpread$1({
      platform: E,
      extraInfo: e
    }, i);
  }
  function K() {
    var E = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    H$3(Object.assign(E, {
      Component: H,
      styleText: E.isDev ? E.devStyleText : s,
      customName: E.customName || "mp-common-gameprofile",
      watchAttr: Object.values(F$1),
      getProps: p
    }));
  }

  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r &amp;&amp; (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
  function _objectSpread(e) { for (var r = 1; r &lt; arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
  var F = {
      name: "mp-common-read",
      mixins: [k$1],
      props: {
        readData: {
          type: Object,
          required: !0
        }
      },
      components: {
        Intersect: i
      },
      data: function data() {
        return {
          isExposed: !1
        };
      },
      methods: {
        onExposed: function onExposed() {
          var e;
          if (this.isExposed) return;
          var i = ((e = this.readData) == null ? void 0 : e.book_id) || "";
          console.log("read onExposed", i), w$5.report(36513, {
            optype: 1,
            style: 1,
            linktype: 5,
            weread: i
          }), this.isExposed = !0;
        },
        handleClick: function handleClick() {
          var E, u;
          var i = ((E = this.readData) == null ? void 0 : E.url) + "&amp;wtype=mpArticle" || "",
            e = ((u = this.readData) == null ? void 0 : u.book_id) || "";
          w$5.report(36513, {
            optype: 2,
            style: 1,
            linktype: 5,
            weread: e
          }), i &amp;&amp; R$4.invoke("openUrlWithExtraWebview", {
            url: i.htmlDecode(),
            openType: 1
          });
        }
      }
    },
    a = F;
  var r = function r() {
      var e = this,
        E = e._self._c;
      return e._self._setupProxy, E("Intersect", {
        attrs: {
          "root-margin": "0px 0px -40px 0px"
        },
        on: {
          enter: e.onExposed
        }
      }, [E("div", {
        ref: "js_custom_element",
        staticClass: "read-card wx-root wx_tap_card",
        on: {
          click: e.handleClick
        }
      }, [e.readData.cover ? E("img", {
        staticClass: "read-books-image",
        attrs: {
          src: e.readData.cover
        }
      }) : e._e(), E("div", {
        staticClass: "read-books-caption"
      }, [E("div", {
        staticClass: "read-books-nickname"
      }, [e._v(e._s(e.readData.title))]), E("div", {
        staticClass: "read-books-label"
      }, [e._v("微信读书 · " + e._s(e.readData.author))])])])]);
    },
    T = [],
    C = v$2(a, r, T, !1, null, "e3752426", null, null);
  var I = C.exports,
    O = "body,.wx-root{--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #07C160;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0: rgba(0, 0, 0, .9);--weui-FG-0_5: rgba(0, 0, 0, .9);--weui-FG-1: rgba(0, 0, 0, .55);--weui-FG-2: rgba(0, 0, 0, .3);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-GLYPH-0: rgba(0, 0, 0, .9);--weui-GLYPH-1: rgba(0, 0, 0, .55);--weui-GLYPH-2: rgba(0, 0, 0, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #91D300;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #1485EE;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #95EC69;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #FA9D3B;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6467F0;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #FA5151;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .05);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #FFC300;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-FG-HALF: rgba(0, 0, 0, .9);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #FA9D3B;--weui-YELLOW: #FFC300;--weui-GREEN: #91D300;--weui-LIGHTGREEN: #95EC69;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1485EE;--weui-PURPLE: #6467F0;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #FA9D3B;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #10AEFF;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05);--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-FG: #000;--weui-FG-5: rgba(0, 0, 0, .05);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG: #fff;--weui-BG: #000;--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6)}}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG: #fff;--weui-BG: #000;--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6)}.wx-root[data-weui-mode=care],body[data-weui-mode=care]{--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #007DBB;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #018942;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0: #000000;--weui-FG-0_5: #000000;--weui-FG-1: rgba(0, 0, 0, .6);--weui-FG-2: rgba(0, 0, 0, .42);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-GLYPH-0: #000000;--weui-GLYPH-1: rgba(0, 0, 0, .6);--weui-GLYPH-2: rgba(0, 0, 0, .42);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #4F8400;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #0075E2;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #2E8800;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #E17719;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #D14730;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6265F1;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #DC3636;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .1);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #BB8E00;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-FG-HALF: #000000;--weui-RED: #DC3636;--weui-ORANGERED: #D14730;--weui-ORANGE: #E17719;--weui-YELLOW: #BB8E00;--weui-GREEN: #4F8400;--weui-LIGHTGREEN: #2E8800;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #018942;--weui-BLUE: #007DBB;--weui-INDIGO: #0075E2;--weui-PURPLE: #6265F1;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #E17719;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #007DBB;--weui-REDORANGE: #D14730;--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-FG: #000;--weui-FG-5: rgba(0, 0, 0, .05);--weui-TAG-BACKGROUND-ORANGE: rgba(225, 119, 25, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(0, 125, 187, .1);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05)}@media (prefers-color-scheme: dark){.wx-root[data-weui-mode=care]:not([data-weui-theme=light]),body[data-weui-mode=care]:not([data-weui-theme=light]){--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-FG: #fff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-BG: #000;--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5)}}.wx-root[data-weui-mode=care][data-weui-theme=dark],body[data-weui-mode=care][data-weui-theme=dark]{--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-FG: #fff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-BG: #000;--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5)}.wx-root{position:relative;pointer-events:auto;font-family:system-ui,-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Hiragino Sans GB,Microsoft YaHei UI,Microsoft YaHei,Arial,sans-serif}.wx_card_root{position:relative}.wxw_hide{display:none!important}.wx_uninteractive{pointer-events:none}:host(.wx_tap_highlight_active) .wx_tap_link{opacity:.5}:host(.wx_tap_highlight_active) .wx_tap_card{background-color:#f3f3f3}:host(.wx_tap_highlight_active) .wx_tap_cell{background-color:#0000000d}@media (prefers-color-scheme: dark){:host(.wx_tap_highlight_active) .wx_tap_card{background-color:#252525}:host(.wx_tap_highlight_active) .wx_tap_cell{background-color:#ffffff1a}}.wx_css_active :active{opacity:.5}.read-card{padding:12px;border-radius:8px;background-color:#00000005;display:flex;align-items:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.read-card .read-books-image{font-size:10px;width:4.4em;height:5.6em;border:.5px solid var(--weui-SEPARATOR-0);border-radius:2px}.read-card .read-books-caption{width:100%;flex:1;overflow:hidden;margin-left:10px;line-height:1.4;font-size:15px;color:var(--weui-FG-0);box-sizing:border-box}.read-card .read-books-nickname{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.read-card .read-books-label{font-size:14px;margin-top:2px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--weui-FG-2)}@media (prefers-color-scheme: dark){.read-card{background-color:#ffffff05}}\n",
    G = {
      readData: "data-read-data"
    };
  function b(i) {
    var e = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : {};
    var E = o$6.call(this, G);
    return E.readData = JSON.parse(E.readData || "{}"), _objectSpread({
      platform: i,
      extraInfo: e
    }, E);
  }
  function d() {
    var i = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    H$3(Object.assign(i, {
      Component: I,
      styleText: i.isDev ? i.devStyleText : O,
      customName: i.customName || "mp-common-read",
      watchAttr: Object.values(G),
      getProps: b
    }));
  }

  var isWp = MMVersion.isWp,
    isIOS = MMVersion.isIOS,
    isAndroid = MMVersion.isAndroid,
    isInMiniProgram = MMVersion.isInMiniProgram,
    isWechat = MMVersion.isWechat,
    isMac = MMVersion.isMac,
    isWindows = MMVersion.isWindows,
    isMacWechat = MMVersion.isMacWechat,
    isWindowsWechat = MMVersion.isWindowsWechat,
    isWxWork = MMVersion.isWxWork,
    isMpapp = MMVersion.isMpapp,
    isIPad = MMVersion.isIPad;
  var commonCompOpts = {
    platform: 'wechat',
    extraInfo: {
      system: {
        isWp: isWp,
        isIOS: isIOS,
        isAndroid: isAndroid,
        isInMiniProgram: isInMiniProgram,
        isWechat: isWechat,
        isMac: isMac,
        isWindows: isWindows,
        isMacWechat: isMacWechat,
        isWindowsWechat: isWindowsWechat,
        isWxWork: isWxWork,
        isMpapp: isMpapp,
        isIPad: isIPad
      },
      device: Device.os
    },
    beforeRender: function beforeRender(data) {
      pageClsCtrl.renderCompSilentlyPreHandler(data);
    },
    afterRender: function afterRender(data) {
      pageClsCtrl.renderCompSilently(data);
    }
  };
  var allRegisterdTags = [];
  function initOpts() {
    var opts = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    if (opts.selector) {
      var selectors = opts.selector.split(',');
      allRegisterdTags.push.apply(allRegisterdTags, _toConsumableArray$1(selectors));
    }
    return Object.assign(opts, commonCompOpts);
  }
  if (!customElements.get('mp-common-product')) {
    ft(initOpts({
      reflowProps: ['customstyle']
    }));
  }
  if (!customElements.get('mp-common-redpacket')) {
    b$4(initOpts({
      selector: 'mp-common-redpacket'
    }));
  }
  if (!customElements.get('mp-common-bluepacket')) {
    Y(initOpts({
      selector: 'mp-common-bluepacket'
    }));
  }
  if (!customElements.get('mp-common-blockquote')) {
    c$3(initOpts({
      selector: 'mp-common-blockquote'
    }));
  }
  if (!customElements.get('mp-common-shopprofile')) {
    aA(initOpts({
      selector: 'mp-common-shopprofile'
    }));
  }
  if (!customElements.get('mp-common-shoptag')) {
    Ze(initOpts({
      selector: 'mp-common-shoptag'
    }));
  }
  if (!customElements.get('mp-common-article')) {
    c(initOpts({
      selector: 'mp-common-article'
    }));
  }
  if (!customElements.get('mp-common-miniprogram')) {
    h(initOpts({
      selector: 'mp-common-miniprogram'
    }));
  }
  if (!customElements.get('mp-common-read')) {
    d(initOpts({
      selector: 'mp-common-read'
    }));
  }
  if (!customElements.get('mp-common-gameprofile')) {
    K(initOpts({
      selector: 'mp-common-gameprofile'
    }));
  }

  if (window.__listenMobileClick__) {
    window.__listenMobileClick__(allRegisterdTags);
  } else {
    window.__listenMobileClick__task__ = window.__listenMobileClick__task__ || [];
    window.__listenMobileClick__task__.push(allRegisterdTags);
  }

  function AppmsgInline(data, tempContent) {
    setImmersiveMode(data.item_show_type);
    setRowImmersiveMode(data.item_show_type);
    __setIpWording(data.ip_wording, data.user_info, data.item_show_type);
    __setTitleModify(data.is_title_modified);
    __setTitle(data.title, +data.item_show_type);
    __setNovelCard(data.appmsgalbuminfo, data.user_info, parseInt(data.user_uin || '0', 10));
    setProfileName();
    setMaskNode(data, tempContent);
  }
  if (!window.__second_open__) {
    AppmsgInline(window.cgiDataNew, document.getElementById('js_content'));
  }

  exports.AppmsgInline = AppmsgInline;

  Object.defineProperty(exports, '__esModule', { value: true });

  return exports;

})({}, Vue);
  &lt;/script&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   var __INLINE_SCRIPT__ = (function () {
    'use strict';

    var _Speed = {};
    var _userDefine;
    var _imgurl = 'https://badjs.weixinbridge.com/frontend/reportspeed?';
    function saveSpeeds$1(obj) {
      if (!obj.pid || !obj.speeds) {
        return -1;
      }
      if (!Array.isArray(obj.speeds)) {
        obj.speeds = [obj.speeds];
      }
      if (obj.user_define) {
        _userDefine = obj.user_define;
      }
      var pid_uin_rid = _conbinUPRid(obj);
      for (var i = 0; i &lt; obj.speeds.length; i++) {
        var os = obj.speeds[i];
        os.time = Math.floor(+os.time);
        if (os.sid &gt; 20 &amp;&amp; os.time &gt;= 0) _setSidTime(pid_uin_rid, os.sid, os.time);
      }
    }
    function send$1() {
      _doFunc(function () {
        setTimeout(function () {
          for (var item in _Speed) {
            _get({
              pid_uin_rid: item,
              speeds: _Speed[item],
              user_define: _userDefine
            }, _imgurl);
          }
          _Speed = {};
        }, 100);
      });
    }
    function setFirstViewTime(obj) {
      _doFunc(function () {
        if (!obj.pid || !obj.time) return -1;
        var pid_uin_rid = _conbinUPRid(obj);
        _setSidTime(pid_uin_rid, 9, obj.time);
      });
    }
    function setBasicTime$1(obj) {
      _doFunc(function () {
        var pid_uin_rid = _conbinUPRid(obj);
        if (!_Speed[pid_uin_rid]) _Speed[pid_uin_rid] = [];
        var performance = window.performance || window.msPerformance || window.webkitPerformance || {};
        if (!!performance &amp;&amp; !!performance.timing) {
          var timing = performance.timing || {};
          _setSidTime(pid_uin_rid, 1, timing.domainLookupEnd - timing.domainLookupStart);
          _setSidTime(pid_uin_rid, 2, location.protocol == "https:" &amp;&amp; timing.secureConnectionStart != 0 ? timing.connectEnd - timing.secureConnectionStart : 0);
          _setSidTime(pid_uin_rid, 3, timing.connectEnd - timing.connectStart);
          _setSidTime(pid_uin_rid, 4, timing.responseStart - timing.requestStart);
          _setSidTime(pid_uin_rid, 5, timing.responseEnd - timing.responseStart);
          _setSidTime(pid_uin_rid, 6, timing.domContentLoadedEventStart - timing.domLoading);
          _setSidTime(pid_uin_rid, 7, timing.domComplete == 0 ? 0 : timing.domComplete - timing.domLoading);
          _setSidTime(pid_uin_rid, 8, timing.loadEventEnd == 0 ? 0 : timing.loadEventEnd - timing.loadEventStart);
          (function (_Speed) {
            setTimeout(function () {
              if (timing.loadEventEnd) {
                _setSidTime(pid_uin_rid, 7, timing.domComplete == 0 ? 0 : timing.domComplete - timing.domLoading);
                _setSidTime(pid_uin_rid, 8, timing.loadEventEnd == 0 ? 0 : timing.loadEventEnd - timing.loadEventStart);
              }
            }, 0);
          })();
          if (!_Speed[pid_uin_rid][9])
            _setSidTime(pid_uin_rid, 9, timing.domContentLoadedEventStart - timing.navigationStart);
          _setSidTime(pid_uin_rid, 10, timing.redirectEnd - timing.redirectStart);
          _setSidTime(pid_uin_rid, 11, timing.domainLookupStart - timing.fetchStart);
          _setSidTime(pid_uin_rid, 12, timing.domLoading - timing.responseStart);
        }
      });
    }
    function _setSidTime(pid_uin_rid, sid, time) {
      _Speed[pid_uin_rid] = _Speed[pid_uin_rid] || [];
      _Speed[pid_uin_rid][sid] = _Speed[pid_uin_rid][sid] || [];
      if (time &lt; 0) return;
      if (sid &lt; 21) _Speed[pid_uin_rid][sid][0] = time;else _Speed[pid_uin_rid][sid].push(time);
    }
    function _conbinUPRid(obj) {
      if (!obj || !obj.pid) {
        console &amp;&amp; console.error('Must provide a pid');
        return '';
      }
      return "".concat(obj.pid, "_").concat(obj.uin || 0, "_").concat(obj.rid || 0);
    }
    function _get(obj, url) {
      var apur = obj.pid_uin_rid.split('_');
      var spur = '';
      if (apur.length == 3) {
        spur = "pid=".concat(apur[0], "&amp;uin=").concat(apur[1], "&amp;rid=").concat(apur[2]);
      } else {
        console &amp;&amp; console.error('pid,uin,rid, invalid args');
        return;
      }
      if (obj.user_define) {
        spur += "&amp;user_define=".concat(obj.user_define);
      }
      var url1 = "".concat(url + spur, "&amp;speeds=");
      var url2 = '';
      var urlarr = [];
      for (var i = 1; i &lt; obj.speeds.length; i++) {
        if (obj.speeds[i]) {
          for (var j = 0; j &lt; obj.speeds[i].length; j++) {
            var s = "".concat(i, "_").concat(obj.speeds[i][j]);
            if (url1.length + url2.length + s.length &lt; 1024) {
              url2 = "".concat(url2 + s, ";");
            } else {
              if (url2.length)
                urlarr.push(url1 + url2.substring(0, url2.length - 1));
              url2 = "".concat(s, ";");
            }
          }
          if (i == obj.speeds.length - 1) {
            urlarr.push(url1 + url2.substring(0, url2.length - 1));
          }
        }
      }
      for (var _i = 0; _i &lt; urlarr.length; _i++) {
        new Image().src = urlarr[_i];
      }
    }
    var cblist = [];
    function _doFunc(fnc) {
      if (document.readyState == "complete") {
        fnc();
      } else {
        cblist.push(fnc);
      }
    }
    window.addEventListener('load', onLoad, false);
    function onLoad() {
      for (var i = 0; i &lt; cblist.length; i++) {
        cblist[i]();
      }
      cblist = [];
    }
    var wxgsdk = {
      saveSpeeds: saveSpeeds$1,
      send: send$1,
      setFirstViewTime: setFirstViewTime,
      setBasicTime: setBasicTime$1
    };

    
    
    var reportLogs = [];
    var reportExtraLogs = [];
    var sendUrl = '/mp/jsmonitor?#wechat_redirect';
    var monitor = {};
    monitor._reportOptions = {
      idkey: {}
    };
    function ObjWithoutProperty(source, exclude) {
      if (source === null) return {};
      var target = {};
      var sourceKeys = Object.keys(source);
      for (var i = 0; i &lt; sourceKeys.length; i++) {
        var key = sourceKeys[i];
        if (exclude.indexOf(key) &gt;= 0) continue;
        target[key] = source[key];
      }
      return target;
    }
    function formatDataToString(data) {
      var reportData = [];
      for (var key in data) {
        if (Object.prototype.hasOwnProperty.call(data, key)) {
          reportData.push(key + '=' + encodeURIComponent(data[key]));
        }
      }
      return reportData.join('&amp;');
    }
    monitor.getReportData = function (opt) {
      opt = opt || {};
      var idkey = monitor._reportOptions.idkey || {};
      var key = null;
      var reportData = {};
      var nextKey;
      try {
        for (key in idkey) {
          if (Object.prototype.hasOwnProperty.call(idkey, key) &amp;&amp; idkey[key]) {
            reportLogs.push(key + '_' + idkey[key]);
          }
        }
      } catch (e) {
        return false;
      }
      if (reportLogs.length === 0) {
        return false;
      }
      if (reportExtraLogs.length) {
        reportData.lc = reportExtraLogs.length;
        reportExtraLogs.forEach(function (extraLog, index) {
          reportData["log".concat(index)] = extraLog;
        });
      }
      try {
        var reportOptions = monitor._reportOptions;
        if (reportOptions !== null &amp;&amp; reportOptions !== undefined) {
          for (nextKey in reportOptions) {
            if (Object.prototype.hasOwnProperty.call(reportOptions, nextKey)) {
              reportData[nextKey] = reportOptions[nextKey];
            }
          }
        }
      } catch (e) {
        reportData = {};
      }
      reportData.idkey = reportLogs.join(';');
      reportData.t = Math.random();
      if (opt.remove !== false) {
        reportLogs = [];
        reportExtraLogs = [];
        monitor._reportOptions = {
          idkey: {}
        };
      }
      return reportData;
    };
    monitor.setLogs = function (opt) {
      var id = opt.id;
      var key = opt.key;
      var value = opt.value;
      var extraLog = opt.log;
      var others = ObjWithoutProperty(opt, ['id', 'key', 'value', 'log']);
      var idkey = monitor._reportOptions.idkey || {};
      var param = id + '_' + key;
      if (idkey[param]) {
        idkey[param] += value;
      } else {
        idkey[param] = value;
      }
      monitor._reportOptions.idkey = idkey;
      if (extraLog) {
        reportExtraLogs.push(extraLog);
      }
      try {
        if (others !== null &amp;&amp; others !== undefined) {
          for (var otherKey in others) {
            if (Object.prototype.hasOwnProperty.call(others, otherKey)) {
              monitor._reportOptions[otherKey] = others[otherKey];
            }
          }
        }
      } catch (e) {
        console.log(e);
      }
      return monitor;
    };
    monitor.setAvg = function (id, key, value) {
      var idkey = monitor._reportOptions.idkey || {};
      var param1 = id + '_' + key;
      var param2 = id + '_' + (key - 1);
      if (idkey[param1]) {
        idkey[param1] += value;
      } else {
        idkey[param1] = value;
      }
      if (idkey[param2]) {
        idkey[param2] += 1;
      } else {
        idkey[param2] = 1;
      }
      monitor._reportOptions.idkey = idkey;
      return monitor;
    };
    monitor.setSum = function (id, key) {
      var value = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : 1;
      var idkey = monitor._reportOptions.idkey;
      var param = id + '_' + key;
      if (idkey[param]) {
        idkey[param] += value;
      } else {
        idkey[param] = value;
      }
      monitor._reportOptions.idkey = idkey;
      return monitor;
    };
    monitor.send = function (async, ajax, origin) {
      if (async !== false) {
        async = true;
      }
      var data = monitor.getReportData();
      origin = origin || '';
      if (!data) {
        return;
      }
      if (!!ajax &amp;&amp; ajax instanceof Function) {
        ajax({
          url: origin + sendUrl,
          type: 'POST',
          mayAbort: true,
          data: data,
          async: async,
          timeout: 2000,
          dontReport: true
        });
      } else {
        new Image().src = origin + '/mp/jsmonitor?' + formatDataToString(data) + '#wechat_redirect';
      }
    };
    if (typeof window !== 'undefined' &amp;&amp; window.__monitor) {
      monitor = window.__monitor;
    } else {
      typeof window !== 'undefined' &amp;&amp; (window.__monitor = monitor);
    }
    var monitor$1 = monitor;

    function _typeof(obj) {
      "@babel/helpers - typeof";

      return _typeof = "function" == typeof Symbol &amp;&amp; "symbol" == typeof Symbol.iterator ? function (obj) {
        return typeof obj;
      } : function (obj) {
        return obj &amp;&amp; "function" == typeof Symbol &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj;
      }, _typeof(obj);
    }

    function _toPrimitive(input, hint) {
      if (_typeof(input) !== "object" || input === null) return input;
      var prim = input[Symbol.toPrimitive];
      if (prim !== undefined) {
        var res = prim.call(input, hint || "default");
        if (_typeof(res) !== "object") return res;
        throw new TypeError("@@toPrimitive must return a primitive value.");
      }
      return (hint === "string" ? String : Number)(input);
    }

    function _toPropertyKey(arg) {
      var key = _toPrimitive(arg, "string");
      return _typeof(key) === "symbol" ? key : String(key);
    }

    function _defineProperty(obj, key, value) {
      key = _toPropertyKey(key);
      if (key in obj) {
        Object.defineProperty(obj, key, {
          value: value,
          enumerable: true,
          configurable: true,
          writable: true
        });
      } else {
        obj[key] = value;
      }
      return obj;
    }

    
    
    var Device = {};
    function detect(ua) {
      var MQQBrowser = ua.match(/MQQBrowser\/(\d+\.\d+)/i);
      var MQQClient = ua.match(/QQ\/(\d+\.(\d+)\.(\d+)\.(\d+))/i) || ua.match(/V1_AND_SQ_([\d\.]+)/);
      var WeChat = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/) || ua.match(/MicroMessenger\/((\d+)\.(\d+))/);
      var MacOS = ua.match(/Mac\sOS\sX\s(\d+[\.|_]\d+)/);
      var WinOS = ua.match(/Windows(\s+\w+)?\s+?(\d+\.\d+)/);
      var Linux = ua.match(/Linux\s/);
      var MiuiBrowser = ua.match(/MiuiBrowser\/(\d+\.\d+)/i);
      var M1 = ua.match(/MI-ONE/);
      var MIPAD = ua.match(/MI PAD/);
      var UC = ua.match(/UCBrowser\/(\d+\.\d+(\.\d+\.\d+)?)/) || ua.match(/\sUC\s/);
      var IEMobile = ua.match(/IEMobile(\/|\s+)(\d+\.\d+)/) || ua.match(/WPDesktop/);
      var ipod = ua.match(/(ipod).*\s([\d_]+)/i);
      var ipad = ua.match(/(ipad).*\s([\d_]+)/i);
      var iphone = ua.match(/(iphone)\sos\s([\d_]+)/i);
      var Chrome = ua.match(/Chrome\/(\d+\.\d+)/);
      var AndriodBrowser = ua.match(/Mozilla.*Linux.*Android.*AppleWebKit.*Mobile Safari/);
      var android = ua.match(/(android)\s([\d\.]+)/i);
      var harmony = ua.match(/(OpenHarmony)\s([\d\.]+)/i);
      Device.browser = Device.browser || {}, Device.os = Device.os || {};
      Device.os.type = -1;
      Device.os.unifiedPC = ua.match(/UnifiedPC/);
      Device.os.unifiedMac = /UnifiedPCMac/i.test(ua);
      Device.os.unifiedWindows = /UnifiedPCWindows/i.test(ua);
      if (window.ActiveXObject) {
        var vie = 6;
        (window.XMLHttpRequest || ua.indexOf('MSIE 7.0') &gt; -1) &amp;&amp; (vie = 7);
        (window.XDomainRequest || ua.indexOf('Trident/4.0') &gt; -1) &amp;&amp; (vie = 8);
        ua.indexOf('Trident/5.0') &gt; -1 &amp;&amp; (vie = 9);
        ua.indexOf('Trident/6.0') &gt; -1 &amp;&amp; (vie = 10);
        Device.browser.ie = true, Device.browser.version = vie;
      } else if (ua.indexOf('Trident/7.0') &gt; -1) {
        Device.browser.ie = true, Device.browser.version = 11;
      }
      if (android) {
        Device.os.android = true;
        Device.os.version = android[2];
        Device.os.type = 2;
      }
      if (harmony) {
        Device.os.harmony = true;
        Device.os.version = harmony[2];
        Device.os.type = 42;
      }
      if (ipod) {
        Device.os.ios = Device.os.ipod = true;
        Device.os.version = ipod[2].replace(/_/g, '.');
      }
      if (ipad) {
        Device.os.ios = Device.os.ipad = true;
        Device.os.version = ipad[2].replace(/_/g, '.');
        Device.os.type = 13;
      }
      if (iphone) {
        Device.os.iphone = Device.os.ios = true;
        Device.os.version = iphone[2].replace(/_/g, '.');
        Device.os.type = 1;
      }
      if (WinOS) Device.os.windows = true, Device.os.version = WinOS[2], Device.os.type = 15;
      if (MacOS) Device.os.Mac = true, Device.os.version = MacOS[1], Device.os.type = 14;
      if (Linux) Device.os.Linux = true, Device.os.type = 33;
      if (ua.indexOf('lepad_hls') &gt; 0) Device.os.LePad = true;
      if (MIPAD) Device.os.MIPAD = true;
      if (MQQBrowser) Device.browser.MQQ = true, Device.browser.version = MQQBrowser[1];
      if (MQQClient) Device.browser.MQQClient = true, Device.browser.version = MQQClient[1];
      if (WeChat) Device.browser.WeChat = true, Device.browser.mmversion = Device.browser.version = WeChat[1];
      if (MiuiBrowser) Device.browser.MIUI = true, Device.browser.version = MiuiBrowser[1];
      if (UC) Device.browser.UC = true, Device.browser.version = UC[1] || NaN;
      if (IEMobile) Device.browser.IEMobile = true, Device.browser.version = IEMobile[2];
      if (AndriodBrowser) {
        Device.browser.AndriodBrowser = true;
      }
      if (M1) {
        Device.browser.M1 = true;
      }
      if (Chrome) {
        Device.browser.Chrome = true, Device.browser.version = Chrome[1];
      }
      if (Device.os.windows) {
        if (typeof navigator.platform !== "undefined" &amp;&amp; navigator.platform.toLowerCase() == "win64") {
          Device.os.win64 = true;
        } else {
          Device.os.win64 = false;
        }
      }
      if (Device.os.Mac || Device.os.windows || Device.os.Linux || Device.os.unifiedPC || /OpenHarmony/i.test(ua) &amp;&amp; /pc/i.test(ua)) {
        Device.os.pc = true;
      }
      var osType = {
        iPad7: 'iPad; CPU OS 7',
        LePad: 'lepad_hls',
        XiaoMi: 'MI-ONE',
        SonyDTV: "SonyDTV",
        SamSung: 'SAMSUNG',
        HTC: 'HTC',
        VIVO: 'vivo'
      };
      for (var os in osType) {
        Device.os[os] = ua.indexOf(osType[os]) !== -1;
      }
      Device.os.phone = Device.os.phone || /windows phone/i.test(ua);
      Device.os.getNumVersion = function () {
        return parseFloat(Device.os.version);
      };
      Device.os.hasTouch = 'ontouchstart' in window;
      if (Device.os.hasTouch &amp;&amp; Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 6) {
        Device.os.hasTouch = false;
      }
      if (Device.browser.WeChat &amp;&amp; Device.browser.version &lt; 5.0) {
        Device.os.hasTouch = false;
      }
      Device.browser.getNumVersion = function () {
        return parseFloat(Device.browser.version);
      };
      Device.browser.isFFCanOcx = function () {
        return !!Device.browser.firefox &amp;&amp; Device.browser.getNumVersion() &gt;= 3.0;
      };
      Device.browser.isCanOcx = function () {
        return !!Device.os.windows &amp;&amp; (!!Device.browser.ie || Device.browser.isFFCanOcx() || !!Device.browser.webkit);
      };
      Device.browser.isNotIESupport = function () {
        return !!Device.os.windows &amp;&amp; (!!Device.browser.webkit || Device.browser.isFFCanOcx());
      };
      Device.userAgent = {};
      Device.userAgent.browserVersion = Device.browser.version;
      Device.userAgent.osVersion = Device.os.version;
      if (Device.os.unifiedPC) {
        if (Device.os.unifiedWindows) Device.os.type = 37;else if (Device.os.unifiedMac) Device.os.type = 38;else Device.os.type = 39;
      }
      delete Device.userAgent.version;
    }
    detect(window.navigator.userAgent);
    function canSupportH5Video() {
      var ua = window.navigator.userAgent,
        m = null;
      if (!!Device.os.android) {
        if (Device.browser.MQQ &amp;&amp; Device.browser.getNumVersion() &gt;= 4.2) {
          return true;
        }
        if (ua.indexOf('MI2') != -1) {
          return true;
        }
        if (Device.os.version &gt;= '4' &amp;&amp; (m = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/))) {
          if (parseFloat(m[1]) &gt;= 4.2) {
            return true;
          }
        }
        if (Device.os.version &gt;= '4.1') {
          return true;
        }
      }
      return false;
    }
    function canSupportVideoMp4() {
      var video = document.createElement('video');
      if (typeof video.canPlayType === 'function') {
        if (video.canPlayType('video/mp4; codecs="mp4v.20.8"') === 'probably') {
          return true;
        }
        if (video.canPlayType('video/mp4; codecs="avc1.42E01E"') === 'probably' || video.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"') === 'probably') {
          return true;
        }
      }
      return false;
    }
    function canSupportAutoPlay() {
      if (Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 10) {
        return false;
      }
      return true;
    }
    function isLockdownMode() {
      if (!Device.os.ios || Device.os.getNumVersion() &lt; 16) {
        return false;
      }
      if (typeof WebAssembly === 'undefined' &amp;&amp; typeof OfflineAudioContext === 'undefined' &amp;&amp; typeof WebGLRenderingContext === 'undefined') {
        return true;
      }
      return false;
    }
    Device.canSupportVideo = canSupportVideoMp4 || canSupportH5Video;
    Device.canSupportVideoMp4 = canSupportVideoMp4;
    Device.canSupportH5Video = canSupportH5Video;
    Device.canSupportAutoPlay = canSupportAutoPlay;
    Device.isLockdownMode = isLockdownMode;
    
    Device.cpVersion = function (version) {
      var cp = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 0;
      var canEqual = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
      var nowVersionStr = Device.os.version;
      if (!nowVersionStr) return false;
      var versionArr = version.split('.');
      var nowVersionArr = nowVersionStr.split('.');
      for (var i = 0; i &lt; Math.max(nowVersionArr.length, versionArr.length); i++) {
        var vi = +versionArr[i];
        var nvi = +nowVersionArr[i];
        if (vi === nvi) continue;
        if (cp &gt; 0) return vi &gt; nvi;
        if (cp &lt; 0) return vi &lt; nvi;
      }
      return canEqual || cp === 0;
    };

    function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
      try {
        var info = gen[key](arg);
        var value = info.value;
      } catch (error) {
        reject(error);
        return;
      }
      if (info.done) {
        resolve(value);
      } else {
        Promise.resolve(value).then(_next, _throw);
      }
    }
    function _asyncToGenerator(fn) {
      return function () {
        var self = this,
          args = arguments;
        return new Promise(function (resolve, reject) {
          var gen = fn.apply(self, args);
          function _next(value) {
            asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
          }
          function _throw(err) {
            asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
          }
          _next(undefined);
        });
      };
    }

    function _regeneratorRuntime$1() {  _regeneratorRuntime$1 = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
    
    var doc$1 = {};
    var isAcrossOrigin$1 = false;
    var notFoundedMPPageAction = [];
    var __moon_report$1 = window.__moon_report || function () {};
    var MOON_JSAPI_KEY_OFFSET = 8;
    try {
      doc$1 = top.window.document;
    } catch (e) {
      isAcrossOrigin$1 = true;
    }
    if (!window.JSAPIEventCallbackMap) {
      window.JSAPIEventCallbackMap = {};
    }
    function ready(onBridgeReady) {
      var bridgeReady = function bridgeReady() {
        try {
          if (onBridgeReady) {
            window.onBridgeReadyTime = window.onBridgeReadyTime || Date.now();
            onBridgeReady();
          }
        } catch (e) {
          __moon_report$1([{
            offset: MOON_JSAPI_KEY_OFFSET,
            log: 'ready',
            e: e
          }]);
          throw e;
        }
        window.jsapiReadyTime = Date.now();
      };
      if (!isAcrossOrigin$1 &amp;&amp; (typeof top.window.WeixinJSBridge === 'undefined' || !top.window.WeixinJSBridge.invoke)) {
        if (doc$1.addEventListener) {
          doc$1.addEventListener('WeixinJSBridgeReady', bridgeReady, false);
        } else if (doc$1.attachEvent) {
          doc$1.attachEvent('WeixinJSBridgeReady', bridgeReady);
          doc$1.attachEvent('onWeixinJSBridgeReady', bridgeReady);
        }
      } else {
        bridgeReady();
      }
    }
    var invokeNotWaitA8key = ['notifyPageInfo', 'updatePageAuth'
    ];
    var checkNotFoundedInvoke = function checkNotFoundedInvoke(methodName, args) {
      if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; notFoundedMPPageAction.includes(args === null || args === void 0 ? void 0 : args.action)) {
        return true;
      }
      return false;
    };
    function invoke$1(_x, _x2, _x3) {
      return _invoke.apply(this, arguments);
    }
    function _invoke() {
      _invoke = _asyncToGenerator( _regeneratorRuntime$1().mark(function _callee(methodName, args, callback) {
        return _regeneratorRuntime$1().wrap(function _callee$(_context) {
          while (1) switch (_context.prev = _context.next) {
            case 0:
              if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__ &amp;&amp; !invokeNotWaitA8key.includes(methodName))) {
                _context.next = 3;
                break;
              }
              _context.next = 3;
              return window.__secPageAuthPromise;
            case 3:
              ready(function () {
                if (isAcrossOrigin$1) return false;
                if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                  alert('请在微信中打开此链接');
                  return false;
                }
                if (checkNotFoundedInvoke(methodName, args)) {
                  setTimeout(function () {
                    if (callback) {
                      callback.apply(window, [{
                        err_msg: "".concat(methodName, ":fail"),
                        err_desc: 'action isn\'t supported'
                      }]);
                    }
                  }, 0);
                } else {
                  top.window.WeixinJSBridge.invoke(methodName, args, function () {
                    try {
                      for (var _len2 = arguments.length, rets = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
                        rets[_key2] = arguments[_key2];
                      }
                      var ret = rets[0];
                      var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
                      if (['handleMPPageAction', 'handleVideoAction', 'handleHaokanAction'].indexOf(methodName) !== -1) {
                        var action = (args === null || args === void 0 ? void 0 : args.action) || '';
                        console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName, ", action-&gt;").concat(action).concat(errMsg));
                      } else {
                        console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName).concat(errMsg));
                      }
                      if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; ((ret === null || ret === void 0 ? void 0 : ret.err_desc) === 'action isn\'t supported' || (ret === null || ret === void 0 ? void 0 : ret.err_msg) === 'handleMPPageAction:fail action is not supported')) {
                        notFoundedMPPageAction.push(args === null || args === void 0 ? void 0 : args.action);
                      }
                      if (callback) {
                        callback.apply(window, rets);
                      }
                    } catch (e) {
                      __moon_report$1([{
                        offset: MOON_JSAPI_KEY_OFFSET,
                        log: "invoke;methodName:".concat(methodName),
                        e: e
                      }]);
                      throw e;
                    }
                  });
                }
              });
            case 4:
            case "end":
              return _context.stop();
          }
        }, _callee);
      }));
      return _invoke.apply(this, arguments);
    }
    function call(_x4) {
      return _call.apply(this, arguments);
    }
    function _call() {
      _call = _asyncToGenerator( _regeneratorRuntime$1().mark(function _callee2(methodName) {
        return _regeneratorRuntime$1().wrap(function _callee2$(_context2) {
          while (1) switch (_context2.prev = _context2.next) {
            case 0:
              if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__)) {
                _context2.next = 3;
                break;
              }
              _context2.next = 3;
              return window.__secPageAuthPromise;
            case 3:
              ready(function () {
                if (isAcrossOrigin$1) return false;
                if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                  return false;
                }
                try {
                  top.window.WeixinJSBridge.call(methodName);
                } catch (e) {
                  __moon_report$1([{
                    offset: MOON_JSAPI_KEY_OFFSET,
                    log: "call;methodName:".concat(methodName),
                    e: e
                  }]);
                  throw e;
                }
              });
            case 4:
            case "end":
              return _context2.stop();
          }
        }, _callee2);
      }));
      return _call.apply(this, arguments);
    }
    function on(eventName, callback) {
      ready(function () {
        if (isAcrossOrigin$1) return false;
        if (_typeof(top.window.WeixinJSBridge) !== 'object' || !top.window.WeixinJSBridge.on) {
          return false;
        }
        if (!window.JSAPIEventCallbackMap[eventName]) {
          window.JSAPIEventCallbackMap[eventName] = [];
        }
        window.JSAPIEventCallbackMap[eventName].push(callback);
        if (window.JSAPIEventCallbackMap[eventName].length &gt; 1) {
          return false;
        }
        top.window.WeixinJSBridge.on(eventName, function () {
          try {
            for (var _len = arguments.length, rets = new Array(_len), _key = 0; _key &lt; _len; _key++) {
              rets[_key] = arguments[_key];
            }
            var ret = rets[0];
            var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
            console.info('[system]', "[jsapi] event-&gt;".concat(eventName).concat(errMsg));
            if (window.JSAPIEventCallbackMap[eventName] &amp;&amp; window.JSAPIEventCallbackMap[eventName].length) {
              var result;
              for (var i = 0; i &lt; window.JSAPIEventCallbackMap[eventName].length; i++) {
                result = window.JSAPIEventCallbackMap[eventName][i].apply(window, rets);
              }
              return result;
            }
          } catch (e) {
            __moon_report$1([{
              offset: MOON_JSAPI_KEY_OFFSET,
              log: "on;eventName:".concat(eventName),
              e: e
            }]);
            throw e;
          }
        });
      });
    }
    function remove(eventName, callback) {
      ready(function () {
        if (!window.JSAPIEventCallbackMap[eventName]) {
          return false;
        }
        var result = false;
        for (var i = window.JSAPIEventCallbackMap[eventName].length - 1; i &gt;= 0; i--) {
          if (window.JSAPIEventCallbackMap[eventName][i] === callback) {
            window.JSAPIEventCallbackMap[eventName].splice(i, 1);
            result = true;
          }
        }
        return result;
      });
    }
    var JSAPI = {
      ready: ready,
      invoke: invoke$1,
      call: call,
      on: on,
      remove: remove
    };

    function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" &amp;&amp; o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$1(o)) || allowArrayLike &amp;&amp; o &amp;&amp; typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i &gt;= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion &amp;&amp; it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
    function _unsupportedIterableToArray$1(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$1(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen); }
    function _arrayLikeToArray$1(arr, len) { if (len == null || len &gt; arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i]; return arr2; }
    
    
    var ua = navigator.userAgent;
    var is_ios = /(iPhone|iPad|iPod|iOS)/i.test(ua);
    var is_wp = /Windows\sPhone/i.test(ua);
    var is_android = /(Android)/i.test(ua);
    var is_wechat = /MicroMessenger\/([\d\.]+)/i.test(ua);
    var is_mac = /mac\sos/i.test(ua) &amp;&amp; !is_ios;
    var is_windows = /windows\snt/i.test(ua) &amp;&amp; !is_wp;
    var is_mpapp = /MPAPP\/([\d\.]+)/i.test(ua);
    var is_ipad = /iPad/i.test(ua);
    var is_windows_wechat = /WindowsWechat/i.test(ua);
    var is_mac_wechat = /MacWechat/i.test(ua) || /wechat.*mac os/i.test(ua);
    var is_prefetch = is_wechat &amp;&amp; window.WeixinPrefecherJSBridge;
    var is_donut_app = /SAAASDK/i.test(ua);
    var is_harmony = /OpenHarmony|ArkWeb/i.test(ua);
    var is_linux = /Linux\s/i.test(ua);
    var xweb_match = ua.match(/XWEB\/([\d.]+)/i);
    var xweb_version = xweb_match &amp;&amp; xweb_match[1] ? parseInt(xweb_match[1], 10) : 0;
    var is_unified_pc_wechat = /UnifiedPC\w+Wechat/i.test(ua);
    var is_in_miniProgram = is_android &amp;&amp; /miniprogram/.test(ua.toLowerCase()) || window.__wxjs_environment == 'miniprogram';
    var is_wx_work = /wxwork/i.test(ua);
    function getUrlParams() {
      var vars = location.search.substring(1).split('&amp;');
      var params = {};
      var _iterator = _createForOfIteratorHelper(vars),
        _step;
      try {
        for (_iterator.s(); !(_step = _iterator.n()).done;) {
          var ele = _step.value;
          var pair = ele.split('=');
          var key = decodeURIComponent(pair[0]);
          if (typeof params[key] === 'undefined') {
            params[key] = decodeURIComponent(pair[1]);
          }
        }
      } catch (err) {
        _iterator.e(err);
      } finally {
        _iterator.f();
      }
      return params;
    }
    function get() {
      var reg = /MicroMessenger\/([\d\.]+)/i;
      var ret = ua.match(reg);
      if (ret &amp;&amp; ret[1]) {
        return ret[1];
      }
      return false;
    }
    function getMac() {
      var reg = /MacWechat\/([\d\.]+)/i;
      var ret = ua.match(reg);
      if (ret &amp;&amp; ret[1]) {
        return ret[1];
      }
      return false;
    }
    function getMacOS() {
      var reg = /Mac OS X ([\d_]+)/i;
      var ret = ua.match(reg);
      if (ret &amp;&amp; ret[1]) {
        return ret[1].replace(/_/g, '.');
      }
      return false;
    }
    function getWindows() {
      var reg = /WindowsWechat\(0x(.+?)\)/i;
      var ret = ua.match(reg);
      if (ret &amp;&amp; ret[1]) {
        return ret[1];
      }
      return false;
    }
    function getWxWork() {
      var reg = /wxwork\/([\d\.]+)/i;
      var ret = ua.match(reg);
      if (ret &amp;&amp; ret[1]) {
        return ret[1];
      }
      return false;
    }
    function getMpApp() {
      var appVersion = [2, 4, 5];
      var match = navigator.userAgent.match(/MPAPP\/(\d+(\.\d+)*)/);
      if (match) {
        appVersion = match[1].split('.').map(function (v) {
          return Number(v);
        });
      }
      return appVersion.join('.');
    }
    function getUnifiedPcVer() {
      var versionInfo = navigator.userAgent.match(/UnifiedPC\w+Wechat\(0xf\w{2}(\w+?)\w{2}\)/);
      if (versionInfo &amp;&amp; versionInfo.length === 2) {
        var version = versionInfo[1];
        var mainVersion = getVersionNumber(version.slice(0, 1));
        var subVersion = getVersionNumber(version.slice(1, 2));
        var subVersion2 = getVersionNumber(version.slice(2, 3));
        return [mainVersion, subVersion, subVersion2].join('.');
      }
    }
    function getVersionNumber(hexStr) {
      return Number(Number("0x".concat(hexStr)).toString(10));
    }
    function getWindowsVersionFormat() {
      var versionInfo = navigator.userAgent.match(/WindowsWechat\(0x(\w+?)\)/);
      if (versionInfo &amp;&amp; versionInfo.length === 2) {
        var version = versionInfo[1];
        var mainVersion = getVersionNumber(version.slice(1, 2));
        var subVersion = getVersionNumber(version.slice(2, 4));
        var subVersion2 = getVersionNumber(version.slice(4, 6));
        return [mainVersion, subVersion, subVersion2].join('.');
      }
      return false;
    }
    function getInner() {
      var reg = /MicroMessenger\/[\d\.]+\(0x(.+?)\)/i;
      var ret = ua.match(reg);
      if (ret &amp;&amp; ret[1] &amp;&amp; ret[1] != null) {
        return ret[1];
      }
      if (!ret &amp;&amp; /MicroMessenger\/[\d\.]+/i.test(ua)) {
        var urlParams = getUrlParams();
        if (urlParams.version) {
          return urlParams.version;
        }
      }
      return false;
    }
    var opfunc = {
      'cp-1': function cp1(a, b) {
        return a &lt; b;
      },
      cp0: function cp0(a, b) {
        return a === b;
      },
      cp1: function cp1(a, b) {
        return a &gt; b;
      }
    };
    function cpVersion(ver, op, canEq, type) {
      var mmver = false;
      switch (type) {
        case 'mac':
          mmver = getMac();
          break;
        case 'windows':
          mmver = getWindowsVersionFormat();
          break;
        case 'wxwork':
          mmver = getWxWork();
          break;
        case 'mpapp':
          mmver = getMpApp();
          break;
        case 'unifiedpc':
          mmver = getUnifiedPcVer();
          break;
        default:
          mmver = get();
          break;
      }
      if (!mmver) {
        return;
      }
      var mmversion = mmver.split('.');
      var version = ver.split('.');
      if (!/\d+/g.test(mmversion[mmversion.length - 1])) {
        mmversion.pop();
      }
      for (var i = 0, len = Math.max(mmversion.length, version.length); i &lt; len; ++i) {
        var mmv = mmversion[i] || '';
        var v = version[i] || '';
        var mmvn = parseInt(mmv, 10) || 0;
        var vn = parseInt(v, 10) || 0;
        var eq = opfunc.cp0(mmvn, vn);
        if (eq) {
          continue;
        }
        var cp = opfunc["cp".concat(op)];
        return cp(mmvn, vn);
      }
      return canEq || op === 0;
    }
    function eqVersion(version) {
      return cpVersion(version, 0);
    }
    function gtVersion(version, canEq) {
      return cpVersion(version, 1, canEq);
    }
    function ltVersion(version, canEq) {
      return cpVersion(version, -1, canEq);
    }
    function getPlatform() {
      if (is_ios) {
        return 'ios';
      }
      if (is_android) {
        return 'android';
      }
      if (is_mac) {
        return 'mac_os';
      }
      if (is_windows) {
        return 'windows';
      }
      return 'unknown';
    }
    var is_google_play = false;
    var inner_ver_for_google_play_check = getInner();
    if (is_android &amp;&amp; inner_ver_for_google_play_check) {
      var v = "0x".concat(inner_ver_for_google_play_check.substr(-2));
      if (parseInt(v) &gt;= 64 &amp;&amp; parseInt(v) &lt;= 79) {
        is_google_play = true;
      }
    }
    function compareHexVersion(hexNum) {
      var innerVersion = getInner();
      if (innerVersion &amp;&amp; hexNum) {
        if (typeof hexNum === 'string') {
          hexNum = parseInt(hexNum, 16);
        }
        var version = parseInt(innerVersion, 16);
        return version &gt;= hexNum;
      }
      return false;
    }
    var mmversion = {
      get: get,
      getMac: getMac,
      getMacOS: getMacOS,
      getWindows: getWindows,
      getInner: getInner,
      getWxWork: getWxWork,
      getMpApp: getMpApp,
      cpVersion: cpVersion,
      eqVersion: eqVersion,
      gtVersion: gtVersion,
      ltVersion: ltVersion,
      getPlatform: getPlatform,
      getVersionNumber: getVersionNumber,
      isWp: is_wp,
      isIOS: is_ios,
      isAndroid: is_android,
      isHarmony: is_harmony,
      isHarmonyWechat: is_harmony &amp;&amp; is_wechat &amp;&amp; cpVersion('1.0.0', 1, true),
      isInMiniProgram: is_in_miniProgram,
      isWechat: is_wechat,
      isMac: is_mac,
      isWindows: is_windows,
      isLinux: is_linux,
      isMacWechat: is_mac_wechat,
      isWindowsWechat: is_windows_wechat,
      isWxWork: is_wx_work,
      isOnlyWechat: is_wechat &amp;&amp; !is_wx_work,
      isMpapp: is_mpapp,
      isIPad: is_ipad,
      isGooglePlay: is_google_play,
      isPrefetch: is_prefetch,
      isDonutAPP: is_donut_app,
      compareHexVersion: compareHexVersion,
      isPcWechat: is_windows_wechat || is_mac_wechat,
      xwebVersion: xweb_version,
      isUnifiedPcWechat: is_unified_pc_wechat
    };

    var initJsBridge = false;
    if (!window.JSAPIEventCallbackMap) {
      window.JSAPIEventCallbackMap = {};
    }
    function connectWebViewJavascriptBridge(callback) {
      if (window.WebViewMPapp || window.WebViewJavascriptBridge) {
        return callback(window.WebViewMPapp || window.WebViewJavascriptBridge);
      }
      if (window.WVJBCallbacks) {
        return window.WVJBCallbacks.push(callback);
      }
      window.WVJBCallbacks = [callback];
      if (!mmversion.isMpapp) {
        return false;
      }
      if (!initJsBridge) {
        initJsBridge = true;
        var WVJBIframe = document.createElement('iframe');
        WVJBIframe.style.display = 'none';
        WVJBIframe.src = 'https://__bridge_loaded__';
        document.body.appendChild(WVJBIframe);
        setTimeout(function () {
          initJsBridge = false;
          document.body.removeChild(WVJBIframe);
        }, 0);
      }
      return false;
    }
    function invoke(jsapiName, opt, callback) {
      connectWebViewJavascriptBridge(function (bridge) {
        try {
          if (typeof opt === 'function') {
            callback = opt;
          }
          if (_typeof(opt) !== 'object' &amp;&amp; typeof opt !== 'string') {
            opt = {};
          }
          bridge.callHandler(jsapiName, opt, function (res) {
            try {
              var ret = _typeof(res) === 'object' ? res : JSON.parse(res);
              var errMsg = ret.err_msg || ret.errMsg;
              console.info("[mpapp jsapi] invoke-&gt;".concat(jsapiName, " ").concat(opt.action || '', " ").concat(errMsg));
              typeof callback === 'function' &amp;&amp; callback(ret);
            } catch (e) {
              window.WX_BJ_REPORT.BadJs.report('invoke', "callback ".concat(jsapiName, " error:"), {
                mid: 'mmbizwebapp:js_brridge',
                _info: e
              });
              console.error("[mpapp jsapi] ".concat(jsapiName, " ").concat(opt.action || ''), e, res);
            }
          });
        } catch (e) {
          window.WX_BJ_REPORT.BadJs.report('invoke', 'callback error:', {
            mid: 'mmbizwebapp:js_brridge',
            _info: e
          });
          console.error('[mpapp jsapi]', e);
        }
      });
    }

    
    function _log(level, msg) {
      if (level === 'log') {
        level = 'info';
        msg = "[WechatFe]".concat(msg);
      } else {
        var prefix = "__wap__".concat(window.__second_open__ ? ' (sec)' : '');
        msg = "".concat(prefix, " ").concat(msg, " location:[").concat(location.href, "]");
      }
      msg += new Error().stack;
      if (mmversion.isMpapp) {
        invoke('WNNativeCallbackLog', msg);
      } else if (mmversion.isWechat) {
        if (mmversion.isAndroid) {
          console.warn('[system]', "[MicroMsg.JsApiLog][".concat(level, "] jslog : ").concat(msg));
        } else if (mmversion.isIOS) {
          JSAPI.invoke('writeLog', {
            level: level,
            msg: msg
          });
        } else {
          JSAPI.invoke('log', {
            level: level,
            msg: msg
          });
        }
      }
    }
    var Log = {
      info: function info() {
        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key &lt; _len; _key++) {
          args[_key] = arguments[_key];
        }
        _log('info', args.join(' '));
      },
      warn: function warn() {
        for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
          args[_key2] = arguments[_key2];
        }
        _log('warn', args.join(' '));
      },
      error: function error() {
        for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 &lt; _len3; _key3++) {
          args[_key3] = arguments[_key3];
        }
        _log('error', args.join(' '));
      },
      debug: function debug() {
        for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 &lt; _len4; _key4++) {
          args[_key4] = arguments[_key4];
        }
        _log('debug', args.join(' '));
      },
      log: function log() {
        for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 &lt; _len5; _key5++) {
          args[_key5] = arguments[_key5];
        }
        _log('info', args.join(' '));
      }
    };

    
    var logList = [];
    var log = function log(msg) {
      logList.push(msg);
    };
    var printLog = function printLog() {
      for (var i = 0, len = logList.length; i &lt; len; ++i) {
        console.log("[RespType]".concat(logList[i]));
      }
    };
    var isArray = function isArray(val) {
      return Object.prototype.toString.call(val) === '[object Array]';
    };
    var getValueType = function getValueType(value) {
      if (isArray(value)) {
        return 'array';
      }
      return _typeof(value);
    };
    var parseRtDesc = function parseRtDesc(rtDesc, k) {
      var type = 'mix';
      var isRequired = false;
      var key = k;
      if (k) {
        var requireKeyWord = '_R';
        var pos = k.indexOf(requireKeyWord);
        var len = k.length - requireKeyWord.length;
        isRequired = pos !== -1 &amp;&amp; pos === len;
        key = isRequired ? k.substring(0, len) : k;
      }
      if (typeof rtDesc === 'string') {
        type = rtDesc;
      } else if (isArray(rtDesc)) {
        type = 'array';
      } else if (_typeof(rtDesc) === 'object') {
        type = 'object';
      }
      return {
        key: key,
        type: type,
        isRequired: isRequired
      };
    };
    var checkForArrayRtDesc = function checkForArrayRtDesc(arr, rtDescs) {
      if (!isArray(arr)) {
        return false;
      }
      for (var i = 0, len = arr.length; i &lt; len; ++i) {
        var value = arr[i];
        var rtDesc = void 0;
        var j = 0;
        var flag = rtDescs.length === 0;
        while (rtDesc = rtDescs[j++]) {
          if (checkForRtDesc(value, rtDesc)) {
            flag = true;
            break;
          }
        }
        if (!flag) {
          return false;
        }
      }
      return true;
    };
    var checkForStringRtDesc = function checkForStringRtDesc(value, rtDesc) {
      var valueType = getValueType(value);
      var desc = parseRtDesc(rtDesc);
      var ret = desc.type === valueType;
      if (!ret) {
        log("miss match type : ".concat(valueType, " !== ").concat(desc.type));
      }
      return ret;
    };
    var checkForObjectRtDesc = function checkForObjectRtDesc(json, rtDesc) {
      if (_typeof(json) !== 'object' || isArray(json)) {
        log('must be object');
        return false;
      }
      var rootJson = json;
      var nowCheckValue = json;
      for (var k in rtDesc) {
        if (rtDesc.hasOwnProperty(k)) {
          var nowCheckDesc = rtDesc[k];
          var desc = parseRtDesc(nowCheckDesc, k);
          var key = desc.key;
          nowCheckValue = rootJson[key];
          var valueType = getValueType(nowCheckValue);
          if (desc.isRequired &amp;&amp; nowCheckValue === undefined) {
            log("is required @key=".concat(key));
            return false;
          }
          if (nowCheckValue !== undefined) {
            if (valueType !== desc.type &amp;&amp; desc.type !== 'mix') {
              log("miss match type : ".concat(valueType, " !== ").concat(desc.type, " @key=").concat(key));
              return false;
            }
            if ((valueType === 'array' || valueType === 'object') &amp;&amp; desc.type !== 'mix') {
              if (!checkForRtDesc(nowCheckValue, nowCheckDesc)) {
                return false;
              }
            }
          }
        }
      }
      return true;
    };
    var checkForRtDesc = function checkForRtDesc(json, rtDesc) {
      if (isArray(rtDesc)) {
        return checkForArrayRtDesc(json, rtDesc);
      }
      if (_typeof(rtDesc) === 'object') {
        return checkForObjectRtDesc(json, rtDesc);
      }
      if (typeof rtDesc === 'string') {
        return checkForStringRtDesc(json, rtDesc);
      }
      return false;
    };
    var _check = function check(json, rtDescs) {
      if (typeof json === 'string') {
        try {
          json = eval("(".concat(json, ")"));
        } catch (e) {
          log('parse json error');
          return false;
        }
      }
      if (_typeof(json) !== 'object') {
        log('must be object');
        return false;
      }
      if (!isArray(rtDescs)) {
        rtDescs = [rtDescs];
      }
      var rtDesc;
      var i = 0;
      while (rtDesc = rtDescs[i++]) {
        if (checkForRtDesc(json, rtDesc)) {
          return true;
        }
      }
      return false;
    };
    var RespTypes = {
      check: function check(json, rtDesc) {
        logList = [];
        try {
          var ret = _check(json, rtDesc);
          if (!ret) {
            printLog();
          }
          return ret;
        } catch (e) {
          logList.push("[rtException]".concat(e.toString()));
          printLog();
          return false;
        }
      },
      getMsg: function getMsg() {
        return logList.join(';');
      }
    };

    function _arrayWithHoles(arr) {
      if (Array.isArray(arr)) return arr;
    }

    function _iterableToArrayLimit(arr, i) {
      var _i = null == arr ? null : "undefined" != typeof Symbol &amp;&amp; arr[Symbol.iterator] || arr["@@iterator"];
      if (null != _i) {
        var _s,
          _e,
          _x,
          _r,
          _arr = [],
          _n = !0,
          _d = !1;
        try {
          if (_x = (_i = _i.call(arr)).next, 0 === i) {
            if (Object(_i) !== _i) return;
            _n = !1;
          } else for (; !(_n = (_s = _x.call(_i)).done) &amp;&amp; (_arr.push(_s.value), _arr.length !== i); _n = !0);
        } catch (err) {
          _d = !0, _e = err;
        } finally {
          try {
            if (!_n &amp;&amp; null != _i["return"] &amp;&amp; (_r = _i["return"](), Object(_r) !== _r)) return;
          } finally {
            if (_d) throw _e;
          }
        }
        return _arr;
      }
    }

    function _arrayLikeToArray(arr, len) {
      if (len == null || len &gt; arr.length) len = arr.length;
      for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i];
      return arr2;
    }

    function _unsupportedIterableToArray(o, minLen) {
      if (!o) return;
      if (typeof o === "string") return _arrayLikeToArray(o, minLen);
      var n = Object.prototype.toString.call(o).slice(8, -1);
      if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name;
      if (n === "Map" || n === "Set") return Array.from(o);
      if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
    }

    function _nonIterableRest() {
      throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
    }

    function _slicedToArray(arr, i) {
      return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
    }

    function getInflightMap() {
      if (!window.__dedupe_promise_inflight__) {
        window.__dedupe_promise_inflight__ = new Map();
      }
      return window.__dedupe_promise_inflight__;
    }
    
    function dedupePromise(key, factory) {
      var inflightMap = getInflightMap();
      var existing = inflightMap.get(key);
      console.log("dedupePromise key=".concat(key, " existing=").concat(existing));
      if (existing) {
        return existing;
      }
      var promise = Promise.resolve().then(factory)["finally"](function () {
        inflightMap["delete"](key);
      });
      inflightMap.set(key, promise);
      return promise;
    }

    function _classCallCheck(instance, Constructor) {
      if (!(instance instanceof Constructor)) {
        throw new TypeError("Cannot call a class as a function");
      }
    }

    function _defineProperties(target, props) {
      for (var i = 0; i &lt; props.length; i++) {
        var descriptor = props[i];
        descriptor.enumerable = descriptor.enumerable || false;
        descriptor.configurable = true;
        if ("value" in descriptor) descriptor.writable = true;
        Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
      }
    }
    function _createClass(Constructor, protoProps, staticProps) {
      if (protoProps) _defineProperties(Constructor.prototype, protoProps);
      if (staticProps) _defineProperties(Constructor, staticProps);
      Object.defineProperty(Constructor, "prototype", {
        writable: false
      });
      return Constructor;
    }

    
    var prefix = '__WXLS__';
    var localStorage = window.localStorage || {
      getItem: function getItem() {},
      setItem: function setItem() {},
      removeItem: function removeItem() {},
      key: function key() {},
      clear: function clear() {
        var _a, _b;
        (_b = (_a = window.localStorage) === null || _a === void 0 ? void 0 : _a.clear) === null || _b === void 0 ? void 0 : _b.call(_a);
      },
      length: 0
    };
    var evictionPolicies = {
      noeviction: function noeviction(data) {
        return data;
      },
      'allkeys-random': function allkeysRandom(data, size) {
        var keys = Object.keys(data);
        var memCnt = 0;
        while (memCnt &lt; size) {
          var len = keys.length;
          var randomKeyIdx = Math.floor(Math.random() * len);
          var randomKey = keys[randomKeyIdx];
          memCnt += JSON.stringify(data[randomKey]).length;
          delete data[randomKey];
          keys = Object.keys(data);
        }
        return data;
      },
      'volatile-ttl': function volatileTtl(data, size) {
        var keys = Object.keys(data);
        keys = keys.sort(function (key1, key2) {
          var d1 = data[key1];
          var d2 = data[key2];
          if (d1.exp &lt; d2.exp) return -1;
          if (d1.exp &gt; d2.exp) return 1;
          return 0;
        });
        var memCnt = 0;
        for (var i = 0; i &lt; keys.length; i++) {
          if (memCnt &gt;= size) break;
          var key = keys[i];
          memCnt += JSON.stringify(data[key]).length;
          delete data[key];
        }
        return data;
      },
      'clear-all': function clearAll() {
        localStorage.clear();
        return {};
      }
    };
    function formatLogMsg(str) {
      return "[WXLS] ".concat(str);
    }
    
    var LS = function () {
      function LS(func, evictionPolicy, logger) {
        _classCallCheck(this, LS);
        this.logger = function () {};
        if (!func) throw 'require function name.';
        this.evictionPolicy = 'noeviction';
        this.key = func;
        if (typeof logger === 'function') {
          this.logger = function (str, type) {
            return logger(formatLogMsg(str), type);
          };
        }
        if (evictionPolicy &amp;&amp; Object.keys(evictionPolicies).indexOf(evictionPolicy) !== -1) {
          this.evictionPolicy = evictionPolicy;
        }
        this.init();
      }
      _createClass(LS, [{
        key: "init",
        value: function init() {
          var _a, _b;
          this.check();
          if (Math.random() * 1000 &lt; 1) {
            (_a = this.logger) === null || _a === void 0 ? void 0 : _a.call(this, "LSlen: ".concat(((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length) || localStorage.length), 'report');
          }
        }
      }, {
        key: "getData",
        value: function getData() {
          var data = LS.getItem(this.key) || '{}';
          try {
            data = JSON.parse(data);
          } catch (e) {
            this.logger("getData error: ".concat(e), 'error');
            localStorage.removeItem(prefix + this.key);
            data = {};
          }
          return data;
        }
      }, {
        key: "check",
        value: function check(isReturn) {
          var data = this.getData();
          var temp = {};
          var now = +new Date();
          var key;
          var val;
          for (key in data) {
            val = data[key];
            if (+val.exp &gt; now) {
              temp[key] = val;
            }
          }
          this.logger("check info: isReturn:".concat(isReturn, " data:").concat(JSON.stringify(temp)), 'info');
          if (isReturn) return temp;
          LS.setItem(this.key, JSON.stringify(temp), this.logger);
        }
      }, {
        key: "set",
        value: function set(key, val, exp) {
          var _a, _b;
          var data = this.check(true);
          data[key] = {
            val: val,
            exp: exp || +new Date()
          };
          try {
            if (localStorage.getItem(prefix + this.key)) localStorage.removeItem(prefix + this.key);
            localStorage.setItem(prefix + this.key, JSON.stringify(data));
            this.logger("first set success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data)), 'success');
          } catch (e) {
            this.logger("first set error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data), " k:").concat(key, " v:").concat(val, " exp:").concat(exp), 'error');
            localStorage.clear();
            LS.setItem(this.key, JSON.stringify(_defineProperty({}, key, {
              val: val,
              exp: exp || +new Date()
            })), this.logger);
          }
        }
      }, {
        key: "get",
        value: function get(key) {
          var data = this.getData();
          data = data[key];
          return data ? data.val || null : null;
        }
      }, {
        key: "remove",
        value: function remove(key) {
          var data = this.getData();
          if (data[key]) delete data[key];
          LS.setItem(this.key, JSON.stringify(data), this.logger);
        }
      }], [{
        key: "getItem",
        value: function getItem(key) {
          key = prefix + key;
          return localStorage.getItem(key);
        }
      }, {
        key: "setItem",
        value: function setItem(key, val, logger) {
          var _a, _b;
          key = prefix + key;
          var n = 3;
          while (n--) {
            try {
              if (localStorage.getItem(key)) localStorage.removeItem(key);
              localStorage.setItem(key, val);
              typeof logger === 'function' &amp;&amp; logger("setItem success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(key, " val:").concat(val), 'success');
              break;
            } catch (e) {
              typeof logger === 'function' &amp;&amp; logger("setItem error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(key, " val:").concat(val), 'error');
              LS.clear();
            }
          }
        }
      }, {
        key: "clear",
        value: function clear() {
          var i;
          var k;
          for (i = localStorage.length - 1; i &gt;= 0; i--) {
            k = localStorage.key(i);
            if (k.indexOf(prefix) == 0) {
              localStorage.removeItem(k);
            }
          }
        }
      }, {
        key: "getSupportEvicationPolicy",
        value: function getSupportEvicationPolicy() {
          return Object.keys(evictionPolicies);
        }
      }]);
      return LS;
    }();
    var innerVersion = (mmversion.getInner() || '').toUpperCase();
    var getBizLS = new LS('get_biz_result');
    function getBizMap() {
      if (!window.__get_biz_map__) {
        window.__get_biz_map__ = {};
      }
      return window.__get_biz_map__;
    }
    var isGetBizSupported = mmversion.isOnlyWechat &amp;&amp; mmversion.isIOS &amp;&amp; innerVersion &gt;= '18003C2A' || mmversion.isOnlyWechat &amp;&amp; mmversion.isAndroid &amp;&amp; innerVersion &gt;= '28003D3C' || mmversion.isUnifiedPcWechat &amp;&amp; mmversion.cpVersion('4.1.10', 1, true, 'unifiedpc');
    function invokeGetBiz(needCheckBiz, bizType) {
      return dedupePromise("getBiz:".concat(needCheckBiz, ":").concat(bizType), function () {
        return new Promise(function (resolve, reject) {
          if (!isGetBizSupported) {
            reject('Not support');
          } else {
            JSAPI.invoke('handleMPPageAction', {
              action: 'getBiz',
              needCheckBiz: needCheckBiz,
              bizType: bizType
            }, function (res) {
              console.log("getBiz needCheckBiz=".concat(needCheckBiz, " bizType=").concat(bizType, " res: ").concat(JSON.stringify(res)));
              if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf('ok') &gt; -1) {
                var bizMap = getBizMap();
                bizMap[bizType] = res.biz;
                resolve(res.biz);
                getBizLS.set("".concat(bizType, "_get_biz_result"), res.biz, +new Date() + 3 * 24 * 60 * 60 * 1000);
              } else {
                reject('Failed to get biz');
              }
            });
          }
        });
      });
    }
    function getBiz(needCheckBiz, bizType) {
      var _a;
      if (needCheckBiz === void 0) {
        needCheckBiz = false;
      }
      if (bizType === void 0) {
        bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
      }
      var bizMap = getBizMap();
      if (!needCheckBiz &amp;&amp; bizMap[bizType] !== undefined) {
        return Promise.resolve(bizMap[bizType]);
      }
      return invokeGetBiz(needCheckBiz, bizType);
    }
    mmversion.isOnlyWechat &amp;&amp; mmversion.isIOS || mmversion.isOnlyWechat &amp;&amp; mmversion.isAndroid || mmversion.isUnifiedPcWechat &amp;&amp; mmversion.cpVersion('4.1.10', 1, true, 'unifiedpc');
    var getIsAuthor = function getIsAuthor(cb, bizuin, needCheckBiz, bizType) {
      var _a;
      if (bizuin === void 0) {
        bizuin = window.biz;
      }
      if (needCheckBiz === void 0) {
        needCheckBiz = false;
      }
      if (bizType === void 0) {
        bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
      }
      getBiz(needCheckBiz, bizType).then(function (biz) {
        cb(biz &amp;&amp; biz === bizuin);
      })["catch"](function () {
        cb(false);
      });
    };

    function parseUrl(url) {
      var len = url.length;
      var ques_pos = url.indexOf('?');
      var hash_pos = url.indexOf('#');
      hash_pos = hash_pos == -1 ? len : hash_pos;
      ques_pos = ques_pos == -1 ? hash_pos : ques_pos;
      var host = url.substring(0, ques_pos);
      var query_str = url.substring(ques_pos + 1, hash_pos);
      var hash = url.substring(hash_pos + 1);
      return {
        host: host,
        query_str: query_str,
        hash: hash
      };
    }
    function join(url, args, noEncode) {
      var ret = parseUrl(url);
      var query_str = ret.query_str;
      var args_arr = [];
      if (_typeof(args) === 'object') {
        for (var key in args) {
          if (args.hasOwnProperty(key)) {
            args_arr.push("".concat(key, "=").concat(noEncode ? args[key] : encodeURIComponent(args[key])));
          }
        }
      } else {
        args_arr.push(noEncode ? args : encodeURIComponent(args));
      }
      if (args_arr.length &gt; 0) {
        query_str += (query_str !== "" ? "&amp;" : "") + args_arr.join("&amp;");
      }
      return ret.host + (query_str !== "" ? "?".concat(query_str) : "") + (ret.hash !== "" ? "#".concat(ret.hash) : "");
    }
    
    function addParam(url, param, value, forceReplace) {
      url = url || location.href;
      var firstAndPos = url.indexOf("&amp;");
      var len = url.length;
      var reverseUrl = url.replace(/^[\w\d]+:[/\\]+/g, "").split("").reverse();
      if (!Array.prototype.indexOf) {
        Array.prototype.indexOf = function (searchElement, fromIndex) {
          var k;
          if (this == null) {
            throw new TypeError('"this" is null or not defined');
          }
          var O = Object(this);
          var len = O.length &gt;&gt;&gt; 0;
          if (len === 0) {
            return -1;
          }
          var n = fromIndex || 0;
          if (Math.abs(n) === Infinity) {
            n = 0;
          }
          if (n &gt;= len) {
            return -1;
          }
          k = Math.max(n &gt;= 0 ? n : len - Math.abs(n), 0);
          while (k &lt; len) {
            if (k in O &amp;&amp; O[k] === searchElement) {
              return k;
            }
            k++;
          }
          return -1;
        };
      }
      var lastSlashPos = len - 1 - reverseUrl.indexOf("/");
      if (firstAndPos !== -1 &amp;&amp; url.indexOf("?") == -1 &amp;&amp; firstAndPos &gt; lastSlashPos) {
        url = url.replace("&amp;", "?");
      }
      var reg = new RegExp("([\\?&amp;]".concat(param, "=)[^&amp;#]*"));
      if (!url.match(reg)) {
        var urlInfo = parseUrl(url);
        var hash = urlInfo.hash ? '#' + urlInfo.hash : '';
        url = url.replace(hash, '');
        var _pos = url.indexOf("?");
        if (_pos == -1) {
          return "".concat(url, "?").concat(param, "=").concat(value).concat(hash);
        }
        if (_pos == url.length - 1) {
          return "".concat(url + param, "=").concat(value).concat(hash);
        }
        return "".concat(url, "&amp;").concat(param, "=").concat(value).concat(hash);
      }
      if (forceReplace === true) {
        return url.replace(reg, "$1".concat(value));
      }
      return url;
    }
    function addWxfrom(src, wxfrom) {
      var offset = window.service_type === 1 ? 10000 : 0;
      return addParam(src, 'wxfrom', offset + Number(wxfrom), true);
    }
    function removeParam(url, param) {
      var _URL = new URL(url),
        protocol = _URL.protocol,
        host = _URL.host,
        pathname = _URL.pathname,
        search = _URL.search,
        hash = _URL.hash;
      var queryParams = new URLSearchParams(search);
      queryParams["delete"](param);
      var newSearch = queryParams.toString();
      var newUrl = new URL("".concat(protocol, "//").concat(host).concat(pathname).concat(newSearch ? "?".concat(decodeURIComponent(newSearch)) : "").concat(hash));
      return newUrl.toString();
    }
    function getQuery(name, url) {
      var u = url || window.location.search;
      var reg = new RegExp("(^|&amp;)".concat(name, "=([^&amp;]*)(&amp;|$)"));
      var r = u.substring(u.indexOf('?') + 1).match(reg);
      return r !== null ? r[2] : '';
    }
    function encodeBase64(value) {
      try {
        return window.btoa(value);
      } catch (e) {
        return '';
      }
    }
    function decodeBase64(value) {
      try {
        return window.atob(value);
      } catch (e) {
        return '';
      }
    }
    function joinUrl$1(url) {
      var obj = {};
      if (typeof window.uin !== 'undefined') {
        obj.uin = window.uin;
      }
      if (typeof window.key !== 'undefined') {
        obj.key = window.key;
      }
      if (typeof window.pass_ticket !== 'undefined') {
        obj.pass_ticket = window.pass_ticket;
      }
      if (typeof window.wxtoken !== 'undefined') {
        obj.wxtoken = window.wxtoken;
      }
      if (typeof window.devicetype !== 'undefined') {
        obj.devicetype = window.devicetype;
      }
      if (typeof window.clientversion !== 'undefined') {
        obj.clientversion = window.clientversion || mmversion.getInner();
      }
      obj.version = obj.clientversion;
      if (window.biz) {
        obj.__biz = window.biz;
      }
      if (getQuery('enterid')) {
        obj.enterid = getQuery('enterid');
      }
      if (typeof window.appmsg_token !== 'undefined') {
        obj.appmsg_token = window.appmsg_token;
      } else if (url.indexOf('advertisement_report') &gt; -1) {
        new Image().src = "".concat(location.protocol, "//mp.weixin.qq.com/mp/jsmonitor?idkey=68064_13_1&amp;r=").concat(Math.random());
      }
      obj.x5 = navigator.userAgent.indexOf('TBS/') !== -1 ? '1' : '0';
      obj.f = 'json';
      return join(url, obj);
    }
    function joinUserArticleRole(url, notJoin, cb) {
      var bizuin = arguments.length &gt; 3 &amp;&amp; arguments[3] !== undefined ? arguments[3] : window.biz;
      var needCheckBiz = arguments.length &gt; 5 &amp;&amp; arguments[5] !== undefined ? arguments[5] : false;
      if (notJoin) {
        cb(url);
      } else {
        getIsAuthor(function (isAuthor) {
          cb(addParam(url, 'user_article_role', isAuthor ? 1 : 0, true));
        }, bizuin, needCheckBiz);
      }
    }
    function getA8keyQuery(name, url) {
      return new Promise(function (resolve) {
        if (window.__secPageAuthPromise) {
          window.__secPageAuthPromise.then(function () {
            resolve(getQuery(name, url));
          });
        } else {
          resolve(getQuery(name, url));
        }
      });
    }
    function addHash(url, hash) {
      var isReplace = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
      if (isReplace) {
        return "".concat(url.split('#')[0]).concat(hash);
      }
      return "".concat(url).concat(url.indexOf('#') === -1 ? '#' : '').concat(hash);
    }
    function decodeUrl(url) {
      var _url = url;
      while (_url.indexOf('&amp;amp;') !== -1) {
        _url = _url.htmlDecode();
      }
      return _url;
    }
    var Url = {
      parseUrl: parseUrl,
      join: join,
      addParam: addParam,
      addWxfrom: addWxfrom,
      addHash: addHash,
      getQuery: getQuery,
      getA8keyQuery: getA8keyQuery,
      encodeBase64: encodeBase64,
      decodeBase64: decodeBase64,
      joinUrl: joinUrl$1,
      joinUserArticleRole: joinUserArticleRole,
      removeParam: removeParam,
      decodeUrl: decodeUrl
    };

    var _a;
    var doc;
    var isAcrossOrigin = false;
    try {
      doc = (_a = window.top) === null || _a === void 0 ? void 0 : _a.window.document;
    } catch (e) {
      isAcrossOrigin = true;
    }
    var StatusTextMap = {
      200: 'OK',
      302: 'Found',
      400: 'Bad Request',
      500: 'Internal Server Error'
    };
    function getIsAcrossOrigin() {
      return isAcrossOrigin;
    }
    function networkStartLog(item) {
      var _a, _b, _c, _d, _e;
      console.log('[system]', "&lt; [request ".concat(item.requestType, "]"), item.url, item.method, item);
      var rdevRequestId;
      var requestTime = performance.now() / 1000;
      if ((_b = (_a = window.RemoteDevSdk) === null || _a === void 0 ? void 0 : _a.instance) === null || _b === void 0 ? void 0 : _b.Network) {
        try {
          var willBeSentOptions = {
            url: item.url,
            method: item.method,
            requestHeaders: Object.assign({}, item.requestHeader || {}, {
              RDEV_REQUEST_TYPE: item.requestType
            }),
            requestBody: item.postData,
            requestTime: requestTime
          };
          rdevRequestId = window.RemoteDevSdk.instance.Network.customRequestWillBeSent(willBeSentOptions);
        } catch (err) {}
      }
      if ((_c = window.vConsole) === null || _c === void 0 ? void 0 : _c.network) {
        try {
          var vconsoleNetworkItem = (_e = (_d = window.vConsole.network).add) === null || _e === void 0 ? void 0 : _e.call(_d, Object.assign({}, item, {
            startTime: Date.now(),
            endTime: Date.now(),
            status: 0,
            readyState: 2,
            response: ''
          }));
          vconsoleNetworkItem.rdevRequestId = rdevRequestId;
          vconsoleNetworkItem.requestTime = requestTime;
          return vconsoleNetworkItem;
        } catch (err) {}
      }
      if (rdevRequestId) {
        return Object.assign(Object.assign({}, item), {
          id: '__only_rdev_log__',
          rdevRequestId: rdevRequestId,
          requestTime: requestTime
        });
      }
      return Object.assign({}, item, {
        id: '__system_log__'
      });
    }
    function networkEndLog(item) {
      var _a, _b, _c, _d, _e;
      console.log('[system]', "&gt; [response ".concat(item.requestType, "]"), item.url, item.response, item);
      if (item.rdevRequestId &amp;&amp; ((_b = (_a = window.RemoteDevSdk) === null || _a === void 0 ? void 0 : _a.instance) === null || _b === void 0 ? void 0 : _b.Network) &amp;&amp; item.id !== '__system_log__') {
        try {
          var finishedOptions = {
            requestId: item.rdevRequestId,
            url: item.url,
            status: +(item.status || '500'),
            statusText: StatusTextMap[+(item.status || '500')] || 'Error',
            responseHeaders: {
              RDEV_RESPONSE_TYPE: item.requestType
            },
            responseBody: item.response,
            requestTime: item.requestTime || 0,
            duration: item.costTime || (item.endTime &amp;&amp; item.startTime ? item.endTime - item.startTime : performance.now() / 1000 - (item.requestTime || 0))
          };
          window.RemoteDevSdk.instance.Network.customRequestFinished(finishedOptions);
        } catch (err) {}
      }
      if (((_c = window.vConsole) === null || _c === void 0 ? void 0 : _c.network) &amp;&amp; item.id !== '__system_log__') {
        try {
          item.statusText = "".concat(item.status);
          item.responseSize = item.response.length;
          item.responseSizeText = "".concat(item.response.length);
          return (_e = (_d = window.vConsole.network).update) === null || _e === void 0 ? void 0 : _e.call(_d, item.id, Object.assign({}, item, {
            readyState: 4
          }));
        } catch (err) {}
      }
    }
    function reqType(obj, path) {
      return obj.url.indexOf(path) &gt; -1 &amp;&amp; obj.url.indexOf('action=') === -1 &amp;&amp; (!obj.data || !obj.data.action);
    }
    function findAjaxScopeByConfig(url, config) {
      var pathname = new URL(url, location.href).pathname || '';
      var scope = config[pathname.slice(1)];
      if (scope) {
        return scope;
      }
    }
    function getAjaxScope(ajaxUrl) {
      if (Url.getQuery('no_transfer', location.href) !== '1' &amp;&amp; mmversion.isWechat &amp;&amp; !mmversion.isInMiniProgram &amp;&amp; !mmversion.isWxWork &amp;&amp; !mmversion.isMpapp &amp;&amp; !isAcrossOrigin &amp;&amp; window.__ajaxTransferConfig &amp;&amp; _typeof(window.__ajaxTransferConfig) === 'object' &amp;&amp; (
      mmversion.isIOS &amp;&amp; mmversion.compareHexVersion('1800282F') || mmversion.isAndroid &amp;&amp; mmversion.compareHexVersion('28002234') || mmversion.isWindowsWechat &amp;&amp; mmversion.cpVersion('3.9.5', 1, true, 'windows') || mmversion.isMacWechat &amp;&amp; mmversion.cpVersion('3.8.4', 1, true, 'mac') || mmversion.isHarmonyWechat &amp;&amp; mmversion.compareHexVersion('0xf3100b00') &amp;&amp; !mmversion.compareHexVersion('0xf3100c00') || mmversion.compareHexVersion('0xf3800b00'))) {
        try {
          return findAjaxScopeByConfig(ajaxUrl, window.__ajaxTransferConfig);
        } catch (err) {
          
        }
      }
    }
    function getActionByData(data) {
      var _a, _b;
      if (_typeof(data) === 'object' &amp;&amp; !(data instanceof Blob)) {
        if (data.hasOwnProperty('data') &amp;&amp; typeof data.data === 'string') {
          try {
            var workedData = JSON.parse(data.data);
            return workedData.action || '';
          } catch (e) {}
        }
        return data.action || '';
      }
      if (typeof data === 'string') {
        return ((_b = (_a = data.split(/[?&amp;]/).find(function (x) {
          return x.indexOf('action=') &gt;= 0;
        })) === null || _a === void 0 ? void 0 : _a.split('=')) === null || _b === void 0 ? void 0 : _b[1]) || '';
      }
      return '';
    }

    var METHOD_ENUM = {
      GET: 0,
      POST: 1
    };
    var __moon_report = window.__moon_report || function () {};
    var MOON_AJAX_SUCCESS_OFFSET = 3;
    var MOON_AJAX_NETWORK_OFFSET = 4;
    var MOON_AJAX_ERROR_OFFSET = 5;
    var MOON_AJAX_TIMEOUT_OFFSET = 6;
    var MOON_AJAX_COMPLETE_OFFSET = 7;
    var LENGTH_LIMIT = 4096;
    function reportRtError(type, id, key, content) {
      var log = '';
      var prefix = type === 'rt' ? 'rtCheckError' : 'Ajax Length Limit';
      if (content === null || content === void 0 ? void 0 : content.length) {
        var loglen = 1000;
        var len = content.length;
        var lc = Math.ceil(len / loglen);
        log = ["&amp;lc=".concat(lc)];
        for (var i = 0; i &lt; lc; ++i) {
          log.push("&amp;log".concat(i, "=") + "[".concat(prefix, "][").concat(i, "]").concat(encodeURIComponent(content.substring(i * loglen, i * loglen + loglen))));
        }
        log = log.join('');
      }
      var data = "idkey=".concat(id, "_").concat(key, "_1").concat(log, "&amp;r=").concat(Math.random());
      var xmlobj = new XMLHttpRequest();
      xmlobj.open('POST', "".concat(location.protocol, "//").concat(location.host, "/mp/jsmonitor?"), true);
      xmlobj.setRequestHeader('cache-control', 'no-cache');
      xmlobj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
      xmlobj.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
      xmlobj.send(data);
      if (type === 'ajaxLen') {
        monitor$1.setLogs({
          id: id,
          key: key,
          value: 1,
          log: log
        });
      }
    }
    function reportRt(id, key, content) {
      reportRtError('rt', id, key, content);
    }
    function reportAjaxLength(id, key, content) {
      reportRtError('ajaxLen', id, key, content);
    }
    function setXhrHeader(xhr, type, opt) {
      if (opt.contentType) {
        xhr.setRequestHeader('Content-Type', opt.contentType);
      } else if (type === 'POST') {
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
      }
      if (!opt.noXRequestedWidthHeader) {
        xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
      }
    }
    function Ajax(obj) {
      var report36408 = typeof obj.report36408 === 'function' ? obj.report36408 : function () {};
      if (obj.usePb) {
        obj.type = 'POST';
        obj.data = {
          data: JSON.stringify(obj.data)
        };
      }
      var ajaxScope = getAjaxScope(obj.url);
      var type = (obj.type || 'GET').toUpperCase();
      var timer;
      var _url;
      if (obj.notJoinUrl) {
        _url = obj.url;
      } else {
        _url = Url.joinUrl(obj.url);
      }
      Url.joinUserArticleRole(_url, !!obj.notJoinUrl, function (url) {
        var urlObj = new URL(url, location.origin);
        if (obj.f === 'html') {
          url = url.replace('&amp;f=json', '');
        }
        var data = null;
        if (obj.data instanceof Blob) {
          data = obj.data;
        } else if (_typeof(obj.data) === 'object') {
          var d = obj.data;
          var ds = [];
          for (var k in d) {
            if (d.hasOwnProperty(k)) {
              ds.push("".concat(k, "=").concat(encodeURIComponent(d[k])));
            }
          }
          data = ds.join('&amp;');
        } else {
          data = typeof obj.data === 'string' ? obj.data : null;
        }
        var beginTs;
        var beforeReq = function beforeReq() {
          if (reqType(obj, '/mp/getappmsgext')) {
            window.startGetAppmsgExtTime = Date.now();
            Log.log('start get appmsgext, url: ', obj.url);
          }
          if (reqType(obj, '/mp/getappmsgad')) {
            window.startGetAppmsgAdTime = Date.now();
            Log.log('start get appmsgad, url: ', obj.url);
          }
          beginTs = Date.now();
        };
        var beforeResp = function beforeResp(xhr) {
          if (reqType(obj, '/mp/getappmsgext')) {
            window.receiveGetAppmsgExt = "".concat(xhr.status, "|").concat(Date.now());
            Log.log("receive appmsgext response, status: ".concat(xhr.status));
          }
          if (reqType(obj, '/mp/getappmsgad')) {
            window.receiveGetAppmsgAd = "".concat(xhr.status, "|").concat(Date.now());
            Log.log("receive appmsgad response, status: ".concat(xhr.status));
          }
          if (Math.random() &lt; 0.001 &amp;&amp; window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs) {
            try {
              var key = ajaxScope ? 'transfer' : 'xhr';
              var interval = 250;
              var time = Date.now() - beginTs;
              var range = Math.floor(time / interval) * interval;
              var pathname = new URL(obj.url, location.href).pathname || '';
              window.WX_BJ_REPORT.BadJs.report("".concat(key, "_perf:").concat(pathname), JSON.stringify({
                status: xhr.status,
                time: "[".concat(range, "-").concat(range + interval, ")")
              }), {
                mid: 'mmbizwap:ajaxtransfer',
                view: 'wap_business'
              });
            } catch (err) {}
          }
        };
        var handleRespSucc = function handleRespSucc(xhr, requestType) {
          var _a, _b, _c, _d;
          try {
            var responseText = xhr.responseText;
            var resp = responseText;
            if (obj.dataType === 'json') {
              try {
                if (JSON &amp;&amp; JSON.parse) {
                  resp = JSON.parse(resp);
                } else {
                  resp = eval("(".concat(resp, ")"));
                  monitor$1.setSum(523105, 127, 1).send();
                }
                var rtId = obj.rtId;
                var rtKey = obj.rtKey || 0;
                var rtDesc = obj.rtDesc;
                if (rtId &amp;&amp; rtDesc &amp;&amp; RespTypes &amp;&amp; !RespTypes.check(resp, rtDesc)) {
                  reportRt(+rtId, +rtKey, "".concat(RespTypes.getMsg(), "[detail]").concat(responseText, ";").concat(obj.url));
                }
                if (resp &amp;&amp; resp.base_resp &amp;&amp; ((_a = resp.base_resp) === null || _a === void 0 ? void 0 : _a.ret) !== 0 &amp;&amp; typeof window.WX_BJ_REPORT !== 'undefined' &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; Math.random() &lt; 0.001) {
                  var reportUrl = url;
                  if (url.indexOf('?') !== -1) {
                    reportUrl = url.substring(0, url.indexOf('?'));
                    if (Url.getQuery('action', url)) {
                      reportUrl = "".concat(reportUrl, "?action=").concat(Url.getQuery('action', url));
                    }
                  }
                  if (!((reportUrl === '/mp/getappmsgext' || reportUrl === '/mp/getappmsgad') &amp;&amp; typeof resp.base_resp.ret === 'undefined')) {
                    window.WX_BJ_REPORT.BadJs.report(reportUrl, "ret=".concat(resp.base_resp.ret), {
                      mid: window.PAGE_MID,
                      view: 'wap_retcode'
                    });
                  }
                }
              } catch (e) {
                obj.error &amp;&amp; obj.error(xhr, {
                  type: 1,
                  error: e,
                  status: xhr.status
                });
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                    Method: type || '',
                    RequestType: requestType || 0,
                    RetType: 1,
                    HttpCode: xhr.status || 0,
                    Ret: 0
                  });
                }
                return;
              }
            }
            if (_typeof(resp) === 'object' &amp;&amp; ((_b = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _b === void 0 ? void 0 : _b.ret) !== 0) {
              if (!obj.dontReport) {
                report36408({
                  CgiPath: urlObj.pathname || '',
                  Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                  Query: urlObj.search || '',
                  PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                  Method: type || '',
                  RequestType: requestType || 0,
                  RetType: 4,
                  HttpCode: xhr.status || 0,
                  Ret: ((_c = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _c === void 0 ? void 0 : _c.ret) || 0
                });
              }
            } else {
              if (!obj.dontReport) {
                report36408({
                  CgiPath: urlObj.pathname || '',
                  Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                  Query: urlObj.search || '',
                  PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                  Method: type || '',
                  RequestType: requestType || 0,
                  RetType: 0,
                  HttpCode: xhr.status || 0,
                  Ret: ((_d = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _d === void 0 ? void 0 : _d.ret) || 0
                });
              }
            }
            obj.success &amp;&amp; obj.success(resp);
          } catch (e) {
            __moon_report({
              offset: MOON_AJAX_SUCCESS_OFFSET,
              e: e
            });
            throw e;
          }
        };
        var handleRespErr = function handleRespErr(xhr, error, requestType) {
          try {
            obj.error &amp;&amp; obj.error(xhr, {
              type: 2,
              error: error,
              status: xhr.status
            });
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                Method: type,
                RequestType: requestType,
                RetType: 2,
                HttpCode: xhr.status,
                Ret: 0
              });
            }
          } catch (e) {
            __moon_report({
              offset: MOON_AJAX_ERROR_OFFSET,
              e: e
            });
            throw e;
          }
        };
        var handleRespComplete = function handleRespComplete() {
          clearTimeout(timer);
          try {
            obj.complete &amp;&amp; obj.complete();
          } catch (e) {
            __moon_report({
              offset: MOON_AJAX_COMPLETE_OFFSET,
              e: e
            });
            throw e;
          }
          obj.complete = null;
        };
        var handleReqTimeout = function handleReqTimeout(xhr) {
          if (typeof obj.timeout !== 'undefined') {
            timer = setTimeout(function () {
              xhr.abort();
              try {
                obj.complete &amp;&amp; obj.complete();
              } catch (e) {
                __moon_report({
                  offset: MOON_AJAX_COMPLETE_OFFSET,
                  e: e
                });
                throw e;
              }
              obj.complete = null;
              __moon_report({
                offset: MOON_AJAX_TIMEOUT_OFFSET,
                log: "ajax_timeout_error: ".concat(url),
                e: ''
              });
            }, obj.timeout);
          }
        };
        var retryXhrFn = function retryXhrFn(res, isTimeout, reqLogItem) {
          var retryXhr = new XMLHttpRequest();
          try {
            retryXhr._noVConsole = true;
          } catch (err) {}
          retryXhr.open(type, url);
          retryXhr.onreadystatechange = function () {
            if (isTimeout) return;
            if (retryXhr.readyState === 3) {
              obj.received &amp;&amp; obj.received(retryXhr);
            }
            if (retryXhr.readyState === 4) {
              beforeResp(retryXhr);
              var retryStatus = retryXhr.status;
              if (retryStatus &gt;= 200 &amp;&amp; retryStatus &lt; 400) {
                handleRespSucc(retryXhr, 1);
              } else {
                handleRespErr(retryXhr, res, 1);
                window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; window.WX_BJ_REPORT.BadJs.report('req_failure', JSON.stringify({
                  retryXhrStatus: retryStatus,
                  transferRes: res
                }), {
                  mid: 'mmbizwap:ajaxtransfer',
                  view: 'wap_business'
                });
              }
              reqLogItem.status = retryStatus;
              reqLogItem.endTime = Date.now();
              reqLogItem.response = retryXhr.responseText;
              handleRespComplete();
              networkEndLog(reqLogItem);
            }
          };
          setXhrHeader(retryXhr, type, obj);
          retryXhr.send(data);
        };
        if (ajaxScope &amp;&amp; !obj.pureHttp) {
          var header = {
            'User-Agent': navigator.userAgent,
            'Cookie': (window.__test_env__ ? 'uniproxy_route=1; ' : '') + document.cookie,
            'Referer': location.href
          };
          if (obj.contentType) {
            header['Content-Type'] = obj.contentType;
          } else if (type === 'POST') {
            header['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
          }
          if (!obj.noXRequestedWidthHeader) {
            header['X-Requested-With'] = 'XMLHttpRequest';
          }
          var reqUrl = new URL(url, location.href).href;
          var method = METHOD_ENUM[type] || 0;
          var params = Device.os.pc ? {
            url: reqUrl,
            req_json: data || '',
            scope: ajaxScope,
            webcgi_method: method,
            webcgi_header: Object.keys(header).map(function (headerItemKey) {
              return Device.os.Mac ? _defineProperty({}, headerItemKey, header[headerItemKey]) : {
                key: headerItemKey,
                value: header[headerItemKey]
              };
            }),
            cgi_type: 1
          } : {
            reqUrl: reqUrl,
            reqBody: data,
            scope: ajaxScope,
            method: method,
            header: header
          };
          var reqLogItem = networkStartLog({
            method: type,
            url: url,
            postData: obj.data || {},
            requestHeader: header,
            requestType: 'transfer',
            startTime: Date.now(),
            responseType: url.indexOf('f=json') &gt; 0 ? 'json' : undefined
          });
          var isTimeout = false;
          handleReqTimeout({
            abort: function abort() {
              isTimeout = true;
              reqLogItem.endTime = Date.now();
              reqLogItem.response = 'timeout';
              networkEndLog(reqLogItem);
            }
          });
          Device.os.pc &amp;&amp; monitor$1.setSum(115849, 69, 1);
          JSAPI.invoke(Device.os.pc ? 'H5ExtTransfer' : 'webTransfer', params, function (res) {
            var _a, _b, _c, _d, _e, _f;
            if (isTimeout) return;
            var status = 400;
            var result = '';
            if (Device.os.pc) {
              try {
                var retFlag = res.base_resp.ret === 0 &amp;&amp; res.jsapi_resp.ret === 0 &amp;&amp; res.err_msg.indexOf(':ok') &gt; -1;
                var respJsonFlag = res.jsapi_resp.resp_json;
                status = retFlag &amp;&amp; respJsonFlag ? 200 : 400;
                result = res.jsapi_resp.resp_json;
              } catch (err) {
                console.error(err);
              }
            } else {
              status = res &amp;&amp; res.errCode * 1 === 0 &amp;&amp; typeof res.result === 'string' &amp;&amp; res.result ? 200 : 400;
              result = res.result;
            }
            try {
              Log.log("ajax transfer, status: ".concat(status, ", reqUrl: ").concat(reqUrl));
            } catch (err) {
              console.error(err);
            }
            if (status &gt;= 200 &amp;&amp; status &lt; 400) {
              obj.received &amp;&amp; obj.received(null);
              beforeResp({
                status: status
              });
              handleRespSucc({
                status: status,
                responseText: result
              }, 10);
              reqLogItem.status = status;
              reqLogItem.endTime = Date.now();
              reqLogItem.response = result;
              handleRespComplete();
              networkEndLog(reqLogItem);
            } else if (window.__second_open__) {
              JSAPI.invoke('request', {
                url: reqUrl,
                method: type,
                data: data,
                header: header
              }, function (retryRes) {
                try {
                  Log.log("ajax retry request, retryStatus: ".concat((retryRes === null || retryRes === void 0 ? void 0 : retryRes.statusCode) || '', ", reqUrl: ").concat(reqUrl));
                } catch (err) {
                  console.error(err);
                }
                if (isTimeout) return;
                var retryStatus = retryRes.statusCode;
                obj.received &amp;&amp; obj.received(null);
                beforeResp({
                  status: retryStatus
                });
                if (retryRes.err_msg.indexOf(':ok') &gt; -1 &amp;&amp; retryStatus &gt;= 200 &amp;&amp; retryStatus &lt; 400) {
                  handleRespSucc({
                    status: retryStatus,
                    responseText: retryRes.data
                  }, 20);
                } else {
                  retryXhrFn(res, isTimeout, reqLogItem);
                  handleRespErr({
                    status: retryStatus
                  }, res, 20);
                  window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; window.WX_BJ_REPORT.BadJs.report('req_failure_sec_open', JSON.stringify({
                    retryReqJsapiRes: retryRes,
                    transferRes: res,
                    url: reqUrl
                  }), {
                    mid: 'mmbizwap:ajaxtransfer',
                    view: 'wap_business'
                  });
                }
                reqLogItem.status = retryStatus;
                reqLogItem.endTime = Date.now();
                reqLogItem.response = retryRes.data;
                handleRespComplete();
                networkEndLog(reqLogItem);
              });
            } else {
              retryXhrFn(res, isTimeout, reqLogItem);
            }
            if (Device.os.pc) {
              if (!res.err_msg.includes(':ok')) {
                (_b = (_a = window.WX_BJ_REPORT) === null || _a === void 0 ? void 0 : _a.BadJs) === null || _b === void 0 ? void 0 : _b.report("pc transfer res no ok: ".concat(res.err_msg), params.url || '', {
                  mid: window.PAGE_MID,
                  _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
                });
              }
              try {
                if (res.jsapi_resp.resp_json &amp;&amp; JSON.parse(res.jsapi_resp.resp_json).base_resp.ret !== 0 &amp;&amp; JSON.parse(res.jsapi_resp.resp_json).base_resp.ret !== 190001 || res.base_resp.ret !== 0 || res.jsapi_resp.ret !== 0) {
                  (_d = (_c = window.WX_BJ_REPORT) === null || _c === void 0 ? void 0 : _c.BadJs) === null || _d === void 0 ? void 0 : _d.report("pc transfer res invalid ret", params.url || '', {
                    mid: window.PAGE_MID,
                    _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
                  });
                }
              } catch (err) {}
            } else {
              try {
                if (res.errCode !== 0) {
                  (_f = (_e = window.WX_BJ_REPORT) === null || _e === void 0 ? void 0 : _e.BadJs) === null || _f === void 0 ? void 0 : _f.report("mobile transfer res invalid ret", params.url || '', {
                    mid: window.PAGE_MID,
                    _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
                  });
                }
              } catch (err) {}
            }
          });
          beforeReq();
          return;
        }
        var xhr = new XMLHttpRequest();
        var mayAbort = !!obj.mayAbort;
        var async = typeof obj.async === 'undefined' ? true : obj.async;
        var _onreadystatechange = xhr.onreadystatechange;
        xhr.open(type, url, async);
        xhr.onreadystatechange = function () {
          if (typeof _onreadystatechange === 'function') {
            _onreadystatechange.apply(xhr);
          }
          if (xhr.readyState === 3) {
            obj.received &amp;&amp; obj.received(xhr);
          }
          if (xhr.readyState === 4) {
            beforeResp(xhr);
            xhr.onreadystatechange = null;
            var status = xhr.status;
            if (status &gt;= 200 &amp;&amp; status &lt; 400) {
              handleRespSucc(xhr, 1);
            } else {
              handleRespErr(xhr, 'status error', 1);
              if (!!status || !mayAbort) {
                var __ajaxtest = window.__ajaxtest || '0';
                __moon_report({
                  offset: MOON_AJAX_NETWORK_OFFSET,
                  log: "ajax_network_error[".concat(status, "][").concat(__ajaxtest, "]: ").concat(url, ";host:").concat(location.host),
                  e: ''
                });
              }
            }
            handleRespComplete();
          }
        };
        setXhrHeader(xhr, type, obj);
        handleReqTimeout(xhr);
        try {
          xhr.send(data);
          try {
            if (url &amp;&amp; url.length &gt; LENGTH_LIMIT) {
              reportAjaxLength(27613, 17, "ajax get limit[length: ".concat(url.length, "]").concat(url.substring(0, 1024)));
            }
            if (data &amp;&amp; !(data instanceof Blob) &amp;&amp; data.length &gt; LENGTH_LIMIT) {
              reportAjaxLength(27613, 18, "ajax post limit[length: ".concat(data.length, "]").concat(data.substring(0, 1024)));
            }
            if (data &amp;&amp; data instanceof Blob &amp;&amp; data.size &gt; LENGTH_LIMIT) {
              reportAjaxLength(27613, 18, "ajax post limit[length: ".concat(data.size, "]blob"));
            }
          } catch (e) {
          }
        } catch (e) {
          obj.error &amp;&amp; obj.error(xhr, {
            type: 3,
            error: e,
            status: 0
          });
        }
        beforeReq();
      });
    }

    
    mmversion.isWindowsWechat &amp;&amp; mmversion.compareHexVersion('0xf2550000') || mmversion.isMacWechat &amp;&amp; mmversion.compareHexVersion('0xf2650000');

    
    var getBrandServiceType = function getBrandServiceType() {
      var serviceType = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : window.service_type;
      var _a, _b;
      var brandServiceType = 0;
      if (serviceType !== undefined) brandServiceType = serviceType + 1;
      if (((_b = (_a = window.cgiData) === null || _a === void 0 ? void 0 : _a.trans_appmsg_info) === null || _b === void 0 ? void 0 : _b.trans_type) * 1 === 1) brandServiceType = 3;
      return brandServiceType;
    };

    function setCurrentMpInfo(ifShow) {
      var supportNewTopBar = mmversion.isIOS &amp;&amp; mmversion.gtVersion('7.0.10', true) || mmversion.isAndroid &amp;&amp; mmversion.gtVersion('7.0.12', true);
      var supportLiveStatus = mmversion.isIOS &amp;&amp; mmversion.gtVersion('8.0.46', true) || mmversion.isAndroid &amp;&amp; mmversion.gtVersion('8.0.46', true);
      JSAPI.invoke('currentMpInfo', {
        userName: window.user_name,
        brandName: !!supportNewTopBar &amp;&amp; window.nickname === '' ? '未命名账号' : window.title,
        title: window.msg_title || '',
        brandIcon: window.hd_head_img.replace(/\/0$/, '/132'),
        itemShowType: window.item_show_type,
        isPaySubscribe: window.isPaySubscribe,
        topBarStyle: supportNewTopBar ? 1 : 0,
        topBarShowed: ifShow,
        disableShowFinderLiveTopBar: !ifShow &amp;&amp; supportLiveStatus ? 1 : 0,
        brandServiceType: getBrandServiceType()
      }, function () {});
    }
    function AjaxWx(obj) {
      var report36408 = typeof obj.report36408 === 'function' ? obj.report36408 : function () {};
      obj.url += obj.url.indexOf('?') === -1 ? '?fasttmplajax=1' : '&amp;fasttmplajax=1';
      if (getAjaxScope(obj.url)) {
        Ajax(obj);
        return;
      }
      if (obj.usePb) {
        obj.type = 'POST';
        obj.data = {
          data: JSON.stringify(obj.data)
        };
      }
      if (!/^(http:\/\/|https:\/\/|\/\/)/.test(obj.url)) {
        obj.url = "https://mp.weixin.qq.com/".concat(obj.url.replace(/^\//, ''));
      } else if (/^\/\//.test(obj.url)) {
        obj.url = "https:".concat(obj.url);
      }
      if (obj.f !== 'html' &amp;&amp; (obj.url.indexOf('?f=json') === -1 || obj.url.indexOf('&amp;f=json') === -1)) {
        obj.url += '&amp;f=json';
      }
      if (!obj.notJoinUrl &amp;&amp; obj.f !== 'html') {
        obj.url = Url.joinUrl(obj.url);
      }
      Url.joinUserArticleRole(obj.url, !!obj.notJoinUrl, function (url) {
        obj.url = url;
        var urlObj = new URL(url, location.origin);
        var data = null;
        if (_typeof(obj.data) === 'object') {
          var d = obj.data;
          var ds = [];
          for (var k in d) {
            if (d.hasOwnProperty(k)) {
              ds.push("".concat(k, "=").concat(encodeURIComponent(d[k])));
            }
          }
          data = ds.join('&amp;');
        } else {
          data = typeof obj.data === 'string' ? obj.data : null;
        }
        var header = {
          Cookie: document.cookie,
          referer: location.href
        };
        if (obj.contentType) {
          header['Content-Type'] = obj.contentType;
        } else if ((obj.type || 'GET').toUpperCase() === 'POST') {
          header['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
        }
        var reqLogItem = networkStartLog({
          method: obj.type || 'GET',
          url: obj.url,
          postData: obj.data || {},
          requestHeader: header,
          requestType: 'jsapi',
          startTime: Date.now()
        });
        var retryTime = 1;
        var jsapiRequest = function jsapiRequest(obj, data) {
          return JSAPI.invoke('request', {
            url: obj.url,
            method: obj.type,
            data: data,
            header: header
          }, function (res) {
            var _a, _b, _c, _d, _e, _f;
            if (res.err_msg.indexOf(':ok') &gt; -1 &amp;&amp; (!res.statusCode || res.statusCode &gt;= 200 &amp;&amp; res.statusCode &lt; 400)) {
              if (reqType(obj, '/mp/getappmsgext')) {
                window.receiveGetAppmsgExt = "".concat(res.statusCode, "|").concat(Date.now());
              }
              if (reqType(obj, '/mp/getappmsgad')) {
                window.receiveGetAppmsgAd = "".concat(res.statusCode, "|").concat(Date.now());
              }
              if (retryTime === 1) {
                obj.received &amp;&amp; obj.received(null);
              }
              var resData = {};
              if (res.data) {
                try {
                  if (obj.dataType === 'json') {
                    resData = JSON.parse(res.data);
                  } else {
                    resData = res.data;
                  }
                  if (resData &amp;&amp; resData.base_resp &amp;&amp; ((_a = resData.base_resp) === null || _a === void 0 ? void 0 : _a.ret) !== 0 &amp;&amp; typeof window.WX_BJ_REPORT !== 'undefined' &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; Math.random() &lt; 0.001) {
                    var reportUrl = obj.url;
                    if (obj.url.indexOf('?') !== -1) {
                      reportUrl = obj.url.substring(0, obj.url.indexOf('?'));
                      if (Url.getQuery('action', obj.url)) {
                        reportUrl = "".concat(reportUrl, "?action=").concat(Url.getQuery('action', obj.url));
                      }
                    }
                    if (!((reportUrl === '/mp/getappmsgext' || reportUrl === '/mp/getappmsgad') &amp;&amp; typeof resData.base_resp.ret === 'undefined')) {
                      window.WX_BJ_REPORT.BadJs.report(reportUrl, "ret=".concat(resData.base_resp.ret), {
                        mid: window.PAGE_MID,
                        view: 'wap_retcode'
                      });
                    }
                  }
                } catch (e) {
                  if (!obj.dontReport) {
                    report36408({
                      CgiPath: urlObj.pathname || '',
                      Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                      Query: urlObj.search || '',
                      PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                      Method: obj.type || '',
                      RequestType: 20,
                      RetType: 1,
                      HttpCode: res.statusCode || 0,
                      Ret: ((_b = resData === null || resData === void 0 ? void 0 : resData.base_resp) === null || _b === void 0 ? void 0 : _b.ret) || 0
                    });
                  }
                  console.error(e);
                  obj.error &amp;&amp; obj.error(null, {
                    type: 1,
                    error: e,
                    status: res.statusCode
                  });
                  obj.complete &amp;&amp; obj.complete();
                  reqLogItem.endTime = Date.now();
                  reqLogItem.response = res;
                  networkEndLog(reqLogItem);
                  return;
                }
              }
              var tmpResData = {};
              try {
                tmpResData = JSON.parse(res.data);
              } catch (e) {}
              if (tmpResData &amp;&amp; tmpResData.base_resp &amp;&amp; tmpResData.base_resp.ret === -3 &amp;&amp; retryTime &lt; 2 &amp;&amp; (mmversion.isIOS || mmversion.isAndroid &amp;&amp; mmversion.getInner() &gt; '27000600')) {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 1,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_c = resData === null || resData === void 0 ? void 0 : resData.base_resp) === null || _c === void 0 ? void 0 : _c.ret) || 0
                  });
                }
                var _retryTime = retryTime++;
                JSAPI.invoke('updatePageAuth', {}, function (res) {
                  console.log('[skeleton] updatePageAuth', res);
                  monitor$1.setSum(112287, 3, 1);
                  if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf(':ok') &gt; -1) {
                    window.top.pass_ticket = encodeURIComponent(Url.getQuery('pass_ticket', res.fullUrl).html(false).replace(/\s/g, '+'));
                    if (obj.pass_ticket) {
                      obj.pass_ticket = window.top.pass_ticket;
                    }
                    console.warn('[skeleton] updatePageAuth resetTopbar');
                    var supportNewTopBar = mmversion.isIOS &amp;&amp; mmversion.gtVersion('7.0.10', true);
                    var showBottomBar = !!window.is_login;
                    if (window.top.item_show_type === '0' &amp;&amp; supportNewTopBar) {
                      var top = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop || 0;
                      setCurrentMpInfo(top &gt; 40 &amp;&amp; !showBottomBar);
                    }
                    try {
                      obj.url = Url.addParam(obj.url, 'retry', _retryTime, true);
                    } catch (err) {
                      console.error(err);
                    }
                    jsapiRequest(obj, data);
                    monitor$1.setSum(112287, 4, 1);
                  } else {
                    obj.success &amp;&amp; obj.success(resData);
                    obj.complete &amp;&amp; obj.complete();
                    if (mmversion.isIOS) {
                      monitor$1.setSum(112287, 35, 1);
                    } else {
                      monitor$1.setSum(112287, 36, 1);
                    }
                    reqLogItem.status = 200;
                    reqLogItem.endTime = Date.now();
                    reqLogItem.response = resData;
                    networkEndLog(reqLogItem);
                  }
                });
              } else {
                if (((_d = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _d === void 0 ? void 0 : _d.ret) !== 0) {
                  if (!obj.dontReport) {
                    report36408({
                      CgiPath: urlObj.pathname || '',
                      Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                      Query: urlObj.search || '',
                      PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                      Method: obj.type || '',
                      RequestType: 20,
                      RetType: 4,
                      HttpCode: res.statusCode || 0,
                      Ret: ((_e = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _e === void 0 ? void 0 : _e.ret) || 0
                    });
                  }
                } else {
                  if (!obj.dontReport) {
                    report36408({
                      CgiPath: urlObj.pathname || '',
                      Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                      Query: urlObj.search || '',
                      PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                      Method: obj.type || '',
                      RequestType: 20,
                      RetType: 0,
                      HttpCode: res.statusCode || 0,
                      Ret: ((_f = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _f === void 0 ? void 0 : _f.ret) || 0
                    });
                  }
                }
                obj.success &amp;&amp; obj.success(resData);
                obj.complete &amp;&amp; obj.complete();
                reqLogItem.status = 200;
                reqLogItem.endTime = Date.now();
                reqLogItem.response = resData;
                networkEndLog(reqLogItem);
              }
            } else if (res.err_msg.indexOf('no permission') &gt; -1 || !mmversion.isOnlyWechat) {
              if (!obj.dontReport) {
                report36408({
                  CgiPath: urlObj.pathname || '',
                  Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                  Query: urlObj.search || '',
                  PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                  Method: obj.type || '',
                  RequestType: 20,
                  RetType: 1,
                  HttpCode: res.statusCode || 0,
                  Ret: 0
                });
              }
              Ajax(obj);
              if (res.err_msg.indexOf('no permission') &gt; -1) {
                console.warn('[JSAPI Request] No permission');
                monitor$1.setSum(112287, 31, 1);
              }
              reqLogItem.status = 302;
              reqLogItem.endTime = Date.now();
              reqLogItem.response = res;
              networkEndLog(reqLogItem);
            } else {
              if (!obj.dontReport) {
                report36408({
                  CgiPath: urlObj.pathname || '',
                  Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                  Query: urlObj.search || '',
                  PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                  Method: obj.type || '',
                  RequestType: 20,
                  RetType: 2,
                  HttpCode: res.statusCode || 0,
                  Ret: 0
                });
              }
              obj.error &amp;&amp; obj.error(null, {
                type: 3,
                error: res,
                status: 0
              });
              obj.complete &amp;&amp; obj.complete();
              monitor$1.setSum(112287, 32, 1);
              var sample = 0.001;
              if (Math.random() &lt; sample) {
                var msg = "request: ".concat(JSON.stringify(obj.type), " ").concat(JSON.stringify(obj.url), " ;;;; cookie: ").concat(JSON.stringify(document.cookie), " ;;;; data: ").concat(JSON.stringify(data), " ;;;; resp: ").concat(JSON.stringify(res));
                if (window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs) {
                  window.WX_BJ_REPORT.BadJs.report('ajax_wx_request_error', msg, {
                    mid: 'mmbizwap:Monitor'
                  });
                }
              }
              reqLogItem.status = 400;
              reqLogItem.endTime = Date.now();
              reqLogItem.response = res;
              networkEndLog(reqLogItem);
            }
          });
        };
        if (reqType(obj, '/mp/getappmsgext')) {
          window.startGetAppmsgExtTime = Date.now();
        }
        if (reqType(obj, '/mp/getappmsgad')) {
          window.startGetAppmsgAdTime = Date.now();
        }
        jsapiRequest(obj, data);
      });
    }

    function _regeneratorRuntime() {  _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
    var AjaxRouter = function () {
      var _ref = _asyncToGenerator( _regeneratorRuntime().mark(function _callee(obj) {
        return _regeneratorRuntime().wrap(function _callee$(_context) {
          while (1) switch (_context.prev = _context.next) {
            case 0:
              if (!window.__secPageAuthPromise) {
                _context.next = 3;
                break;
              }
              _context.next = 3;
              return window.__secPageAuthPromise;
            case 3:
              if (!(!mmversion.isWxWork &amp;&amp; (window.__second_open__ || !getIsAcrossOrigin() &amp;&amp; top.window.__second_open__) &amp;&amp; window.__is_page_auth_return__ &amp;&amp; !obj.pureHttp)) {
                _context.next = 5;
                break;
              }
              return _context.abrupt("return", AjaxWx(obj));
            case 5:
              return _context.abrupt("return", Ajax(obj));
            case 6:
            case "end":
              return _context.stop();
          }
        }, _callee);
      }));
      return function AjaxRouter(_x) {
        return _ref.apply(this, arguments);
      };
    }();

    var html = function html(_str, encode) {
      if (!_str) return '';
      var replace = ['&amp;#96;', '`', '&amp;#39;', '\'', '&amp;quot;', '"', '&amp;nbsp;', ' ', '&amp;gt;', '&gt;', '&amp;lt;', '&lt;', '&amp;yen;', '¥', '&amp;amp;', '&amp;', '&amp;#60;', '&lt;', '&amp;#62;', '&gt;'];
      
      var replaceReverse = ['&amp;', '&amp;amp;', '¥', '&amp;yen;', '&lt;', '&amp;lt;', '&gt;', '&amp;gt;', ' ', '&amp;nbsp;', '"', '&amp;quot;', '\'', '&amp;#39;', '`', '&amp;#96;'];
      var str = _str;
      var target;
      if (encode) {
        target = replaceReverse;
      } else {
        target = replace;
      }
      for (var i = 0; i &lt; target.length; i += 2) {
        str = str.replace(new RegExp(target[i], 'g'), target[i + 1]);
      }
      return str;
    };
    var htmlLite = function htmlLite(_str, encode) {
      if (!_str) return '';
      var replace = ['&amp;#96;', '`', '&amp;#39;', '\'', '&amp;quot;', '"', '&amp;gt;', '&gt;', '&amp;lt;', '&lt;', '&amp;amp;', '&amp;'];
      
      var replaceReverse = ['&amp;', '&amp;amp;', '&lt;', '&amp;lt;', '&gt;', '&amp;gt;', '"', '&amp;quot;', '\'', '&amp;#39;', '`', '&amp;#96;'];
      var str = _str;
      var target;
      if (encode) {
        target = replaceReverse;
      } else {
        target = replace;
      }
      for (var i = 0; i &lt; target.length; i += 2) {
        str = str.replace(new RegExp(target[i], 'g'), target[i + 1]);
      }
      return str;
    };
    var htmlEncode = function htmlEncode(str) {
      return html(str, true);
    };
    var htmlDecode = function htmlDecode(str) {
      return html(str, false);
    };
    var htmlEncodeLite = function htmlEncodeLite(str) {
      return htmlLite(str, true);
    };
    var htmlDecodeLite = function htmlDecodeLite(str) {
      return htmlLite(str, false);
    };
    String.prototype.html = function (encode) {
      return html(this.toString(), encode);
    };
    String.prototype.htmlEncode = function () {
      return htmlEncode(this.toString());
    };
    String.prototype.htmlDecode = function () {
      return htmlDecode(this.toString());
    };
    String.prototype.htmlLite = function (encode) {
      return htmlLite(this.toString(), encode);
    };
    String.prototype.htmlEncodeLite = function () {
      return htmlEncodeLite(this.toString());
    };
    String.prototype.htmlDecodeLite = function () {
      return htmlDecodeLite(this.toString());
    };

    var isx5 = navigator.userAgent.indexOf('TBS/') !== -1;
    var getDataFunc = [];
    var reportData = [];
    
    var specificData = {};
    function joinUrl(url) {
      var obj = {};
      if (typeof window.uin !== 'undefined') {
        obj.uin = window.uin;
      }
      if (typeof window.key !== 'undefined') {
        obj.key = window.key;
      }
      if (typeof window.pass_ticket !== 'undefined') {
        obj.pass_ticket = window.pass_ticket;
      }
      if (typeof window.wxtoken !== 'undefined') {
        obj.wxtoken = window.wxtoken;
      }
      if (typeof window.devicetype !== 'undefined') {
        obj.devicetype = window.devicetype;
      }
      if (typeof window.clientversion !== 'undefined') {
        obj.clientversion = window.clientversion;
      }
      if (typeof window.appmsg_token !== 'undefined') {
        obj.appmsg_token = window.appmsg_token;
      } else if (url.indexOf('advertisement_report') &gt; -1) {
        new Image().src = "".concat(location.protocol, "//mp.weixin.qq.com/mp/jsmonitor?idkey=68064_13_1&amp;r=").concat(Math.random());
      }
      obj.x5 = isx5 ? '1' : '0';
      obj.f = 'json';
      return Url.join(url, obj);
    }
    function isObj(obj) {
      return obj &amp;&amp; _typeof(obj) === 'object';
    }
    function assign(target, source) {
      if (isObj(target) &amp;&amp; isObj(source)) {
        for (var key in source) {
          if (Object.prototype.hasOwnProperty.call(source, key)) {
            target[key] = source[key];
          }
        }
      }
    }
    function assembleReportData(initiative) {
      var leaveReportLog = [];
      leaveReportLog.push({
        content: "[LeaveReport] specificData keys: ".concat(Object.keys(specificData)),
        timestamp: Date.now()
      });
      Log.log("[LeaveReport] specificData keys: ".concat(Object.keys(specificData)));
      console.log("[LeaveReport] specificData keys: ".concat(Object.keys(specificData)));
      var allReportData = {};
      for (var reportField in specificData) {
        if (!allReportData[reportField]) {
          allReportData[reportField] = {};
        }
        for (var i = 0; i &lt; specificData[reportField].length; i++) {
          var param = specificData[reportField][i];
          if (typeof param === 'function') {
            try {
              assign(allReportData[reportField], param(initiative));
            } catch (err) {
              leaveReportLog.push({
                content: "[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)),
                timestamp: Date.now()
              });
              Log.error("[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)));
              console.error("[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)));
            }
          } else if (isObj(param)) {
            assign(allReportData[reportField], param);
          }
        }
      }
      leaveReportLog.push({
        content: "[LeaveReport] reportData.length: ".concat(reportData.length),
        timestamp: Date.now()
      });
      Log.log("[LeaveReport] reportData.length: ".concat(reportData.length));
      console.log("[LeaveReport] reportData.length: ".concat(reportData.length));
      leaveReportLog.push({
        content: "[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length),
        timestamp: Date.now()
      });
      Log.log("[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length));
      console.log("[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length));
      for (var _i = 0; _i &lt; getDataFunc.length; _i++) {
        try {
          var data = getDataFunc[_i](initiative);
          if (isObj(data)) {
            reportData.push(data);
          }
        } catch (err) {
          leaveReportLog.push({
            content: "[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)),
            timestamp: Date.now()
          });
          Log.error("[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)));
          console.error("[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)));
        }
      }
      for (var _i2 = 0; _i2 &lt; reportData.length; _i2++) {
        if (reportData[_i2].reportUrl) {
          reportData[_i2].reportUrl = joinUrl(reportData[_i2].reportUrl);
        }
      }
      allReportData.data = {
        'requestList': reportData
      };
      leaveReportLog.push({
        content: "[LeaveReport] final reportData.length: ".concat(reportData.length, ", data=").concat(JSON.stringify(reportData)),
        timestamp: Date.now()
      });
      Log.log("[LeaveReport] final reportData.length: ".concat(reportData.length));
      console.log("[LeaveReport] final reportData.length: ".concat(reportData.length));
      allReportData.info = leaveReportLog;
      return allReportData;
    }
    function addReport(param) {
      if (typeof param === 'function') {
        getDataFunc.push(param);
      } else if (isObj(param)) {
        reportData.push(param);
      }
    }
    
    function addSpecificReport(reportField, param) {
      if (!specificData[reportField]) {
        specificData[reportField] = [];
      }
      specificData[reportField].push(param);
    }
    
    function reportNow(callback) {
      var allReportData = assembleReportData(true);
      JSAPI.invoke('handleMPPageAction', {
        action: 'reportByLeaveForMPGateway',
        reportData: allReportData
      }, function (res) {
        if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf(':ok') !== -1) {
          getDataFunc = [];
          reportData = [];
          specificData = {};
          typeof callback === 'function' &amp;&amp; callback(res);
        } else {
          getDataFunc = [];
          reportData = [];
          var len = allReportData.data.requestList.length;
          allReportData.data.requestList.forEach(function (req) {
            if (req.reportUrl) {
              AjaxRouter({
                type: req.method || 'GET',
                url: req.reportUrl,
                data: req.reportData,
                async: false,
                success: function success(resp) {
                  if (--len &lt; 0) {
                    typeof callback === 'function' &amp;&amp; callback({
                      err_msg: 'handleMPPageAction:ok',
                      fallback: true,
                      resp: resp
                    });
                  }
                },
                error: function error(xhr, err) {
                  if (--len &lt; 0) {
                    typeof callback === 'function' &amp;&amp; callback({
                      err_msg: 'handleMPPageAction:fail',
                      fallback: true,
                      err: err
                    });
                  }
                }
              });
            }
          });
        }
      });
    }
    var leaveReport = {
      reportNow: reportNow,
      addReport: addReport,
      addSpecificReport: addSpecificReport
    };
    var _leaveReport = (function () {
      var doc = {};
      var isCrossOrigin = false;
      try {
        doc = top.window.document;
      } catch (e) {
        isCrossOrigin = true;
      }
      if (!isCrossOrigin &amp;&amp; top.window.__leaveReport) {
        return top.window.__leaveReport;
      }
      if (window.__leaveReport) {
        return window.__leaveReport;
      }
      JSAPI.on('reportOnLeaveForMP', function () {
        return assembleReportData(false);
      });
      return window.__leaveReport = leaveReport;
    })();

    var getReportJson = function getReportJson(logId, rawData) {
      var data = JSON.parse(JSON.stringify(rawData));
      data.log_id = Number(logId);
      data.TimeStamp = Math.round(Date.now() / 1000);
      console.log('[comm_report] reportjson: ', data);
      return JSON.stringify(data);
    };
    var getSuccessHandler = function getSuccessHandler(logId, data, opt) {
      return function (res) {
        if (res &amp;&amp; res.err_code !== 0) {
          console.warn("[comm_report] report ".concat(logId, " fail: "), res.err_msg, data);
        }
        if (typeof opt.success === 'function') {
          opt.success(res);
        }
      };
    };
    var getErrorHandler = function getErrorHandler(logId, data, opt) {
      return function (xhr, info) {
        console.error("[comm_report] report ".concat(logId, " error: "), info, data);
        if (typeof opt.error === 'function') {
          opt.error(xhr, info);
        }
      };
    };
    var batchReportDataArr = [];
    var blackLogId = [25587, 18832, 28208, 25574, 29139, 10945];
    var BATCH_SIZE = 4;
    var BATCH_TIME = 1000;
    var getRepeatedReportJson = function getRepeatedReportJson() {
      if (!batchReportDataArr || !batchReportDataArr.length) return false;
      var reportData = {
        count: 0
      };
      reportData.count = batchReportDataArr.length;
      batchReportDataArr.forEach(function (data, index) {
        reportData["reportjson".concat(index)] = data;
      });
      batchReportDataArr = [];
      console.log('[reportData]: ', reportData);
      return reportData;
    };
    var timeOutId;
    function batchReport() {
      if (!batchReportDataArr || !batchReportDataArr.length) return;
      var repeatedReportJson = getRepeatedReportJson();
      if (!repeatedReportJson) return;
      AjaxRouter({
        type: 'POST',
        dataType: 'json',
        url: '/mp/wapcommreport?action=batch_report',
        data: repeatedReportJson,
        dontReport: true,
        success: function success(res) {
          if (res &amp;&amp; res.err_code) {
            console.warn("[comm_report] batch report fail: ", res.err_msg, batchReportDataArr);
          }
        },
        error: function error(xhr, info) {
          console.error("[comm_report] batch report error: ", info, batchReportDataArr);
        }
      });
    }
    function batchReportThrottle(logId, rawData) {
      var reportJsonData = getReportJson(logId, rawData);
      if (!reportJsonData) return;
      batchReportDataArr.push(reportJsonData);
      if (batchReportDataArr.length &gt;= BATCH_SIZE) {
        batchReport();
      } else {
        if (!timeOutId) {
          timeOutId = setTimeout(function () {
            batchReport();
            clearTimeout(timeOutId);
            timeOutId = null;
          }, BATCH_TIME);
        }
      }
    }
    _leaveReport.addReport(function () {
      var repeatedReportJson = getRepeatedReportJson();
      if (!repeatedReportJson) return false;
      var reportData = [];
      for (var _i = 0, _Object$entries = Object.entries(repeatedReportJson); _i &lt; _Object$entries.length; _i++) {
        var _Object_i = _slicedToArray(_Object$entries[_i], 2),
          key = _Object_i[0],
          value = _Object_i[1];
        reportData.push("".concat(key, "=").concat(encodeURIComponent(value)));
      }
      return {
        reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport?action=batch_report',
        reportData: reportData.join('&amp;'),
        method: 'POST'
      };
    });
    var commonReport = {
      report: function report(logId, rawData, rawOpt) {
        var opt = rawOpt || {};
        if (!opt.realTime &amp;&amp; !blackLogId.includes(logId)) {
          batchReportThrottle(logId, rawData);
        } else {
          AjaxRouter({
            type: 'POST',
            dataType: 'json',
            url: '/mp/wapcommreport',
            data: {
              reportjson: getReportJson(logId, rawData)
            },
            async: opt.async,
            success: getSuccessHandler(logId, rawData, opt),
            error: getErrorHandler(logId, rawData, opt)
          });
        }
      },
      leaveReport: function leaveReport(logId, rawData) {
        _leaveReport.addReport(function () {
          var data = typeof rawData === 'function' ? rawData() : rawData;
          if (!data) {
            return false;
          }
          return {
            reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport',
            reportData: "reportjson=".concat(encodeURIComponent(getReportJson(logId, data))),
            method: 'POST'
          };
        });
      },
      reportByBeacon: function reportByBeacon(logId, rawData) {
        try {
          if (!Device.os.android &amp;&amp; !Device.os.ios &amp;&amp; !Device.os.harmony) {
            var data = typeof rawData === 'function' ? rawData() : rawData;
            if (!data) {
              return false;
            }
            var url = '/mp/wapcommreport';
            var reportJsonData = encodeURIComponent(getReportJson(logId, data));
            console.log("reportByBeacon", JSON.stringify(reportJsonData));
            navigator.sendBeacon(Url.joinUrl(url), "reportjson=".concat(reportJsonData));
          } else {
            _leaveReport.addReport(function () {
              var data = typeof rawData === 'function' ? rawData() : rawData;
              if (!data) {
                return false;
              }
              return {
                reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport',
                reportData: "reportjson=".concat(encodeURIComponent(getReportJson(logId, data))),
                method: 'POST'
              };
            });
          }
        } catch (error) {
          console.log(error);
        }
      }
    };

    function getCommonReportData() {
      return {
        Referer: location.href,
        UserAgent: navigator.userAgent,
        Protocol: location.protocol || '',
        Origin: location.host || ''
      };
    }
    var report36408 = function report36408(data) {
      commonReport.report(36408, Object.assign(Object.assign({}, data), getCommonReportData()));
    };

    
    var ajax = function ajax(obj) {
      obj.report36408 = report36408;
      AjaxRouter(obj);
    };

    
    var timer = null;
    var jsmonitorReport = {
      setSum: function setSum(id, key, value) {
        throw new Error('Function not implemented.');
      },
      setAvg: function setAvg(id, key, value) {
        throw new Error('Function not implemented.');
      },
      setLogs: function setLogs(opt) {
        throw new Error('Function not implemented.');
      },
      send: function send(async) {
        throw new Error('Function not implemented.');
      }
    };
    window.__monitor_unload_has_done__ = false;
    jsmonitorReport.setSum = function (id, key, value) {
      monitor$1.setSum(id, key, value);
      return jsmonitorReport;
    };
    jsmonitorReport.setAvg = function (id, key, value) {
      monitor$1.setAvg(id, key, value);
      return jsmonitorReport;
    };
    jsmonitorReport.setLogs = function (opt) {
      monitor$1.setLogs(opt);
      return jsmonitorReport;
    };
    jsmonitorReport.send = function (async) {
      if (async !== false) {
        async = true;
      }
      monitor$1.send(async, ajax);
      return jsmonitorReport;
    };
    function reportInterval(fn, delay) {
      timer = window.setTimeout(function () {
        fn();
        reportInterval(fn, delay);
      }, delay);
    }
    reportInterval(function () {
      jsmonitorReport.send();
    }, 1 * 1000);
    window.addEventListener('unload', function () {
      if (window.__monitor_report_has_done__) return;
      window.__ajaxtest = '2';
      if (timer) {
        window.clearTimeout(timer);
        timer = null;
      }
      jsmonitorReport.send(false);
      window.__monitor_unload_has_done__ = true;
    }, false);
    if (window.__jsmonitorReport) {
      jsmonitorReport = window.__jsmonitorReport;
    } else {
      window.__jsmonitorReport = jsmonitorReport;
    }
    var jsmonitorReport$1 = jsmonitorReport;
    
    function saveSpeeds(opt) {
      var sample = 0.001;
      if (typeof opt.sample === 'number') {
        sample = opt.sample;
      }
      var rand = Math.random();
      if (rand &lt; sample) {
        wxgsdk.saveSpeeds(opt);
      }
    }
    function setBasicTime(opt) {
      var sample = opt.sample || 0.001;
      var rand = Math.random();
      if (rand &lt; sample) {
        wxgsdk.setBasicTime(opt);
      }
    }
    function send() {
      wxgsdk.send();
    }
    function jsmonitor(opt) {
      opt = opt || [];
      if (!Array.isArray(opt)) {
        var item = opt;
        opt = [];
        opt.push(item);
      }
      for (var i = 0; i &lt; opt.length; i++) {
        var _item = opt[i];
        var id = _item.id;
        var key = _item.key;
        var value = _item.value || 1;
        if (id !== undefined &amp;&amp; key !== undefined) {
          jsmonitorReport$1.setSum(id, key, value);
        }
      }
    }
    var wxgspeedsdk = {
      saveSpeeds: saveSpeeds,
      setBasicTime: setBasicTime,
      send: send,
      jsmonitor: jsmonitor
    };

    function _arrayWithoutHoles(arr) {
      if (Array.isArray(arr)) return _arrayLikeToArray(arr);
    }

    function _iterableToArray(iter) {
      if (typeof Symbol !== "undefined" &amp;&amp; iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
    }

    function _nonIterableSpread() {
      throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
    }

    function _toConsumableArray(arr) {
      return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
    }

    var uuid = function uuid() {
      return ((1 + Math.random()) * 0x10000 | 0).toString(16).substring(1);
    };

    var WRAP_TAG = 'span';
    var IMG_TAG = 'IMG';
    var NODE_TYPE = {
      text: 1,
      img: 2
    };
    var blockEleTagName = ['P', 'DIV', 'SECTION', 'LI', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'TABLE', 'PRE', 'BLOCKQUOTE'];
    var exceptEleClassName = ['js_product_container', 'js_blockquote_wrap'];
    var ignoreTagName = ['IFRAME', 'VIDEO', 'MPVOICE', 'MPGONGYI', 'QQMUSIC', 'MPSHOP', 'MP-WEAPP', 'MP-MINIPROGRAM', 'MPPRODUCT', 'MPCPS'];
    var ignoreEleId = ['js_mpvideo'];
    var ignoreEleClassName = ['js_product_container'];
    var TEMP_NODES = {};

    var childNodesHasEle = function childNodesHasEle(element) {
      var tagNameList = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : blockEleTagName;
      if (!element || element.nodeType !== 1) {
        return false;
      }
      for (var i = 0; i &lt; element.children.length; i++) {
        if (tagNameList.indexOf(element.children[i].tagName) !== -1) {
          return true;
        }
      }
      return false;
    };
    function eleHasAttr(ele) {
      var attr = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 'className';
      var AttrList = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : exceptEleClassName;
      for (var i = 0; i &lt; AttrList.length; i++) {
        if (ele[attr] &amp;&amp; typeof ele[attr] === 'string' &amp;&amp; ele[attr].indexOf(AttrList[i]) &gt; -1) {
          return true;
        }
      }
      return false;
    }
    var removeChildMedia = function removeChildMedia(element) {
      var parentNode = element.parentNode;
      element.parentNode.removeChild(element);
      if (parentNode.children &amp;&amp; parentNode.children.length) {
        return false;
      }
      return true;
    };

    
    var getParaList = function getParaList(element, _ref) {
      var _ref$getNestedStructu = _ref.getNestedStructure,
        getNestedStructure = _refgetNestedStructu,
        _ref$removeIgoreEle = _ref.removeIgoreEle,
        removeIgoreEle = _refremoveIgoreEle;
      var paraList = function getParaListWithIndex(ele, getNested) {
        var childNodes = ele.children;
        if (!childNodes) return [];
        if (!childNodes.length) {
          return childNodes;
        }
        var child;
        var paragraphList = [];
        for (var i = 0; i &lt; childNodes.length; i++) {
          child = childNodes[i];
          if (eleHasAttr(child, 'id', ignoreEleId) || eleHasAttr(child, 'className', ignoreEleClassName)) {
            if (removeIgoreEle) {
              child.parentNode.removeChild(child);
              i -= 1;
            }
            continue;
          }
          if (childNodesHasEle(child, ignoreTagName)) {
            if (removeIgoreEle) {
              removeChildMedia(child);
              i -= 1;
            }
            continue;
          }
          if (childNodesHasEle(child, blockEleTagName) &amp;&amp; !eleHasAttr(child)) {
            paragraphList = paragraphList.concat(getParaListWithIndex(child, getNested));
            if (getNested) {
              if (!child.getAttribute('data-index')) {
                paragraphList.push(child);
              }
            }
          } else {
            if (!child.getAttribute('data-index')) {
              paragraphList.push(child);
            }
          }
        }
        return paragraphList;
      }(element, getNestedStructure);
      return [].slice.call(paraList);
    };
    getParaList.paragraphStartIdx = 1000000;

    
    var getSplitTextNode = function getSplitTextNode($textNode, startOffset, endOffset, paraIndex) {
      try {
        $textNode.splitText(startOffset);
      } catch (err) {
        if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
          WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'splitText Error', {
            mid: 'mmbizwap:articlemask_Monitor',
            view: 'wap_business',
            _info: {
              type: 'getSplitTextNode textnode',
              startOffset: startOffset,
              endOffset: endOffset
            }
          });
        }
      }
      var selectedNode = $textNode.nextSibling;
      try {
        selectedNode.splitText(endOffset - startOffset);
      } catch (e) {
        if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
          WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'splitText Error', {
            mid: 'mmbizwap:articlemask_Monitor',
            view: 'wap_business',
            _info: {
              type: 'getSplitTextNode nextSibling',
              startOffset: startOffset,
              endOffset: endOffset
            }
          });
        }
      }
      return [{
        $node: selectedNode,
        type: NODE_TYPE.text,
        idx: paraIndex
      }];
    };

    
    var getBlockNode = function getBlockNode($node) {
      if (blockEleTagName.indexOf($node.tagName) !== -1 &amp;&amp; typeof $node.dataset.index !== 'undefined') {
        return $node;
      }
      return getBlockNode($node.parentNode);
    };

    
    var getPureBlockNode = function getPureBlockNode($node) {
      if (!$node) return $node;
      if (blockEleTagName.indexOf($node.tagName) !== -1) {
        return $node;
      }
      return getPureBlockNode($node.parentNode);
    };

    
    var getNodesByDFS = function getNodesByDFS(range) {
      var start = range.start,
        end = range.end,
        container;
      var node,
        startOffset = start.offset;
      var node,
        endOffset = end.offset;
      var queue = [];
      var result = [];
      var withinSelectRange = false;
      var achiveSelectRangeEnd = false;
      var paraIndex = 0;
      queue.push($container);
      while (queue.length &gt; 0) {
        var item = queue.pop();
        var nodeType = item.nodeType,
          tagName = item.tagName;
        if (item.dataset &amp;&amp; item.dataset.index) {
          paraIndex = +item.dataset.index;
        }
        if (withinSelectRange &amp;&amp; !achiveSelectRangeEnd) {
          if (nodeType === 3) {
            result.push({
              $node: item,
              type: NODE_TYPE.text,
              idx: paraIndex
            });
          }
          if (tagName === IMG_TAG) {
            result.push({
              $node: item,
              type: NODE_TYPE.img,
              idx: paraIndex
            });
          }
        }
        if (item === $startNode) {
          if (nodeType === 3) {
            try {
              item.splitText(startOffset);
            } catch (e) {
              WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'splitText Error', {
                mid: 'mmbizwap:articlemask_Monitor',
                view: 'wap_business',
                _info: {
                  type: 'getNodes startNode',
                  startOffset: startOffset,
                  endOffset: endOffset
                }
              });
            }
            var $startTextNode = item.nextSibling;
            result.push({
              startTextNode,
              type: NODE_TYPE.text,
              idx: paraIndex
            });
          } else if (tagName === IMG_TAG) {
            result.push({
              $node: item,
              type: NODE_TYPE.img,
              idx: paraIndex
            });
          } else {
            result.push({
              $node: item,
              type: NODE_TYPE.text,
              idx: paraIndex
            });
          }
          withinSelectRange = true;
        }
        if (item === $endNode || achiveSelectRangeEnd) {
          if (!achiveSelectRangeEnd) {
            achiveSelectRangeEnd = true;
          }
          if (item === $endNode) result.pop();
          if (nodeType === 3) {
            try {
              item.splitText(endOffset);
            } catch (e) {
              if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
                WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'splitText Error', {
                  mid: 'mmbizwap:articlemask_Monitor',
                  view: 'wap_business',
                  _info: {
                    type: 'getSplitTextNode endNode',
                    startOffset: startOffset,
                    endOffset: endOffset
                  }
                });
              }
            }
            result.push({
              $node: item,
              type: NODE_TYPE.text,
              idx: paraIndex
            });
            break;
          } else if (tagName === IMG_TAG) {
            result.push({
              $node: item,
              type: NODE_TYPE.img,
              idx: paraIndex
            });
            break;
          } else {
            var _children = item.childNodes;
            for (var i = _children.length - 1; i &gt;= 0; i--) {
              queue.push(_children[i]);
            }
          }
        }
        var children = item.childNodes;
        for (var _i = children.length - 1; _i &gt;= 0; _i--) {
          queue.push(children[_i]);
        }
      }
      return result;
    };

    
    var getSelectedNodes = function getSelectedNodes(range) {
      var start = range.start,
        end = range.end;
      var node,
        startOffset = start.offset;
      var node,
        endOffset = end.offset;
      if (endNode &amp;&amp; $startNode instanceof Text) {
        return getSplitTextNode($startNode, startOffset, endOffset, start.paraIndex);
      }
      return getNodesByDFS(range);
    };

    
    var checkTextNode = function checkTextNode($node) {
      return $node &amp;&amp; (node.innerText);
    };
    var connectSiblingText = function connectSiblingText(prev, next, target) {
      var $delete = target === prev ? next : prev;

      
      if (!checkTextNode(prev) || !checkTextNode(next)) {
        return $delete;
      }
      var text = (prev.nodeValue || prev.innerText) + (next.nodeValue || next.innerText);
      target.nodeValue = text;
      target.parentNode.removeChild($delete);
      return target;
    };

    
    var getTextNodeByOffset = function getTextNodeByOffset($parentNode, offset) {
      var queue = [];
      var curOffset = 0;
      var startOffset = 0;
      var $curNode;
      queue.push($parentNode);
      while (queue.length &gt; 0) {
        $curNode = queue.pop();
        if ($curNode.nodeType === 3) {
          startOffset = offset - curOffset;
          curOffset += $curNode.textContent.length;
          if (curOffset &gt;= offset) {
            break;
          }
        }
        var children = $curNode.childNodes;
        for (var i = children.length - 1; i &gt;= 0; i--) {
          queue.push(children[i]);
        }
      }
      return {
        parentNode,
        curNode,
        offset: startOffset
      };
    };

    
    function getBlockOffset(_ref2) {
      var blockNode,
        node;
      if ($blockNode === null) {
        return null;
      }
      var queue = [];
      var offset = 0;
      queue.push($blockNode);
      while (queue.length &gt; 0) {
        var item = queue.pop();
        if (item.nodeType === 3 &amp;&amp; item.nodeValue !== $node.nodeValue) {
          offset += item.textContent.length;
        } else if (item.nodeType === 1) {
          offset += 1;
          if (item === $node) break;
        } else if (item.nodeValue === $node.nodeValue) {
          offset += item.textContent.length;
          break;
        }
        var children = item.childNodes;
        for (var i = children.length - 1; i &gt;= 0; i--) {
          queue.push(children[i]);
        }
      }
      return offset;
    }

    
    var getDomMeta = function getDomMeta(selection) {
      selection.$node;
        var parentNode;
      var parentIndex = Number($parentNode.dataset.index);
      var offset = getBlockOffset($parentNode);
      return {
        parentIndex: parentIndex,
        fromParentoffset: offset
      };
    };
    function nodeToSelection($node) {
      var $blockNode = getBlockNode($node);
      var paraIndex = +$blockNode.dataset.index;
      var offset = 0;
      var item = {
        blockNode,
        node,
        paraIndex: paraIndex,
        offset: offset
      };
      var id = uuid();
      return {
        start: item,
        end: item,
        id: id
      };
    }

    
    var getSelection = function getSelection() {
      var selection = window.getSelection();
      if (selection.anchorNode === null) {
        return null;
      }
      var selectionRange = selection.getRangeAt(0);
      if (!selectionRange || !selection.toString()) {
        return null;
      }
      var startContainer = selectionRange.startContainer,
        endContainer = selectionRange.endContainer,
        commonAncestorContainer = selectionRange.commonAncestorContainer,
        startOffset = selectionRange.startOffset,
        endOffset = selectionRange.endOffset;
      var $startBlockNode = getBlockNode(startContainer);
      var $endBlockNode = getBlockNode(endContainer);
      var startIndex = startBlockNode.dataset.index;
      var endIndex = endBlockNode.dataset.index;
      var start = {
        startBlockNode,
        $node: startContainer,
        offset: startOffset,
        paraIndex: Number(startIndex)
      };
      var end = {
        endBlockNode,
        $node: endContainer,
        offset: endOffset,
        paraIndex: Number(endIndex)
      };
      var $container = typeof commonAncestorContainer === 'string' ? commonAncestorContainer.parentNode : commonAncestorContainer;
      var id = uuid();
      return {
        start: start,
        end: end,
        container,
        id: id
      };
    };

    
    var transferTextToElement = function transferTextToElement($node, id) {
      if (!$node) return null;
      if ($node.nodeType === 3) {
        var $wrap = document.createElement(WRAP_TAG);
        $wrap.setAttribute('data-splitid', id);
        $wrap.appendChild($node.cloneNode(false));
        if ($node.parentNode) {
          $node.parentNode.replaceChild(node);
        }
        return $wrap;
      }
      return $node;
    };

    
    var serialize = function serialize(selectionRange) {
      var start = selectionRange.start,
        end = selectionRange.end,
        id = selectionRange.id;
      var startParaOffset = getBlockOffset(start);
      var endParaOffset = start.node ? end.offset - start.offset + startParaOffset : getBlockOffset(end);
      var meta = {
        id: id,
        start: {
          para_offset: startParaOffset,
          para_index: start.paraIndex
        },
        end: {
          para_offset: endParaOffset,
          para_index: end.paraIndex
        }
      };
      return meta;
    };
    var mapMetaToLocal = function mapMetaToLocal(paraList) {
      return function (meta) {
        var paraOffset = meta.para_offset,
          paraIndex = meta.para_index;
        var $blockNode = paraList[paraIndex];
        var queue = [];
        var curOffset = 0;
        var offset = 0;
        var $curNode;
        queue.push($blockNode);
        while (queue.length &gt; 0) {
          $curNode = queue.pop();
          if ($curNode.nodeType === 3) {
            offset = paraOffset - curOffset;
            curOffset += $curNode.textContent.length;
            if (curOffset &gt;= paraOffset) {
              break;
            }
          }
          if ($curNode.nodeType === 1) {
            offset = paraOffset - curOffset;
            curOffset += 1;
            if (curOffset &gt;= paraOffset) {
              break;
            }
          }
          var children = $curNode.childNodes;
          for (var i = children.length - 1; i &gt;= 0; i--) {
            queue.push(children[i]);
          }
        }
        return {
          blockNode,
          curNode,
          offset: offset,
          paraIndex: paraIndex
        };
      };
    };
    
    var deSerialize = function deSerialize(meta, paraList, $container) {
      var desparaList = mapMetaToLocal(paraList);
      return {
        start: desparaList(meta.start),
        end: desparaList(meta.end),
        id: meta.id,
        container
      };
    };
    function getTextNode($node) {
      if (node.nodeType === 3) {
        return $node;
      }
      return $node.childNodes[0];
    }
    var resetRange = function resetRange(selectionRange) {
      window.getSelection().removeAllRanges();
      var selection = window.getSelection();
      var range = document.createRange();
      var $startnode = getTextNode(TEMP_NODES.start);
      var $endnode = getTextNode(TEMP_NODES.end);
      range.setStart($startnode, selectionRange.start.offset);
      range.setEnd($endnode, selectionRange.end.offset);
      selection.addRange(range);
    };
    var getNodeIndex = function getNodeIndex(node) {
      var queue = [];
      var index = 0;
      queue.push($block);
      while (queue.length &gt; 0) {
        var $item = queue.pop();
        if (node) break;
        index++;
        var children = $item.children;
        for (var i = 0; i &lt; children.length; i++) {
          queue.push(children[i]);
        }
      }
      return index;
    };
    var getNodeByIndex = function getNodeByIndex($block, index) {
      var queue = [];
      var cursor = 0;
      var $result = null;
      queue.push($block);
      while (queue.length &gt; 0) {
        var $item = queue.pop();
        if (cursor === index) {
          item;
          break;
        }
        cursor++;
        var children = $item.children;
        for (var i = 0; i &lt; children.length; i++) {
          queue.push(children[i]);
        }
      }
      return $result;
    };
    var hasClass = function hasClass(cls, className) {
      if (cls &amp;&amp; typeof cls === 'string' &amp;&amp; cls.indexOf(className) !== -1) {
        return true;
      }
      return false;
    };
    var inWhiteList = function inWhiteList(classAttr) {
      var classWhiteList = 'rich_pages,blockquote_info,blockquote_biz,blockquote_other,blockquote_article,js_jump_icon,h5_image_link,js_banner_container,js_list_container,js_cover,js_tx_video_container,js_product_err_container,js_product_loop_content,js_product_container,img_loading,list-paddingleft-1,list-paddingleft-2,list-paddingleft-3,selectTdClass,noBorderTable,ue-table-interlace-color-single,ue-table-interlace-color-double,__bg_gif,weapp_image_link,js_img_loading,wx_video_context,db,wx_video_thumb_primary,wx_video_play_btn,wx_video_mask,qqmusic_area,tc,tips_global,unsupport_tips,qqmusic_wrp,appmsg_card_context,appmsg_card_active,wx_tap_card,js_wx_tap_highlight,wx_tap_link,qqmusic_bd,play_area,icon_qqmusic_switch,pic_qqmusic_default,qqmusic_thumb,access_area,qqmusic_songname,qqmusic_singername,qqmusic_source,js_audio_frame,share_audio_context,flex_context,pages_reset,share_audio_switch,icon_share_audio_switch,share_audio_info,flex_bd,share_audio_title,share_audio_tips,share_audio_progress_wrp,share_audio_progress,share_audio_progress_inner,share_audio_progress_buffer,share_audio_progress_loading,share_audio_progress_loading_inner,share_audio_progress_handle,share_audio_desc,share_audio_length_current,share_audio_length_total,video_iframe,vote_iframe,js_editor_vote_card,res_iframe,card_iframe,js_editor_card,weapp_display_element,js_weapp_display_element,weapp_card,app_context,weapp_card_bd,weapp_card_profile,radius_avatar,weapp_card_avatar,weapp_card_nickname,weapp_card_info,weapp_card_title,weapp_card_thumb_wrp,weapp_card_ft,weapp_card_logo,js_pay_btn,pay,pay__mask,wx_video_loading,js_redpacketcover,js_uneditable,js_uneditablemouseover,js_editor_qqmusic,js_img_placeholder,js_editor_audio,ct_geography_loc_tip,js_poi_entry,js_mention_entry,product_text_link,js_plain-music_entry'.split(',');
      var qaClassPrefix = 'qa__';
      var classWhiteListReg = [new RegExp('^weui'), new RegExp('^appmsg'), new RegExp('^audio'), new RegExp('^music'), new RegExp('^cps_inner'), new RegExp('^bizsvr_'), new RegExp('^code-snippet'), new RegExp('^' + qaClassPrefix), new RegExp('^wx-edui-'), new RegExp('^wx_'), new RegExp('^wx-'), new RegExp('^custom_select_card_')
      ];
      if (!classAttr) return null;
      var classList = classAttr.split(/\s+/);
      var newClassList = [];
      for (var i = 0, len = classList.length; i &lt; len; ++i) {
        var className = classList[i];
        if (className &amp;&amp; classWhiteList.indexOf(className) !== -1) {
          newClassList.push(className);
        } else {
          for (var j = 0, jl = classWhiteListReg.length; j &lt; jl; j++) {
            if (classWhiteListReg[j].test(className)) {
              newClassList.push(className);
              break;
            }
          }
        }
      }
      var str = newClassList.join('.');
      return str &amp;&amp; '.' + str;
    };
    var getNodeSelector = function getNodeSelector(node) {
      var selector = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : '';
      var root = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : document.body;
      if (!node || node === root) return selector;
      var id = node.getAttribute('id');
      var className = node.getAttribute('class');
      var tagName = node.tagName.toLowerCase();
      var currentSelector = null;
      if (id &amp;&amp; !hasClass(className, 'articlepart-selector-area_choice-button_wrap')) return selector ? "#".concat(id, "&gt;").concat(selector) : "#".concat(id);
      var whiteClassName = inWhiteList(className);
      if (whiteClassName) {
        currentSelector = whiteClassName;
      } else if (hasClass(className, 'js_choice-img')) {
        currentSelector = '.js_choice-img';
      } else if (hasClass(className, 'articlepart-selector-area_choice')) {
        currentSelector = node.dataset.splitid ? '' : tagName;
      } else {
        currentSelector = tagName;
      }
      return getNodeSelector(node.parentNode, [currentSelector, selector].filter(function (item) {
        return !!item;
      }).join('&gt;'), root);
    };
    var getNodeSelectorWrap = function getNodeSelectorWrap(node, root) {
      var selector = getNodeSelector(node, '', root);
      var collect = [];
      try {
        collect = root.querySelectorAll(selector);
      } catch (error) {
        console.log('get node selector wrap err', error);
      }
      var len = collect.length;
      var index = null;
      for (var i = 0; i &lt; len; i++) {
        if (node === collect[i]) {
          index = i;
          break;
        }
      }
      if (index === null) {
        if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
          WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'selector:node not find', {
            mid: 'mmbizwap:articlemask_Monitor',
            view: 'wap_business',
            _info: {
              selector: selector
            }
          });
        }
      }
      var newSelector = (selector || '').replace('&gt;.js_choice-img&gt;', '&gt;') + "|".concat(len, " ").concat(index || 0);
      return newSelector;
    };
    
    var serializeToC = function serializeToC(nodes) {
      return (
        nodes.map(function (item) {
          var node,
            type = item.type,
            idx = item.idx;
          var index = 0;
          var data = null;
          var meta = '';
          var blockItem = getBlockNode($node);
          if (type === NODE_TYPE.text) {
            var nodeIndex = getNodeIndex(blockItem, $node.parentNode);
            if (node.data) {
              index = nodeIndex;
              data = $node.data;
              meta = node.previousSibling.data;
            }
          } else if (type === NODE_TYPE.img) {
            var imgs = blockItem.getElementsByTagName('img');
            data = $node.src;
            index = Array.prototype.slice.call(imgs).slice(0).indexOf($node);
          }
          return {
            data: data,
            index: index,
            idx: idx,
            type: type,
            meta: meta
          };
        }).filter(function (item) {
          return item.index &gt; -1 &amp;&amp; !!item.data;
        })
      );
    }
    ;
    var serializeToC2 = function serializeToC2(nodes, $container) {
      var root = $container || document.getElementById('js_content');
      return nodes.map(function (item) {
        var node,
          type = item.type,
          idx = item.idx;
        var selector = null;
        var data = null;
        var meta = '';
        if (type === NODE_TYPE.text) {
          if (node.data) {
            selector = getNodeSelectorWrap($node.parentNode, root);
            data = $node.data;
            meta = node.previousSibling.data;
          }
        } else if (type === NODE_TYPE.img) {
          selector = getNodeSelectorWrap($node, root);
          data = $node.src;
        }
        return {
          data: data,
          idx: idx,
          type: type,
          meta: meta,
          selector: selector
        };
      }).filter(function (item) {
        return !!item.selector &amp;&amp; !!item.data;
      });
    };
    function setProperty(el, name, value, priority) {
      if (!!el.style.setProperty) {
        priority = priority || null;
        el.style.setProperty(name, value, priority);
      } else if (typeof el.style.cssText !== 'undefined') {
        priority = priority ? '!' + priority : '';
        el.style.cssText += ';' + name + ':' + value + priority + ';';
      }
    }

    
    function hasImgNode($el) {
      if (!$el) return false;
      var nodeType = $el.nodeType,
        tagName = $el.tagName;
      if (nodeType === 3) {
        return false;
      }
      if (tagName === IMG_TAG) {
        return true;
      }
      return false;
    }
    function getContent(tree) {
      return tree.reduce(function (acc, cur, idx) {
        if (idx === 0) {
          if (cur.type === NODE_TYPE.text) {
            acc.text.push(cur.data);
          } else if (cur.type === NODE_TYPE.img) {
            acc.pic.push(cur.data);
          }
          return acc;
        }
        if (cur.type === NODE_TYPE.text) {
          if (tree[idx - 1].type === NODE_TYPE.text) {
            var text = acc.text.pop();
            text += cur.data;
            acc.text.push(text);
          } else {
            acc.text.push(cur.data);
          }
          return acc;
        }
        if (cur.type === NODE_TYPE.img) {
          acc.pic.push(cur.data);
        }
        return acc;
      }, {
        audio: [],
        pic: [],
        video: [],
        text: []
      });
    }
    function saveNode($node, key) {
      TEMP_NODES[key] = $node;
    }

    
    function serializeNode(wrap) {
      var range = nodeToSelection($node);
      var anchorTree = serializeToC2([{
        node,
        type: NODE_TYPE.img,
        idx: range.start.paraIndex
      }], $wrap);
      var anchorMeta = serialize(range);
      var anchorBrief = getContent(anchorTree);
      return {
        meta: {
          anchorTree: anchorTree,
          anchorMeta: anchorMeta,
          anchorBrief: anchorBrief
        },
        range: range
      };
    }
    function findChildIndex(parent, offset) {
      var childNodes = parent.childNodes;
      var realOffset = offset;
      var $node = null;
      var i = 0;
      for (i = 0; i &lt; childNodes.length; i++) {
        $node = childNodes[i];
        if ($node.nodeType === 3) {
          var len = $node.length;
          if (len &gt; realOffset) {
            break;
          } else {
            realOffset -= len;
          }
        }
      }
      return {
        node,
        cursor: realOffset
      };
    }
    
    var qs = function qs(selector, el) {
      return (el || document).querySelector(selector);
    };

    
    var qsAll = function qsAll(selector, el) {
      return (el || document).querySelectorAll(selector);
    };
    var dom = {
      getDomMeta: getDomMeta,
      getContent: getContent,
      getParaList: getParaList,
      getBlockNode: getBlockNode,
      getSelectedNodes: getSelectedNodes,
      connectSiblingText: connectSiblingText,
      getTextNodeByOffset: getTextNodeByOffset,
      getBlockOffset: getBlockOffset,
      getSelection: getSelection,
      transferTextToElement: transferTextToElement,
      serialize: serialize,
      deSerialize: deSerialize,
      resetRange: resetRange,
      serializeToC: serializeToC,
      setProperty: setProperty,
      hasImgNode: hasImgNode,
      nodeToSelection: nodeToSelection,
      saveNode: saveNode,
      serializeNode: serializeNode,
      getNodeByIndex: getNodeByIndex,
      findChildIndex: findChildIndex,
      serializeToC2: serializeToC2,
      blockEleTagName: blockEleTagName,
      getPureBlockNode: getPureBlockNode,
      qs: qs,
      qsAll: qsAll,
      hasClass: hasClass
    };

    function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r &amp;&amp; (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
    function _objectSpread(e) { for (var r = 1; r &lt; arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
    var paraList = [];
    var totalHit = 0;

    var STATUS = {
      auditing: 1,
      ban: 2
    };
    function keyby(arr, key) {
      return arr.reduce(function (acc, item) {
        if (typeof item[key] === 'undefined') return acc;
        if (!acc[item[key]]) acc[item[key]] = [];
        acc[item[key]].push(item);
        return acc;
      }, {});
    }

    function getBannerWord(anchor) {
      return '以下内容存在争议 &lt;a style="color: var(--weui-LINK);" target="_blank" href="https://mp.weixin.qq.com/s/_2kC-fXw7UjneZSrsC9CVQ"&gt;了解更多&lt;/a&gt;';
    }
    function addBanner(node, text) {
      var paraNode = _typeof(node) === 'object' ? node : paraList[node];
      if (paraNode.dataset.hasBanner) return;
      var divNode = document.createElement('div');
      divNode.dataset.hasBanner = 1;
      divNode.style = 'background-color: var(--weui-BG-1);font-size: 14px;color: var(--weui-FG-2);text-align: left;margin-top: 20px;margin-bottom: 4px;padding: 4px 8px 6px 8px;border-radius:4px;';
      var iconNode = document.createElement('span');
      iconNode.style = 'color: var(--weui-FG-0);padding: 2px;display: inline-block;vertical-align: middle; width: 20px;height: 20px;margin-right: 4px; background-size: cover;background-position: center center;-webkit-mask: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' width=\'20\' height=\'20\' viewBox=\'0 0 20 20\'%3E  %3Cpath fill-opacity=\'.3\' fill-rule=\'evenodd\' d=\'M10 1.667a8.333 8.333 0 1 1 0 16.666 8.333 8.333 0 0 1 0-16.666zm-.004 11.115a.732.732 0 0 0-.746.735c0 .416.33.735.746.735a.73.73 0 0 0 .752-.735.73.73 0 0 0-.752-.735zm.638-7.669h-1.27l.091 6.33h1.088l.091-6.33z\'/%3E%3C/svg%3E") no-repeat 50% 50%;mask: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' width=\'20\' height=\'20\' viewBox=\'0 0 20 20\'%3E  %3Cpath fill-opacity=\'.3\' fill-rule=\'evenodd\' d=\'M10 1.667a8.333 8.333 0 1 1 0 16.666 8.333 8.333 0 0 1 0-16.666zm-.004 11.115a.732.732 0 0 0-.746.735c0 .416.33.735.746.735a.73.73 0 0 0 .752-.735.73.73 0 0 0-.752-.735zm.638-7.669h-1.27l.091 6.33h1.088l.091-6.33z\'/%3E%3C/svg%3E") no-repeat 50% 50%;background-color: currentColor;';
      var textNode = document.createElement('span');
      textNode.style = 'display: inline-block;line-height: 14px;vertical-align: middle;';
      textNode.innerHTML = text;
      divNode.appendChild(iconNode);
      divNode.appendChild(textNode);
      paraNode.parentNode.insertBefore(divNode, paraNode, null);
      paraNode.dataset.hasBanner = 1;
    }
    function maskText(data, domNode, cursor) {
      var len = data.length;
      var maskMat = _toConsumableArray(Array(len)).map(function () {
        return '〇';
      }).join('');
      var childNodes = domNode.childNodes;
      var newCursor = cursor;
      for (var i = 0; i &lt; childNodes.length; i++) {
        var node = childNodes[i];
        if (node.nodeType === 3) {
          if (newCursor &gt; node.data.length) {
            newCursor -= node.data.length;
          } else {
            node.data = node.data.slice(0, newCursor).concat(maskMat).concat(node.data.slice(newCursor + len));
          }
        } else if (node.nodeText === 1) {
          newCursor -= node.innerText &amp;&amp; node.innerText.length || 0;
        }
      }
    }
    function disputeText(data, domNode, cursor) {
      var len = data.length;
      var _dom$findChildIndex = dom.findChildIndex(domNode, cursor),
        textNode = _domnode,
        realOffset = _dom$findChildIndex.realOffset;
      try {
        textNode.splitText(realOffset);
      } catch (e) {
        if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
          WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'splitText Error', {
            mid: 'mmbizwap:articlemask_Monitor',
            view: 'wap_business',
            _info: {
              type: 'disputeText textNode',
              data: data,
              cursor: cursor
            }
          });
        }
      }
      var repalcedNode = textNode.nextSibling;
      try {
        repalcedNode.splitText(len);
      } catch (e) {
        if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
          WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'splitText Error', {
            mid: 'mmbizwap:articlemask_Monitor',
            view: 'wap_business',
            _info: {
              type: 'disputeText nextSibling',
              data: data,
              cursor: cursor
            }
          });
        }
      }
      var spanNode = document.createElement('span');
      spanNode.style = 'background-color: rgba(0,0,0,0.10);';
      spanNode.appendChild(repalcedNode.cloneNode(true));
      repalcedNode.parentNode.replaceChild(spanNode, repalcedNode);
    }
    function disputeImage(data, domNode) {
      var spanNode = document.createElement('span');
      spanNode.style = 'position:relative;display: inline-block;';
      var iconNode = document.createElement('span');
      iconNode.style = "\n            position: absolute;\n            top: 4px;\n            left: 4px;\n            display: inline-block;\n            vertical-align: middle;\n            width: 24px;\n            height: 24px;\n            background-size: cover;\n            background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E  %3Cpath fill='%23FFF' fill-rule='evenodd' d='M12 2c5.523 0 10 4.477 10 10s-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2zm-.004 13.339a.878.878 0 0 0-.896.882c0 .499.396.882.896.882.512 0 .902-.383.902-.882 0-.5-.39-.882-.902-.882zm.765-9.203h-1.524l.11 7.596h1.305l.11-7.596z'/%3E%3C/svg%3E\");\n    ";
      var parent = domNode.parentNode;
      spanNode.appendChild(domNode.cloneNode(false));
      parent.replaceChild(spanNode, domNode);
      spanNode.appendChild(iconNode);
    }
    function maskImage(data, domNode) {
      domNode.style.filter = 'blur(10px)';
      domNode.style['-webkit-filter'] = 'blur(10px)';
    }
    function hitMaskText(anchor, domNode) {
      var data = anchor.data,
        meta = anchor.meta,
        index = anchor.index,
        idx = anchor.idx;
      var wholeText = domNode.data;
      var prefixText = (meta || '') + data;
      if (wholeText.indexOf(prefixText) === -1) {
        return {
          hit: false
        };
      }
      var itemNode = dom.getNodeByIndex(paraList[idx], index);
      if (itemNode) {
        totalHit++;
      } else {
        if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
          WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'text node cannot find', {
            mid: 'mmbizwap:articlemask_Monitor',
            view: 'wap_business',
            _info: {
              anchor: anchor,
              wholeText: wholeText
            }
          });
        }
      }
      var cursor = itemNode &amp;&amp; itemNode.innerText.indexOf(prefixText) + (meta || '').length;
      return {
        hit: !!itemNode,
        $hitDom: itemNode,
        cursor: cursor
      };
    }
    function hitMaskImage(anchor, domNode) {
      var index = anchor.index,
        idx = anchor.idx,
        data = anchor.data;
      var para = paraList[idx];
      var allImgNode = para.querySelectorAll('img');
      var hitItenNode = allImgNode[index];
      var src = hitItenNode &amp;&amp; (hitItenNode.getAttribute('data-src') || hitItenNode.getAttribute('src'));
      if (src === data) {
        totalHit++;
        return {
          hit: true,
          $hitDom: domNode,
          cursor: 0
        };
      }
      return {
        hit: false
      };
    }
    function createMask(anchor, domNode) {
      return function (hitFn, maskFn, next) {
        var _hitFn = hitFn(anchor, domNode),
          hit = _hitFn.hit,
          hitDom,
          cursor = _hitFn.cursor;
        if (hit) {
          maskFn(anchor.data, $hitDom, cursor);
          next();
        }
      };
    }
    function maskAnchors(anchors, paraNode) {
      var queue = [];
      var cloneAnchors = _toConsumableArray(anchors);
      queue.push(paraNode);
      var anchor = null;
      var next = function next() {
        anchor = cloneAnchors.shift();
      };
      next();
      while (queue.length &gt; 0 &amp;&amp; cloneAnchors.length &gt;= 0 &amp;&amp; anchor) {
        var itemNode = queue.pop();
        if (!itemNode) continue;
        if (!anchor) continue;
        var nodeType = itemNode.nodeType,
          tagName = itemNode.tagName;
        var createMaskFn = createMask(anchor, itemNode);
        if (nodeType === 3) {
          if (anchor.type === NODE_TYPE.text) {
            createMaskFn(hitMaskText, anchor.status === STATUS.ban ? maskText : disputeText, next);
          }
          continue;
        }
        if (nodeType === 1 &amp;&amp; tagName === IMG_TAG) {
          if (anchor.type === NODE_TYPE.img) {
            createMaskFn(hitMaskImage, anchor.status === STATUS.ban ? maskImage : disputeImage, next);
          }
          continue;
        }
        var children = itemNode.childNodes;
        for (var i = children.length - 1; i &gt;= 0; i--) {
          queue.push(children[i]);
        }
      }
    }
    function parseSelector(selectorStr) {
      if (!selectorStr) return {};
      var _selectorStr$split = selectorStr.split('|'),
        _selectorStr$split2 = _slicedToArray(_selectorStr$split, 2),
        selector = _selectorStr$split2[0],
        other = _selectorStr$split2[1];
      var _other$split = other.split(' '),
        _other$split2 = _slicedToArray(_other$split, 2),
        total = _other$split2[0],
        index = _other$split2[1];
      return {
        selector: selector.replace(/&amp;gt;/g, '&gt;'),
        total: total * 1,
        index: index * 1
      };
    }
    function hitNode(node, anchor) {
      if (!node) return null;
      var type = anchor.type,
        data = anchor.data,
        meta = anchor.meta;
      if (type === NODE_TYPE.text) {
        var nodeText = node.innerText || node.innerHTML || '';
        var prefixText = ((meta || '') + data).replace(/&amp;amp;/g, '&amp;');
        if (nodeText.indexOf(prefixText) !== -1) {
          var cursor = nodeText.indexOf(prefixText) + (meta || '').length;
          return {
            cursor: cursor,
            node: node
          };
        }
      }
      if (type === NODE_TYPE.img) {
        var src = node &amp;&amp; (node.getAttribute('data-src') || node.getAttribute('src'));
        if (src === data.replace(/&amp;amp;/g, '&amp;')) {
          return {
            cursor: 0,
            node: node
          };
        }
      }
      return null;
    }

    function maskNode(anchor, domNode, cursor) {
      var type = anchor.type,
        data = anchor.data,
        status = anchor.status;
      if (status !== STATUS.ban) return;
      if (type === NODE_TYPE.text) maskText(data, domNode, cursor);
      if (type === NODE_TYPE.img) maskImage(data, domNode);
    }
    function initOld(wrapNode, anchors) {
      paraList = dom.getParaList(wrapNode, {
        getNestedStructure: true,
        removeIgoreEle: false
      });
      var formatAnchor = keyby(anchors, 'idx');
      if (!paraList) return;
      (paraList || []).forEach(function (para, index) {
        var paraAnchors = formatAnchor[index];
        if (paraAnchors &amp;&amp; paraAnchors.length &gt; 0) {
          addBanner(index, getBannerWord(paraAnchors[0]));
          maskAnchors(paraAnchors, para);
        }
      });
      if (anchors &amp;&amp; anchors.length !== totalHit) {
        if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
          WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'totalHit', {
            mid: 'mmbizwap:articlemask_Monitor',
            view: 'wap_business',
            _info: {
              totalHit: totalHit,
              anchors: anchors
            }
          });
        }
      }
    }
    function addChildBanner(node, anchor) {
      var blockNode = dom.getPureBlockNode(node);
      if (!blockNode) return;
      addBanner(blockNode, getBannerWord());
    }
    function maskAnchors2(wrapNode, anchors) {
      var missNodes = [];
      var countList = [];
      var maskNodeList = [];
      var cacheSelector = {};
      anchors.forEach(function (anchor, i) {
        var _parseSelector = parseSelector(anchor.selector),
          selector = _parseSelector.selector,
          index = _parseSelector.index,
          total = _parseSelector.total;
        var nodes = cacheSelector[selector] || [];
        if (nodes.length === 0) {
          try {
            nodes = wrapNode.querySelectorAll(selector);
            cacheSelector[selector] = nodes;
          } catch (e) {
            if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
              WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'splitText Error', {
                mid: 'mmbizwap:articlemask_Monitor',
                view: 'wap_business',
                _info: {
                  anchor: anchor
                }
              });
            }
          }
        }
        var cursorLeft = index;
        var cursorRight = index;
        var queue = [];
        var node = null;
        var cursor = 0;
        var count = 0;
        queue.push(nodes[index]);
        while (queue.length) {
          var current = queue.pop();
          var hitData = hitNode(current, anchor);
          count++;
          if (hitData &amp;&amp; hitData.node) {
            node = hitData.node;
            cursor = hitData.cursor;
            break;
          }
          if (cursorLeft - 1 &gt;= 0 &amp;&amp; nodes[cursorLeft - 1]) {
            queue.push(nodes[cursorLeft - 1]);
            cursorLeft -= 1;
          }
          if (cursorRight + 1 &lt; nodes.length &amp;&amp; nodes[cursorRight + 1]) {
            queue.push(nodes[cursorRight + 1]);
            cursorRight += 1;
          }
        }
        if (node) {
          maskNodeList.push({
            anchor: anchor,
            node: node,
            cursor: cursor
          });
          addChildBanner(node);
        } else if (selector &amp;&amp; selector.lastIndexOf('&gt;') !== -1) {
          missNodes.push(_objectSpread(_objectSpread({}, anchor), {}, {
            selector: selector &amp;&amp; selector.slice(0, selector.lastIndexOf('&gt;')) + "|".concat(total, " ").concat(index)
          }));
        }
        countList[i] = count;
      });
      maskNodeList.forEach(function (item) {
        maskNode(item.anchor, item.node, item.cursor);
      });
      if (missNodes.length) {
        maskAnchors2(wrapNode, missNodes);
        if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
          WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'missNodes', {
            mid: 'mmbizwap:articlemask_Monitor',
            view: 'wap_business',
            _info: {
              missNodes: missNodes
            }
          });
        }
      }
      if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
        WX_BJ_REPORT.BadJs.report('ArticleMask:Info', 'querycount', {
          mid: 'mmbizwap:articlemask_Monitor',
          view: 'wap_business',
          _info: {
            countList: countList
          }
        });
      }
    }
    function init2(wrapNode, anchors) {
      maskAnchors2(wrapNode, anchors);
    }
    function init(wrapNode, anchors) {
      var oldAnchors = [];
      var newAnchors = [];
      anchors.forEach(function (anchor) {
        if (anchor.selector) {
          newAnchors.push(anchor);
        } else {
          oldAnchors.push(anchor);
        }
      });
      init2(wrapNode, newAnchors);
      if (oldAnchors.length &gt; 0) {
        initOld(wrapNode, oldAnchors);
      }
    }
    var complainPainter = {
      init: init
    };

    function setMaskNode(data, $wrap) {
      try {
        if (data.anchor_tree_msg) {
          var start = Date.now();
          var anchors = data.anchor_tree_msg ? JSON.parse(data.anchor_tree_msg).anchor_tree : [];
          var protocol = window.location.protocol;
          complainPainter.init($wrap, anchors);
          wxgspeedsdk.saveSpeeds({
            sample: 1,
            uin: window.uin,
            pid: protocol == 'https:' ? 462 : 417,
            speeds: {
              sid: 38,
              time: Date.now() - start
            }
          });
          wxgspeedsdk.send();
        }
      } catch (error) {
        if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; window.WX_BJ_REPORT.BadJs) {
          window.WX_BJ_REPORT.BadJs.onError(error, {
            anchor_tree_msg: window.anchor_tree_msg
          });
        }
      }
    }

    return setMaskNode;

})();
  &lt;/script&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   (function () {
  'use strict';

  

  
  var AD_TYPE = {
    ANDROID_APP_PRODUCT_TYPE: 12,
    IOS_APP_PRODUCT_TYPE: 19,
    ADD_CONTACT_PRODUCT_TYPE: 23,
    MINI_GAME_PRODUCT_TYPE: 46,
    CARD_PRODUCT_TYPE: 36,
    SHOP_PRODUCT_TYPE: 30,
    WECHATCARD_PRODUCT_TYPE: 47,
    BRAND_WECHAT_PRODUCT_TYPE: 29,
    BRAND_GDT_PRODUCT_TYPE: 31
  };
  var AD_POS = {
    POS_BOTTOM: 0,
    POS_BOTTOM_PC: 38,
    POS_MID: 4,
    POS_MID_PC: 39,
    POS_SPONSOR: 3,
    POS_AD_BEFORE_VIDEO: 7,
    POS_AD_AFTER_VIDEO: 9,
    POS_AD_MID_VIDEO: 16,
    POS_AD_KEYWORD: 36,
    POS_AD_COMMENT: 43,
    PC_POS_AD_COMMENT: 44,
    POS_IMAGE_BOTTOM_SPONSOR: 45
  };
  var AD_DEST_TYPE = {
    AD_DEST_TYPE: 0,
    OUTER_DEST_TYPE: 1,
    APPDETAIL_DEST_TYPE: 2,
    BIZ_DEST_TYPE: 3,
    APPINFO_PAGE_DEST_TYPE: 4,
    WECHAT_SHOP_DEST_TYPE: 5,
    WECHAT_APPLET_DEST_TYPE: 6,
    LEAF_DEST_TYPE: 7,
    CANVAS_AD_DEST_TYPE: 9
  };
  var AD_CACHE_TIME = 0.5 * 60 * 1000;
  var AD_JSAPI_WHITE_LIST = ['openUrlWithExtraWebview', 'openADCanvas', 'addContact', 'profile', 'getInstallState', 'installDownloadTask', 'addDownloadTask', 'pauseDownloadTask', 'resumeDownloadTask', 'queryDownloadTask', 'launchApplication', 'writeCommData', 'adDataReport', 'downloadAppInternal', 'wxdownload:progress_change', 'menu:share:appmessage', 'menu:share:timeline', 'menu:share:weibo', 'menu:share:facebook', 'menu:general:share', 'launch3rdApp', 'addDownloadTaskStraight', 'sendAppMessage', 'shareTimeline', 'getNetworkType', 'openBizChat', 'jumpToBizProfile', 'shareWeibo', 'shareFB', 'imagePreview', 'getBackgroundAudioState', 'openWeApp', 'openEmbeddedWeApp', 'preloadMiniProgramContacts', 'preloadMiniProgramEnv', 'calRqt', 'openCardDetail', 'batchAddCard', 'handleMPPageAction', 'makePhoneCall', 'getOAID', 'saveWaid', 'batchPreloadMiniProgram', 'onScreenShot', 'handleAdAction', 'activity:state_change', 'getAdIdInfo', 'onWebPageUrlExposed', 'openFinderView', 'predownloadMiniProgramPackage', 'openCustomerServiceChat', 'showOpenIMContactProfile', 'openWXSearchPage', 'openWXSearchHalfPage', 'openFinderTopicView'];
  var AD_REQ_PATH_WHITE_LIST = [
  '/mp/advertisement_report', '/mp/ad_report', '/mp/ad_video_report', '/mp/jsmonitor', '/mp/ad_complaint', '/mp/jsreport', '/tp/datacenter/report', '/mp/getappmsgad', '/mp/ad_biz_info', '/mp/appmsg_video_snap', '/mp/cps_product_info', '/mp/mini_drama_info'];
  var AD_WEB_COMPT_REQ_PATH_WHITE_LIST = [/(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/advertisement_report/, /(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/ad_report/, /(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/ad_video_report/, /(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/jsmonitor/, /(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/ad_complaint/, /(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/jsreport/, /(https?:)?\/\/mp\.weixin\.qq\.com\/tp\/datacenter\/report/, /(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/getappmsgad/, /(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/ad_biz_info/, /(https?:)?\/\/mp\.weixin\.qq\.com\/tp\/goods_info/, /(https?:)?\/\/mp\.weixin\.qq\.com\/tp\/app_mobile/, /(https?:)?\/\/mp\.weixin\.qq\.com\/tp\/datareport\/report/, /(https?:)?\/\/mp\.weixin\.qq\.com\/promotion\/wxalandpage\/getcanvasinfo/];
  var transformText = '转化按钮';
  var extraText = '广告文案或辅助信息';
  var defaultMidAdData = {
    hint_txt: '创意-20200827_1',
    url: 'https://ad.weixin.qq.com/guide/196?weixinadkey=59d5cf0b4fbf7d2f66cd90aaa82a5208057512dd06fcb64d7fd57e71ec15945e1744ac499e05a04999381c3bf30c21ca&amp;amp;gdt_vid=wx0clsqxat6lzly601&amp;amp;weixinadinfo=315019981.wx0clsqxat6lzly601.75.1',
    type: '0',
    rl: 'http://ad.wx.com:12638/cgi-bin/click?viewid=AQM1xOr6MFeZmWeZrowCvQcrvQUBUq4o8ER2yFgwF9grPdtUR9bIJQ8laqMAJjGlkGLuVbyABIPX6Eifa2%2FK%2Buq17IIT21tYcUnpeU4VqEEsEQhc5Pa7C7drAvl0Mz30CNepODMXeD%2BEdny8SmmxN7prV78e1L2S6oqhNjrnTqM1t40ZGU84httoAODXEjmE89IX0ncOiP1oTsgm1tYwahSkxN6HLZIb6bhxZrc5ba3mCKMZ5GV4UEyDuQCyySxtA5QTt0eQJJA%2FSgHe79yTxUrzzoGrtlhK0O3HussVeRjKcvLkE6w%2FpQBnropwT%2FmE23RT2bOoyw%2BVCMlWTtk%2Bvxh%2FIOFAmrWHYzDuNkDNRo3um26RD2TFpeyRasbZoFRAV7RA9k4P3REAH4vemxktbNq24rtuF6MFGEcXpcGOD%2FxZJlBmInM7rguFAhRQWvCy3nIpO7knN2rl2DZv%2FcfkuoP4bedzUMcxtrU2Wz%2B82EG9ULHJunGHT%2F%2BcWj%2Bv8n%2Fh9bUtAtk7Fr1HBQdkQ8SbYadhRDWWuSEC2iMfqpMyzNqLltdxhyXxMRpsruPb2p4WoHnSvuGfbnkXIKcDppOTLB38xStPIbbaaR4FC%2B4AOF1UqbtMor9JJQQNz3vspSngY%2F37uYiQXAKNYB2RAB%2BbfoYMSS2VcJvY%2B0lWH3%2BYFTmBs6%2BxixGTJmB4%2FXZZcNs4PgRs6OoIefEnLz%2FvwoAvrs%2FUPotqevoiHfq%2FlLILAzo28D%2FKSU9hOOHXrS4LrUYhK47WKSeoglnagaOZI5kGZa9iBcwj9V6FR4HEml51P9u5xaTOnPZjfEAx5l6BBxTT4379irAZCB2Zfcd6wBU2Eo5p9yXVSH%2FCH8yVAgIEsrJ9oeqpO%2FwozsQ2PkXw%2Bz77B56hYp1zYG7HK%2BCDjx1NSisa6g8PFa72xOb8wpjZ9Lao70oGSWshIjCH4kWfKX0P8uFJc22L%2FZihKj0J%2BqgC1LgiMc6SXmFHdvTSIxTRKm9GImpbVfLTN3xrT%2BGGutwMTfgWta7EDR7d6HXQBA1orNotnnK37GOw1jHud8fzQkfuMN%2F7DO6kW0wAXs4LDMhJpnHi2%2Ba4VjL8Yjh0wmTZkVy4iIPYDmYSAzuJ3aP3cXuGv%2B1JwF%2Fod7hCA6RBYwZN2fXvO5AUo7FdoRr8ssPB7eAiNhcFonMv5%2Bt8L1b7QLoXGlplvxh9Fz669q43xnDsEy8ucOfyush8RiYLPxGj4YFr2gy6%2BAV5u%2FMgZIShq149jRn42%2B%2BnmzPC8JdiiIe4p5Ec7KFFrv%2F302DcKBPI9lQDsC1xWAvIfJcnxC%2FqYgDikLE1SsurxV2PV1icS%2BpU706S2LmnpyAsZw%3D%3D',
    apurl: 'http://ad.wx.com:12638/cgi-bin/exposure?viewid=AQM1xOr6MFeZmWeZrowCvQcrvQUBUq4o8ER2yFgwF9grPdtUR9bIJQ8laqMAJjGlkGLuVbyABIPX6Eifa2%2FK%2Buq17IIT21tYcUnpeU4VqEEsEQhc5Pa7C7drAvl0Mz30CNepODMXeD%2BEdny8SmmxN7prV78e1L2S6oqhNjrnTqM1t40ZGU84httoAODXEjmE89IX0ncOiP1oTsgm1tYwahSkxN6HLZIb6bhxZrc5ba3mCKMZ5GV4UEyDuQCyySxtA5QTt0eQJJA%2FSgHe79yTxUrzzoGrtlhK0O3HussVeRjKcvLkE6w%2FpQBnropwT%2FmE23RT2bOoyw%2BVCMlWTtk%2Bvxh%2FIOFAmrWHYzDuNkDNRo3um26RD2TFpeyRasbZoFRAV7RA9k4P3REAH4vemxktbNq24rtuF6MFGEcXpcGOD%2FxZJlBmInM7rguFAhRQWvCy3nIpO7knN2rl2DZv%2FcfkuoP4bedzUMcxtrU2Wz%2B82EG9ULHJunGHT%2F%2BcWj%2Bv8n%2Fh9bUtAtk7Fr1HBQdkQ8SbYadhRDWWuSEC2iMfqpMyzNqLltdxhyXxMRpsruPb2p4WoHnSvuGfbnkXIKcDppOTLB38xStPIbbaaR4FC%2B4AOF1UqbtMor9JJQQNz3vspSngY%2F37uYiQXAKNYB2RAB%2BbfoYMSS2VcJvY%2B0lWH3%2BYFTmBs6%2BxixGTJmB4%2FXZZcNs4PgRs6OoIefEnLz%2FvwoAvrs%2FUPotqevoiHfq%2FlLILAzo28D%2FKSU9hOOHXrS4LrUYhK47WKSeoglnagaOZI5kGZa9iBcwj9V6FR4HEml51P9u5xaTOnPZjfEAx5l6BBxTT4379irAZCB2Zfcd6wBU2Eo5p9yXVSH%2FCH8yVAgIEsrJ9oeqpO%2FwozsQ2PkXw%2Bz77B56hYp1zYG7HK%2BCDjx1NSisa6g8PFa72xOb8wpjZ9Lao70oGSWshIjCH4kWfKX0P8uFJc22L%2FZihKj0J%2BqgC1LgiMc6SXmFHdvTSIxTRKm9GImpbVfLTN3xrT%2BGGutwMTfgWta7EDR7d6HXQBA1orNotnnK37GOw1jHud8fzQkfuMN%2F7DO6kW0wAXs4LDMhJpnHi2%2Ba4VjL8Yjh0wmTZkVy4iIPYDmYSAzuJ3aP3cXuGv%2B1JwF%2Fod7hCA6RBYwZN2fXvO5AUo7FdoRr8ssPB7eAiNhcFonMv5%2Bt8L1b7QLoXGlplvxh9Fz669q43xnDsEy8ucOfyush8RiYLPxGj4YFr2gy6%2BAV5u%2FMgZIShq149jRn42%2B%2BnmzPC8JdiiIe4p5Ec7KFFrv%2F302DcKBPI9lQDsC1xWAvIfJcnxC%2FqYgDikLE1SsurxV2PV1icS%2BpU706S2LmnpyAsZw%3D%3D',
    traceid: 'wx0clsqxat6lzly601',
    group_id: 'wx0clsqxat6lzly600_wx0clsqxat6lzly601',
    ticket: '',
    pt: 2,
    image_url: 'http://wxsnsdythumb.wxs.qq.com/141/20204/snscosdownload/SH/reserved/5f4604790009bfd700000000b3679d090000008d00004eec?m=1c9e9086c11018ef774e28ee3b744a67&amp;amp;ck=1c9e9086c11018ef774e28ee3b744a67',
    ad_desc: '',
    biz_appid: 'wx69618ae091cf2c76',
    biz_info: {
      user_name: 'gh_1e80bb81a1d2',
      nick_name: '微信广告',
      head_img: 'https://wxa.wxs.qq.com/res/images/bizsdk/preview/wxlogo.png',
      biz_uin: 3094043316,
      signature: '微信广告'
    },
    pos_type: 4,
    watermark_type: 0,
    logo: '',
    is_cpm: 0,
    dest_type: 1,
    material_width: 960,
    material_height: 540,
    ad_width: 0,
    ad_height: 0,
    use_new_protocol: 2,
    product_type: 29,
    material_type: 0,
    crt_exp_tid: 0,
    crt_exp_info: '',
    flow_exp_info: '[{&amp;quot;exp_para&amp;quot;:[{&amp;quot;name&amp;quot;:94574,&amp;quot;value&amp;quot;:&amp;quot;gb&amp;quot;},{&amp;quot;name&amp;quot;:100036,&amp;quot;value&amp;quot;:&amp;quot;1&amp;quot;}]}]',
    watermark_text: '活动推广',
    crt_size: '484',
    button_action: "{&amp;quot;button_text&amp;quot;:&amp;quot;".concat(transformText, "&amp;quot;,&amp;quot;jump_type&amp;quot;:1,&amp;quot;jump_url&amp;quot;:&amp;quot;https:\\/\\/ad.weixin.qq.com\\/guide\\/196?weixinadkey=bd80a7a5a0e57a3b971b1c372bb06a3748f8f01c44f1bfe1a0aa4fe927e21037fc57ddfe77f5e0648611197259574f4b&amp;amp;gdt_vid=wx0clsqxat6lzly601&amp;amp;weixinadinfo=315019981.wx0clsqxat6lzly601.75.1&amp;quot;,&amp;quot;text_type&amp;quot;:0}"),
    position_index: 21,
    shop_image: [],
    material_id_list: [],
    uxinfo: '315019981|wx0clsqxat6lzly601|289237697|0|1598496949|0|0|9020229299926746||AgI0AyUHOnPeccmEYhaAko8Pr4P95P7Vl6qjqKrxaR/CSGQ3e+STumguP/V43UuYT8o=|315020504',
    ext_info: '{}',
    ad_token: 'bf8463b9a4b692768c820c412bb705a73e8a9dd2c769f22549e4bb5aeaaeccc1358b60b6ce7546f95cfdf7f73d187572',
    crt_info: "[{&amp;quot;width&amp;quot;:960,&amp;quot;height&amp;quot;:540,&amp;quot;thumb_url&amp;quot;:&amp;quot;http://wxsnsdythumb.wxs.qq.com/141/20204/snscosdownload/SH/reserved/5f4604790009bfd700000000b3679d090000008d00004eec?m=1c9e9086c11018ef774e28ee3b744a67&amp;amp;ck=1c9e9086c11018ef774e28ee3b744a67&amp;quot;,&amp;quot;image_url&amp;quot;:&amp;quot;http://wxsnsdythumb.wxs.qq.com/141/20204/snscosdownload/SH/reserved/5f4604790009bfd700000000b3679d090000008d00004eec?m=1c9e9086c11018ef774e28ee3b744a67&amp;amp;ck=1c9e9086c11018ef774e28ee3b744a67&amp;quot;,&amp;quot;size&amp;quot;:18323,&amp;quot;image_md5&amp;quot;:&amp;quot;1c9e9086c11018ef774e28ee3b744a67&amp;quot;,&amp;quot;materialId&amp;quot;:&amp;quot;112199640&amp;quot;,&amp;quot;card_info&amp;quot;:{&amp;quot;mp_tag_type&amp;quot;:2,&amp;quot;mp_brandeffect_isopen&amp;quot;:0,&amp;quot;mp_tags&amp;quot;:[&amp;quot;".concat(extraText, "&amp;quot;]}}]"),
    reranking_ext_info: '{&amp;quot;tid&amp;quot;:315020504}',
    ext_back_comm: '{&amp;quot;pctr&amp;quot;:0.019999999553}'
  };
  var CPS_GOODS_TYPE = {
    OLD_GOODS: 'mp',
    NEW_GOODS: 'cps-to-reader',
    IMAGE_GOODS: 'cps-to-image-reader',
    SHORT_PLAY: 'short-play',
    MINI_GAME: 'mini-game'
  };
  var MOUNT_POINT = {
    BODY: 'body',
    DRAWER: 'drawer'
  };
  var AD_CONFIG = {
    defaultMidAdData: defaultMidAdData,
    AD_TYPE: AD_TYPE,
    AD_POS: AD_POS,
    AD_CACHE_TIME: AD_CACHE_TIME,
    AD_DEST_TYPE: AD_DEST_TYPE,
    MOUNT_POINT: MOUNT_POINT,
    AD_FRAME_DOMAIN: 'https://wxa.wxs.qq.com',
    CPS_AD_FRAME_DOMAIN: 'https://file.daihuo.qq.com',
    INVALID_METHOD_NAME_MSG_PREFIX: 'Invalid methodName',
    INVALID_METHOD_TYPE_MSG_PREFIX: 'Invalid methodType',
    INVALID_ARGS_MSG_PREFIX: 'Invalid args',
    INVALID_REQ_PATH_MSG_PREFIX: 'Invalid request path',
    AD_IFRAME_HIDE_CLASS: 'iframe_ad_dn',
    AD_JSAPI_WHITE_LIST: AD_JSAPI_WHITE_LIST,
    AD_REQ_PATH_WHITE_LIST: AD_REQ_PATH_WHITE_LIST,
    AD_WEB_COMPT_REQ_PATH_WHITE_LIST: AD_WEB_COMPT_REQ_PATH_WHITE_LIST,
    FRAME_ERROR: 'onError',
    FRAME_READY: 'onFrameReadyV2',
    CHANGE_FRAME_STYLE: 'changeFrameStyle',
    PROXY_CONSOLE: 'consoleOnHostEnv',
    PROXY_ACTION: 'onProxyV2',
    PROXY_CALLBACK_ACTION: 'proxyCallbackV2',
    CLICK_OUTSIDE_ACTION: 'clickOutsideV2',
    CLICK_AD_ACTION: 'onAdClick',
    PAGE_SCROLL_ACTION: 'pageScrollV2',
    ORIGIN_VIDEO_VID_PREFIX: 'wxv',
    AD_VIDEO_FIN_ACTION: 'adVideoEnd',
    AD_VIDEO_PLAY_ACTION: 'onVideoPlayV2',
    AD_VIDEO_END_ACTION: 'onVideoEndV2',
    AD_PLAY_VIDEO_ACTION: 'playVideoV2',
    AD_EXPOSE_IMAGE_ACTION: 'exposeImage',
    AD_HIDE_IMAGE_ACTION: 'hideImage',
    AD_CHANGE_VIDEO_STATE: 'changeVideoPlayState',
    AD_VIDEO_SET_SCREEN_STATE_ACTION: 'setScreenState',
    AD_IMAGE_SET_EXPAND_STATE_ACTION: 'setImageExpandState',
    GET_APPMSGAD_READY_STATUS_ACTION: 'getAppmsgadReadyStatus',
    APPMSGAD_READY_ACTION: 'appmsgadReady',
    HAS_AD_DATA_QUERY_KEY: 'has_ad_data',
    GET_AD_DATA_AFTER_VIDEO_ACTION_NAME: 'getAdDataAfterVideo',
    SET_PAGE_DATA_ACTION_NAME: 'setPageDataV2',
    SET_AD_DATA_ACTION_NAME: 'setAdDataV2',
    SEND_AD_VID_ACTION: 'sendAdVid',
    GET_AD_VID_ACTION: 'getAdVid',
    CPS_GOODS_TYPE: CPS_GOODS_TYPE,
    AD_FEED_BACK_ACTION: 'feedback',
    EMIT_AD_DATA_ACTION: 'emitAdData',
    AD_TOUCH_ACTION: 'touchEvent',
    SET_AD_FONT_SIZE_ACTION: 'setAdFontSize',
    DRAWER_OPEN_CHANGE: 'onDrawerOpenChange'
  };

  
  var g = {
    defaultContentTpl: '&lt;span class="js_img_placeholder wx_widget_placeholder" style="width:#width# !important;height:#height#px !important;text-indent: 0"&gt;&lt;span class="weui-primary-loading"&gt;&lt;span class="weui-primary-loading__dot"&gt;&lt;/span&gt;&lt;/span&gt;',
    config: [{
      querySelector: 'redpacketcover',
      
      genId: function genId() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return decodeURIComponent(opt.node.getAttribute('data-coveruri') || '');
      },
      
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return opt.parentWidth * 0.7854;
      },
      
      calH: function calH() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return this.calW({
          parentWidth: opt.parentWidth
        }) / 0.73346 + 27 + 37;
      },
      replaceContentCssText: '',
      outerContainerLeft: '',
      outerContainerRight: ''
    },
    {
      querySelector: 'mppoi',
      genId: function genId() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return opt.node.getAttribute('data-id') || '';
      },
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return opt.parentWidth * 1;
      },
      calH: function calH() {
        return 219;
      },
      replaceContentCssText: '',
      appendContentCssText: 'diplay:block;',
      outerContainerLeft: '',
      outerContainerRight: ''
    },
    {
      querySelector: 'mpsearch',
      genId: function genId() {
        return decodeURIComponent('mp-common-search');
      },
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return opt.parentWidth * 1;
      },
      calH: function calH() {
        return 100;
      },
      replaceContentCssText: '',
      appendContentCssText: 'diplay:block;',
      outerContainerLeft: '',
      outerContainerRight: ''
    },
    {
      querySelector: 'mpvideosnap',
      genId: function genId() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        var type = opt.node.getAttribute('data-type') || 'video';
        if (type === 'live') {
          return decodeURIComponent(opt.node.getAttribute('data-noticeid') || '');
        }
        return decodeURIComponent(opt.node.getAttribute('data-id') || '');
      },
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        var type = opt.node.getAttribute('data-type') || 'video';
        var width = opt.node.getAttribute('data-width') || '';
        var height = opt.node.getAttribute('data-height') || '';
        if (type === 'live' || type === 'topic') {
          return opt.parentWidth;
        }
        var ratio = 1;
        ratio = width / height;
        var computedHeight = 0;
        var computedWidth = 0;
        var isHorizontal = false;
        if (ratio &gt; 1) {
          isHorizontal = true;
          ratio = 4 / 3;
        } else {
          ratio = 3 / 4;
        }
        opt.node.setAttribute('data-ratio', ratio);
        opt.node.setAttribute('data-isHorizontal', isHorizontal);
        if (isHorizontal === true) {
          computedWidth = opt.parentWidth;
        } else {
          if (window.innerWidth &lt; 1024) {
            computedWidth = window.innerWidth * 0.65;
          } else {
            computedWidth = opt.parentWidth * 0.65;
          }
        }
        computedHeight = computedWidth / ratio;
        computedHeight = Math.round(computedHeight);
        computedWidth = Math.round(computedWidth);
        opt.node.setAttribute('data-computedWidth', computedWidth);
        opt.node.setAttribute('data-computedHeight', computedHeight);
        return computedWidth;
      },
      calH: function calH() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        var desc = opt.node.getAttribute('data-desc') || '';
        var type = opt.node.getAttribute('data-type') || 'video';
        var computedHeight = opt.node.getAttribute('data-computedHeight') || '';
        switch (type) {
          case 'live':
            return desc ? 152 : 116;
          case 'topic':
            return 201;
          case 'image':
          case 'video':
            return parseFloat(computedHeight);
        }
      },
      getBorderRadius: function getBorderRadius() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        var type = opt.node.getAttribute('data-type') || 'video';
        if (type === 'video') {
          return 4;
        }
        return 8;
      },
      replaceContentCssText: '',
      appendContentCssText: 'display:flex;margin:0px auto;',
      outerContainerLeft: '',
      outerContainerRight: ''
    }, {
      querySelector: 'mp-wxaproduct',
      genId: function genId() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return decodeURIComponent(opt.node.getAttribute('data-wxaproduct-productid') || '');
      },
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return opt.parentWidth * 1 || '100%';
      },
      calH: function calH() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        var cardtype = opt.node.getAttribute('data-wxaproduct-cardtype') || '';
        return cardtype === 'mini' ? 124 : 466;
      },
      replaceContentCssText: '',
      outerContainerLeft: '',
      outerContainerRight: ''
    }, {
      querySelector: 'mpprofile',
      genId: function genId(opt) {
        return opt.node.getAttribute('data-id') || '';
      },
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return opt.parentWidth * 1;
      },
      calH: function calH() {
        return 143;
      },
      replaceContentCssText: '',
      appendContentCssText: 'diplay:block;',
      outerContainerLeft: '',
      outerContainerRight: ''
    },
    {
      querySelector: 'mp-common-product:not([data-cardtype="2"])',
      genId: function genId(opt) {
        return opt.node.getAttribute('data-windowproduct') || '';
      },
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        if (opt.node.getAttribute('data-cardtype') === "0") {
          return Math.min(opt.parentWidth, 400) * 1 || '100%';
        }
        return opt.parentWidth * 1 || '100%';
      },
      calH: function calH(opt) {
        var customstyle = opt.node.getAttribute('data-customstyle') || '{}';
        if (customstyle) {
          try {
            var _JSON$parse = JSON.parse(customstyle),
              display = _JSON$parse.display,
              height = _JSON$parse.height;
            if (display !== 'none') {
              var customHeight = parseInt(height, 10);
              var ratio;
              if (opt.node.getAttribute('data-cardtype') === "0") {
                ratio = Math.min(400, opt.parentWidth) / 350.0 || 1;
              } else {
                ratio = opt.parentWidth / 350.0 || 1;
              }
              customHeight = Math.round(customHeight * ratio);
              return customHeight;
            }
            return 0;
          } catch (err) {
            console.error(err);
          }
        }
        return 0;
      },
      replaceContentCssText: '',
      appendContentCssText: 'diplay:block;',
      outerContainerLeft: '&lt;div style="display: flex; margin: 0 auto 24px;justify-content: center;"&gt;',
      outerContainerRight: '&lt;/div&gt;'
    }, {
      querySelector: 'mpcps:not([data-templateid="video-play"]),mp-common-cpsad:not([data-templateid="video-play"])',
      genId: function genId(opt) {
        var node = opt.node;
        var planId = node.getAttribute('data-planid');
        var goodId = node.getAttribute('data-pid');
        var traceId = node.getAttribute('data-traceid');
        return goodId || planId || traceId || '';
      },
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        var node = opt.node;
        var templateId = node.getAttribute('data-templateid');
        var adType = node.getAttribute('data-adtype');
        var width = 0;
        if (templateId === 'list') {
          width = '100%';
        } else if (templateId === 'card') {
          if (adType === AD_CONFIG.CPS_GOODS_TYPE.SHORT_PLAY || adType === AD_CONFIG.CPS_GOODS_TYPE.MINI_GAME) {
            width = opt.parentWidth ? opt.parentWidth * 0.65 : '100%';
          } else {
            width = '100%';
          }
        }
        return width;
      },
      calH: function calH(opt) {
        var node = opt.node;
        var templateId = node.getAttribute('data-templateid');
        var adType = node.getAttribute('data-adtype');
        var height = 0;
        if (templateId === 'list') {
          if (adType === AD_CONFIG.CPS_GOODS_TYPE.MINI_GAME) {
            height = 79;
          } else {
            height = 16 + 112 + 16 + 8 + 12 * 1.4;
          }
        } else if (templateId === 'card') {
          if (adType === AD_CONFIG.CPS_GOODS_TYPE.SHORT_PLAY) {
            var width = opt.parentWidth * 0.65;
            height = Math.ceil(width * (4 / 3)) + 68;
          } else if (adType === AD_CONFIG.CPS_GOODS_TYPE.MINI_GAME) {
            var _width = opt.parentWidth * 0.65;
            height = Math.ceil(_width * (4 / 3)) + 64;
          } else {
            height = Math.ceil(opt.parentWidth + 111);
          }
        }
        return height;
      },
      replaceContentCssText: '',
      appendContentCssText: 'diplay:block;',
      outerContainerLeft: '&lt;div style="display: flex; justify-content: center"&gt;',
      outerContainerRight: '&lt;/div&gt;'
    }
    ]
  };
  function preloadingInit() {
    var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    if (typeof document.querySelectorAll !== 'function') {
      return;
    }
    var g = {
      maxWith: document.getElementById('img-content').getBoundingClientRect().width,
      idAttr: 'data-preloadingid'
    };
    for (var i = 0, il = opt.config.length; i &lt; il; i++) {
      var a = opt.config[i];
      var list = document.querySelectorAll(a.querySelector);
      for (var j = 0, jl = list.length; j &lt; jl; j++) {
        var node = list[j];
        var parentWidth = node.parentNode.getBoundingClientRect().width;
        parentWidth = Math.min(parentWidth, g.maxWith);

        if (node.getAttribute('has-insert-preloading')) {
          continue;
        }
        var nodeW = a.calW({
          parentWidth: parentWidth,
          node: node
        });
        var nodeH = a.calH({
          parentWidth: parentWidth,
          node: node
        });
        var nodeId = a.genId({
          index: j,
          node: node
        });
        var nodeBorderRadius = typeof a.getBorderRadius === 'function' ? a.getBorderRadius({
          index: j,
          node: node
        }) : 8;

        if (typeof nodeW === 'number') {
          nodeW += 'px';
        }
        var imgHtml = opt.defaultContentTpl.replace(/#height#/g, nodeH).replace(/#width#/g, nodeW).replace(/#borderRadius#/g, nodeBorderRadius);
        var tmpNode = document.createElement('div');
        tmpNode.innerHTML = imgHtml;
        if (a.replaceContentCssText) {
          var replaceContentCssText = a.replaceContentCssText.replace(/#height#/g, nodeH).replace(/#width#/g, nodeW);
          tmpNode.firstChild.style.cssText = replaceContentCssText;
        } else if (a.appendContentCssText) {
          tmpNode.firstChild.style.cssText += a.appendContentCssText;
        }
        var html = (a.outerContainerLeft || '') + tmpNode.innerHTML + (a.outerContainerRight || '');
        tmpNode.innerHTML = html;
        tmpNode.firstChild.setAttribute(g.idAttr, nodeId);
        node.parentNode.insertBefore(tmpNode.firstChild, node.nextSibling);
        node.setAttribute('has-insert-preloading', '1');
      }
    }
  }
  function lotteryPreloading() {
    Array.from(document.getElementsByTagName('mp-common-bluepacket')).forEach(function (ele) {
      ele.setAttribute('data-customstyle', JSON.stringify({
        height: '349px'
      }));
    });
  }
  function init() {
    preloadingInit(g);
    lotteryPreloading();
  }

  function decode(str) {
    var replace = ["&amp;#96;", "`", "&amp;#39;", "'", "&amp;quot;", '"', "&amp;nbsp;", " ", "&amp;gt;", "&gt;", "&amp;lt;", "&lt;", "&amp;yen;", "¥", "&amp;amp;", "&amp;"];
    for (var i = 0; i &lt; replace.length; i += 2) {
      str = str.replace(new RegExp(replace[i], 'g'), replace[i + 1]);
    }
    return str;
  }
  function getQuery(url) {
    url = url || 'http://qq.com/s?a=b#rd';
    var tmp = url.split('?'),
      query = (tmp[1] || '').split('#')[0].split('&amp;'),
      params = {};
    for (var i = 0; i &lt; query.length; i++) {
      var eqIndex = query[i].indexOf('=');
      if (eqIndex &gt; -1) {
        var arg = query[i].substring(0, eqIndex);
        params[arg] = query[i].substring(eqIndex + 1);
      }
    }
    if (params['pass_ticket']) {
      params['pass_ticket'] = encodeURIComponent(decode(params['pass_ticket']).replace(/\s/g, '+'));
    }
    return params;
  }

  function insertAfter(dom, afterDom) {
    var _p = afterDom.parentNode;
    if (!_p) {
      return;
    }
    if (_p.lastChild === afterDom) {
      _p.appendChild(dom);
    } else {
      _p.insertBefore(dom, afterDom.nextSibling);
    }
  }

  if (typeof getComputedStyle === 'undefined') {
    if (document.body.currentStyle) {
      window.getComputedStyle = function (el) {
        return el.currentStyle;
      };
    } else {
      window.getComputedStyle = {};
    }
  }
  function getMaxWith() {
    var container = document.getElementById('img-content');
    var max_width = container.offsetWidth;
    var container_padding = 0;
    var container_style = getComputedStyle(container);
    container_padding = parseFloat(container_style.paddingLeft) + parseFloat(container_style.paddingRight);
    max_width -= container_padding;
    if (!max_width) {
      max_width = window.innerWidth - 32;
    }
    return max_width;
  }
  function getParentWidth(dom) {
    var parent_width = 0;
    var parent = dom.parentNode;
    var outerWidth = 0;
    while (true) {
      if (!parent || parent.nodeType != 1) break;
      var parent_style = getComputedStyle(parent);
      if (!parent_style) break;
      parent_width = parent.clientWidth - parseFloat(parent_style.paddingLeft) - parseFloat(parent_style.paddingRight) - outerWidth;
      if (parent_width &gt; 0) break;
      outerWidth += parseFloat(parent_style.paddingLeft) + parseFloat(parent_style.paddingRight) + parseFloat(parent_style.marginLeft) + parseFloat(parent_style.marginRight) + parseFloat(parent_style.borderLeftWidth) + parseFloat(parent_style.borderRightWidth);
      parent = parent.parentNode;
    }
    return parent_width;
  }
  function getOuterW(dom) {
    var style = getComputedStyle(dom);
    var w = 0;
    if (!!style) {
      w = parseFloat(style.paddingLeft) + parseFloat(style.paddingRight) + parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);
    }
    return w;
  }
  function getOuterH(dom) {
    var style = getComputedStyle(dom);
    var h = 0;
    if (!!style) {
      h = parseFloat(style.paddingTop) + parseFloat(style.paddingBottom) + parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);
    }
    return h;
  }
  function getVideoWh(dom, vid, data) {
    var max_width = getMaxWith();
    var width = max_width;
    var ratio_ = dom.getAttribute('data-ratio') * 1 || 4 / 3;
    if (data.video_page_infos &amp;&amp; Array.isArray(data.video_page_infos) &amp;&amp; data.video_page_infos.some(function (x) {
      return x.video_id === vid;
    })) {
      var videoData = data.video_page_infos.find(function (x) {
        return x.video_id === vid;
      });
      if (Array.isArray(videoData.mp_video_trans_info) &amp;&amp; videoData.mp_video_trans_info.length) {
        var transInfo = videoData.mp_video_trans_info[0];
        if (!!transInfo.width &amp;&amp; !!transInfo.height) {
          ratio_ = transInfo.width / transInfo.height;
        }
      }
    }
    var arr = [4 / 3, 16 / 9];
    var ret = arr[0];
    var abs = Math.abs(ret - ratio_);
    for (var j = 1, jl = arr.length; j &lt; jl; j++) {
      var _abs = Math.abs(arr[j] - ratio_);
      if (_abs &lt; abs) {
        abs = _abs;
        ret = arr[j];
      }
    }
    ratio_ = ret;
    var parent_width = getParentWidth(dom) || max_width;
    var rwidth = width &gt; parent_width ? parent_width : width;
    var outerW = getOuterW(dom) || 0;
    var outerH = getOuterH(dom) || 0;
    var videoW = rwidth - outerW;
    var videoH = videoW / ratio_;
    var speedDotH = 12;
    var rheight = videoH + outerH + speedDotH;
    return {
      w: Math.ceil(rwidth),
      h: Math.ceil(rheight),
      vh: videoH,
      vw: videoW,
      ratio: ratio_,
      sdh: speedDotH
    };
  }

  
  function setImgSize(item, widthNum, widthUnit, ratio, breakParentWidth, finalSetSize) {
    var imgPaddingBorder = getOuterW(item) || 0;
    var imgPaddingBorderTopBottom = getOuterH(item) || 0;
    if (widthNum &gt; getParentWidth(item) &amp;&amp; !breakParentWidth) {
      widthNum = getParentWidth(item);
    }
    var heightNum = (widthNum - imgPaddingBorder) * ratio + imgPaddingBorderTopBottom;
    widthNum !== 'auto' &amp;&amp; (item.style.cssText += ";width: ".concat(widthNum).concat(widthUnit, " !important;"));
    if (widthNum !== 'auto' &amp;&amp; finalSetSize) {
      if (getComputedStyle(document.body).aspectRatio) {
        item.style.cssText += ";height: auto !important; aspect-ratio: calc(1/".concat(ratio, ");");
      } else {
        item.style.cssText += ";height: ".concat(heightNum).concat(widthUnit, " !important;");
      }
    }
    return {
      finalWidth: widthNum,
      finalHeight: heightNum
    };
  }

  var isAccessibilityKey = 'isMpUserAccessibility';
  var imgPlaceholderClass = 'js_img_placeholder';
  var isAccessMode = window.localStorage.getItem(isAccessibilityKey);
  var imgSizeData;
  var validArr = ',' + [0.875, 1, 1.125, 1.25, 1.375].join(',') + ',';
  var match = window.location.href.match(/winzoom=(\d+(?:\.\d+)?)/);
  if (match &amp;&amp; match[1]) {
    var winzoom = parseFloat(match[1]);
    if (validArr.indexOf(',' + winzoom + ',') &gt;= 0) ;
  }
  function getImgSrcMainInfo(src) {
    var pathName = new URL(src).pathname;
    var lastIndex = pathName.lastIndexOf('/');
    return lastIndex &gt; 0 ? pathName.slice(0, lastIndex) : pathName;
  }
  function setSize(images, videos, data) {
    var bypassPreloading = arguments.length &gt; 3 &amp;&amp; arguments[3] !== undefined ? arguments[3] : false;
    var noWidth = !document.body.clientWidth || !document.getElementById('img-content') || !document.getElementById('img-content').offsetWidth;
    var _loop = function _loop() {
        if (noWidth) {
          return 0;
        }
        if (window.__second_open__ &amp;&amp; videos[vi].getAttribute('__sec_open_place_holder__')) {
          return 1;
        }
        var a = videos[vi];
        var src_ = a.getAttribute('src') || a.getAttribute('data-src') || '';
        var vid = getQuery(src_).vid || a.getAttribute('data-mpvid');
        if (!vid) {
          return 1;
        }
        vid = vid.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
        a.removeAttribute('src');
        a.style.display = 'none';
        var obj = getVideoWh(a, vid, data);
        var videoPlaceHolderSpan = document.createElement('span');
        videoPlaceHolderSpan.className = "".concat(imgPlaceholderClass, " wx_widget_placeholder");
        videoPlaceHolderSpan.setAttribute('data-vid', vid);
        videoPlaceHolderSpan.innerHTML = '&lt;span class="weui-primary-loading"&gt;&lt;span class="weui-primary-loading__dot"&gt;&lt;/span&gt;&lt;/span&gt;';
        videoPlaceHolderSpan.style.cssText = "width: " + obj.w + "px !important;";
        insertAfter(videoPlaceHolderSpan, a);

        a.style.cssText += ';width: ' + obj.w + 'px !important;';
        a.setAttribute('width', obj.w);
        {
          videoPlaceHolderSpan.style.cssText += 'height: ' + (obj.h - obj.sdh) + 'px !important;margin-bottom: ' + obj.sdh + 'px !important;';
          a.style.cssText += 'height: ' + obj.h + 'px !important;';
          a.setAttribute('height', obj.h);
        }
        a.setAttribute('data-vh', obj.vh);
        a.setAttribute('data-vw', obj.vw);
        if (a.getAttribute("data-mpvid")) {
          a.setAttribute("data-src", location.protocol + "//mp.weixin.qq.com/mp/readtemplate?t=pages/video_player_tmpl&amp;auto=0&amp;vid=" + vid);
        } else {
          a.setAttribute("data-src", location.protocol + "//v.qq.com/iframe/player.html?vid=" + vid + "&amp;width=" + obj.vw + "&amp;height=" + obj.vh + "&amp;auto=0");
        }
        a.setAttribute('__sec_open_place_holder__', true);
        var index = vi;
        (function setHitStyle() {
          var hitInfos = data.video_page_infos;
          var ret = (hitInfos || []).find(function (info) {
            return info.video_id === vid;
          });
          if (!ret) return;
          var ori = ret.ori_status;
          var hit_biz_headimg = ret.hit_biz_headimg,
            hit_nickname = ret.hit_nickname,
            hit_username = ret.hit_username;
          var sourceBiz = ret.hit_bizuin;

          var selfUserName = data.user_name;
          if (ori === 2 &amp;&amp; selfUserName !== hit_username) {
            var videoBar = document.createElement('div');
            var videoBarHtml = "\n          &lt;div class=\"wx-edui-video_source_link js_wx_tap_highlight wx_tap_card\" id=\"".concat(hit_username).concat(index, "\" data-hit-username=\"").concat(hit_username, "\" data-hit-biz=\"").concat(sourceBiz, "\"&gt;\n            &lt;div class=\"wx-edui-video_source_word\"&gt;_(\"\u4EE5\u4E0B\u89C6\u9891\u6765\u6E90\u4E8E\")&lt;/div&gt;\n            &lt;div class=\"wx-edui-video_account_info\"&gt;\n              &lt;div class=\"wx-edui-video_account_avatar\" id=\"").concat(hit_biz_headimg).concat(index, "\" data-src=\"").concat(hit_biz_headimg, "\"&gt;&lt;/div&gt;\n              &lt;div class=\"wx-edui-video_account_name\"&gt;").concat(hit_nickname, "&lt;/div&gt;\n              &lt;i class=\"wx-edui-video_account_arrow\"&gt;&lt;/i&gt;\n            &lt;/div&gt;\n            &lt;div class=\"wx-edui-video_source_link__layer_mask\"&gt;&lt;/div&gt;\n          &lt;/div&gt;");
            videoBar.innerHTML = videoBarHtml;
            document.querySelectorAll('.video_iframe').forEach(function (item) {
              if (item.getAttribute('data-mpvid') === vid &amp;&amp; item.getAttribute('data-hasSource') !== '1') {
                item.setAttribute('data-hasSource', 1);
                item.parentNode.insertBefore(videoBar, item);
              }
            });
            var avatorEle = document.getElementById(hit_biz_headimg + index);
            var avatorSrc = avatorEle.dataset.src;
            if (ret.hit_biz_headimg) avatorEle.style.backgroundImage = "url(".concat(avatorSrc, ")");
          }
        })();
      },
      _ret;
    for (var vi = 0, viLen = videos.length; vi &lt; viLen; vi++) {
      _ret = _loop();
      if (_ret === 0) break;
      if (_ret === 1) continue;
    }
    var isCarton = data.copyright_info.is_cartoon_copyright * 1 || data.user_info.is_care_mode * 1 || isAccessMode === '1';
    var max_width = getMaxWith();
    if (!imgSizeData) {
      imgSizeData = {};
      data.picture_page_info_list = data.picture_page_info_list || [];
      var noWidthHeightCount = 0;
      var hasWidthHeightCount = 0;
      data.picture_page_info_list.forEach(function (imgData) {
        try {
          var width = Number(imgData.width);
          var height = Number(imgData.height);
          if (width &amp;&amp; height) {
            imgSizeData[getImgSrcMainInfo(imgData.cdn_url)] = {
              ratio: height / width,
              width: width
            };
            hasWidthHeightCount++;
          } else {
            noWidthHeightCount++;
          }
        } catch (err) {
          console.error(err);
        }
      });
      if (Math.random() &lt; 0.01 &amp;&amp; Number(data.create_timestamp) &gt; 1682352000) {
        hasWidthHeightCount &amp;&amp; (new Image().src = "//mp.weixin.qq.com/mp/jsmonitor?idkey=330742_20_".concat(hasWidthHeightCount, "&amp;r=").concat(Math.random()));
        noWidthHeightCount &amp;&amp; (new Image().src = "//mp.weixin.qq.com/mp/jsmonitor?idkey=330742_21_".concat(noWidthHeightCount, "&amp;r=").concat(Math.random()));
        if (!data.picture_page_info_list.length) {
          setTimeout(function () {
            noWidthHeightCount = document.querySelectorAll('#js_content img').length;
            noWidthHeightCount &amp;&amp; (new Image().src = "//mp.weixin.qq.com/mp/jsmonitor?idkey=330742_21_".concat(noWidthHeightCount, "&amp;r=").concat(Math.random()));
          }, 300);
        }
      }
    }
    function adjustTableColumnWidths() {
      var screenWidth = window.innerWidth;
      var tables = document.querySelectorAll('table');
      tables.forEach(function (table) {
        var rows = table.querySelectorAll('tr');
        var shouldSkipTable = false;
        for (var i = 0; i &lt; rows.length; i++) {
          var row = rows[i];
          var cells = Array.from(row.querySelectorAll('td'));
          var hasAllDataColWidth = cells.every(function (cell) {
            return cell.hasAttribute('data-colwidth');
          });
          console.log('hasAllDataColWidth:', hasAllDataColWidth);
          if (!hasAllDataColWidth) {
            shouldSkipTable = true;
            break;
          }
        }
        if (shouldSkipTable) {
          return;
        }
        rows.forEach(function (row) {
          var cells = Array.from(row.querySelectorAll('td'));
          if (cells.length &gt; 1) {
            var colWidths = cells.map(function (cell) {
              return parseInt(cell.getAttribute('data-colwidth'), 10) || 0;
            });
            var allEqual = colWidths.every(function (width) {
              return width === colWidths[0];
            });
            console.log('allEqual:', allEqual);
            if (!allEqual) {
              return;
            }
            var totalColWidth = colWidths.reduce(function (sum, width) {
              return sum + width;
            }, 0);
            cells.forEach(function (cell, index) {
              var colWidth = colWidths[index];
              if (colWidth &gt; 0 &amp;&amp; totalColWidth &gt; 0) {
                var widthPercentage = colWidth / totalColWidth;
                var newWidth = screenWidth * widthPercentage;
                cell.style.width = "".concat(newWidth, "px");
              }
            });
          }
        });
      });
    }
    adjustTableColumnWidths();

    for (var im = 0, imLen = images.length; im &lt; imLen; im++) {
      if (window.__second_open__ &amp;&amp; images[im].getAttribute('__sec_open_place_holder__')) {
        continue;
      }
      var img = images[im];
      var imgDataSrc = img.getAttribute('data-src');
      var realSrc = img.getAttribute('src');
      var isEmoji = false;
      if (imgDataSrc &amp;&amp; /^https?:\/\/res\.wx\.qq\.com\/t\/wx_fed\/we-emoji\//.test(imgDataSrc)) {
        isEmoji = true;
        img.style = 'display:inline-block;font-size:22px;width:1em;height:1em;vertical-align:middle;background-size:1em;background-repeat:no-repeat;margin-top:-.2em';
      }
      if (!imgDataSrc || realSrc) continue;

      var imgStyle = img.getAttribute('style');
      img.setAttribute('data-original-style', imgStyle);
      var width_ = img.dataset.w;
      var imgRatio = 1 * img.dataset.ratio;
      img.setAttribute('data-index', im);
      var width_num = 0;
      var width_unit = 'px';
      try {
        var imgSizeFromBackend = imgSizeData[getImgSrcMainInfo(imgDataSrc)];
        if (imgSizeFromBackend) {
          if (imgSizeFromBackend.ratio) {
            imgRatio = imgSizeFromBackend.ratio;
            img.setAttribute('data-ratio', imgSizeFromBackend.ratio);
          }
          if (imgSizeFromBackend.width) {
            width_ = imgSizeFromBackend.width;
            img.setAttribute('data-w', imgSizeFromBackend.width);
          }
        }
      } catch (err) {
        console.error(err);
      }
      if (imgRatio &amp;&amp; imgRatio &gt; 0) {
        if (!(isCarton || isEmoji)) {
          img.src = "data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='1px' height='1px' viewBox='0 0 1 1' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3E%3C/title%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' fill-opacity='0'%3E%3Cg transform='translate(-249.000000, -126.000000)' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E";
          if (noWidth) {
            var fallbackWidth = img.style.width || img.getAttribute('width') || width_;
            var fallbackMaxWidth = 360;

            fallbackWidth = parseFloat(fallbackWidth, 10) &gt; fallbackMaxWidth ? fallbackMaxWidth : fallbackWidth;
            if (fallbackWidth === 'inherit') {
              fallbackWidth = fallbackMaxWidth;
            }
            if (fallbackWidth) {
              img.setAttribute('_width', !isNaN(fallbackWidth * 1) ? fallbackWidth + 'px' : fallbackWidth);
            }
            if (typeof fallbackWidth === 'string' &amp;&amp; fallbackWidth.indexOf('%') !== -1) {
              fallbackWidth = parseFloat(fallbackWidth.replace('%', ''), 10) / 100 * fallbackMaxWidth;
            }
            if (fallbackWidth === 'auto') {
              fallbackWidth = width_;
              if (width_ === 'auto' || !width_) {
                fallbackWidth = fallbackMaxWidth;
              } else {
                fallbackWidth = width_;
              }
            }
            var fallbackRes = /^(\d+(?:\.\d+)?)([a-zA-Z%]+)?$/.exec(fallbackWidth);
            var fallbackLastWidth = fallbackRes &amp;&amp; fallbackRes.length &gt;= 2 ? fallbackRes[1] : 0;
            var fallbackUnit = fallbackRes &amp;&amp; fallbackRes.length &gt;= 3 &amp;&amp; fallbackRes[2] ? fallbackRes[2] : 'px';
            setImgSize(img, fallbackLastWidth, fallbackUnit, imgRatio, true);
            img.classList.add(imgPlaceholderClass, "wx_img_placeholder");
            continue;
          }
          img.classList.add(imgPlaceholderClass, "wx_img_placeholder");
        }
        var parent_width = getParentWidth(img) || max_width;
        var init_width = img.style.width || img.getAttribute('width') || width_ || parent_width;
        init_width = parseFloat(init_width, 10) &gt; max_width ? max_width : init_width;
        if (init_width === 'inherit') {
          init_width = parent_width;
        }
        if (init_width) {
          img.setAttribute('_width', !isNaN(init_width * 1) ? init_width + 'px' : init_width);
        }
        if (typeof init_width === 'string' &amp;&amp; init_width.indexOf('%') !== -1) {
          setImgSize(img, width_, 'px', imgRatio, true);
          parent_width = getParentWidth(img) || max_width;
          init_width = parseFloat(init_width.replace('%', ''), 10) / 100 * parent_width;
        }
        if (init_width === 'auto') {
          init_width = width_;
          if (width_ === 'auto' || !width_) {
            init_width = parent_width;
          } else {
            init_width = width_;
          }
        }
        var res = /^(\d+(?:\.\d+)?)([a-zA-Z%]+)?$/.exec(init_width);
        width_num = res &amp;&amp; res.length &gt;= 2 ? res[1] : 0;
        width_unit = res &amp;&amp; res.length &gt;= 3 &amp;&amp; res[2] ? res[2] : 'px';
        var imgWidth = width_num;

        if (isCarton || isEmoji) {
          img.src = imgDataSrc;
          img.style.height = 'auto';
        } else {
          setImgSize(img, imgWidth, width_unit, imgRatio, true);
          var _setImgSize = setImgSize(img, imgWidth, width_unit, imgRatio, false, true),
            finalWidth = _setImgSize.finalWidth,
            finalHeight = _setImgSize.finalHeight;
          if (finalWidth &lt;= 16 || finalHeight &lt;= 16) {
            img.classList.remove(imgPlaceholderClass, "wx_img_placeholder");
            img.classList.add('wx_img_placeholder_mini');
          }
        }
      }
      if (!data.is_h5_render) {
        img.setAttribute('__sec_open_place_holder__', true);
      }
    }
    if (!bypassPreloading) init();
  }

  var ua = navigator.userAgent;
  /mac\sos/i.test(ua) &amp;&amp; !/(iPhone|iPad|iPod|iOS)/i.test(ua) || /windows\snt/i.test(ua);

  var images = document.getElementsByTagName('img');
  var videos = [];

  var user_name = "gh_b2bc148c1cf8";
  var isCartoonCopyright = '0';
  var is_care_mode = '';
  var createTimestamp = '1781248239';
  var picturePageInfoList = "[{'cdn_url':'https://mmbiz.qpic.cn/sz_mmbiz_gif/VDCUoW3UiblK4aPAlVGHCm37uWuMvmXjQrC8HEPuGyhMSBe7pibd8RhEia9YQ4eLjkpib74joOiaUPSHjTjw8XCibuQ7FKMNaVaicyXbib6eMMIWPlk/640?wx_fmt=gif\x26amp;amp;from=appmsg','width':'1080','height':'432'},{'cdn_url':'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblK7bbN9YGPekAcje2W08WG3uBsWxLSPhwiaiah2MPwP3ssIxICiceLMoqdZr3IyEutZVNhJiaQ8gdgGfwyugNFQYOlrrsV53fxtCyk/640?wx_fmt=png\x26amp;amp;from=appmsg','width':'1080','height':'855'},{'cdn_url':'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLERYjBoXfdicSbiamAJXMoNmtoac3COKVXQlKGpJl0wIwicMGVSLEUc5vFjVKJ1urJk9ib0Smx2Eia4BVOcnuTUuzHDhMC4vrRdo18/640?wx_fmt=png\x26amp;amp;from=appmsg','width':'1080','height':'780'},{'cdn_url':'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJqicRazIlMO5gZykKTeEY2djrV6PBywmPmg2H6sjIYYz5xQjYYqwk3VlPeiaU3d4ePwhmr8KkRvkvl2a55ACUW4ADt0rEkUBupY/640?wx_fmt=png\x26amp;amp;from=appmsg','width':'1080','height':'383'},{'cdn_url':'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKv0DI30ynV7sRcV3T37mzS1pVKM4w1EObRNhzwCjsmGoDWmzgV9XkX9pYR6NF94FmsBwibuw8Jts4sCPkdUuFGHRzSyEQY49Do/640?wx_fmt=png\x26amp;amp;from=appmsg','width':'1080','height':'1285'},{'cdn_url':'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJVmiafEMN5IZogBNc4dQEkBqgLWlMbpCgF9Gghic4vMSFCJjCfcia1kO34gGOSU3jLCPdEW9x3YVPwkjHzlIib0NdVeZQFuYmjiaDo/640?wx_fmt=png\x26amp;amp;from=appmsg','width':'1080','height':'676'},{'cdn_url':'https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJ38UtY8Mqxhb6b2rLlKB8lPeiawApkaJShUrzBuiapNib9Vdx7fFYYEPJHPiaWo2JjbfY2mCcm1fPcAiboCEjb4RHhbEzusppPnFyo/640?wx_fmt=png\x26amp;amp;from=appmsg','width':'1080','height':'564'},{'cdn_url':'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKJqhM0jNW7sMjVK1ZZmxISYpSiaJicMheVBJjkslBWJ82obfPx24BiaDAE54mfk7FLrnOQUcIALq9N99xznBibnEmWDoKGqPyEKUk/640?wx_fmt=png\x26amp;amp;from=appmsg','width':'1080','height':'898'},{'cdn_url':'https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJW5HgUHzS7aNZ0o9NGjibFpcK6UFBWnP6FUtCSljhZRF4Ex9AHvWCN97F8HjY2bian4ECOKQ3hQ3IxL6dHGSVteynia3SOw9R6RM/640?wx_fmt=png\x26amp;amp;from=appmsg','width':'923','height':'668'},]";
  picturePageInfoList = picturePageInfoList.includes(',]') ? picturePageInfoList.replace(',]', ']') : picturePageInfoList;
  try {
    picturePageInfoList = JSON.parse(picturePageInfoList.replace(/'/g, '"'));
  } catch (err) {
    picturePageInfoList = [];
    console.error(err);
  }
  var data = {
    is_h5_render: true,
    user_name: user_name,
    copyright_info: {
      is_cartoon_copyright: isCartoonCopyright
    },
    picture_page_info_list: picturePageInfoList,
    create_timestamp: createTimestamp,
    user_info: {
      is_care_mode: is_care_mode
    }
  };
  setSize(images, videos, data);

})();
  &lt;/script&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   (function () {
  'use strict';

  

  
  var AD_TYPE = {
    ANDROID_APP_PRODUCT_TYPE: 12,
    IOS_APP_PRODUCT_TYPE: 19,
    ADD_CONTACT_PRODUCT_TYPE: 23,
    MINI_GAME_PRODUCT_TYPE: 46,
    CARD_PRODUCT_TYPE: 36,
    SHOP_PRODUCT_TYPE: 30,
    WECHATCARD_PRODUCT_TYPE: 47,
    BRAND_WECHAT_PRODUCT_TYPE: 29,
    BRAND_GDT_PRODUCT_TYPE: 31
  };
  var AD_POS = {
    POS_BOTTOM: 0,
    POS_BOTTOM_PC: 38,
    POS_MID: 4,
    POS_MID_PC: 39,
    POS_SPONSOR: 3,
    POS_AD_BEFORE_VIDEO: 7,
    POS_AD_AFTER_VIDEO: 9,
    POS_AD_MID_VIDEO: 16,
    POS_AD_KEYWORD: 36,
    POS_AD_COMMENT: 43,
    PC_POS_AD_COMMENT: 44,
    POS_IMAGE_BOTTOM_SPONSOR: 45
  };
  var AD_DEST_TYPE = {
    AD_DEST_TYPE: 0,
    OUTER_DEST_TYPE: 1,
    APPDETAIL_DEST_TYPE: 2,
    BIZ_DEST_TYPE: 3,
    APPINFO_PAGE_DEST_TYPE: 4,
    WECHAT_SHOP_DEST_TYPE: 5,
    WECHAT_APPLET_DEST_TYPE: 6,
    LEAF_DEST_TYPE: 7,
    CANVAS_AD_DEST_TYPE: 9
  };
  var AD_CACHE_TIME = 0.5 * 60 * 1000;
  var AD_JSAPI_WHITE_LIST = ['openUrlWithExtraWebview', 'openADCanvas', 'addContact', 'profile', 'getInstallState', 'installDownloadTask', 'addDownloadTask', 'pauseDownloadTask', 'resumeDownloadTask', 'queryDownloadTask', 'launchApplication', 'writeCommData', 'adDataReport', 'downloadAppInternal', 'wxdownload:progress_change', 'menu:share:appmessage', 'menu:share:timeline', 'menu:share:weibo', 'menu:share:facebook', 'menu:general:share', 'launch3rdApp', 'addDownloadTaskStraight', 'sendAppMessage', 'shareTimeline', 'getNetworkType', 'openBizChat', 'jumpToBizProfile', 'shareWeibo', 'shareFB', 'imagePreview', 'getBackgroundAudioState', 'openWeApp', 'openEmbeddedWeApp', 'preloadMiniProgramContacts', 'preloadMiniProgramEnv', 'calRqt', 'openCardDetail', 'batchAddCard', 'handleMPPageAction', 'makePhoneCall', 'getOAID', 'saveWaid', 'batchPreloadMiniProgram', 'onScreenShot', 'handleAdAction', 'activity:state_change', 'getAdIdInfo', 'onWebPageUrlExposed', 'openFinderView', 'predownloadMiniProgramPackage', 'openCustomerServiceChat', 'showOpenIMContactProfile', 'openWXSearchPage', 'openWXSearchHalfPage', 'openFinderTopicView'];
  var AD_REQ_PATH_WHITE_LIST = [
  '/mp/advertisement_report', '/mp/ad_report', '/mp/ad_video_report', '/mp/jsmonitor', '/mp/ad_complaint', '/mp/jsreport', '/tp/datacenter/report', '/mp/getappmsgad', '/mp/ad_biz_info', '/mp/appmsg_video_snap', '/mp/cps_product_info', '/mp/mini_drama_info'];
  var AD_WEB_COMPT_REQ_PATH_WHITE_LIST = [/(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/advertisement_report/, /(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/ad_report/, /(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/ad_video_report/, /(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/jsmonitor/, /(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/ad_complaint/, /(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/jsreport/, /(https?:)?\/\/mp\.weixin\.qq\.com\/tp\/datacenter\/report/, /(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/getappmsgad/, /(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/ad_biz_info/, /(https?:)?\/\/mp\.weixin\.qq\.com\/tp\/goods_info/, /(https?:)?\/\/mp\.weixin\.qq\.com\/tp\/app_mobile/, /(https?:)?\/\/mp\.weixin\.qq\.com\/tp\/datareport\/report/, /(https?:)?\/\/mp\.weixin\.qq\.com\/promotion\/wxalandpage\/getcanvasinfo/];
  var transformText = '转化按钮';
  var extraText = '广告文案或辅助信息';
  var defaultMidAdData = {
    hint_txt: '创意-20200827_1',
    url: 'https://ad.weixin.qq.com/guide/196?weixinadkey=59d5cf0b4fbf7d2f66cd90aaa82a5208057512dd06fcb64d7fd57e71ec15945e1744ac499e05a04999381c3bf30c21ca&amp;amp;gdt_vid=wx0clsqxat6lzly601&amp;amp;weixinadinfo=315019981.wx0clsqxat6lzly601.75.1',
    type: '0',
    rl: 'http://ad.wx.com:12638/cgi-bin/click?viewid=AQM1xOr6MFeZmWeZrowCvQcrvQUBUq4o8ER2yFgwF9grPdtUR9bIJQ8laqMAJjGlkGLuVbyABIPX6Eifa2%2FK%2Buq17IIT21tYcUnpeU4VqEEsEQhc5Pa7C7drAvl0Mz30CNepODMXeD%2BEdny8SmmxN7prV78e1L2S6oqhNjrnTqM1t40ZGU84httoAODXEjmE89IX0ncOiP1oTsgm1tYwahSkxN6HLZIb6bhxZrc5ba3mCKMZ5GV4UEyDuQCyySxtA5QTt0eQJJA%2FSgHe79yTxUrzzoGrtlhK0O3HussVeRjKcvLkE6w%2FpQBnropwT%2FmE23RT2bOoyw%2BVCMlWTtk%2Bvxh%2FIOFAmrWHYzDuNkDNRo3um26RD2TFpeyRasbZoFRAV7RA9k4P3REAH4vemxktbNq24rtuF6MFGEcXpcGOD%2FxZJlBmInM7rguFAhRQWvCy3nIpO7knN2rl2DZv%2FcfkuoP4bedzUMcxtrU2Wz%2B82EG9ULHJunGHT%2F%2BcWj%2Bv8n%2Fh9bUtAtk7Fr1HBQdkQ8SbYadhRDWWuSEC2iMfqpMyzNqLltdxhyXxMRpsruPb2p4WoHnSvuGfbnkXIKcDppOTLB38xStPIbbaaR4FC%2B4AOF1UqbtMor9JJQQNz3vspSngY%2F37uYiQXAKNYB2RAB%2BbfoYMSS2VcJvY%2B0lWH3%2BYFTmBs6%2BxixGTJmB4%2FXZZcNs4PgRs6OoIefEnLz%2FvwoAvrs%2FUPotqevoiHfq%2FlLILAzo28D%2FKSU9hOOHXrS4LrUYhK47WKSeoglnagaOZI5kGZa9iBcwj9V6FR4HEml51P9u5xaTOnPZjfEAx5l6BBxTT4379irAZCB2Zfcd6wBU2Eo5p9yXVSH%2FCH8yVAgIEsrJ9oeqpO%2FwozsQ2PkXw%2Bz77B56hYp1zYG7HK%2BCDjx1NSisa6g8PFa72xOb8wpjZ9Lao70oGSWshIjCH4kWfKX0P8uFJc22L%2FZihKj0J%2BqgC1LgiMc6SXmFHdvTSIxTRKm9GImpbVfLTN3xrT%2BGGutwMTfgWta7EDR7d6HXQBA1orNotnnK37GOw1jHud8fzQkfuMN%2F7DO6kW0wAXs4LDMhJpnHi2%2Ba4VjL8Yjh0wmTZkVy4iIPYDmYSAzuJ3aP3cXuGv%2B1JwF%2Fod7hCA6RBYwZN2fXvO5AUo7FdoRr8ssPB7eAiNhcFonMv5%2Bt8L1b7QLoXGlplvxh9Fz669q43xnDsEy8ucOfyush8RiYLPxGj4YFr2gy6%2BAV5u%2FMgZIShq149jRn42%2B%2BnmzPC8JdiiIe4p5Ec7KFFrv%2F302DcKBPI9lQDsC1xWAvIfJcnxC%2FqYgDikLE1SsurxV2PV1icS%2BpU706S2LmnpyAsZw%3D%3D',
    apurl: 'http://ad.wx.com:12638/cgi-bin/exposure?viewid=AQM1xOr6MFeZmWeZrowCvQcrvQUBUq4o8ER2yFgwF9grPdtUR9bIJQ8laqMAJjGlkGLuVbyABIPX6Eifa2%2FK%2Buq17IIT21tYcUnpeU4VqEEsEQhc5Pa7C7drAvl0Mz30CNepODMXeD%2BEdny8SmmxN7prV78e1L2S6oqhNjrnTqM1t40ZGU84httoAODXEjmE89IX0ncOiP1oTsgm1tYwahSkxN6HLZIb6bhxZrc5ba3mCKMZ5GV4UEyDuQCyySxtA5QTt0eQJJA%2FSgHe79yTxUrzzoGrtlhK0O3HussVeRjKcvLkE6w%2FpQBnropwT%2FmE23RT2bOoyw%2BVCMlWTtk%2Bvxh%2FIOFAmrWHYzDuNkDNRo3um26RD2TFpeyRasbZoFRAV7RA9k4P3REAH4vemxktbNq24rtuF6MFGEcXpcGOD%2FxZJlBmInM7rguFAhRQWvCy3nIpO7knN2rl2DZv%2FcfkuoP4bedzUMcxtrU2Wz%2B82EG9ULHJunGHT%2F%2BcWj%2Bv8n%2Fh9bUtAtk7Fr1HBQdkQ8SbYadhRDWWuSEC2iMfqpMyzNqLltdxhyXxMRpsruPb2p4WoHnSvuGfbnkXIKcDppOTLB38xStPIbbaaR4FC%2B4AOF1UqbtMor9JJQQNz3vspSngY%2F37uYiQXAKNYB2RAB%2BbfoYMSS2VcJvY%2B0lWH3%2BYFTmBs6%2BxixGTJmB4%2FXZZcNs4PgRs6OoIefEnLz%2FvwoAvrs%2FUPotqevoiHfq%2FlLILAzo28D%2FKSU9hOOHXrS4LrUYhK47WKSeoglnagaOZI5kGZa9iBcwj9V6FR4HEml51P9u5xaTOnPZjfEAx5l6BBxTT4379irAZCB2Zfcd6wBU2Eo5p9yXVSH%2FCH8yVAgIEsrJ9oeqpO%2FwozsQ2PkXw%2Bz77B56hYp1zYG7HK%2BCDjx1NSisa6g8PFa72xOb8wpjZ9Lao70oGSWshIjCH4kWfKX0P8uFJc22L%2FZihKj0J%2BqgC1LgiMc6SXmFHdvTSIxTRKm9GImpbVfLTN3xrT%2BGGutwMTfgWta7EDR7d6HXQBA1orNotnnK37GOw1jHud8fzQkfuMN%2F7DO6kW0wAXs4LDMhJpnHi2%2Ba4VjL8Yjh0wmTZkVy4iIPYDmYSAzuJ3aP3cXuGv%2B1JwF%2Fod7hCA6RBYwZN2fXvO5AUo7FdoRr8ssPB7eAiNhcFonMv5%2Bt8L1b7QLoXGlplvxh9Fz669q43xnDsEy8ucOfyush8RiYLPxGj4YFr2gy6%2BAV5u%2FMgZIShq149jRn42%2B%2BnmzPC8JdiiIe4p5Ec7KFFrv%2F302DcKBPI9lQDsC1xWAvIfJcnxC%2FqYgDikLE1SsurxV2PV1icS%2BpU706S2LmnpyAsZw%3D%3D',
    traceid: 'wx0clsqxat6lzly601',
    group_id: 'wx0clsqxat6lzly600_wx0clsqxat6lzly601',
    ticket: '',
    pt: 2,
    image_url: 'http://wxsnsdythumb.wxs.qq.com/141/20204/snscosdownload/SH/reserved/5f4604790009bfd700000000b3679d090000008d00004eec?m=1c9e9086c11018ef774e28ee3b744a67&amp;amp;ck=1c9e9086c11018ef774e28ee3b744a67',
    ad_desc: '',
    biz_appid: 'wx69618ae091cf2c76',
    biz_info: {
      user_name: 'gh_1e80bb81a1d2',
      nick_name: '微信广告',
      head_img: 'https://wxa.wxs.qq.com/res/images/bizsdk/preview/wxlogo.png',
      biz_uin: 3094043316,
      signature: '微信广告'
    },
    pos_type: 4,
    watermark_type: 0,
    logo: '',
    is_cpm: 0,
    dest_type: 1,
    material_width: 960,
    material_height: 540,
    ad_width: 0,
    ad_height: 0,
    use_new_protocol: 2,
    product_type: 29,
    material_type: 0,
    crt_exp_tid: 0,
    crt_exp_info: '',
    flow_exp_info: '[{&amp;quot;exp_para&amp;quot;:[{&amp;quot;name&amp;quot;:94574,&amp;quot;value&amp;quot;:&amp;quot;gb&amp;quot;},{&amp;quot;name&amp;quot;:100036,&amp;quot;value&amp;quot;:&amp;quot;1&amp;quot;}]}]',
    watermark_text: '活动推广',
    crt_size: '484',
    button_action: "{&amp;quot;button_text&amp;quot;:&amp;quot;".concat(transformText, "&amp;quot;,&amp;quot;jump_type&amp;quot;:1,&amp;quot;jump_url&amp;quot;:&amp;quot;https:\\/\\/ad.weixin.qq.com\\/guide\\/196?weixinadkey=bd80a7a5a0e57a3b971b1c372bb06a3748f8f01c44f1bfe1a0aa4fe927e21037fc57ddfe77f5e0648611197259574f4b&amp;amp;gdt_vid=wx0clsqxat6lzly601&amp;amp;weixinadinfo=315019981.wx0clsqxat6lzly601.75.1&amp;quot;,&amp;quot;text_type&amp;quot;:0}"),
    position_index: 21,
    shop_image: [],
    material_id_list: [],
    uxinfo: '315019981|wx0clsqxat6lzly601|289237697|0|1598496949|0|0|9020229299926746||AgI0AyUHOnPeccmEYhaAko8Pr4P95P7Vl6qjqKrxaR/CSGQ3e+STumguP/V43UuYT8o=|315020504',
    ext_info: '{}',
    ad_token: 'bf8463b9a4b692768c820c412bb705a73e8a9dd2c769f22549e4bb5aeaaeccc1358b60b6ce7546f95cfdf7f73d187572',
    crt_info: "[{&amp;quot;width&amp;quot;:960,&amp;quot;height&amp;quot;:540,&amp;quot;thumb_url&amp;quot;:&amp;quot;http://wxsnsdythumb.wxs.qq.com/141/20204/snscosdownload/SH/reserved/5f4604790009bfd700000000b3679d090000008d00004eec?m=1c9e9086c11018ef774e28ee3b744a67&amp;amp;ck=1c9e9086c11018ef774e28ee3b744a67&amp;quot;,&amp;quot;image_url&amp;quot;:&amp;quot;http://wxsnsdythumb.wxs.qq.com/141/20204/snscosdownload/SH/reserved/5f4604790009bfd700000000b3679d090000008d00004eec?m=1c9e9086c11018ef774e28ee3b744a67&amp;amp;ck=1c9e9086c11018ef774e28ee3b744a67&amp;quot;,&amp;quot;size&amp;quot;:18323,&amp;quot;image_md5&amp;quot;:&amp;quot;1c9e9086c11018ef774e28ee3b744a67&amp;quot;,&amp;quot;materialId&amp;quot;:&amp;quot;112199640&amp;quot;,&amp;quot;card_info&amp;quot;:{&amp;quot;mp_tag_type&amp;quot;:2,&amp;quot;mp_brandeffect_isopen&amp;quot;:0,&amp;quot;mp_tags&amp;quot;:[&amp;quot;".concat(extraText, "&amp;quot;]}}]"),
    reranking_ext_info: '{&amp;quot;tid&amp;quot;:315020504}',
    ext_back_comm: '{&amp;quot;pctr&amp;quot;:0.019999999553}'
  };
  var CPS_GOODS_TYPE = {
    OLD_GOODS: 'mp',
    NEW_GOODS: 'cps-to-reader',
    IMAGE_GOODS: 'cps-to-image-reader',
    SHORT_PLAY: 'short-play',
    MINI_GAME: 'mini-game'
  };
  var MOUNT_POINT = {
    BODY: 'body',
    DRAWER: 'drawer'
  };
  var AD_CONFIG = {
    defaultMidAdData: defaultMidAdData,
    AD_TYPE: AD_TYPE,
    AD_POS: AD_POS,
    AD_CACHE_TIME: AD_CACHE_TIME,
    AD_DEST_TYPE: AD_DEST_TYPE,
    MOUNT_POINT: MOUNT_POINT,
    AD_FRAME_DOMAIN: 'https://wxa.wxs.qq.com',
    CPS_AD_FRAME_DOMAIN: 'https://file.daihuo.qq.com',
    INVALID_METHOD_NAME_MSG_PREFIX: 'Invalid methodName',
    INVALID_METHOD_TYPE_MSG_PREFIX: 'Invalid methodType',
    INVALID_ARGS_MSG_PREFIX: 'Invalid args',
    INVALID_REQ_PATH_MSG_PREFIX: 'Invalid request path',
    AD_IFRAME_HIDE_CLASS: 'iframe_ad_dn',
    AD_JSAPI_WHITE_LIST: AD_JSAPI_WHITE_LIST,
    AD_REQ_PATH_WHITE_LIST: AD_REQ_PATH_WHITE_LIST,
    AD_WEB_COMPT_REQ_PATH_WHITE_LIST: AD_WEB_COMPT_REQ_PATH_WHITE_LIST,
    FRAME_ERROR: 'onError',
    FRAME_READY: 'onFrameReadyV2',
    CHANGE_FRAME_STYLE: 'changeFrameStyle',
    PROXY_CONSOLE: 'consoleOnHostEnv',
    PROXY_ACTION: 'onProxyV2',
    PROXY_CALLBACK_ACTION: 'proxyCallbackV2',
    CLICK_OUTSIDE_ACTION: 'clickOutsideV2',
    CLICK_AD_ACTION: 'onAdClick',
    PAGE_SCROLL_ACTION: 'pageScrollV2',
    ORIGIN_VIDEO_VID_PREFIX: 'wxv',
    AD_VIDEO_FIN_ACTION: 'adVideoEnd',
    AD_VIDEO_PLAY_ACTION: 'onVideoPlayV2',
    AD_VIDEO_END_ACTION: 'onVideoEndV2',
    AD_PLAY_VIDEO_ACTION: 'playVideoV2',
    AD_EXPOSE_IMAGE_ACTION: 'exposeImage',
    AD_HIDE_IMAGE_ACTION: 'hideImage',
    AD_CHANGE_VIDEO_STATE: 'changeVideoPlayState',
    AD_VIDEO_SET_SCREEN_STATE_ACTION: 'setScreenState',
    AD_IMAGE_SET_EXPAND_STATE_ACTION: 'setImageExpandState',
    GET_APPMSGAD_READY_STATUS_ACTION: 'getAppmsgadReadyStatus',
    APPMSGAD_READY_ACTION: 'appmsgadReady',
    HAS_AD_DATA_QUERY_KEY: 'has_ad_data',
    GET_AD_DATA_AFTER_VIDEO_ACTION_NAME: 'getAdDataAfterVideo',
    SET_PAGE_DATA_ACTION_NAME: 'setPageDataV2',
    SET_AD_DATA_ACTION_NAME: 'setAdDataV2',
    SEND_AD_VID_ACTION: 'sendAdVid',
    GET_AD_VID_ACTION: 'getAdVid',
    CPS_GOODS_TYPE: CPS_GOODS_TYPE,
    AD_FEED_BACK_ACTION: 'feedback',
    EMIT_AD_DATA_ACTION: 'emitAdData',
    AD_TOUCH_ACTION: 'touchEvent',
    SET_AD_FONT_SIZE_ACTION: 'setAdFontSize',
    DRAWER_OPEN_CHANGE: 'onDrawerOpenChange'
  };

  
  var g = {
    defaultContentTpl: '&lt;span class="js_img_placeholder wx_widget_placeholder" style="width:#width# !important;height:#height#px !important;text-indent: 0"&gt;&lt;span class="weui-primary-loading"&gt;&lt;span class="weui-primary-loading__dot"&gt;&lt;/span&gt;&lt;/span&gt;',
    config: [{
      querySelector: 'redpacketcover',
      
      genId: function genId() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return decodeURIComponent(opt.node.getAttribute('data-coveruri') || '');
      },
      
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return opt.parentWidth * 0.7854;
      },
      
      calH: function calH() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return this.calW({
          parentWidth: opt.parentWidth
        }) / 0.73346 + 27 + 37;
      },
      replaceContentCssText: '',
      outerContainerLeft: '',
      outerContainerRight: ''
    },
    {
      querySelector: 'mppoi',
      genId: function genId() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return opt.node.getAttribute('data-id') || '';
      },
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return opt.parentWidth * 1;
      },
      calH: function calH() {
        return 219;
      },
      replaceContentCssText: '',
      appendContentCssText: 'diplay:block;',
      outerContainerLeft: '',
      outerContainerRight: ''
    },
    {
      querySelector: 'mpsearch',
      genId: function genId() {
        return decodeURIComponent('mp-common-search');
      },
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return opt.parentWidth * 1;
      },
      calH: function calH() {
        return 100;
      },
      replaceContentCssText: '',
      appendContentCssText: 'diplay:block;',
      outerContainerLeft: '',
      outerContainerRight: ''
    },
    {
      querySelector: 'mpvideosnap',
      genId: function genId() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        var type = opt.node.getAttribute('data-type') || 'video';
        if (type === 'live') {
          return decodeURIComponent(opt.node.getAttribute('data-noticeid') || '');
        }
        return decodeURIComponent(opt.node.getAttribute('data-id') || '');
      },
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        var type = opt.node.getAttribute('data-type') || 'video';
        var width = opt.node.getAttribute('data-width') || '';
        var height = opt.node.getAttribute('data-height') || '';
        if (type === 'live' || type === 'topic') {
          return opt.parentWidth;
        }
        var ratio = 1;
        ratio = width / height;
        var computedHeight = 0;
        var computedWidth = 0;
        var isHorizontal = false;
        if (ratio &gt; 1) {
          isHorizontal = true;
          ratio = 4 / 3;
        } else {
          ratio = 3 / 4;
        }
        opt.node.setAttribute('data-ratio', ratio);
        opt.node.setAttribute('data-isHorizontal', isHorizontal);
        if (isHorizontal === true) {
          computedWidth = opt.parentWidth;
        } else {
          if (window.innerWidth &lt; 1024) {
            computedWidth = window.innerWidth * 0.65;
          } else {
            computedWidth = opt.parentWidth * 0.65;
          }
        }
        computedHeight = computedWidth / ratio;
        computedHeight = Math.round(computedHeight);
        computedWidth = Math.round(computedWidth);
        opt.node.setAttribute('data-computedWidth', computedWidth);
        opt.node.setAttribute('data-computedHeight', computedHeight);
        return computedWidth;
      },
      calH: function calH() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        var desc = opt.node.getAttribute('data-desc') || '';
        var type = opt.node.getAttribute('data-type') || 'video';
        var computedHeight = opt.node.getAttribute('data-computedHeight') || '';
        switch (type) {
          case 'live':
            return desc ? 152 : 116;
          case 'topic':
            return 201;
          case 'image':
          case 'video':
            return parseFloat(computedHeight);
        }
      },
      getBorderRadius: function getBorderRadius() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        var type = opt.node.getAttribute('data-type') || 'video';
        if (type === 'video') {
          return 4;
        }
        return 8;
      },
      replaceContentCssText: '',
      appendContentCssText: 'display:flex;margin:0px auto;',
      outerContainerLeft: '',
      outerContainerRight: ''
    }, {
      querySelector: 'mp-wxaproduct',
      genId: function genId() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return decodeURIComponent(opt.node.getAttribute('data-wxaproduct-productid') || '');
      },
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return opt.parentWidth * 1 || '100%';
      },
      calH: function calH() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        var cardtype = opt.node.getAttribute('data-wxaproduct-cardtype') || '';
        return cardtype === 'mini' ? 124 : 466;
      },
      replaceContentCssText: '',
      outerContainerLeft: '',
      outerContainerRight: ''
    }, {
      querySelector: 'mpprofile',
      genId: function genId(opt) {
        return opt.node.getAttribute('data-id') || '';
      },
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return opt.parentWidth * 1;
      },
      calH: function calH() {
        return 143;
      },
      replaceContentCssText: '',
      appendContentCssText: 'diplay:block;',
      outerContainerLeft: '',
      outerContainerRight: ''
    },
    {
      querySelector: 'mp-common-product:not([data-cardtype="2"])',
      genId: function genId(opt) {
        return opt.node.getAttribute('data-windowproduct') || '';
      },
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        if (opt.node.getAttribute('data-cardtype') === "0") {
          return Math.min(opt.parentWidth, 400) * 1 || '100%';
        }
        return opt.parentWidth * 1 || '100%';
      },
      calH: function calH(opt) {
        var customstyle = opt.node.getAttribute('data-customstyle') || '{}';
        if (customstyle) {
          try {
            var _JSON$parse = JSON.parse(customstyle),
              display = _JSON$parse.display,
              height = _JSON$parse.height;
            if (display !== 'none') {
              var customHeight = parseInt(height, 10);
              var ratio;
              if (opt.node.getAttribute('data-cardtype') === "0") {
                ratio = Math.min(400, opt.parentWidth) / 350.0 || 1;
              } else {
                ratio = opt.parentWidth / 350.0 || 1;
              }
              customHeight = Math.round(customHeight * ratio);
              return customHeight;
            }
            return 0;
          } catch (err) {
            console.error(err);
          }
        }
        return 0;
      },
      replaceContentCssText: '',
      appendContentCssText: 'diplay:block;',
      outerContainerLeft: '&lt;div style="display: flex; margin: 0 auto 24px;justify-content: center;"&gt;',
      outerContainerRight: '&lt;/div&gt;'
    }, {
      querySelector: 'mpcps:not([data-templateid="video-play"]),mp-common-cpsad:not([data-templateid="video-play"])',
      genId: function genId(opt) {
        var node = opt.node;
        var planId = node.getAttribute('data-planid');
        var goodId = node.getAttribute('data-pid');
        var traceId = node.getAttribute('data-traceid');
        return goodId || planId || traceId || '';
      },
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        var node = opt.node;
        var templateId = node.getAttribute('data-templateid');
        var adType = node.getAttribute('data-adtype');
        var width = 0;
        if (templateId === 'list') {
          width = '100%';
        } else if (templateId === 'card') {
          if (adType === AD_CONFIG.CPS_GOODS_TYPE.SHORT_PLAY || adType === AD_CONFIG.CPS_GOODS_TYPE.MINI_GAME) {
            width = opt.parentWidth ? opt.parentWidth * 0.65 : '100%';
          } else {
            width = '100%';
          }
        }
        return width;
      },
      calH: function calH(opt) {
        var node = opt.node;
        var templateId = node.getAttribute('data-templateid');
        var adType = node.getAttribute('data-adtype');
        var height = 0;
        if (templateId === 'list') {
          if (adType === AD_CONFIG.CPS_GOODS_TYPE.MINI_GAME) {
            height = 79;
          } else {
            height = 16 + 112 + 16 + 8 + 12 * 1.4;
          }
        } else if (templateId === 'card') {
          if (adType === AD_CONFIG.CPS_GOODS_TYPE.SHORT_PLAY) {
            var width = opt.parentWidth * 0.65;
            height = Math.ceil(width * (4 / 3)) + 68;
          } else if (adType === AD_CONFIG.CPS_GOODS_TYPE.MINI_GAME) {
            var _width = opt.parentWidth * 0.65;
            height = Math.ceil(_width * (4 / 3)) + 64;
          } else {
            height = Math.ceil(opt.parentWidth + 111);
          }
        }
        return height;
      },
      replaceContentCssText: '',
      appendContentCssText: 'diplay:block;',
      outerContainerLeft: '&lt;div style="display: flex; justify-content: center"&gt;',
      outerContainerRight: '&lt;/div&gt;'
    }
    ]
  };
  function preloadingInit() {
    var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    if (typeof document.querySelectorAll !== 'function') {
      return;
    }
    var g = {
      maxWith: document.getElementById('img-content').getBoundingClientRect().width,
      idAttr: 'data-preloadingid'
    };
    for (var i = 0, il = opt.config.length; i &lt; il; i++) {
      var a = opt.config[i];
      var list = document.querySelectorAll(a.querySelector);
      for (var j = 0, jl = list.length; j &lt; jl; j++) {
        var node = list[j];
        var parentWidth = node.parentNode.getBoundingClientRect().width;
        parentWidth = Math.min(parentWidth, g.maxWith);

        if (node.getAttribute('has-insert-preloading')) {
          continue;
        }
        var nodeW = a.calW({
          parentWidth: parentWidth,
          node: node
        });
        var nodeH = a.calH({
          parentWidth: parentWidth,
          node: node
        });
        var nodeId = a.genId({
          index: j,
          node: node
        });
        var nodeBorderRadius = typeof a.getBorderRadius === 'function' ? a.getBorderRadius({
          index: j,
          node: node
        }) : 8;

        if (typeof nodeW === 'number') {
          nodeW += 'px';
        }
        var imgHtml = opt.defaultContentTpl.replace(/#height#/g, nodeH).replace(/#width#/g, nodeW).replace(/#borderRadius#/g, nodeBorderRadius);
        var tmpNode = document.createElement('div');
        tmpNode.innerHTML = imgHtml;
        if (a.replaceContentCssText) {
          var replaceContentCssText = a.replaceContentCssText.replace(/#height#/g, nodeH).replace(/#width#/g, nodeW);
          tmpNode.firstChild.style.cssText = replaceContentCssText;
        } else if (a.appendContentCssText) {
          tmpNode.firstChild.style.cssText += a.appendContentCssText;
        }
        var html = (a.outerContainerLeft || '') + tmpNode.innerHTML + (a.outerContainerRight || '');
        tmpNode.innerHTML = html;
        tmpNode.firstChild.setAttribute(g.idAttr, nodeId);
        node.parentNode.insertBefore(tmpNode.firstChild, node.nextSibling);
        node.setAttribute('has-insert-preloading', '1');
      }
    }
  }
  function lotteryPreloading() {
    Array.from(document.getElementsByTagName('mp-common-bluepacket')).forEach(function (ele) {
      ele.setAttribute('data-customstyle', JSON.stringify({
        height: '349px'
      }));
    });
  }
  function init() {
    preloadingInit(g);
    lotteryPreloading();
  }

  
  init();

})();
  &lt;/script&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   function htmlDecode(str) {
  return str
    .replace(/&amp;#39;/g, '\'')
    .replace(/&lt;br\s*(\/)?\s*&gt;/g, '\n')
    .replace(/&amp;nbsp;/g, ' ')
    .replace(/&amp;lt;/g, '&lt;')
    .replace(/&amp;gt;/g, '&gt;')
    .replace(/&amp;quot;/g, '"')
    .replace(/&amp;amp;/g, '&amp;')
    .replace(/&amp;nbsp;/g, ' ');
}

var previewtype = "" * 1;
var uin = '';
var key = '';
var pass_ticket = '';
var new_appmsg = 1;
var real_item_show_type = "0";
var can_see_complaint = "";
var tid = "";
var aid = "";
var clientversion = "";
var appuin = "" || "Mzg3NzU0NzIxMA==";
var voiceid = "";
var create_time = "1781248239" * 1;

var source = "";
var ascene = "";
var subscene = "";
var sessionid = "" || "svr_ce921cc4f6b";
var abtest_cookie = "";

var finder_biz_enter_id = "" * 1;

var scene = 75;

var itemidx = "" || "";
var appmsg_token = "" || "";
var _copyright_stat = "1";
var _ori_article_type = "";

var is_follow = "";
var nickname = htmlDecode("开源日记");
var appmsg_type = "9";
var ct = "1781248239";
var user_name = "gh_b2bc148c1cf8";
var fakeid = "";
var version = "";
var is_limit_user = "0";
var cps_article_data = "";
var round_head_img = "http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png";
var profile_signature = "分享优质开源项目 , 探索AI生产力。";
var profile_signature_new = "";
var hd_head_img = "http://wx.qlogo.cn/mmhead/iahdQicCC5VBTkicysbQccT1ic6swx2OJ6WhlNEPhoZF3pb2NQVDkwJbLT1iadha8M2ZSskQ93NsKYRw/0" || "";
var ori_head_img_url = "http://wx.qlogo.cn/mmhead/iahdQicCC5VBTkicysbQccT1ic6swx2OJ6WhlNEPhoZF3pb2NQVDkwJbLT1iadha8M2ZSskQ93NsKYRw/132";
var msg_title = '画图这件事，我终于不用拖拽了。'.html(false);
var msg_desc = htmlDecode("");
var msg_cdn_url = "https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblLJGcYwOahVL3DsR85kKkicqaBJ8NNlOic186VqXq1W8zUmYt5NfhHeoLN9rricp0AjuialK2XGHzeISRXYcrn0ibLVyibxGEuIowiaOI/0?wx_fmt=jpeg";
var cdn_url_1_1 = "https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblIyXRknxvo8YgTCOBiaOehbAghTg45MkG86qwuoTUWN6RAy1KNbuPT7jcgq9nDCXyGIu11BIViau3ice6tTNtxPibEAgRKh24AD80w/0?wx_fmt=jpeg";
var cdn_url_235_1 = "https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblLJGcYwOahVL3DsR85kKkicqaBJ8NNlOic186VqXq1W8zUmYt5NfhHeoLN9rricp0AjuialK2XGHzeISRXYcrn0ibLVyibxGEuIowiaOI/0?wx_fmt=jpeg";
var msg_link = "https://mp.weixin.qq.com/s/WLqxs0Wkk2YdklqfU15IKQ";
var user_uin = "" * 1;
var open_id = "";
var msg_source_url = '';
var img_format = 'jpeg';
var srcid = '';
var req_id = '1519RoYZu7uusVDWayhElpEQ';
var networkType;
var appmsgid = "2247512771" || '' || '';
var comment_id = '4557630321659428865' || '0';
var mp_comment_id = "" || "" * 1;
var comment_enabled = "" * 1;
var open_fansmsg = "0" * 1;
var is_https_res = ("" * 1) &amp;&amp; (location.protocol == "https:");
var msg_daily_idx = "1" || "";
var profileReportInfo = "" || "";

var devicetype = "";
var source_encode_biz = "";
var source_username = "";
var reprint_ticket = "";
var source_mid = "";
var source_idx = "";
var source_biz = "";
var author = "开源日记";
var author_id = "";
var reward_wording = "";
var reward_author_head = "";
var reward_can_whisper = "" * 1 || 0;
var reward_total_count = "" * 1 || 0;


var optimizing_flag = "" * 1;


var show_comment = "";
var __appmsgCgiData = {
  wxa_product: "" * 1,
  wxa_cps: "" * 1,
  show_msg_voice: "0" * 1,
  can_use_page: "" * 1,
  is_wxg_stuff_uin: "0" * 1,
  card_pos: "",
  copyright_stat: "1",
  source_biz: "",
  hd_head_img: "http://wx.qlogo.cn/mmhead/iahdQicCC5VBTkicysbQccT1ic6swx2OJ6WhlNEPhoZF3pb2NQVDkwJbLT1iadha8M2ZSskQ93NsKYRw/0" || (window.location.protocol + "//" + window.location.host + "//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/pic/pic_rumor_link7ead77.jpg"),
  has_red_packet_cover: "0" * 1 || 0,
  minishopCardData: ""
};
var _empty_v = "//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/audios/empty7ead77.mp3";
var album_info_list = [
  ];
var target_album_info = (function () {
  var curAlbumId = '';
  if (curAlbumId) {
    for (var i = 0; i &lt; album_info_list.length; i++) {
      if (curAlbumId === album_info_list[i].id) {
        return album_info_list[i];
      }
    }
  }
  return album_info_list &amp;&amp; album_info_list[0];
})();
var albumInfo =  '';
if (window.novel_album_info) window.novel_album_info.show_novel_link = '' === 'true';
var copyright_stat = "1" * 1;
var hideSource = "" * 1;

var pay_fee = "" * 1;
var pay_timestamp = "";
var need_pay = "" * 1;
var is_pay_subscribe = "0" * 1;

var need_report_cost = "0" * 1;
var use_tx_video_player = "0" * 1;
var appmsg_fe_filter = "contenteditable";

var friend_read_source = "" || "";
var friend_read_version = "" || "";
var friend_read_class_id = "" || "";

var is_only_read = "1" * 1;
var read_num = "" * 1;
var read_num_new = '' * 1;
var show_read_new = '' * 1;
var like_num = "" * 1;
var liked = "" == 'true' ? true : false;
var is_temp_url = "" ? 1 : 0;
var tempkey = "";
var send_time = "";
var icon_emotion_switch = "//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/icon/emotion/icon_emotion_switch7ead77.svg";
var icon_emotion_switch_active = "//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/icon/emotion/icon_emotion_switch_active7ead77.svg";
var icon_emotion_switch_primary = "//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/icon/emotion/icon_emotion_switch_primary7ead77.svg";
var icon_emotion_switch_active_primary = "//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/icon/emotion/icon_emotion_switch_active_primary7ead77.svg";
var icon_loading_white = "//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/icon/common/icon_loading_white7ead77.gif";
var icon_audio_unread = "//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/icon/audio/icon_audio_unread7ead77.png";
var icon_qqmusic_default = "//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/icon/audio/icon_qqmusic_default7ead77.png";
var icon_qqmusic_source = "//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/icon/audio/icon_qqmusic_source7ead77.svg";
var icon_kugou_source = "//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/icon/audio/icon_kugou_source7ead77.png";

var topic_default_img = '//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/pic/pic_book_thumb7ead77.png';
var comment_edit_icon = '//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/icon/common/icon_edit7ead77.png';
var comment_loading_img = '//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/icon/common/icon_loading_white7ead77.gif';
var comment_c2c_not_support_img = '//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/pic/pic_discuss_more7ead77.png';
var line_info = {
  };
var can_feedback = '' * 1;

var yqj_info = {
  };

var frontend_exp_list = [
        ];
var tts_is_ban = '' * 1 || 0;
var tts_is_show = '' * 1 || 0;
var noneed_tts = '' * 1 || 0;
var tts_heard_person_cnt = '' * 1 || 0;

var can_use_star = '' * 1 || 0;;

var star_person_cnt = '' * 1 || 0;


var voice_in_appmsg = {
  };
var voiceList = {};
voiceList={"voice_in_appmsg":[]}
var reprint_style = '' * 1;
var reprint_type = '' * 1;
var wxa_img_alert = "" != 'false';

var weapp_sn_arr_json = "" || "";

var videoPageInfos = [
  ];
window.__videoPageInfos = videoPageInfos;
if ([1, 2].indexOf('0' * 1) !== -1) {
  var pageInfoList = [];
  for(var i = 0; i&lt;videoPageInfos.length; i++){
    if (videoPageInfos[i].mp_video_overseas_limit) {
      videoPageInfos[i].mp_video_trans_info = [];
    }
    pageInfoList.push(videoPageInfos[i]);
  }
  window.__videoPageInfos = pageInfoList;
}

window.watermark_setting = '2' * 1;

var video_snap_json = "" || "";
var rumor_data_json = "" || "";

function recursiveHtmlDecode(input) {
    const textarea = document.createElement("textarea");
    let previous = input;
    let current = input;
    do {
        previous = current;
        textarea.innerHTML = previous;
        current = textarea.value;
    } while (current !== previous);
    return current;
}
if(rumor_data_json){
    try {
        video_snap_json = JSON.stringify({list:[JSON.parse(recursiveHtmlDecode(rumor_data_json))]})
    }catch (e) {
        console.error('解构谣言信息报错',e)
    }

}
var mp_profile = [
          {
      fakeid: 'Mzg3NzU0NzIxMA==',
      nickname: '开源日记',
      alias: '',
      round_head_img: 'http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png',
      signature: '分享优质开源项目 , 探索AI生产力。',
      original_num: '1158' * 1,
      is_biz_ban: '0' * 1,
      biz_account_status: '0' * 1,
      verify_status: '0' * 1,
      username: 'gh_b2bc148c1cf8',
    },
        {
      fakeid: 'Mzg3NzU0NzIxMA==',
      nickname: '开源日记',
      alias: '',
      round_head_img: 'http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png',
      signature: '分享优质开源项目 , 探索AI生产力。',
      original_num: '1158' * 1,
      is_biz_ban: '0' * 1,
      biz_account_status: '0' * 1,
      verify_status: '0' * 1,
      username: 'gh_b2bc148c1cf8',
    },
      ];


var ban_scene = "0" * 1;

var ban_jump_link = {
    };

var svr_time = "1781521305" * 1;
var is_transfer_msg = "" * 1 || 0;

var malicious_title_reason_id = "0" * 1;
var malicious_content_type = "0" * 1;

var modify_time = "" * 1;
var modify_detail = [];

var isprofileblock = "0";

var jumpInfo = [
    ];

window.service_type = '0' * 1;

var hasRelatedArticleInfo = '0' * 1 || 0;
var relatedArticleFlag = '' * 1 || 0;

var canUseAutoTypeSetting;
canUseAutoTypeSetting = '3' * 1 || 0;
var styleType = '3';
var originTypeSetting = '';
var originStyleType = '';
var reprintEditable = '';
var currentSvrStyleType, originSvrStyleType;

if (!isNaN(parseInt(styleType)) &amp;&amp; parseInt(styleType) &gt; 0) {
  currentSvrStyleType = parseInt(styleType);
} else if (!isNaN(parseInt(canUseAutoTypeSetting))) {
  currentSvrStyleType = parseInt(canUseAutoTypeSetting);
} else {
  currentSvrStyleType = 0;
}

if (!isNaN(parseInt(originStyleType)) &amp;&amp; parseInt(originStyleType) &gt; 0) {
  originSvrStyleType = parseInt(originStyleType);
} else if (!isNaN(parseInt(originTypeSetting))) {
  originSvrStyleType = parseInt(originTypeSetting);
} else {
  originSvrStyleType = 0;
}

if (reprint_type &gt; 0 &amp;&amp; originSvrStyleType !== currentSvrStyleType &amp;&amp; parseInt(reprintEditable) === 0) {
  var dc = document.getElementById('js_content').classList;

  dc.remove('autoTypeSetting');
  dc.remove('autoTypeSetting24');
  dc.remove('autoTypeSetting24psection');

  var finalSetting = parseInt(originSvrStyleType);

  if (finalSetting === 1) {
    dc.add('autoTypeSetting');
  } else if (finalSetting === 2) {
    dc.add('autoTypeSetting24');
  } else if (finalSetting === 3) {
    dc.add('autoTypeSetting24psection');
  }
}

window.wxtoken = "777";
window.is_login = '' * 1;

var title = "开源日记";

var is_new_msg = true;

var is_wash = '' * 1;
var topbarEnable = false;
var enterid = "1781521305" * 1 || "1781521305" * 1 || "" * 1 || parseInt(Date.now() / 1000);
var reloadid = '' * 1 || parseInt(Date.now() / 1000);
var reloadseq = '' * 1 || 1;
var miniprogram_appid = "";

var defaultAvatarUrl = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfNDIyMF8yNjc0KSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTAgMGg0MHY0MEgweiIvPjxwYXRoIGZpbGw9IiNFREVERUQiIGQ9Ik0wIDBoNDB2NDBIMHoiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExLjUgMjlhMSAxIDAgMCAxLTEtMXYtLjY4NGMwLS42ODYuNDk4LTEuNDg0IDEuMTE0LTEuNzg1bDUuNjYtMi43NjJjLjgyMS0uNCAxLjAxMi0xLjI4OC40Mi0xLjk5bC0uMzYyLS40MjljLS43MzYtLjg3Mi0xLjMzMi0yLjUtMS4zMzItMy42NFYxNWMwLTIuMjEgMS43OTUtNCA0LTQgMi4yMSAwIDQgMS43OTMgNCA0djEuNzFjMCAxLjE0LS42IDIuNzczLTEuMzMyIDMuNjQybC0uMzYxLjQyOGMtLjU5LjY5OS0uNDA2IDEuNTg4LjQxOSAxLjk5bDUuNjYgMi43NjJjLjYxNS4zIDEuMTE0IDEuMDkzIDEuMTE0IDEuNzg0VjI4YTEgMSAwIDAgMS0xIDFoLTE3eiIgZmlsbD0iIzAwMCIgZmlsbC1vcGFjaXR5PSIuOSIgb3BhY2l0eT0iLjIiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPSJjbGlwMF80MjIwXzI2NzQiPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0wIDBoNDB2NDBIMHoiLz48L2NsaXBQYXRoPjwvZGVmcz48L3N2Zz4=';

document.addEventListener('DOMContentLoaded', function () {
  window.domCompleteTime = Date.now();
});

      var hasRecommendMsg = 0;
  ;
var isPayTopic = '' * 1;
var payTopicPrice = '' * 1;
var isRemovedFromPayTopic = '' * 1;
var isPaySubscribe = '0' * 1;
var isPaid = '0' * 1;
var isRefund = '' * 1;
var payShowIAPPrice = 1;
var payProductId = '' || '';
var previewPercent = '0' || '';
var payGiftsCount = '0' * 1 || 0;
var payDesc = htmlDecode('');
var payFreeGift = '' * 1 || 0;
var is_finished_preview = 0;
var jump2pay = '' * 1;

var isFans;
var can_reward = '0' * 1 || 0;
var is_need_reward = (isPaySubscribe &amp;&amp; !isPaid) ? 0 : "0" * 1;
var rewardsn = '';
var rewardTimestamp = '' * 1 || 0;
var is_teenager = '' * 1 || 0;
var is_care_mode = '' * 1 || 0;
var zhuge_user_limit = '' * 1 || 0;
var segment_comment_id = '4557630342983270407';
var showRewardListDialog = '' * 1 || 0;

var colorScheme = '';

var iapPriceInfo = {
  };
var productPayPackage = {
    iap_price_info: iapPriceInfo
};

var isCartoonCopyright = '0' * 1;

var show_msg_voice = '' * 1;
var qnaCardData = '';
var exptype = '' || '';
var expsessionid = '' || '';

var goContentId = '';
var goReplyId = '';
var fromCommentShare = '';

var extra_comment_id = '4557630342194741259' || '0';
var goAddedInfo = '' * 1;
var goAddedInfoContentId = '';

var hitProduct = '' * 1;

var preload_comment_list = '';
var preload_comment_total_cnt = '' * 1;

var show_related_article = '' * 1;

var wwdistype = '';
var refuteSourceUrl = '';

var verify_status = "0" * 1;

window.cgiData = {
  appImg: '//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/pic/pic_tencent_video7ead77.png',
}

var loveNotifyMsg = '' * 1;
var loveFriendId = '';

window.ip_wording = {
  countryName: '中国',
  countryId: '156',
  provinceName: '湖北',
  provinceId: '',
  cityName: '',
  cityId: ''
};
window.show_ip_wording = '1' * 1;

  window.source_appid = 'wx145b5b1fb309352f' || 'wxc3923acb47c0d396';
window.is_over_sea = '0' * 1;
window.showAdMark = "0" * 1;
window.is_title_modified = "" * 1;

window.alias = "" || "";

window.claim_source = {
  claim_source_type: '' * 1 || 0,
  claim_source: '',
  media_source_type_info: {
      },
  aigc_type: '' * 1 || 0,
  aigc_wording: '',
};
window.hideAdMarkOnCps = ("" || "0" * 1) ? 1 : 0;
window.bar_version = '' * 1;
window.short_link = '' || '';

window.appmsg_bar_data = {
      verify_status: '' * 1,
  show_like: '' * 1,
  like_count: '' * 1,
  show_share: '' * 1,
  share_count: '' * 1,
  show_old_like: '' * 1,
  old_like_count: '' * 1,
  show_collect: '' * 1,
  collect_count: '' * 1,
  comment_enabled: '' * 1,
  comment_count: '' * 1,
  show_friend_seen: '' * 1,
  friend_seen_info: {
      },
  is_subscribed: '' * 1,
  friend_subscribe_count: '' * 1,
    ecs_jump_info_str: '',
    red_flower_like_info: {
    is_red_flower_like: '0' * 1 || 0,
    red_flower_wording: '',
    tencent_gongyi_wxa_path: '',
    tencent_gongyi_wxa_appid: '',
    red_flower_like_sn: '',
    tencent_gongyi_wxa_username: '',
  },
      is_show_newsflash_feeds: '' * 1 === 1,
  newsflash_feeds_url: '',
};
window.subcount_version = '' * 1;
window.show_comment_bar = '' * 1;

window.picture_page_info_list = [
    {
    width: '1080' * 1,
    height: '432' * 1,
    cdn_url: 'https://mmbiz.qpic.cn/sz_mmbiz_gif/VDCUoW3UiblK4aPAlVGHCm37uWuMvmXjQrC8HEPuGyhMSBe7pibd8RhEia9YQ4eLjkpib74joOiaUPSHjTjw8XCibuQ7FKMNaVaicyXbib6eMMIWPlk/640?wx_fmt=gif\x26amp;amp;from=appmsg',
    show_watermark: '' === 'true',
    bottom_right_brightness: '' * 1,
          },
    {
    width: '1080' * 1,
    height: '855' * 1,
    cdn_url: 'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblK7bbN9YGPekAcje2W08WG3uBsWxLSPhwiaiah2MPwP3ssIxICiceLMoqdZr3IyEutZVNhJiaQ8gdgGfwyugNFQYOlrrsV53fxtCyk/640?wx_fmt=png\x26amp;amp;from=appmsg',
    show_watermark: 'true' === 'true',
    bottom_right_brightness: '0.062268235' * 1,
        watermark_info: {
      cdn_url: 'http://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblL5z8rm3icErkqAulteC8yvR6jsqBayMWCaqiblqwkfNg8pEBPjIUARUtPnyAXLNHGbeJibZ2ibAibAOraGuydnHA0Meq15G00nA1cA/0?wx_fmt=png',
      is_uploader: 'true' === 'true',
    },
          },
    {
    width: '1080' * 1,
    height: '780' * 1,
    cdn_url: 'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLERYjBoXfdicSbiamAJXMoNmtoac3COKVXQlKGpJl0wIwicMGVSLEUc5vFjVKJ1urJk9ib0Smx2Eia4BVOcnuTUuzHDhMC4vrRdo18/640?wx_fmt=png\x26amp;amp;from=appmsg',
    show_watermark: 'true' === 'true',
    bottom_right_brightness: '0.062268235' * 1,
        watermark_info: {
      cdn_url: 'http://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIoVpJGgcM4Vtlt57e51Txib3rTiaQEic8119GX9GbC2F3pYVAyCXYiaaUq0kq6LzNH8Bbv4PGg1mX9dXa1eU0CkVyG1CiaotuacuBQ/0?wx_fmt=png',
      is_uploader: 'true' === 'true',
    },
          },
    {
    width: '1080' * 1,
    height: '383' * 1,
    cdn_url: 'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJqicRazIlMO5gZykKTeEY2djrV6PBywmPmg2H6sjIYYz5xQjYYqwk3VlPeiaU3d4ePwhmr8KkRvkvl2a55ACUW4ADt0rEkUBupY/640?wx_fmt=png\x26amp;amp;from=appmsg',
    show_watermark: 'true' === 'true',
    bottom_right_brightness: '0.15510099' * 1,
        watermark_info: {
      cdn_url: 'http://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJ0ELLgOmFpFicbFCN0evBB7gsmhRGjxYYd41O5KRo0CZia3RXryjIuOjIvyehA9WtlSMEgc7LAkgXhy3ibHYptic9jiaY7HjeQmJCw/0?wx_fmt=png',
      is_uploader: 'true' === 'true',
    },
          },
    {
    width: '1080' * 1,
    height: '1285' * 1,
    cdn_url: 'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKv0DI30ynV7sRcV3T37mzS1pVKM4w1EObRNhzwCjsmGoDWmzgV9XkX9pYR6NF94FmsBwibuw8Jts4sCPkdUuFGHRzSyEQY49Do/640?wx_fmt=png\x26amp;amp;from=appmsg',
    show_watermark: 'true' === 'true',
    bottom_right_brightness: '0.16314103' * 1,
        watermark_info: {
      cdn_url: 'http://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblI98b5tT4yaKPtJqLibiazzpSlgj7t15LaB7c2BcK729kms5psPgGTTzUzn3el2vtchMHw77Fqq7k13uXIhAB6Y7UpKODz4apBw8/0?wx_fmt=png',
      is_uploader: 'true' === 'true',
    },
          },
    {
    width: '1080' * 1,
    height: '676' * 1,
    cdn_url: 'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJVmiafEMN5IZogBNc4dQEkBqgLWlMbpCgF9Gghic4vMSFCJjCfcia1kO34gGOSU3jLCPdEW9x3YVPwkjHzlIib0NdVeZQFuYmjiaDo/640?wx_fmt=png\x26amp;amp;from=appmsg',
    show_watermark: 'true' === 'true',
    bottom_right_brightness: '0.56182373' * 1,
        watermark_info: {
      cdn_url: 'http://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJGkT74P3JYxDEplUatmxk9S2zC4GTQh69I9WmmJuraGzrSriaib5hW0tyk1YeqRN7a1xjc7v1LicvIjjLHm3LZnX0Xvx4ibhFYU9w/0?wx_fmt=png',
      is_uploader: 'true' === 'true',
    },
          },
    {
    width: '1080' * 1,
    height: '564' * 1,
    cdn_url: 'https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJ38UtY8Mqxhb6b2rLlKB8lPeiawApkaJShUrzBuiapNib9Vdx7fFYYEPJHPiaWo2JjbfY2mCcm1fPcAiboCEjb4RHhbEzusppPnFyo/640?wx_fmt=png\x26amp;amp;from=appmsg',
    show_watermark: 'true' === 'true',
    bottom_right_brightness: '0.090647385' * 1,
        watermark_info: {
      cdn_url: 'http://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKJIkB0jM7nv4eeqEUmNM8hib27XFJkK9YsWyV3AtmIw5v4wvjHg3remfpXqrnB8jpDkIKJsDmZDichh68Z9blxYhen0KrNJlTVA/0?wx_fmt=png',
      is_uploader: 'true' === 'true',
    },
          },
    {
    width: '1080' * 1,
    height: '898' * 1,
    cdn_url: 'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKJqhM0jNW7sMjVK1ZZmxISYpSiaJicMheVBJjkslBWJ82obfPx24BiaDAE54mfk7FLrnOQUcIALq9N99xznBibnEmWDoKGqPyEKUk/640?wx_fmt=png\x26amp;amp;from=appmsg',
    show_watermark: 'true' === 'true',
    bottom_right_brightness: '0.92136574' * 1,
        watermark_info: {
      cdn_url: 'http://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIpEHNMQP9hMXiciaib8MKCbibQGetfxSxCGGmSTAjicJm3NSqckBjsbcBENfxxmNDXVnLic3dG9GOiaCE4EQ4dZia0dnts12xxe32WsyY/0?wx_fmt=png',
      is_uploader: 'true' === 'true',
    },
          },
    {
    width: '923' * 1,
    height: '668' * 1,
    cdn_url: 'https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJW5HgUHzS7aNZ0o9NGjibFpcK6UFBWnP6FUtCSljhZRF4Ex9AHvWCN97F8HjY2bian4ECOKQ3hQ3IxL6dHGSVteynia3SOw9R6RM/640?wx_fmt=png\x26amp;amp;from=appmsg',
    show_watermark: 'true' === 'true',
    bottom_right_brightness: '1' * 1,
        watermark_info: {
      cdn_url: 'http://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLs5v6GIhElkwMbUVRHhZEGaU5xpgQaa7icDMaDApESPJFuibpGg8oibmqNIQFB9h9AvsuPQwZ0nvPL8icDTQD5XVvyMBibmSZm7SY4/0?wx_fmt=png',
      is_uploader: 'true' === 'true',
    },
          },
  ];
window.show_comment_entrance = '' * 1;


window.search_keywords = [
                        {
        keyword: htmlDecode("Visio"),
        s1s_stat_info: htmlDecode('%7B%22bizuin%22%3A3877547210%2C%22msgid%22%3A2247512771%2C%22msgidx%22%3A1%2C%22docid%22%3A%227814784434647871751%22%2C%22keywordItem%22%3A%7B%22keyword%22%3A%22Visio%22%2C%22section_idx%22%3A4%2C%22begin_idx%22%3A2%2C%22end_idx%22%3A6%2C%22type%22%3A64%2C%22baike_docid%22%3A%2212366038781917331286%22%2C%22lemma_id%22%3A%22%22%7D%2C%22category%22%3A%22%E7%A7%91%E6%8A%80_%E4%BF%A1%E6%81%AF%E6%8A%80%E6%9C%AF%3A0.967478%22%2C%22reqId%22%3A18204125863783497429%2C%22S1SPageType%22%3A1%2C%22strReqId%22%3A%2218204125863783497429%22%2C%22orgReqId%22%3A%222336721769896438644%22%2C%22item_show_type%22%3A0%2C%22common_value_expt%22%3A0%2C%22highlight_preload%22%3A0%7D'),
        s1s_context_info: htmlDecode('%7B%22keyword%22%3A%22visio%22%2C%22isNeedUpdateGPTInfo%22%3Afalse%2C%22S1SPageType%22%3A1%2C%22search_id%22%3A%222336721769896438644%22%2C%22doc_info%22%3A%7B%22triple%22%3A%7B%22bizuin%22%3A3877547210%2C%22msgid%22%3A2247512771%2C%22msgidx%22%3A1%7D%2C%22docid%22%3A7814784434647870464%2C%22publish_time%22%3A1781248207%7D%2C%22idx_range%22%3A%7B%22section_idx%22%3A4%2C%22begin_idx%22%3A2%2C%22end_idx%22%3A6%7D%2C%22expt_value%22%3A4294967295%2C%22source%22%3A64%2C%22needPreRender%22%3Afalse%7D'),
        s1s_jsapi_paras: htmlDecode('{&amp;quot;query&amp;quot;:&amp;quot;Visio&amp;quot;,&amp;quot;scene&amp;quot;:139,&amp;quot;hiddenSearchHeader&amp;quot;:0,&amp;quot;webviewHeightRatio&amp;quot;:0.699999988,&amp;quot;kvItems&amp;quot;:[{&amp;quot;key&amp;quot;:&amp;quot;mpEndHalfPageResultTab&amp;quot;,&amp;quot;textValue&amp;quot;:&amp;quot;0&amp;quot;},{&amp;quot;key&amp;quot;:&amp;quot;firstSearchRequest&amp;quot;,&amp;quot;uintValue&amp;quot;:1},{&amp;quot;key&amp;quot;:&amp;quot;MPHalfSearchAIBox&amp;quot;,&amp;quot;uintValue&amp;quot;:3}],&amp;quot;sessionKvItems&amp;quot;:[{&amp;quot;key&amp;quot;:&amp;quot;mpEndHalfPageResultTab&amp;quot;,&amp;quot;textValue&amp;quot;:&amp;quot;0&amp;quot;},{&amp;quot;key&amp;quot;:&amp;quot;MPHalfSearchAIBox&amp;quot;,&amp;quot;uintValue&amp;quot;:3}],&amp;quot;parentType&amp;quot;:135,&amp;quot;isAutoShowUnitInHalfScreen&amp;quot;:1}'),
        s1s_jsapi_name: 'openWXSearchHalfPage',
        idx_range_list: [
                                  {
            begin_idx: '2',
            end_idx: '6',
            section_idx: '4',
          }
                        ],
      }
                  ,      {
        keyword: htmlDecode("版本控制"),
        s1s_stat_info: htmlDecode('%7B%22bizuin%22%3A3877547210%2C%22msgid%22%3A2247512771%2C%22msgidx%22%3A1%2C%22docid%22%3A%227814784434647871751%22%2C%22keywordItem%22%3A%7B%22keyword%22%3A%22%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6%22%2C%22section_idx%22%3A6%2C%22begin_idx%22%3A21%2C%22end_idx%22%3A24%2C%22type%22%3A64%2C%22baike_docid%22%3A%2211100476797589637146%22%2C%22lemma_id%22%3A%22%22%7D%2C%22category%22%3A%22%E7%A7%91%E6%8A%80_%E4%BF%A1%E6%81%AF%E6%8A%80%E6%9C%AF%3A0.967478%22%2C%22reqId%22%3A18204125863783497429%2C%22S1SPageType%22%3A1%2C%22strReqId%22%3A%2218204125863783497429%22%2C%22orgReqId%22%3A%222336721769896438644%22%2C%22item_show_type%22%3A0%2C%22common_value_expt%22%3A0%2C%22highlight_preload%22%3A0%7D'),
        s1s_context_info: htmlDecode('%7B%22keyword%22%3A%22%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6%22%2C%22isNeedUpdateGPTInfo%22%3Afalse%2C%22S1SPageType%22%3A1%2C%22search_id%22%3A%222336721769896438644%22%2C%22doc_info%22%3A%7B%22triple%22%3A%7B%22bizuin%22%3A3877547210%2C%22msgid%22%3A2247512771%2C%22msgidx%22%3A1%7D%2C%22docid%22%3A7814784434647870464%2C%22publish_time%22%3A1781248207%7D%2C%22idx_range%22%3A%7B%22section_idx%22%3A6%2C%22begin_idx%22%3A21%2C%22end_idx%22%3A24%7D%2C%22expt_value%22%3A4294967295%2C%22source%22%3A64%2C%22needPreRender%22%3Afalse%7D'),
        s1s_jsapi_paras: htmlDecode('{&amp;quot;query&amp;quot;:&amp;quot;版本控制&amp;quot;,&amp;quot;scene&amp;quot;:139,&amp;quot;hiddenSearchHeader&amp;quot;:0,&amp;quot;webviewHeightRatio&amp;quot;:0.699999988,&amp;quot;kvItems&amp;quot;:[{&amp;quot;key&amp;quot;:&amp;quot;mpEndHalfPageResultTab&amp;quot;,&amp;quot;textValue&amp;quot;:&amp;quot;0&amp;quot;},{&amp;quot;key&amp;quot;:&amp;quot;firstSearchRequest&amp;quot;,&amp;quot;uintValue&amp;quot;:1},{&amp;quot;key&amp;quot;:&amp;quot;MPHalfSearchAIBox&amp;quot;,&amp;quot;uintValue&amp;quot;:3}],&amp;quot;sessionKvItems&amp;quot;:[{&amp;quot;key&amp;quot;:&amp;quot;mpEndHalfPageResultTab&amp;quot;,&amp;quot;textValue&amp;quot;:&amp;quot;0&amp;quot;},{&amp;quot;key&amp;quot;:&amp;quot;MPHalfSearchAIBox&amp;quot;,&amp;quot;uintValue&amp;quot;:3}],&amp;quot;parentType&amp;quot;:135,&amp;quot;isAutoShowUnitInHalfScreen&amp;quot;:1}'),
        s1s_jsapi_name: 'openWXSearchHalfPage',
        idx_range_list: [
                                  {
            begin_idx: '21',
            end_idx: '24',
            section_idx: '6',
          }
                        ],
      }
                  ,      {
        keyword: htmlDecode("LaTeX"),
        s1s_stat_info: htmlDecode('%7B%22bizuin%22%3A3877547210%2C%22msgid%22%3A2247512771%2C%22msgidx%22%3A1%2C%22docid%22%3A%227814784434647871751%22%2C%22keywordItem%22%3A%7B%22keyword%22%3A%22LaTeX%22%2C%22section_idx%22%3A40%2C%22begin_idx%22%3A21%2C%22end_idx%22%3A25%2C%22type%22%3A64%2C%22lemma_id%22%3A%22%22%7D%2C%22category%22%3A%22%E7%A7%91%E6%8A%80_%E4%BF%A1%E6%81%AF%E6%8A%80%E6%9C%AF%3A0.967478%22%2C%22reqId%22%3A18204125863783497429%2C%22S1SPageType%22%3A1%2C%22strReqId%22%3A%2218204125863783497429%22%2C%22orgReqId%22%3A%222336721769896438644%22%2C%22item_show_type%22%3A0%2C%22common_value_expt%22%3A0%2C%22highlight_preload%22%3A0%7D'),
        s1s_context_info: htmlDecode('%7B%22keyword%22%3A%22latex%22%2C%22isNeedUpdateGPTInfo%22%3Afalse%2C%22S1SPageType%22%3A1%2C%22search_id%22%3A%222336721769896438644%22%2C%22doc_info%22%3A%7B%22triple%22%3A%7B%22bizuin%22%3A3877547210%2C%22msgid%22%3A2247512771%2C%22msgidx%22%3A1%7D%2C%22docid%22%3A7814784434647870464%2C%22publish_time%22%3A1781248207%7D%2C%22idx_range%22%3A%7B%22section_idx%22%3A40%2C%22begin_idx%22%3A21%2C%22end_idx%22%3A25%7D%2C%22expt_value%22%3A4294967295%2C%22source%22%3A64%2C%22needPreRender%22%3Afalse%7D'),
        s1s_jsapi_paras: htmlDecode('{&amp;quot;query&amp;quot;:&amp;quot;LaTeX&amp;quot;,&amp;quot;scene&amp;quot;:139,&amp;quot;hiddenSearchHeader&amp;quot;:0,&amp;quot;webviewHeightRatio&amp;quot;:0.699999988,&amp;quot;kvItems&amp;quot;:[{&amp;quot;key&amp;quot;:&amp;quot;mpEndHalfPageResultTab&amp;quot;,&amp;quot;textValue&amp;quot;:&amp;quot;0&amp;quot;},{&amp;quot;key&amp;quot;:&amp;quot;firstSearchRequest&amp;quot;,&amp;quot;uintValue&amp;quot;:1},{&amp;quot;key&amp;quot;:&amp;quot;MPHalfSearchAIBox&amp;quot;,&amp;quot;uintValue&amp;quot;:3}],&amp;quot;sessionKvItems&amp;quot;:[{&amp;quot;key&amp;quot;:&amp;quot;mpEndHalfPageResultTab&amp;quot;,&amp;quot;textValue&amp;quot;:&amp;quot;0&amp;quot;},{&amp;quot;key&amp;quot;:&amp;quot;MPHalfSearchAIBox&amp;quot;,&amp;quot;uintValue&amp;quot;:3}],&amp;quot;parentType&amp;quot;:135,&amp;quot;isAutoShowUnitInHalfScreen&amp;quot;:1}'),
        s1s_jsapi_name: 'openWXSearchHalfPage',
        idx_range_list: [
                                  {
            begin_idx: '21',
            end_idx: '25',
            section_idx: '40',
          }
                        ,          {
            begin_idx: '17',
            end_idx: '21',
            section_idx: '41',
          }
                        ],
      }
              ];
window.s1s_keywords_exp_info = 'CMrZ+rgOEMOl2a8IGAEiEzc4MTQ3ODQ0MzQ2NDc4NzE3NTEo9NblzJuC7bYg';
  var need_baike_preload = true;
;

window.ad_keywords = [
              ];
window.show_ad_keyword = 'false';
window.get_search_keyword_realtime = '0' * 1;

window.clear_desc_flag = "" * 1;

window.mmlisten_playlist_info_buffer = '';

window.key_text = '';

window.appmsg_listen_id = '150442785893098399';
  if (window.isPaySubscribe) {
  function onWeixinJsBridgeReady() {
    window.WeixinJSBridge.invoke('hideMenuItems', {
      menuList: ['control:showButtonScreenShot']
    }, function (res) {});
  }

  if (typeof WeixinJSBridge === 'undefined') {
    if (document.addEventListener) {
      document.addEventListener('WeixinJSBridgeReady', onWeixinJsBridgeReady, false);
    } else if (document.attachEvent) {
      document.attachEvent('WeixinJSBridgeReady', onWeixinJsBridgeReady);
      document.attachEvent('onWeixinJSBridgeReady', onWeixinJsBridgeReady);
    }
  } else {
    onWeixinJsBridgeReady();
  }
}
  &lt;/script&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   var __INLINE_SCRIPT__ = (function () {
  'use strict';

  

  var dealLikeReadShow_en = function dealLikeReadShow_en(realNum, showZero) {
    var defaultStr = showZero ? '0' : '';
    if (typeof LANG === 'undefined' || !window.LANG) {
      return parseInt(realNum) === 0 ? defaultStr : realNum;
    }
    if (window.LANG == 'en') {
      var showHTML = '';
      if (parseInt(realNum) &gt; 100000) {
        showHTML = 100 + 'k+';
      } else if (parseInt(realNum) &gt; 10000 &amp;&amp; parseInt(realNum) &lt;= 100000) {
        var num = '' + parseInt(realNum) / 1000;
        var dotIndex = num.indexOf('.');
        if (dotIndex === -1) {
          showHTML = num + 'k';
        } else {
          showHTML = num.substring(0, dotIndex) + '.' + num.charAt(dotIndex + 1) + 'k';
        }
      } else if (parseInt(realNum) === 0) {
        showHTML = defaultStr;
      } else {
        showHTML = realNum;
      }
      return showHTML;
    }
    return defaultStr;
  };
  var i18n = {
    dealLikeReadShow_en: dealLikeReadShow_en
  };

  function _createForOfIteratorHelper$1(o, allowArrayLike) { var it = typeof Symbol !== "undefined" &amp;&amp; o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$2(o)) || allowArrayLike &amp;&amp; o &amp;&amp; typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i &gt;= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion &amp;&amp; it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
  function _unsupportedIterableToArray$2(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$2(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$2(o, minLen); }
  function _arrayLikeToArray$2(arr, len) { if (len == null || len &gt; arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i]; return arr2; }
  
  
  var ua = navigator.userAgent;
  var is_ios = /(iPhone|iPad|iPod|iOS)/i.test(ua);
  var is_wp = /Windows\sPhone/i.test(ua);
  var is_android = /(Android)/i.test(ua);
  var is_wechat = /MicroMessenger\/([\d\.]+)/i.test(ua);
  var is_mac = /mac\sos/i.test(ua) &amp;&amp; !is_ios;
  var is_windows = /windows\snt/i.test(ua) &amp;&amp; !is_wp;
  var is_mpapp = /MPAPP\/([\d\.]+)/i.test(ua);
  var is_ipad = /iPad/i.test(ua);
  var is_windows_wechat = /WindowsWechat/i.test(ua);
  var is_mac_wechat = /MacWechat/i.test(ua) || /wechat.*mac os/i.test(ua);
  var is_prefetch = is_wechat &amp;&amp; window.WeixinPrefecherJSBridge;
  var is_donut_app = /SAAASDK/i.test(ua);
  var is_harmony = /OpenHarmony|ArkWeb/i.test(ua);
  var is_linux = /Linux\s/i.test(ua);
  var xweb_match = ua.match(/XWEB\/([\d.]+)/i);
  var xweb_version = xweb_match &amp;&amp; xweb_match[1] ? parseInt(xweb_match[1], 10) : 0;
  var is_unified_pc_wechat = /UnifiedPC\w+Wechat/i.test(ua);
  var is_in_miniProgram = is_android &amp;&amp; /miniprogram/.test(ua.toLowerCase()) || window.__wxjs_environment == 'miniprogram';
  var is_wx_work = /wxwork/i.test(ua);
  function getUrlParams() {
    var vars = location.search.substring(1).split('&amp;');
    var params = {};
    var _iterator = _createForOfIteratorHelper$1(vars),
      _step;
    try {
      for (_iterator.s(); !(_step = _iterator.n()).done;) {
        var ele = _step.value;
        var pair = ele.split('=');
        var key = decodeURIComponent(pair[0]);
        if (typeof params[key] === 'undefined') {
          params[key] = decodeURIComponent(pair[1]);
        }
      }
    } catch (err) {
      _iterator.e(err);
    } finally {
      _iterator.f();
    }
    return params;
  }
  function get() {
    var reg = /MicroMessenger\/([\d\.]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMac() {
    var reg = /MacWechat\/([\d\.]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMacOS() {
    var reg = /Mac OS X ([\d_]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1].replace(/_/g, '.');
    }
    return false;
  }
  function getWindows() {
    var reg = /WindowsWechat\(0x(.+?)\)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getWxWork() {
    var reg = /wxwork\/([\d\.]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMpApp() {
    var appVersion = [2, 4, 5];
    var match = navigator.userAgent.match(/MPAPP\/(\d+(\.\d+)*)/);
    if (match) {
      appVersion = match[1].split('.').map(function (v) {
        return Number(v);
      });
    }
    return appVersion.join('.');
  }
  function getUnifiedPcVer() {
    var versionInfo = navigator.userAgent.match(/UnifiedPC\w+Wechat\(0xf\w{2}(\w+?)\w{2}\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(0, 1));
      var subVersion = getVersionNumber(version.slice(1, 2));
      var subVersion2 = getVersionNumber(version.slice(2, 3));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
  }
  function getVersionNumber(hexStr) {
    return Number(Number("0x".concat(hexStr)).toString(10));
  }
  function getWindowsVersionFormat() {
    var versionInfo = navigator.userAgent.match(/WindowsWechat\(0x(\w+?)\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(1, 2));
      var subVersion = getVersionNumber(version.slice(2, 4));
      var subVersion2 = getVersionNumber(version.slice(4, 6));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
    return false;
  }
  function getInner() {
    var reg = /MicroMessenger\/[\d\.]+\(0x(.+?)\)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1] &amp;&amp; ret[1] != null) {
      return ret[1];
    }
    if (!ret &amp;&amp; /MicroMessenger\/[\d\.]+/i.test(ua)) {
      var urlParams = getUrlParams();
      if (urlParams.version) {
        return urlParams.version;
      }
    }
    return false;
  }
  var opfunc = {
    'cp-1': function cp1(a, b) {
      return a &lt; b;
    },
    cp0: function cp0(a, b) {
      return a === b;
    },
    cp1: function cp1(a, b) {
      return a &gt; b;
    }
  };
  function cpVersion(ver, op, canEq, type) {
    var mmver = false;
    switch (type) {
      case 'mac':
        mmver = getMac();
        break;
      case 'windows':
        mmver = getWindowsVersionFormat();
        break;
      case 'wxwork':
        mmver = getWxWork();
        break;
      case 'mpapp':
        mmver = getMpApp();
        break;
      case 'unifiedpc':
        mmver = getUnifiedPcVer();
        break;
      default:
        mmver = get();
        break;
    }
    if (!mmver) {
      return;
    }
    var mmversion = mmver.split('.');
    var version = ver.split('.');
    if (!/\d+/g.test(mmversion[mmversion.length - 1])) {
      mmversion.pop();
    }
    for (var i = 0, len = Math.max(mmversion.length, version.length); i &lt; len; ++i) {
      var mmv = mmversion[i] || '';
      var v = version[i] || '';
      var mmvn = parseInt(mmv, 10) || 0;
      var vn = parseInt(v, 10) || 0;
      var eq = opfunc.cp0(mmvn, vn);
      if (eq) {
        continue;
      }
      var cp = opfunc["cp".concat(op)];
      return cp(mmvn, vn);
    }
    return canEq || op === 0;
  }
  function eqVersion(version) {
    return cpVersion(version, 0);
  }
  function gtVersion(version, canEq) {
    return cpVersion(version, 1, canEq);
  }
  function ltVersion(version, canEq) {
    return cpVersion(version, -1, canEq);
  }
  function getPlatform() {
    if (is_ios) {
      return 'ios';
    }
    if (is_android) {
      return 'android';
    }
    if (is_mac) {
      return 'mac_os';
    }
    if (is_windows) {
      return 'windows';
    }
    return 'unknown';
  }
  var is_google_play = false;
  var inner_ver_for_google_play_check = getInner();
  if (is_android &amp;&amp; inner_ver_for_google_play_check) {
    var v = "0x".concat(inner_ver_for_google_play_check.substr(-2));
    if (parseInt(v) &gt;= 64 &amp;&amp; parseInt(v) &lt;= 79) {
      is_google_play = true;
    }
  }
  function compareHexVersion$1(hexNum) {
    var innerVersion = getInner();
    if (innerVersion &amp;&amp; hexNum) {
      if (typeof hexNum === 'string') {
        hexNum = parseInt(hexNum, 16);
      }
      var version = parseInt(innerVersion, 16);
      return version &gt;= hexNum;
    }
    return false;
  }
  var mmVersion = {
    get: get,
    getMac: getMac,
    getMacOS: getMacOS,
    getWindows: getWindows,
    getInner: getInner,
    getWxWork: getWxWork,
    getMpApp: getMpApp,
    cpVersion: cpVersion,
    eqVersion: eqVersion,
    gtVersion: gtVersion,
    ltVersion: ltVersion,
    getPlatform: getPlatform,
    getVersionNumber: getVersionNumber,
    isWp: is_wp,
    isIOS: is_ios,
    isAndroid: is_android,
    isHarmony: is_harmony,
    isHarmonyWechat: is_harmony &amp;&amp; is_wechat &amp;&amp; cpVersion('1.0.0', 1, true),
    isInMiniProgram: is_in_miniProgram,
    isWechat: is_wechat,
    isMac: is_mac,
    isWindows: is_windows,
    isLinux: is_linux,
    isMacWechat: is_mac_wechat,
    isWindowsWechat: is_windows_wechat,
    isWxWork: is_wx_work,
    isOnlyWechat: is_wechat &amp;&amp; !is_wx_work,
    isMpapp: is_mpapp,
    isIPad: is_ipad,
    isGooglePlay: is_google_play,
    isPrefetch: is_prefetch,
    isDonutAPP: is_donut_app,
    compareHexVersion: compareHexVersion$1,
    isPcWechat: is_windows_wechat || is_mac_wechat,
    xwebVersion: xweb_version,
    isUnifiedPcWechat: is_unified_pc_wechat
  };

  function _typeof(obj) {
    "@babel/helpers - typeof";

    return _typeof = "function" == typeof Symbol &amp;&amp; "symbol" == typeof Symbol.iterator ? function (obj) {
      return typeof obj;
    } : function (obj) {
      return obj &amp;&amp; "function" == typeof Symbol &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj;
    }, _typeof(obj);
  }

  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
    try {
      var info = gen[key](arg);
      var value = info.value;
    } catch (error) {
      reject(error);
      return;
    }
    if (info.done) {
      resolve(value);
    } else {
      Promise.resolve(value).then(_next, _throw);
    }
  }
  function _asyncToGenerator(fn) {
    return function () {
      var self = this,
        args = arguments;
      return new Promise(function (resolve, reject) {
        var gen = fn.apply(self, args);
        function _next(value) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
        }
        function _throw(err) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
        }
        _next(undefined);
      });
    };
  }

  function _regeneratorRuntime$4() {  _regeneratorRuntime$4 = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  
  var doc$1 = {};
  var isAcrossOrigin$1 = false;
  var notFoundedMPPageAction = [];
  var __moon_report$1 = window.__moon_report || function () {};
  var MOON_JSAPI_KEY_OFFSET = 8;
  try {
    doc$1 = top.window.document;
  } catch (e) {
    isAcrossOrigin$1 = true;
  }
  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }
  function ready(onBridgeReady) {
    var bridgeReady = function bridgeReady() {
      try {
        if (onBridgeReady) {
          window.onBridgeReadyTime = window.onBridgeReadyTime || Date.now();
          onBridgeReady();
        }
      } catch (e) {
        __moon_report$1([{
          offset: MOON_JSAPI_KEY_OFFSET,
          log: 'ready',
          e: e
        }]);
        throw e;
      }
      window.jsapiReadyTime = Date.now();
    };
    if (!isAcrossOrigin$1 &amp;&amp; (typeof top.window.WeixinJSBridge === 'undefined' || !top.window.WeixinJSBridge.invoke)) {
      if (doc$1.addEventListener) {
        doc$1.addEventListener('WeixinJSBridgeReady', bridgeReady, false);
      } else if (doc$1.attachEvent) {
        doc$1.attachEvent('WeixinJSBridgeReady', bridgeReady);
        doc$1.attachEvent('onWeixinJSBridgeReady', bridgeReady);
      }
    } else {
      bridgeReady();
    }
  }
  var invokeNotWaitA8key = ['notifyPageInfo', 'updatePageAuth'
  ];
  var checkNotFoundedInvoke = function checkNotFoundedInvoke(methodName, args) {
    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; notFoundedMPPageAction.includes(args === null || args === void 0 ? void 0 : args.action)) {
      return true;
    }
    return false;
  };
  function invoke$1(_x, _x2, _x3) {
    return _invoke.apply(this, arguments);
  }
  function _invoke() {
    _invoke = _asyncToGenerator( _regeneratorRuntime$4().mark(function _callee(methodName, args, callback) {
      return _regeneratorRuntime$4().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__ &amp;&amp; !invokeNotWaitA8key.includes(methodName))) {
              _context.next = 3;
              break;
            }
            _context.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin$1) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                alert('请在微信中打开此链接');
                return false;
              }
              if (checkNotFoundedInvoke(methodName, args)) {
                setTimeout(function () {
                  if (callback) {
                    callback.apply(window, [{
                      err_msg: "".concat(methodName, ":fail"),
                      err_desc: 'action isn\'t supported'
                    }]);
                  }
                }, 0);
              } else {
                top.window.WeixinJSBridge.invoke(methodName, args, function () {
                  try {
                    for (var _len2 = arguments.length, rets = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
                      rets[_key2] = arguments[_key2];
                    }
                    var ret = rets[0];
                    var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
                    if (['handleMPPageAction', 'handleVideoAction', 'handleHaokanAction'].indexOf(methodName) !== -1) {
                      var action = (args === null || args === void 0 ? void 0 : args.action) || '';
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName, ", action-&gt;").concat(action).concat(errMsg));
                    } else {
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName).concat(errMsg));
                    }
                    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; ((ret === null || ret === void 0 ? void 0 : ret.err_desc) === 'action isn\'t supported' || (ret === null || ret === void 0 ? void 0 : ret.err_msg) === 'handleMPPageAction:fail action is not supported')) {
                      notFoundedMPPageAction.push(args === null || args === void 0 ? void 0 : args.action);
                    }
                    if (callback) {
                      callback.apply(window, rets);
                    }
                  } catch (e) {
                    __moon_report$1([{
                      offset: MOON_JSAPI_KEY_OFFSET,
                      log: "invoke;methodName:".concat(methodName),
                      e: e
                    }]);
                    throw e;
                  }
                });
              }
            });
          case 4:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return _invoke.apply(this, arguments);
  }
  function call(_x4) {
    return _call.apply(this, arguments);
  }
  function _call() {
    _call = _asyncToGenerator( _regeneratorRuntime$4().mark(function _callee2(methodName) {
      return _regeneratorRuntime$4().wrap(function _callee2$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__)) {
              _context2.next = 3;
              break;
            }
            _context2.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin$1) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                return false;
              }
              try {
                top.window.WeixinJSBridge.call(methodName);
              } catch (e) {
                __moon_report$1([{
                  offset: MOON_JSAPI_KEY_OFFSET,
                  log: "call;methodName:".concat(methodName),
                  e: e
                }]);
                throw e;
              }
            });
          case 4:
          case "end":
            return _context2.stop();
        }
      }, _callee2);
    }));
    return _call.apply(this, arguments);
  }
  function on(eventName, callback) {
    ready(function () {
      if (isAcrossOrigin$1) return false;
      if (_typeof(top.window.WeixinJSBridge) !== 'object' || !top.window.WeixinJSBridge.on) {
        return false;
      }
      if (!window.JSAPIEventCallbackMap[eventName]) {
        window.JSAPIEventCallbackMap[eventName] = [];
      }
      window.JSAPIEventCallbackMap[eventName].push(callback);
      if (window.JSAPIEventCallbackMap[eventName].length &gt; 1) {
        return false;
      }
      top.window.WeixinJSBridge.on(eventName, function () {
        try {
          for (var _len = arguments.length, rets = new Array(_len), _key = 0; _key &lt; _len; _key++) {
            rets[_key] = arguments[_key];
          }
          var ret = rets[0];
          var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
          console.info('[system]', "[jsapi] event-&gt;".concat(eventName).concat(errMsg));
          if (window.JSAPIEventCallbackMap[eventName] &amp;&amp; window.JSAPIEventCallbackMap[eventName].length) {
            var result;
            for (var i = 0; i &lt; window.JSAPIEventCallbackMap[eventName].length; i++) {
              result = window.JSAPIEventCallbackMap[eventName][i].apply(window, rets);
            }
            return result;
          }
        } catch (e) {
          __moon_report$1([{
            offset: MOON_JSAPI_KEY_OFFSET,
            log: "on;eventName:".concat(eventName),
            e: e
          }]);
          throw e;
        }
      });
    });
  }
  function remove(eventName, callback) {
    ready(function () {
      if (!window.JSAPIEventCallbackMap[eventName]) {
        return false;
      }
      var result = false;
      for (var i = window.JSAPIEventCallbackMap[eventName].length - 1; i &gt;= 0; i--) {
        if (window.JSAPIEventCallbackMap[eventName][i] === callback) {
          window.JSAPIEventCallbackMap[eventName].splice(i, 1);
          result = true;
        }
      }
      return result;
    });
  }
  var JSAPI = {
    ready: ready,
    invoke: invoke$1,
    call: call,
    on: on,
    remove: remove
  };

  
  
  function createErrorResult(message, details, playbackMethod) {
    var result = {
      success: false,
      error: {
        message: message,
        details: details
      }
    };
    if (playbackMethod) {
      result.playbackMethod = playbackMethod;
    }
    return result;
  }
  
  function createSuccessResult(playbackMethod, action, data) {
    var result = {
      success: true,
      playbackMethod: playbackMethod,
      action: action
    };
    if (data !== undefined) {
      result.data = data;
    }
    return result;
  }
  
  function createResultFromJSAPI(res, playbackMethod, action, errorMessage, successMessage) {
    var errMsg = res.err_msg || res.errMsg;
    if (errMsg &amp;&amp; errMsg.indexOf('ok') !== -1) {
      return createSuccessResult(playbackMethod, action, res);
    } else {
      return createErrorResult(errMsg || errorMessage, res, playbackMethod);
    }
  }
  var PlayMode;
  (function (PlayMode) {
    
    PlayMode[PlayMode["SEQUENCE"] = 0] = "SEQUENCE";
    
    PlayMode[PlayMode["LIST_LOOP"] = 1] = "LIST_LOOP";
    
    PlayMode[PlayMode["SINGLE_LOOP"] = 2] = "SINGLE_LOOP";
  })(PlayMode || (PlayMode = {}));
  var PlayStatus = {
    IDLE: 'idle',
    PLAYING: 'playing',
    PAUSED: 'paused',
    LOADING: 'loading'
  };
  var PlaybackMethod;
  (function (PlaybackMethod) {
    PlaybackMethod["TING"] = "ting";
    PlaybackMethod["BACKGROUND"] = "background";
    PlaybackMethod["H5_AUDIO"] = "h5_audio";
  })(PlaybackMethod || (PlaybackMethod = {}));
  var currentBackgroundItem = null;
  
  function getBackgroundAudioState(callback) {
    return new Promise(function (resolve) {
      JSAPI.invoke('getBackgroundAudioState', {}, function (res) {
        if (!res.status &amp;&amp; !res.state) {
          if (!res.src &amp;&amp; !res.dataUrl) {
            res.status = PlayStatus.IDLE;
          } else if (res.paused === true || res.paused === 1) {
            res.status = PlayStatus.PAUSED;
          } else {
            res.status = PlayStatus.PLAYING;
          }
        }
        if (!res.item &amp;&amp; currentBackgroundItem) {
          res.item = currentBackgroundItem;
        }
        if (callback) callback(res);
        resolve(createResultFromJSAPI(res, PlaybackMethod.BACKGROUND, 'get', 'Failed to get background audio state'));
      });
    });
  }
  
  function onBackgroundAudioStateChanged(callback) {
    try {
      var listener = function listener(res) {
        var status = res.state || res.status;
        if (status === 'ended' || status === 'stop') {
          status = PlayStatus.IDLE;
        } else if (status === 'play' || status === 'playing') {
          status = PlayStatus.PLAYING;
        } else if (status === 'pause' || status === 'paused') {
          status = PlayStatus.PAUSED;
        } else if (status === 'waiting' || status === 'canplay') {
          status = PlayStatus.LOADING;
        }
        var state = {
          status: status || (res.paused ? 'paused' : 'playing'),
          currentTime: res.currentTime || res.position || 0,
          duration: res.duration || 0,
          item: res.item || currentBackgroundItem || {},
          source: PlaybackMethod.BACKGROUND
        };
        callback(state);
      };
      JSAPI.on('onBackgroundAudioStateChange', listener);
      return listener;
    } catch (error) {
      console.error('Failed to register onBackgroundAudioStateChange:', error);
      return null;
    }
  }

  
  function getH5AudioState() {
    try {
      var audio = window.__tingAudioInstance;
      if (audio) {
        return createSuccessResult(PlaybackMethod.H5_AUDIO, 'get', {
          status: audio.paused ? 'paused' : 'playing',
          currentTime: audio.currentTime || 0,
          duration: audio.duration || 0,
          item: window.__tingAudioCurrentItem || {},
          source: PlaybackMethod.H5_AUDIO
        });
      }
      return createErrorResult('No H5 Audio instance available', undefined, PlaybackMethod.H5_AUDIO);
    } catch (error) {
      console.error('[play_voice][h5] getState error:', error);
      return createErrorResult('Failed to get H5 Audio state', error, PlaybackMethod.H5_AUDIO);
    }
  }

  function _regeneratorRuntime$3() {  _regeneratorRuntime$3 = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" &amp;&amp; o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$1(o)) || allowArrayLike &amp;&amp; o &amp;&amp; typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i &gt;= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion &amp;&amp; it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
  function _unsupportedIterableToArray$1(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$1(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen); }
  function _arrayLikeToArray$1(arr, len) { if (len == null || len &gt; arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i]; return arr2; }
  
  var isWechat = mmVersion.isWechat;
  
  var isDebugXwebVersion = mmVersion.xwebVersion &lt;= 1000;
  var isTingSupportedPC = mmVersion.isUnifiedPcWechat &amp;&amp; (mmVersion.xwebVersion &gt;= 18720 || isDebugXwebVersion);
  
  var TING_SUPPORT_TYPES = [0, 1, 2, 3, 4, 7, 10, 11];
  
  var KUGOU_TYPES = [5, 6, 9];
  
  function isSupportTing(type) {
    var isPlatformSupported = isWechat &amp;&amp; !mmVersion.isPcWechat || isTingSupportedPC;
    if (!isPlatformSupported) return false;
    if (type === undefined || type === null) return true;
    if (KUGOU_TYPES.includes(type)) {
      return !mmVersion.isIOS || mmVersion.compareHexVersion('18004600');
    }
    return TING_SUPPORT_TYPES.includes(type);
  }
  
  var isTingSupportedPCVersion = isTingSupportedPC;
  
  typeof navigator !== 'undefined' &amp;&amp; (navigator.userAgent.indexOf('QQMusic/') &gt; 0 || typeof location !== 'undefined' &amp;&amp; location.href.indexOf('_qqclient=1') &gt; 0);
  var PLAYBACK_METHODS_FALLBACK = [PlaybackMethod.TING, PlaybackMethod.BACKGROUND, PlaybackMethod.H5_AUDIO];
  
  function tryAllMethods(_x, _x2, _x3, _x4, _x5) {
    return _tryAllMethods.apply(this, arguments);
  }
  
  function _tryAllMethods() {
    _tryAllMethods = _asyncToGenerator( _regeneratorRuntime$3().mark(function _callee(executor, errorMessage, onSuccess, callback, methods) {
      var errors, _iterator2, _step2, method, result, finalResult;
      return _regeneratorRuntime$3().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            errors = {};
            _iterator2 = _createForOfIteratorHelper(methods || PLAYBACK_METHODS_FALLBACK);
            _context.prev = 2;
            _iterator2.s();
          case 4:
            if ((_step2 = _iterator2.n()).done) {
              _context.next = 23;
              break;
            }
            method = _step2.value;
            _context.prev = 6;
            _context.next = 9;
            return executor(method);
          case 9:
            result = _context.sent;
            if (!result.success) {
              _context.next = 13;
              break;
            }
            onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(method);
            return _context.abrupt("return", result);
          case 13:
            errors[method] = result.error;
            console.warn("".concat(method, " failed, trying next..."), result.error);
            _context.next = 21;
            break;
          case 17:
            _context.prev = 17;
            _context.t0 = _context["catch"](6);
            errors[method] = _context.t0;
            console.warn("".concat(method, " exception, trying next..."), _context.t0);
          case 21:
            _context.next = 4;
            break;
          case 23:
            _context.next = 28;
            break;
          case 25:
            _context.prev = 25;
            _context.t1 = _context["catch"](2);
            _iterator2.e(_context.t1);
          case 28:
            _context.prev = 28;
            _iterator2.f();
            return _context.finish(28);
          case 31:
            console.error(errorMessage, errors);
            finalResult = createErrorResult(errorMessage, errors);
            callback === null || callback === void 0 ? void 0 : callback(finalResult);
            return _context.abrupt("return", finalResult);
          case 35:
          case "end":
            return _context.stop();
        }
      }, _callee, null, [[2, 25, 28, 31], [6, 17]]);
    }));
    return _tryAllMethods.apply(this, arguments);
  }

  
  function getTingAudioState(callback) {
    return new Promise(function (resolve) {
      JSAPI.invoke('getTingAudioState', {
        sourceType: 2
      }, function (res2) {
        if (res2 &amp;&amp; res2.status &amp;&amp; res2.status === 'idle') {
          JSAPI.invoke('getTingAudioState', {
            sourceType: 1
          }, function (res1) {
            if (callback) callback(res1);
            resolve(createResultFromJSAPI(res1, PlaybackMethod.TING, 'get', 'Failed to get Ting audio state'));
          });
        } else {
          if (callback) callback(res2);
          resolve(createResultFromJSAPI(res2, PlaybackMethod.TING, 'get', 'Failed to get Ting audio state'));
        }
      });
    });
  }
  
  function onTingAudioStateChanged(callback) {
    try {
      if (isTingSupportedPCVersion) {
        JSAPI.invoke('getTingAudioState', {}, function () {});
      }
      var listener = function listener(res) {
        if (!res.status &amp;&amp; !res.item) {
          return;
        }
        var state = {
          status: res.status,
          currentTime: res.currentTime || 0,
          duration: res.duration || 0,
          item: res.item,
          source: PlaybackMethod.TING
        };
        callback(state);
      };
      JSAPI.on('onTingAudioStateChanged', listener);
      return listener;
    } catch (error) {
      console.error('Failed to register onTingAudioStateChanged:', error);
      return null;
    }
  }
  var callbackQueue = [];
  var listenersRegistered = false;
  var tingListener = null;
  var backgroundListener = null;
  
  function notifyListeners(state) {
    callbackQueue.forEach(function (callback) {
      try {
        callback(state);
      } catch (error) {
        console.error('Error in audio state listener:', error);
      }
    });
  }
  
  function registerAllListeners() {
    if (listenersRegistered) return;
    listenersRegistered = true;
    if (!tingListener) {
      tingListener = onTingAudioStateChanged(function (state) {
        notifyListeners(state);
      });
    }
    if (!backgroundListener) {
      backgroundListener = onBackgroundAudioStateChanged(function (state) {
        notifyListeners(state);
      });
    }
  }
  
  function addListener(callback) {
    if (!callbackQueue.includes(callback)) {
      callbackQueue.push(callback);
      registerAllListeners();
    }
  }
  
  function removeListener(callback) {
    var index = callbackQueue.indexOf(callback);
    if (index &gt; -1) {
      callbackQueue.splice(index, 1);
    }
  }

  function _regeneratorRuntime$2() {  _regeneratorRuntime$2 = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  undefined &amp;&amp; undefined.__rest || function (s, e) {
    var t = {};
    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) &amp;&amp; e.indexOf(p) &lt; 0) t[p] = s[p];
    if (s != null &amp;&amp; typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i &lt; p.length; i++) {
      if (e.indexOf(p[i]) &lt; 0 &amp;&amp; Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
    }
    return t;
  };
  var currentPlaybackMethod = null;
  
  function getCurrentPlaybackMethod() {
    return currentPlaybackMethod;
  }
  
  function onAudioStateChanged(callback) {
    addListener(callback);
    return function () {
      removeListener(callback);
    };
  }
  function getAudioStateByMethod(_x4, _x5) {
    return _getAudioStateByMethod.apply(this, arguments);
  }
  
  function _getAudioStateByMethod() {
    _getAudioStateByMethod = _asyncToGenerator( _regeneratorRuntime$2().mark(function _callee2(method, callback) {
      return _regeneratorRuntime$2().wrap(function _callee2$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            _context2.t0 = method;
            _context2.next = _context2.t0 === PlaybackMethod.TING ? 3 : _context2.t0 === PlaybackMethod.BACKGROUND ? 6 : _context2.t0 === PlaybackMethod.H5_AUDIO ? 9 : 12;
            break;
          case 3:
            _context2.next = 5;
            return getTingAudioState(callback);
          case 5:
            return _context2.abrupt("return", _context2.sent);
          case 6:
            _context2.next = 8;
            return getBackgroundAudioState(callback);
          case 8:
            return _context2.abrupt("return", _context2.sent);
          case 9:
            _context2.next = 11;
            return getH5AudioState();
          case 11:
            return _context2.abrupt("return", _context2.sent);
          case 12:
            return _context2.abrupt("return", createErrorResult('Unknown playback method'));
          case 13:
          case "end":
            return _context2.stop();
        }
      }, _callee2);
    }));
    return _getAudioStateByMethod.apply(this, arguments);
  }
  function getAudioState(_x13) {
    return _getAudioState.apply(this, arguments);
  }
  
  function _getAudioState() {
    _getAudioState = _asyncToGenerator( _regeneratorRuntime$2().mark(function _callee5(callback) {
      return _regeneratorRuntime$2().wrap(function _callee5$(_context5) {
        while (1) switch (_context5.prev = _context5.next) {
          case 0:
            {
              _context5.next = 2;
              break;
            }
          case 2:
            _context5.next = 4;
            return tryAllMethods(function (method) {
              return getAudioStateByMethod(method, callback);
            }, 'No audio state available from any playback method');
          case 4:
            return _context5.abrupt("return", _context5.sent);
          case 5:
          case "end":
            return _context5.stop();
        }
      }, _callee5);
    }));
    return _getAudioState.apply(this, arguments);
  }

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  function _toPrimitive(input, hint) {
    if (_typeof(input) !== "object" || input === null) return input;
    var prim = input[Symbol.toPrimitive];
    if (prim !== undefined) {
      var res = prim.call(input, hint || "default");
      if (_typeof(res) !== "object") return res;
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return (hint === "string" ? String : Number)(input);
  }

  function _toPropertyKey(arg) {
    var key = _toPrimitive(arg, "string");
    return _typeof(key) === "symbol" ? key : String(key);
  }

  function _defineProperties(target, props) {
    for (var i = 0; i &lt; props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor) descriptor.writable = true;
      Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
    }
  }
  function _createClass(Constructor, protoProps, staticProps) {
    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
    if (staticProps) _defineProperties(Constructor, staticProps);
    Object.defineProperty(Constructor, "prototype", {
      writable: false
    });
    return Constructor;
  }

  function _regeneratorRuntime$1() {  _regeneratorRuntime$1 = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  var AudioStateManagerClass = function () {
    function AudioStateManagerClass() {
      var _this = this;
      _classCallCheck(this, AudioStateManagerClass);
      this.POLLING_INTERVAL = 1000;
      this.subscribers = new Set();
      this.pollingTimer = null;
      this.listenerUnsubscribe = null;
      this.lastFullState = null;
      
      this.subscribe = function (callback) {
        _this.subscribers.add(callback);
        if (_this.subscribers.size === 1) {
          _this.startGlobalSubscription();
        }
        return function () {
          _this.subscribers["delete"](callback);
          if (_this.subscribers.size === 0) {
            _this.stopGlobalSubscription();
          }
        };
      };
      
      this.getCachedState = function () {
        return _this.lastFullState;
      };
      this.poll = _asyncToGenerator( _regeneratorRuntime$1().mark(function _callee() {
        var result;
        return _regeneratorRuntime$1().wrap(function _callee$(_context) {
          while (1) switch (_context.prev = _context.next) {
            case 0:
              if (!(!_this.pollingTimer &amp;&amp; _this.subscribers.size === 0)) {
                _context.next = 2;
                break;
              }
              return _context.abrupt("return");
            case 2:
              _context.prev = 2;
              _context.next = 5;
              return getAudioState();
            case 5:
              result = _context.sent;
              if (result.success &amp;&amp; result.data) {
                _this.lastFullState = _this.buildExtendedState(result.data, 'polling');
                _this.notifySubscribers(_this.lastFullState);
              }
              _context.next = 12;
              break;
            case 9:
              _context.prev = 9;
              _context.t0 = _context["catch"](2);
              console.warn('[AudioStateManager] Polling error:', _context.t0);
            case 12:
              if (_this.subscribers.size &gt; 0) {
                _this.pollingTimer = setTimeout(_this.poll, _this.POLLING_INTERVAL);
              } else {
                _this.stopPolling();
              }
            case 13:
            case "end":
              return _context.stop();
          }
        }, _callee, null, [[2, 9]]);
      }));
      this.handleEventStateChange = function (eventState) {
        _this.lastFullState = _this.buildExtendedState(eventState, 'event');
        _this.notifySubscribers(_this.lastFullState);
        _this.startPolling();
      };
    }
    
    _createClass(AudioStateManagerClass, [{
      key: "buildExtendedState",
      value: function buildExtendedState(data, updateSource) {
        var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
        var currListenId = (_a = data.item) === null || _a === void 0 ? void 0 : _a.listenId;
        var isSameAudio = !!(currListenId &amp;&amp; currListenId === ((_c = (_b = this.lastFullState) === null || _b === void 0 ? void 0 : _b.item) === null || _c === void 0 ? void 0 : _c.listenId));
        var status = data.status || ((_d = this.lastFullState) === null || _d === void 0 ? void 0 : _d.status) || 'idle';
        var item = data.item &amp;&amp; _typeof(data.item) === 'object' ? data.item : (_f = (_e = this.lastFullState) === null || _e === void 0 ? void 0 : _e.item) !== null &amp;&amp; _f !== void 0 ? _f : data;
        return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, isSameAudio ? Object.assign({}, this.lastFullState) : {}), {
          status: status,
          currentTime: (_g = data.currentTime) !== null &amp;&amp; _g !== void 0 ? _g : 0,
          duration: (_h = data.duration) !== null &amp;&amp; _h !== void 0 ? _h : 0,
          item: item,
          source: (_k = (_j = data.source) !== null &amp;&amp; _j !== void 0 ? _j : getCurrentPlaybackMethod()) !== null &amp;&amp; _k !== void 0 ? _k : PlaybackMethod.TING
        }), data.playRate !== undefined &amp;&amp; {
          playRate: data.playRate
        }), data.shutdown !== undefined &amp;&amp; {
          shutdown: data.shutdown
        }), data.categoryId !== undefined &amp;&amp; {
          categoryId: data.categoryId
        }), data.buffered !== undefined &amp;&amp; {
          buffered: data.buffered
        }), {
          updateSource: updateSource,
          timestamp: Date.now()
        });
      }
    }, {
      key: "notifySubscribers",
      value: function notifySubscribers(state) {
        this.subscribers.forEach(function (cb) {
          try {
            cb(state);
          } catch (e) {
            console.error('[AudioStateManager] Callback error:', e);
          }
        });
      }
    }, {
      key: "stopPolling",
      value: function stopPolling() {
        if (this.pollingTimer) {
          clearTimeout(this.pollingTimer);
          this.pollingTimer = null;
        }
      }
    }, {
      key: "startPolling",
      value: function startPolling() {
        if (this.pollingTimer) return;
        this.pollingTimer = setTimeout(this.poll, this.POLLING_INTERVAL);
      }
    }, {
      key: "startGlobalSubscription",
      value: function () {
        var _startGlobalSubscription = _asyncToGenerator( _regeneratorRuntime$1().mark(function _callee2() {
          return _regeneratorRuntime$1().wrap(function _callee2$(_context2) {
            while (1) switch (_context2.prev = _context2.next) {
              case 0:
                if (!this.listenerUnsubscribe) {
                  this.listenerUnsubscribe = onAudioStateChanged(this.handleEventStateChange);
                }
                _context2.next = 3;
                return this.poll();
              case 3:
              case "end":
                return _context2.stop();
            }
          }, _callee2, this);
        }));
        function startGlobalSubscription() {
          return _startGlobalSubscription.apply(this, arguments);
        }
        return startGlobalSubscription;
      }()
    }, {
      key: "stopGlobalSubscription",
      value: function stopGlobalSubscription() {
        this.stopPolling();
        if (this.listenerUnsubscribe) {
          this.listenerUnsubscribe();
          this.listenerUnsubscribe = null;
        }
        this.lastFullState = null;
      }
    }], [{
      key: "getInstance",
      value: function getInstance() {
        if (!AudioStateManagerClass.instance) {
          AudioStateManagerClass.instance = new AudioStateManagerClass();
        }
        return AudioStateManagerClass.instance;
      }
    }]);
    return AudioStateManagerClass;
  }();
  var AudioStateManager = AudioStateManagerClass.getInstance();
  
  AudioStateManager.subscribe;
  
  AudioStateManager.getCachedState;

  function _defineProperty(obj, key, value) {
    key = _toPropertyKey(key);
    if (key in obj) {
      Object.defineProperty(obj, key, {
        value: value,
        enumerable: true,
        configurable: true,
        writable: true
      });
    } else {
      obj[key] = value;
    }
    return obj;
  }

  
  
  var Device = {};
  function detect(ua) {
    var MQQBrowser = ua.match(/MQQBrowser\/(\d+\.\d+)/i);
    var MQQClient = ua.match(/QQ\/(\d+\.(\d+)\.(\d+)\.(\d+))/i) || ua.match(/V1_AND_SQ_([\d\.]+)/);
    var WeChat = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/) || ua.match(/MicroMessenger\/((\d+)\.(\d+))/);
    var MacOS = ua.match(/Mac\sOS\sX\s(\d+[\.|_]\d+)/);
    var WinOS = ua.match(/Windows(\s+\w+)?\s+?(\d+\.\d+)/);
    var Linux = ua.match(/Linux\s/);
    var MiuiBrowser = ua.match(/MiuiBrowser\/(\d+\.\d+)/i);
    var M1 = ua.match(/MI-ONE/);
    var MIPAD = ua.match(/MI PAD/);
    var UC = ua.match(/UCBrowser\/(\d+\.\d+(\.\d+\.\d+)?)/) || ua.match(/\sUC\s/);
    var IEMobile = ua.match(/IEMobile(\/|\s+)(\d+\.\d+)/) || ua.match(/WPDesktop/);
    var ipod = ua.match(/(ipod).*\s([\d_]+)/i);
    var ipad = ua.match(/(ipad).*\s([\d_]+)/i);
    var iphone = ua.match(/(iphone)\sos\s([\d_]+)/i);
    var Chrome = ua.match(/Chrome\/(\d+\.\d+)/);
    var AndriodBrowser = ua.match(/Mozilla.*Linux.*Android.*AppleWebKit.*Mobile Safari/);
    var android = ua.match(/(android)\s([\d\.]+)/i);
    var harmony = ua.match(/(OpenHarmony)\s([\d\.]+)/i);
    Device.browser = Device.browser || {}, Device.os = Device.os || {};
    Device.os.type = -1;
    Device.os.unifiedPC = ua.match(/UnifiedPC/);
    Device.os.unifiedMac = /UnifiedPCMac/i.test(ua);
    Device.os.unifiedWindows = /UnifiedPCWindows/i.test(ua);
    if (window.ActiveXObject) {
      var vie = 6;
      (window.XMLHttpRequest || ua.indexOf('MSIE 7.0') &gt; -1) &amp;&amp; (vie = 7);
      (window.XDomainRequest || ua.indexOf('Trident/4.0') &gt; -1) &amp;&amp; (vie = 8);
      ua.indexOf('Trident/5.0') &gt; -1 &amp;&amp; (vie = 9);
      ua.indexOf('Trident/6.0') &gt; -1 &amp;&amp; (vie = 10);
      Device.browser.ie = true, Device.browser.version = vie;
    } else if (ua.indexOf('Trident/7.0') &gt; -1) {
      Device.browser.ie = true, Device.browser.version = 11;
    }
    if (android) {
      Device.os.android = true;
      Device.os.version = android[2];
      Device.os.type = 2;
    }
    if (harmony) {
      Device.os.harmony = true;
      Device.os.version = harmony[2];
      Device.os.type = 42;
    }
    if (ipod) {
      Device.os.ios = Device.os.ipod = true;
      Device.os.version = ipod[2].replace(/_/g, '.');
    }
    if (ipad) {
      Device.os.ios = Device.os.ipad = true;
      Device.os.version = ipad[2].replace(/_/g, '.');
      Device.os.type = 13;
    }
    if (iphone) {
      Device.os.iphone = Device.os.ios = true;
      Device.os.version = iphone[2].replace(/_/g, '.');
      Device.os.type = 1;
    }
    if (WinOS) Device.os.windows = true, Device.os.version = WinOS[2], Device.os.type = 15;
    if (MacOS) Device.os.Mac = true, Device.os.version = MacOS[1], Device.os.type = 14;
    if (Linux) Device.os.Linux = true, Device.os.type = 33;
    if (ua.indexOf('lepad_hls') &gt; 0) Device.os.LePad = true;
    if (MIPAD) Device.os.MIPAD = true;
    if (MQQBrowser) Device.browser.MQQ = true, Device.browser.version = MQQBrowser[1];
    if (MQQClient) Device.browser.MQQClient = true, Device.browser.version = MQQClient[1];
    if (WeChat) Device.browser.WeChat = true, Device.browser.mmversion = Device.browser.version = WeChat[1];
    if (MiuiBrowser) Device.browser.MIUI = true, Device.browser.version = MiuiBrowser[1];
    if (UC) Device.browser.UC = true, Device.browser.version = UC[1] || NaN;
    if (IEMobile) Device.browser.IEMobile = true, Device.browser.version = IEMobile[2];
    if (AndriodBrowser) {
      Device.browser.AndriodBrowser = true;
    }
    if (M1) {
      Device.browser.M1 = true;
    }
    if (Chrome) {
      Device.browser.Chrome = true, Device.browser.version = Chrome[1];
    }
    if (Device.os.windows) {
      if (typeof navigator.platform !== "undefined" &amp;&amp; navigator.platform.toLowerCase() == "win64") {
        Device.os.win64 = true;
      } else {
        Device.os.win64 = false;
      }
    }
    if (Device.os.Mac || Device.os.windows || Device.os.Linux || Device.os.unifiedPC || /OpenHarmony/i.test(ua) &amp;&amp; /pc/i.test(ua)) {
      Device.os.pc = true;
    }
    var osType = {
      iPad7: 'iPad; CPU OS 7',
      LePad: 'lepad_hls',
      XiaoMi: 'MI-ONE',
      SonyDTV: "SonyDTV",
      SamSung: 'SAMSUNG',
      HTC: 'HTC',
      VIVO: 'vivo'
    };
    for (var os in osType) {
      Device.os[os] = ua.indexOf(osType[os]) !== -1;
    }
    Device.os.phone = Device.os.phone || /windows phone/i.test(ua);
    Device.os.getNumVersion = function () {
      return parseFloat(Device.os.version);
    };
    Device.os.hasTouch = 'ontouchstart' in window;
    if (Device.os.hasTouch &amp;&amp; Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 6) {
      Device.os.hasTouch = false;
    }
    if (Device.browser.WeChat &amp;&amp; Device.browser.version &lt; 5.0) {
      Device.os.hasTouch = false;
    }
    Device.browser.getNumVersion = function () {
      return parseFloat(Device.browser.version);
    };
    Device.browser.isFFCanOcx = function () {
      return !!Device.browser.firefox &amp;&amp; Device.browser.getNumVersion() &gt;= 3.0;
    };
    Device.browser.isCanOcx = function () {
      return !!Device.os.windows &amp;&amp; (!!Device.browser.ie || Device.browser.isFFCanOcx() || !!Device.browser.webkit);
    };
    Device.browser.isNotIESupport = function () {
      return !!Device.os.windows &amp;&amp; (!!Device.browser.webkit || Device.browser.isFFCanOcx());
    };
    Device.userAgent = {};
    Device.userAgent.browserVersion = Device.browser.version;
    Device.userAgent.osVersion = Device.os.version;
    if (Device.os.unifiedPC) {
      if (Device.os.unifiedWindows) Device.os.type = 37;else if (Device.os.unifiedMac) Device.os.type = 38;else Device.os.type = 39;
    }
    delete Device.userAgent.version;
  }
  detect(window.navigator.userAgent);
  function canSupportH5Video() {
    var ua = window.navigator.userAgent,
      m = null;
    if (!!Device.os.android) {
      if (Device.browser.MQQ &amp;&amp; Device.browser.getNumVersion() &gt;= 4.2) {
        return true;
      }
      if (ua.indexOf('MI2') != -1) {
        return true;
      }
      if (Device.os.version &gt;= '4' &amp;&amp; (m = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/))) {
        if (parseFloat(m[1]) &gt;= 4.2) {
          return true;
        }
      }
      if (Device.os.version &gt;= '4.1') {
        return true;
      }
    }
    return false;
  }
  function canSupportVideoMp4() {
    var video = document.createElement('video');
    if (typeof video.canPlayType === 'function') {
      if (video.canPlayType('video/mp4; codecs="mp4v.20.8"') === 'probably') {
        return true;
      }
      if (video.canPlayType('video/mp4; codecs="avc1.42E01E"') === 'probably' || video.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"') === 'probably') {
        return true;
      }
    }
    return false;
  }
  function canSupportAutoPlay() {
    if (Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 10) {
      return false;
    }
    return true;
  }
  function isLockdownMode() {
    if (!Device.os.ios || Device.os.getNumVersion() &lt; 16) {
      return false;
    }
    if (typeof WebAssembly === 'undefined' &amp;&amp; typeof OfflineAudioContext === 'undefined' &amp;&amp; typeof WebGLRenderingContext === 'undefined') {
      return true;
    }
    return false;
  }
  Device.canSupportVideo = canSupportVideoMp4 || canSupportH5Video;
  Device.canSupportVideoMp4 = canSupportVideoMp4;
  Device.canSupportH5Video = canSupportH5Video;
  Device.canSupportAutoPlay = canSupportAutoPlay;
  Device.isLockdownMode = isLockdownMode;
  
  Device.cpVersion = function (version) {
    var cp = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 0;
    var canEqual = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    var nowVersionStr = Device.os.version;
    if (!nowVersionStr) return false;
    var versionArr = version.split('.');
    var nowVersionArr = nowVersionStr.split('.');
    for (var i = 0; i &lt; Math.max(nowVersionArr.length, versionArr.length); i++) {
      var vi = +versionArr[i];
      var nvi = +nowVersionArr[i];
      if (vi === nvi) continue;
      if (cp &gt; 0) return vi &gt; nvi;
      if (cp &lt; 0) return vi &lt; nvi;
    }
    return canEqual || cp === 0;
  };

  var initJsBridge = false;
  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }
  function connectWebViewJavascriptBridge(callback) {
    if (window.WebViewMPapp || window.WebViewJavascriptBridge) {
      return callback(window.WebViewMPapp || window.WebViewJavascriptBridge);
    }
    if (window.WVJBCallbacks) {
      return window.WVJBCallbacks.push(callback);
    }
    window.WVJBCallbacks = [callback];
    if (!mmVersion.isMpapp) {
      return false;
    }
    if (!initJsBridge) {
      initJsBridge = true;
      var WVJBIframe = document.createElement('iframe');
      WVJBIframe.style.display = 'none';
      WVJBIframe.src = 'https://__bridge_loaded__';
      document.body.appendChild(WVJBIframe);
      setTimeout(function () {
        initJsBridge = false;
        document.body.removeChild(WVJBIframe);
      }, 0);
    }
    return false;
  }
  function invoke(jsapiName, opt, callback) {
    connectWebViewJavascriptBridge(function (bridge) {
      try {
        if (typeof opt === 'function') {
          callback = opt;
        }
        if (_typeof(opt) !== 'object' &amp;&amp; typeof opt !== 'string') {
          opt = {};
        }
        bridge.callHandler(jsapiName, opt, function (res) {
          try {
            var ret = _typeof(res) === 'object' ? res : JSON.parse(res);
            var errMsg = ret.err_msg || ret.errMsg;
            console.info("[mpapp jsapi] invoke-&gt;".concat(jsapiName, " ").concat(opt.action || '', " ").concat(errMsg));
            typeof callback === 'function' &amp;&amp; callback(ret);
          } catch (e) {
            window.WX_BJ_REPORT.BadJs.report('invoke', "callback ".concat(jsapiName, " error:"), {
              mid: 'mmbizwebapp:js_brridge',
              _info: e
            });
            console.error("[mpapp jsapi] ".concat(jsapiName, " ").concat(opt.action || ''), e, res);
          }
        });
      } catch (e) {
        window.WX_BJ_REPORT.BadJs.report('invoke', 'callback error:', {
          mid: 'mmbizwebapp:js_brridge',
          _info: e
        });
        console.error('[mpapp jsapi]', e);
      }
    });
  }

  
  function _log(level, msg) {
    if (level === 'log') {
      level = 'info';
      msg = "[WechatFe]".concat(msg);
    } else {
      var prefix = "__wap__".concat(window.__second_open__ ? ' (sec)' : '');
      msg = "".concat(prefix, " ").concat(msg, " location:[").concat(location.href, "]");
    }
    msg += new Error().stack;
    if (mmVersion.isMpapp) {
      invoke('WNNativeCallbackLog', msg);
    } else if (mmVersion.isWechat) {
      if (mmVersion.isAndroid) {
        console.warn('[system]', "[MicroMsg.JsApiLog][".concat(level, "] jslog : ").concat(msg));
      } else if (mmVersion.isIOS) {
        JSAPI.invoke('writeLog', {
          level: level,
          msg: msg
        });
      } else {
        JSAPI.invoke('log', {
          level: level,
          msg: msg
        });
      }
    }
  }
  var Log = {
    info: function info() {
      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key &lt; _len; _key++) {
        args[_key] = arguments[_key];
      }
      _log('info', args.join(' '));
    },
    warn: function warn() {
      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
        args[_key2] = arguments[_key2];
      }
      _log('warn', args.join(' '));
    },
    error: function error() {
      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 &lt; _len3; _key3++) {
        args[_key3] = arguments[_key3];
      }
      _log('error', args.join(' '));
    },
    debug: function debug() {
      for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 &lt; _len4; _key4++) {
        args[_key4] = arguments[_key4];
      }
      _log('debug', args.join(' '));
    },
    log: function log() {
      for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 &lt; _len5; _key5++) {
        args[_key5] = arguments[_key5];
      }
      _log('info', args.join(' '));
    }
  };

  
  
  var reportLogs = [];
  var reportExtraLogs = [];
  var sendUrl = '/mp/jsmonitor?#wechat_redirect';
  var monitor = {};
  monitor._reportOptions = {
    idkey: {}
  };
  function ObjWithoutProperty(source, exclude) {
    if (source === null) return {};
    var target = {};
    var sourceKeys = Object.keys(source);
    for (var i = 0; i &lt; sourceKeys.length; i++) {
      var key = sourceKeys[i];
      if (exclude.indexOf(key) &gt;= 0) continue;
      target[key] = source[key];
    }
    return target;
  }
  function formatDataToString(data) {
    var reportData = [];
    for (var key in data) {
      if (Object.prototype.hasOwnProperty.call(data, key)) {
        reportData.push(key + '=' + encodeURIComponent(data[key]));
      }
    }
    return reportData.join('&amp;');
  }
  monitor.getReportData = function (opt) {
    opt = opt || {};
    var idkey = monitor._reportOptions.idkey || {};
    var key = null;
    var reportData = {};
    var nextKey;
    try {
      for (key in idkey) {
        if (Object.prototype.hasOwnProperty.call(idkey, key) &amp;&amp; idkey[key]) {
          reportLogs.push(key + '_' + idkey[key]);
        }
      }
    } catch (e) {
      return false;
    }
    if (reportLogs.length === 0) {
      return false;
    }
    if (reportExtraLogs.length) {
      reportData.lc = reportExtraLogs.length;
      reportExtraLogs.forEach(function (extraLog, index) {
        reportData["log".concat(index)] = extraLog;
      });
    }
    try {
      var reportOptions = monitor._reportOptions;
      if (reportOptions !== null &amp;&amp; reportOptions !== undefined) {
        for (nextKey in reportOptions) {
          if (Object.prototype.hasOwnProperty.call(reportOptions, nextKey)) {
            reportData[nextKey] = reportOptions[nextKey];
          }
        }
      }
    } catch (e) {
      reportData = {};
    }
    reportData.idkey = reportLogs.join(';');
    reportData.t = Math.random();
    if (opt.remove !== false) {
      reportLogs = [];
      reportExtraLogs = [];
      monitor._reportOptions = {
        idkey: {}
      };
    }
    return reportData;
  };
  monitor.setLogs = function (opt) {
    var id = opt.id;
    var key = opt.key;
    var value = opt.value;
    var extraLog = opt.log;
    var others = ObjWithoutProperty(opt, ['id', 'key', 'value', 'log']);
    var idkey = monitor._reportOptions.idkey || {};
    var param = id + '_' + key;
    if (idkey[param]) {
      idkey[param] += value;
    } else {
      idkey[param] = value;
    }
    monitor._reportOptions.idkey = idkey;
    if (extraLog) {
      reportExtraLogs.push(extraLog);
    }
    try {
      if (others !== null &amp;&amp; others !== undefined) {
        for (var otherKey in others) {
          if (Object.prototype.hasOwnProperty.call(others, otherKey)) {
            monitor._reportOptions[otherKey] = others[otherKey];
          }
        }
      }
    } catch (e) {
      console.log(e);
    }
    return monitor;
  };
  monitor.setAvg = function (id, key, value) {
    var idkey = monitor._reportOptions.idkey || {};
    var param1 = id + '_' + key;
    var param2 = id + '_' + (key - 1);
    if (idkey[param1]) {
      idkey[param1] += value;
    } else {
      idkey[param1] = value;
    }
    if (idkey[param2]) {
      idkey[param2] += 1;
    } else {
      idkey[param2] = 1;
    }
    monitor._reportOptions.idkey = idkey;
    return monitor;
  };
  monitor.setSum = function (id, key) {
    var value = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : 1;
    var idkey = monitor._reportOptions.idkey;
    var param = id + '_' + key;
    if (idkey[param]) {
      idkey[param] += value;
    } else {
      idkey[param] = value;
    }
    monitor._reportOptions.idkey = idkey;
    return monitor;
  };
  monitor.send = function (async, ajax, origin) {
    if (async !== false) {
      async = true;
    }
    var data = monitor.getReportData();
    origin = origin || '';
    if (!data) {
      return;
    }
    if (!!ajax &amp;&amp; ajax instanceof Function) {
      ajax({
        url: origin + sendUrl,
        type: 'POST',
        mayAbort: true,
        data: data,
        async: async,
        timeout: 2000,
        dontReport: true
      });
    } else {
      new Image().src = origin + '/mp/jsmonitor?' + formatDataToString(data) + '#wechat_redirect';
    }
  };
  if (typeof window !== 'undefined' &amp;&amp; window.__monitor) {
    monitor = window.__monitor;
  } else {
    typeof window !== 'undefined' &amp;&amp; (window.__monitor = monitor);
  }
  var monitor$1 = monitor;

  
  var logList = [];
  var log = function log(msg) {
    logList.push(msg);
  };
  var printLog = function printLog() {
    for (var i = 0, len = logList.length; i &lt; len; ++i) {
      console.log("[RespType]".concat(logList[i]));
    }
  };
  var isArray = function isArray(val) {
    return Object.prototype.toString.call(val) === '[object Array]';
  };
  var getValueType = function getValueType(value) {
    if (isArray(value)) {
      return 'array';
    }
    return _typeof(value);
  };
  var parseRtDesc = function parseRtDesc(rtDesc, k) {
    var type = 'mix';
    var isRequired = false;
    var key = k;
    if (k) {
      var requireKeyWord = '_R';
      var pos = k.indexOf(requireKeyWord);
      var len = k.length - requireKeyWord.length;
      isRequired = pos !== -1 &amp;&amp; pos === len;
      key = isRequired ? k.substring(0, len) : k;
    }
    if (typeof rtDesc === 'string') {
      type = rtDesc;
    } else if (isArray(rtDesc)) {
      type = 'array';
    } else if (_typeof(rtDesc) === 'object') {
      type = 'object';
    }
    return {
      key: key,
      type: type,
      isRequired: isRequired
    };
  };
  var checkForArrayRtDesc = function checkForArrayRtDesc(arr, rtDescs) {
    if (!isArray(arr)) {
      return false;
    }
    for (var i = 0, len = arr.length; i &lt; len; ++i) {
      var value = arr[i];
      var rtDesc = void 0;
      var j = 0;
      var flag = rtDescs.length === 0;
      while (rtDesc = rtDescs[j++]) {
        if (checkForRtDesc(value, rtDesc)) {
          flag = true;
          break;
        }
      }
      if (!flag) {
        return false;
      }
    }
    return true;
  };
  var checkForStringRtDesc = function checkForStringRtDesc(value, rtDesc) {
    var valueType = getValueType(value);
    var desc = parseRtDesc(rtDesc);
    var ret = desc.type === valueType;
    if (!ret) {
      log("miss match type : ".concat(valueType, " !== ").concat(desc.type));
    }
    return ret;
  };
  var checkForObjectRtDesc = function checkForObjectRtDesc(json, rtDesc) {
    if (_typeof(json) !== 'object' || isArray(json)) {
      log('must be object');
      return false;
    }
    var rootJson = json;
    var nowCheckValue = json;
    for (var k in rtDesc) {
      if (rtDesc.hasOwnProperty(k)) {
        var nowCheckDesc = rtDesc[k];
        var desc = parseRtDesc(nowCheckDesc, k);
        var key = desc.key;
        nowCheckValue = rootJson[key];
        var valueType = getValueType(nowCheckValue);
        if (desc.isRequired &amp;&amp; nowCheckValue === undefined) {
          log("is required @key=".concat(key));
          return false;
        }
        if (nowCheckValue !== undefined) {
          if (valueType !== desc.type &amp;&amp; desc.type !== 'mix') {
            log("miss match type : ".concat(valueType, " !== ").concat(desc.type, " @key=").concat(key));
            return false;
          }
          if ((valueType === 'array' || valueType === 'object') &amp;&amp; desc.type !== 'mix') {
            if (!checkForRtDesc(nowCheckValue, nowCheckDesc)) {
              return false;
            }
          }
        }
      }
    }
    return true;
  };
  var checkForRtDesc = function checkForRtDesc(json, rtDesc) {
    if (isArray(rtDesc)) {
      return checkForArrayRtDesc(json, rtDesc);
    }
    if (_typeof(rtDesc) === 'object') {
      return checkForObjectRtDesc(json, rtDesc);
    }
    if (typeof rtDesc === 'string') {
      return checkForStringRtDesc(json, rtDesc);
    }
    return false;
  };
  var _check = function check(json, rtDescs) {
    if (typeof json === 'string') {
      try {
        json = eval("(".concat(json, ")"));
      } catch (e) {
        log('parse json error');
        return false;
      }
    }
    if (_typeof(json) !== 'object') {
      log('must be object');
      return false;
    }
    if (!isArray(rtDescs)) {
      rtDescs = [rtDescs];
    }
    var rtDesc;
    var i = 0;
    while (rtDesc = rtDescs[i++]) {
      if (checkForRtDesc(json, rtDesc)) {
        return true;
      }
    }
    return false;
  };
  var RespTypes = {
    check: function check(json, rtDesc) {
      logList = [];
      try {
        var ret = _check(json, rtDesc);
        if (!ret) {
          printLog();
        }
        return ret;
      } catch (e) {
        logList.push("[rtException]".concat(e.toString()));
        printLog();
        return false;
      }
    },
    getMsg: function getMsg() {
      return logList.join(';');
    }
  };

  function _arrayWithHoles(arr) {
    if (Array.isArray(arr)) return arr;
  }

  function _iterableToArrayLimit(arr, i) {
    var _i = null == arr ? null : "undefined" != typeof Symbol &amp;&amp; arr[Symbol.iterator] || arr["@@iterator"];
    if (null != _i) {
      var _s,
        _e,
        _x,
        _r,
        _arr = [],
        _n = !0,
        _d = !1;
      try {
        if (_x = (_i = _i.call(arr)).next, 0 === i) {
          if (Object(_i) !== _i) return;
          _n = !1;
        } else for (; !(_n = (_s = _x.call(_i)).done) &amp;&amp; (_arr.push(_s.value), _arr.length !== i); _n = !0);
      } catch (err) {
        _d = !0, _e = err;
      } finally {
        try {
          if (!_n &amp;&amp; null != _i["return"] &amp;&amp; (_r = _i["return"](), Object(_r) !== _r)) return;
        } finally {
          if (_d) throw _e;
        }
      }
      return _arr;
    }
  }

  function _arrayLikeToArray(arr, len) {
    if (len == null || len &gt; arr.length) len = arr.length;
    for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i];
    return arr2;
  }

  function _unsupportedIterableToArray(o, minLen) {
    if (!o) return;
    if (typeof o === "string") return _arrayLikeToArray(o, minLen);
    var n = Object.prototype.toString.call(o).slice(8, -1);
    if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name;
    if (n === "Map" || n === "Set") return Array.from(o);
    if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
  }

  function _nonIterableRest() {
    throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }

  function _slicedToArray(arr, i) {
    return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
  }

  function getInflightMap() {
    if (!window.__dedupe_promise_inflight__) {
      window.__dedupe_promise_inflight__ = new Map();
    }
    return window.__dedupe_promise_inflight__;
  }
  
  function dedupePromise(key, factory) {
    var inflightMap = getInflightMap();
    var existing = inflightMap.get(key);
    console.log("dedupePromise key=".concat(key, " existing=").concat(existing));
    if (existing) {
      return existing;
    }
    var promise = Promise.resolve().then(factory)["finally"](function () {
      inflightMap["delete"](key);
    });
    inflightMap.set(key, promise);
    return promise;
  }

  
  var prefix = '__WXLS__';
  var localStorage = window.localStorage || {
    getItem: function getItem() {},
    setItem: function setItem() {},
    removeItem: function removeItem() {},
    key: function key() {},
    clear: function clear() {
      var _a, _b;
      (_b = (_a = window.localStorage) === null || _a === void 0 ? void 0 : _a.clear) === null || _b === void 0 ? void 0 : _b.call(_a);
    },
    length: 0
  };
  var evictionPolicies = {
    noeviction: function noeviction(data) {
      return data;
    },
    'allkeys-random': function allkeysRandom(data, size) {
      var keys = Object.keys(data);
      var memCnt = 0;
      while (memCnt &lt; size) {
        var len = keys.length;
        var randomKeyIdx = Math.floor(Math.random() * len);
        var randomKey = keys[randomKeyIdx];
        memCnt += JSON.stringify(data[randomKey]).length;
        delete data[randomKey];
        keys = Object.keys(data);
      }
      return data;
    },
    'volatile-ttl': function volatileTtl(data, size) {
      var keys = Object.keys(data);
      keys = keys.sort(function (key1, key2) {
        var d1 = data[key1];
        var d2 = data[key2];
        if (d1.exp &lt; d2.exp) return -1;
        if (d1.exp &gt; d2.exp) return 1;
        return 0;
      });
      var memCnt = 0;
      for (var i = 0; i &lt; keys.length; i++) {
        if (memCnt &gt;= size) break;
        var key = keys[i];
        memCnt += JSON.stringify(data[key]).length;
        delete data[key];
      }
      return data;
    },
    'clear-all': function clearAll() {
      localStorage.clear();
      return {};
    }
  };
  function formatLogMsg(str) {
    return "[WXLS] ".concat(str);
  }
  
  var LS = function () {
    function LS(func, evictionPolicy, logger) {
      _classCallCheck(this, LS);
      this.logger = function () {};
      if (!func) throw 'require function name.';
      this.evictionPolicy = 'noeviction';
      this.key = func;
      if (typeof logger === 'function') {
        this.logger = function (str, type) {
          return logger(formatLogMsg(str), type);
        };
      }
      if (evictionPolicy &amp;&amp; Object.keys(evictionPolicies).indexOf(evictionPolicy) !== -1) {
        this.evictionPolicy = evictionPolicy;
      }
      this.init();
    }
    _createClass(LS, [{
      key: "init",
      value: function init() {
        var _a, _b;
        this.check();
        if (Math.random() * 1000 &lt; 1) {
          (_a = this.logger) === null || _a === void 0 ? void 0 : _a.call(this, "LSlen: ".concat(((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length) || localStorage.length), 'report');
        }
      }
    }, {
      key: "getData",
      value: function getData() {
        var data = LS.getItem(this.key) || '{}';
        try {
          data = JSON.parse(data);
        } catch (e) {
          this.logger("getData error: ".concat(e), 'error');
          localStorage.removeItem(prefix + this.key);
          data = {};
        }
        return data;
      }
    }, {
      key: "check",
      value: function check(isReturn) {
        var data = this.getData();
        var temp = {};
        var now = +new Date();
        var key;
        var val;
        for (key in data) {
          val = data[key];
          if (+val.exp &gt; now) {
            temp[key] = val;
          }
        }
        this.logger("check info: isReturn:".concat(isReturn, " data:").concat(JSON.stringify(temp)), 'info');
        if (isReturn) return temp;
        LS.setItem(this.key, JSON.stringify(temp), this.logger);
      }
    }, {
      key: "set",
      value: function set(key, val, exp) {
        var _a, _b;
        var data = this.check(true);
        data[key] = {
          val: val,
          exp: exp || +new Date()
        };
        try {
          if (localStorage.getItem(prefix + this.key)) localStorage.removeItem(prefix + this.key);
          localStorage.setItem(prefix + this.key, JSON.stringify(data));
          this.logger("first set success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data)), 'success');
        } catch (e) {
          this.logger("first set error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data), " k:").concat(key, " v:").concat(val, " exp:").concat(exp), 'error');
          localStorage.clear();
          LS.setItem(this.key, JSON.stringify(_defineProperty({}, key, {
            val: val,
            exp: exp || +new Date()
          })), this.logger);
        }
      }
    }, {
      key: "get",
      value: function get(key) {
        var data = this.getData();
        data = data[key];
        return data ? data.val || null : null;
      }
    }, {
      key: "remove",
      value: function remove(key) {
        var data = this.getData();
        if (data[key]) delete data[key];
        LS.setItem(this.key, JSON.stringify(data), this.logger);
      }
    }], [{
      key: "getItem",
      value: function getItem(key) {
        key = prefix + key;
        return localStorage.getItem(key);
      }
    }, {
      key: "setItem",
      value: function setItem(key, val, logger) {
        var _a, _b;
        key = prefix + key;
        var n = 3;
        while (n--) {
          try {
            if (localStorage.getItem(key)) localStorage.removeItem(key);
            localStorage.setItem(key, val);
            typeof logger === 'function' &amp;&amp; logger("setItem success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(key, " val:").concat(val), 'success');
            break;
          } catch (e) {
            typeof logger === 'function' &amp;&amp; logger("setItem error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(key, " val:").concat(val), 'error');
            LS.clear();
          }
        }
      }
    }, {
      key: "clear",
      value: function clear() {
        var i;
        var k;
        for (i = localStorage.length - 1; i &gt;= 0; i--) {
          k = localStorage.key(i);
          if (k.indexOf(prefix) == 0) {
            localStorage.removeItem(k);
          }
        }
      }
    }, {
      key: "getSupportEvicationPolicy",
      value: function getSupportEvicationPolicy() {
        return Object.keys(evictionPolicies);
      }
    }]);
    return LS;
  }();
  var innerVersion = (mmVersion.getInner() || '').toUpperCase();
  var getBizLS = new LS('get_biz_result');
  function getBizMap() {
    if (!window.__get_biz_map__) {
      window.__get_biz_map__ = {};
    }
    return window.__get_biz_map__;
  }
  var isGetBizSupported = mmVersion.isOnlyWechat &amp;&amp; mmVersion.isIOS &amp;&amp; innerVersion &gt;= '18003C2A' || mmVersion.isOnlyWechat &amp;&amp; mmVersion.isAndroid &amp;&amp; innerVersion &gt;= '28003D3C' || mmVersion.isUnifiedPcWechat &amp;&amp; mmVersion.cpVersion('4.1.10', 1, true, 'unifiedpc');
  function invokeGetBiz(needCheckBiz, bizType) {
    return dedupePromise("getBiz:".concat(needCheckBiz, ":").concat(bizType), function () {
      return new Promise(function (resolve, reject) {
        if (!isGetBizSupported) {
          reject('Not support');
        } else {
          JSAPI.invoke('handleMPPageAction', {
            action: 'getBiz',
            needCheckBiz: needCheckBiz,
            bizType: bizType
          }, function (res) {
            console.log("getBiz needCheckBiz=".concat(needCheckBiz, " bizType=").concat(bizType, " res: ").concat(JSON.stringify(res)));
            if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf('ok') &gt; -1) {
              var bizMap = getBizMap();
              bizMap[bizType] = res.biz;
              resolve(res.biz);
              getBizLS.set("".concat(bizType, "_get_biz_result"), res.biz, +new Date() + 3 * 24 * 60 * 60 * 1000);
            } else {
              reject('Failed to get biz');
            }
          });
        }
      });
    });
  }
  function getBiz(needCheckBiz, bizType) {
    var _a;
    if (needCheckBiz === void 0) {
      needCheckBiz = false;
    }
    if (bizType === void 0) {
      bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
    }
    var bizMap = getBizMap();
    if (!needCheckBiz &amp;&amp; bizMap[bizType] !== undefined) {
      return Promise.resolve(bizMap[bizType]);
    }
    return invokeGetBiz(needCheckBiz, bizType);
  }
  mmVersion.isOnlyWechat &amp;&amp; mmVersion.isIOS || mmVersion.isOnlyWechat &amp;&amp; mmVersion.isAndroid || mmVersion.isUnifiedPcWechat &amp;&amp; mmVersion.cpVersion('4.1.10', 1, true, 'unifiedpc');
  var getIsAuthor = function getIsAuthor(cb, bizuin, needCheckBiz, bizType) {
    var _a;
    if (bizuin === void 0) {
      bizuin = window.biz;
    }
    if (needCheckBiz === void 0) {
      needCheckBiz = false;
    }
    if (bizType === void 0) {
      bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
    }
    getBiz(needCheckBiz, bizType).then(function (biz) {
      cb(biz &amp;&amp; biz === bizuin);
    })["catch"](function () {
      cb(false);
    });
  };

  function parseUrl(url) {
    var len = url.length;
    var ques_pos = url.indexOf('?');
    var hash_pos = url.indexOf('#');
    hash_pos = hash_pos == -1 ? len : hash_pos;
    ques_pos = ques_pos == -1 ? hash_pos : ques_pos;
    var host = url.substring(0, ques_pos);
    var query_str = url.substring(ques_pos + 1, hash_pos);
    var hash = url.substring(hash_pos + 1);
    return {
      host: host,
      query_str: query_str,
      hash: hash
    };
  }
  function join(url, args, noEncode) {
    var ret = parseUrl(url);
    var query_str = ret.query_str;
    var args_arr = [];
    if (_typeof(args) === 'object') {
      for (var key in args) {
        if (args.hasOwnProperty(key)) {
          args_arr.push("".concat(key, "=").concat(noEncode ? args[key] : encodeURIComponent(args[key])));
        }
      }
    } else {
      args_arr.push(noEncode ? args : encodeURIComponent(args));
    }
    if (args_arr.length &gt; 0) {
      query_str += (query_str !== "" ? "&amp;" : "") + args_arr.join("&amp;");
    }
    return ret.host + (query_str !== "" ? "?".concat(query_str) : "") + (ret.hash !== "" ? "#".concat(ret.hash) : "");
  }
  
  function addParam(url, param, value, forceReplace) {
    url = url || location.href;
    var firstAndPos = url.indexOf("&amp;");
    var len = url.length;
    var reverseUrl = url.replace(/^[\w\d]+:[/\\]+/g, "").split("").reverse();
    if (!Array.prototype.indexOf) {
      Array.prototype.indexOf = function (searchElement, fromIndex) {
        var k;
        if (this == null) {
          throw new TypeError('"this" is null or not defined');
        }
        var O = Object(this);
        var len = O.length &gt;&gt;&gt; 0;
        if (len === 0) {
          return -1;
        }
        var n = fromIndex || 0;
        if (Math.abs(n) === Infinity) {
          n = 0;
        }
        if (n &gt;= len) {
          return -1;
        }
        k = Math.max(n &gt;= 0 ? n : len - Math.abs(n), 0);
        while (k &lt; len) {
          if (k in O &amp;&amp; O[k] === searchElement) {
            return k;
          }
          k++;
        }
        return -1;
      };
    }
    var lastSlashPos = len - 1 - reverseUrl.indexOf("/");
    if (firstAndPos !== -1 &amp;&amp; url.indexOf("?") == -1 &amp;&amp; firstAndPos &gt; lastSlashPos) {
      url = url.replace("&amp;", "?");
    }
    var reg = new RegExp("([\\?&amp;]".concat(param, "=)[^&amp;#]*"));
    if (!url.match(reg)) {
      var urlInfo = parseUrl(url);
      var hash = urlInfo.hash ? '#' + urlInfo.hash : '';
      url = url.replace(hash, '');
      var _pos = url.indexOf("?");
      if (_pos == -1) {
        return "".concat(url, "?").concat(param, "=").concat(value).concat(hash);
      }
      if (_pos == url.length - 1) {
        return "".concat(url + param, "=").concat(value).concat(hash);
      }
      return "".concat(url, "&amp;").concat(param, "=").concat(value).concat(hash);
    }
    if (forceReplace === true) {
      return url.replace(reg, "$1".concat(value));
    }
    return url;
  }
  function addWxfrom(src, wxfrom) {
    var offset = window.service_type === 1 ? 10000 : 0;
    return addParam(src, 'wxfrom', offset + Number(wxfrom), true);
  }
  function removeParam(url, param) {
    var _URL = new URL(url),
      protocol = _URL.protocol,
      host = _URL.host,
      pathname = _URL.pathname,
      search = _URL.search,
      hash = _URL.hash;
    var queryParams = new URLSearchParams(search);
    queryParams["delete"](param);
    var newSearch = queryParams.toString();
    var newUrl = new URL("".concat(protocol, "//").concat(host).concat(pathname).concat(newSearch ? "?".concat(decodeURIComponent(newSearch)) : "").concat(hash));
    return newUrl.toString();
  }
  function getQuery(name, url) {
    var u = url || window.location.search;
    var reg = new RegExp("(^|&amp;)".concat(name, "=([^&amp;]*)(&amp;|$)"));
    var r = u.substring(u.indexOf('?') + 1).match(reg);
    return r !== null ? r[2] : '';
  }
  function encodeBase64(value) {
    try {
      return window.btoa(value);
    } catch (e) {
      return '';
    }
  }
  function decodeBase64(value) {
    try {
      return window.atob(value);
    } catch (e) {
      return '';
    }
  }
  function joinUrl$1(url) {
    var obj = {};
    if (typeof window.uin !== 'undefined') {
      obj.uin = window.uin;
    }
    if (typeof window.key !== 'undefined') {
      obj.key = window.key;
    }
    if (typeof window.pass_ticket !== 'undefined') {
      obj.pass_ticket = window.pass_ticket;
    }
    if (typeof window.wxtoken !== 'undefined') {
      obj.wxtoken = window.wxtoken;
    }
    if (typeof window.devicetype !== 'undefined') {
      obj.devicetype = window.devicetype;
    }
    if (typeof window.clientversion !== 'undefined') {
      obj.clientversion = window.clientversion || mmVersion.getInner();
    }
    obj.version = obj.clientversion;
    if (window.biz) {
      obj.__biz = window.biz;
    }
    if (getQuery('enterid')) {
      obj.enterid = getQuery('enterid');
    }
    if (typeof window.appmsg_token !== 'undefined') {
      obj.appmsg_token = window.appmsg_token;
    } else if (url.indexOf('advertisement_report') &gt; -1) {
      new Image().src = "".concat(location.protocol, "//mp.weixin.qq.com/mp/jsmonitor?idkey=68064_13_1&amp;r=").concat(Math.random());
    }
    obj.x5 = navigator.userAgent.indexOf('TBS/') !== -1 ? '1' : '0';
    obj.f = 'json';
    return join(url, obj);
  }
  function joinUserArticleRole(url, notJoin, cb) {
    var bizuin = arguments.length &gt; 3 &amp;&amp; arguments[3] !== undefined ? arguments[3] : window.biz;
    var needCheckBiz = arguments.length &gt; 5 &amp;&amp; arguments[5] !== undefined ? arguments[5] : false;
    if (notJoin) {
      cb(url);
    } else {
      getIsAuthor(function (isAuthor) {
        cb(addParam(url, 'user_article_role', isAuthor ? 1 : 0, true));
      }, bizuin, needCheckBiz);
    }
  }
  function getA8keyQuery(name, url) {
    return new Promise(function (resolve) {
      if (window.__secPageAuthPromise) {
        window.__secPageAuthPromise.then(function () {
          resolve(getQuery(name, url));
        });
      } else {
        resolve(getQuery(name, url));
      }
    });
  }
  function addHash(url, hash) {
    var isReplace = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    if (isReplace) {
      return "".concat(url.split('#')[0]).concat(hash);
    }
    return "".concat(url).concat(url.indexOf('#') === -1 ? '#' : '').concat(hash);
  }
  function decodeUrl(url) {
    var _url = url;
    while (_url.indexOf('&amp;amp;') !== -1) {
      _url = _url.htmlDecode();
    }
    return _url;
  }
  var Url = {
    parseUrl: parseUrl,
    join: join,
    addParam: addParam,
    addWxfrom: addWxfrom,
    addHash: addHash,
    getQuery: getQuery,
    getA8keyQuery: getA8keyQuery,
    encodeBase64: encodeBase64,
    decodeBase64: decodeBase64,
    joinUrl: joinUrl$1,
    joinUserArticleRole: joinUserArticleRole,
    removeParam: removeParam,
    decodeUrl: decodeUrl
  };

  var _a;
  var doc;
  var isAcrossOrigin = false;
  try {
    doc = (_a = window.top) === null || _a === void 0 ? void 0 : _a.window.document;
  } catch (e) {
    isAcrossOrigin = true;
  }
  var StatusTextMap = {
    200: 'OK',
    302: 'Found',
    400: 'Bad Request',
    500: 'Internal Server Error'
  };
  function getIsAcrossOrigin() {
    return isAcrossOrigin;
  }
  function networkStartLog(item) {
    var _a, _b, _c, _d, _e;
    console.log('[system]', "&lt; [request ".concat(item.requestType, "]"), item.url, item.method, item);
    var rdevRequestId;
    var requestTime = performance.now() / 1000;
    if ((_b = (_a = window.RemoteDevSdk) === null || _a === void 0 ? void 0 : _a.instance) === null || _b === void 0 ? void 0 : _b.Network) {
      try {
        var willBeSentOptions = {
          url: item.url,
          method: item.method,
          requestHeaders: Object.assign({}, item.requestHeader || {}, {
            RDEV_REQUEST_TYPE: item.requestType
          }),
          requestBody: item.postData,
          requestTime: requestTime
        };
        rdevRequestId = window.RemoteDevSdk.instance.Network.customRequestWillBeSent(willBeSentOptions);
      } catch (err) {}
    }
    if ((_c = window.vConsole) === null || _c === void 0 ? void 0 : _c.network) {
      try {
        var vconsoleNetworkItem = (_e = (_d = window.vConsole.network).add) === null || _e === void 0 ? void 0 : _e.call(_d, Object.assign({}, item, {
          startTime: Date.now(),
          endTime: Date.now(),
          status: 0,
          readyState: 2,
          response: ''
        }));
        vconsoleNetworkItem.rdevRequestId = rdevRequestId;
        vconsoleNetworkItem.requestTime = requestTime;
        return vconsoleNetworkItem;
      } catch (err) {}
    }
    if (rdevRequestId) {
      return Object.assign(Object.assign({}, item), {
        id: '__only_rdev_log__',
        rdevRequestId: rdevRequestId,
        requestTime: requestTime
      });
    }
    return Object.assign({}, item, {
      id: '__system_log__'
    });
  }
  function networkEndLog(item) {
    var _a, _b, _c, _d, _e;
    console.log('[system]', "&gt; [response ".concat(item.requestType, "]"), item.url, item.response, item);
    if (item.rdevRequestId &amp;&amp; ((_b = (_a = window.RemoteDevSdk) === null || _a === void 0 ? void 0 : _a.instance) === null || _b === void 0 ? void 0 : _b.Network) &amp;&amp; item.id !== '__system_log__') {
      try {
        var finishedOptions = {
          requestId: item.rdevRequestId,
          url: item.url,
          status: +(item.status || '500'),
          statusText: StatusTextMap[+(item.status || '500')] || 'Error',
          responseHeaders: {
            RDEV_RESPONSE_TYPE: item.requestType
          },
          responseBody: item.response,
          requestTime: item.requestTime || 0,
          duration: item.costTime || (item.endTime &amp;&amp; item.startTime ? item.endTime - item.startTime : performance.now() / 1000 - (item.requestTime || 0))
        };
        window.RemoteDevSdk.instance.Network.customRequestFinished(finishedOptions);
      } catch (err) {}
    }
    if (((_c = window.vConsole) === null || _c === void 0 ? void 0 : _c.network) &amp;&amp; item.id !== '__system_log__') {
      try {
        item.statusText = "".concat(item.status);
        item.responseSize = item.response.length;
        item.responseSizeText = "".concat(item.response.length);
        return (_e = (_d = window.vConsole.network).update) === null || _e === void 0 ? void 0 : _e.call(_d, item.id, Object.assign({}, item, {
          readyState: 4
        }));
      } catch (err) {}
    }
  }
  function reqType(obj, path) {
    return obj.url.indexOf(path) &gt; -1 &amp;&amp; obj.url.indexOf('action=') === -1 &amp;&amp; (!obj.data || !obj.data.action);
  }
  function findAjaxScopeByConfig(url, config) {
    var pathname = new URL(url, location.href).pathname || '';
    var scope = config[pathname.slice(1)];
    if (scope) {
      return scope;
    }
  }
  function getAjaxScope(ajaxUrl) {
    if (Url.getQuery('no_transfer', location.href) !== '1' &amp;&amp; mmVersion.isWechat &amp;&amp; !mmVersion.isInMiniProgram &amp;&amp; !mmVersion.isWxWork &amp;&amp; !mmVersion.isMpapp &amp;&amp; !isAcrossOrigin &amp;&amp; window.__ajaxTransferConfig &amp;&amp; _typeof(window.__ajaxTransferConfig) === 'object' &amp;&amp; (
    mmVersion.isIOS &amp;&amp; mmVersion.compareHexVersion('1800282F') || mmVersion.isAndroid &amp;&amp; mmVersion.compareHexVersion('28002234') || mmVersion.isWindowsWechat &amp;&amp; mmVersion.cpVersion('3.9.5', 1, true, 'windows') || mmVersion.isMacWechat &amp;&amp; mmVersion.cpVersion('3.8.4', 1, true, 'mac') || mmVersion.isHarmonyWechat &amp;&amp; mmVersion.compareHexVersion('0xf3100b00') &amp;&amp; !mmVersion.compareHexVersion('0xf3100c00') || mmVersion.compareHexVersion('0xf3800b00'))) {
      try {
        return findAjaxScopeByConfig(ajaxUrl, window.__ajaxTransferConfig);
      } catch (err) {
        
      }
    }
  }
  function getActionByData(data) {
    var _a, _b;
    if (_typeof(data) === 'object' &amp;&amp; !(data instanceof Blob)) {
      if (data.hasOwnProperty('data') &amp;&amp; typeof data.data === 'string') {
        try {
          var workedData = JSON.parse(data.data);
          return workedData.action || '';
        } catch (e) {}
      }
      return data.action || '';
    }
    if (typeof data === 'string') {
      return ((_b = (_a = data.split(/[?&amp;]/).find(function (x) {
        return x.indexOf('action=') &gt;= 0;
      })) === null || _a === void 0 ? void 0 : _a.split('=')) === null || _b === void 0 ? void 0 : _b[1]) || '';
    }
    return '';
  }

  var METHOD_ENUM = {
    GET: 0,
    POST: 1
  };
  var __moon_report = window.__moon_report || function () {};
  var MOON_AJAX_SUCCESS_OFFSET = 3;
  var MOON_AJAX_NETWORK_OFFSET = 4;
  var MOON_AJAX_ERROR_OFFSET = 5;
  var MOON_AJAX_TIMEOUT_OFFSET = 6;
  var MOON_AJAX_COMPLETE_OFFSET = 7;
  var LENGTH_LIMIT = 4096;
  function reportRtError(type, id, key, content) {
    var log = '';
    var prefix = type === 'rt' ? 'rtCheckError' : 'Ajax Length Limit';
    if (content === null || content === void 0 ? void 0 : content.length) {
      var loglen = 1000;
      var len = content.length;
      var lc = Math.ceil(len / loglen);
      log = ["&amp;lc=".concat(lc)];
      for (var i = 0; i &lt; lc; ++i) {
        log.push("&amp;log".concat(i, "=") + "[".concat(prefix, "][").concat(i, "]").concat(encodeURIComponent(content.substring(i * loglen, i * loglen + loglen))));
      }
      log = log.join('');
    }
    var data = "idkey=".concat(id, "_").concat(key, "_1").concat(log, "&amp;r=").concat(Math.random());
    var xmlobj = new XMLHttpRequest();
    xmlobj.open('POST', "".concat(location.protocol, "//").concat(location.host, "/mp/jsmonitor?"), true);
    xmlobj.setRequestHeader('cache-control', 'no-cache');
    xmlobj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    xmlobj.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    xmlobj.send(data);
    if (type === 'ajaxLen') {
      monitor$1.setLogs({
        id: id,
        key: key,
        value: 1,
        log: log
      });
    }
  }
  function reportRt(id, key, content) {
    reportRtError('rt', id, key, content);
  }
  function reportAjaxLength(id, key, content) {
    reportRtError('ajaxLen', id, key, content);
  }
  function setXhrHeader(xhr, type, opt) {
    if (opt.contentType) {
      xhr.setRequestHeader('Content-Type', opt.contentType);
    } else if (type === 'POST') {
      xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    }
    if (!opt.noXRequestedWidthHeader) {
      xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    }
  }
  function Ajax(obj) {
    var report36408 = typeof obj.report36408 === 'function' ? obj.report36408 : function () {};
    if (obj.usePb) {
      obj.type = 'POST';
      obj.data = {
        data: JSON.stringify(obj.data)
      };
    }
    var ajaxScope = getAjaxScope(obj.url);
    var type = (obj.type || 'GET').toUpperCase();
    var timer;
    var _url;
    if (obj.notJoinUrl) {
      _url = obj.url;
    } else {
      _url = Url.joinUrl(obj.url);
    }
    Url.joinUserArticleRole(_url, !!obj.notJoinUrl, function (url) {
      var urlObj = new URL(url, location.origin);
      if (obj.f === 'html') {
        url = url.replace('&amp;f=json', '');
      }
      var data = null;
      if (obj.data instanceof Blob) {
        data = obj.data;
      } else if (_typeof(obj.data) === 'object') {
        var d = obj.data;
        var ds = [];
        for (var k in d) {
          if (d.hasOwnProperty(k)) {
            ds.push("".concat(k, "=").concat(encodeURIComponent(d[k])));
          }
        }
        data = ds.join('&amp;');
      } else {
        data = typeof obj.data === 'string' ? obj.data : null;
      }
      var beginTs;
      var beforeReq = function beforeReq() {
        if (reqType(obj, '/mp/getappmsgext')) {
          window.startGetAppmsgExtTime = Date.now();
          Log.log('start get appmsgext, url: ', obj.url);
        }
        if (reqType(obj, '/mp/getappmsgad')) {
          window.startGetAppmsgAdTime = Date.now();
          Log.log('start get appmsgad, url: ', obj.url);
        }
        beginTs = Date.now();
      };
      var beforeResp = function beforeResp(xhr) {
        if (reqType(obj, '/mp/getappmsgext')) {
          window.receiveGetAppmsgExt = "".concat(xhr.status, "|").concat(Date.now());
          Log.log("receive appmsgext response, status: ".concat(xhr.status));
        }
        if (reqType(obj, '/mp/getappmsgad')) {
          window.receiveGetAppmsgAd = "".concat(xhr.status, "|").concat(Date.now());
          Log.log("receive appmsgad response, status: ".concat(xhr.status));
        }
        if (Math.random() &lt; 0.001 &amp;&amp; window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs) {
          try {
            var key = ajaxScope ? 'transfer' : 'xhr';
            var interval = 250;
            var time = Date.now() - beginTs;
            var range = Math.floor(time / interval) * interval;
            var pathname = new URL(obj.url, location.href).pathname || '';
            window.WX_BJ_REPORT.BadJs.report("".concat(key, "_perf:").concat(pathname), JSON.stringify({
              status: xhr.status,
              time: "[".concat(range, "-").concat(range + interval, ")")
            }), {
              mid: 'mmbizwap:ajaxtransfer',
              view: 'wap_business'
            });
          } catch (err) {}
        }
      };
      var handleRespSucc = function handleRespSucc(xhr, requestType) {
        var _a, _b, _c, _d;
        try {
          var responseText = xhr.responseText;
          var resp = responseText;
          if (obj.dataType === 'json') {
            try {
              if (JSON &amp;&amp; JSON.parse) {
                resp = JSON.parse(resp);
              } else {
                resp = eval("(".concat(resp, ")"));
                monitor$1.setSum(523105, 127, 1).send();
              }
              var rtId = obj.rtId;
              var rtKey = obj.rtKey || 0;
              var rtDesc = obj.rtDesc;
              if (rtId &amp;&amp; rtDesc &amp;&amp; RespTypes &amp;&amp; !RespTypes.check(resp, rtDesc)) {
                reportRt(+rtId, +rtKey, "".concat(RespTypes.getMsg(), "[detail]").concat(responseText, ";").concat(obj.url));
              }
              if (resp &amp;&amp; resp.base_resp &amp;&amp; ((_a = resp.base_resp) === null || _a === void 0 ? void 0 : _a.ret) !== 0 &amp;&amp; typeof window.WX_BJ_REPORT !== 'undefined' &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; Math.random() &lt; 0.001) {
                var reportUrl = url;
                if (url.indexOf('?') !== -1) {
                  reportUrl = url.substring(0, url.indexOf('?'));
                  if (Url.getQuery('action', url)) {
                    reportUrl = "".concat(reportUrl, "?action=").concat(Url.getQuery('action', url));
                  }
                }
                if (!((reportUrl === '/mp/getappmsgext' || reportUrl === '/mp/getappmsgad') &amp;&amp; typeof resp.base_resp.ret === 'undefined')) {
                  window.WX_BJ_REPORT.BadJs.report(reportUrl, "ret=".concat(resp.base_resp.ret), {
                    mid: window.PAGE_MID,
                    view: 'wap_retcode'
                  });
                }
              }
            } catch (e) {
              obj.error &amp;&amp; obj.error(xhr, {
                type: 1,
                error: e,
                status: xhr.status
              });
              if (!obj.dontReport) {
                report36408({
                  CgiPath: urlObj.pathname || '',
                  Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                  Query: urlObj.search || '',
                  PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                  Method: type || '',
                  RequestType: requestType || 0,
                  RetType: 1,
                  HttpCode: xhr.status || 0,
                  Ret: 0
                });
              }
              return;
            }
          }
          if (_typeof(resp) === 'object' &amp;&amp; ((_b = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _b === void 0 ? void 0 : _b.ret) !== 0) {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                Method: type || '',
                RequestType: requestType || 0,
                RetType: 4,
                HttpCode: xhr.status || 0,
                Ret: ((_c = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _c === void 0 ? void 0 : _c.ret) || 0
              });
            }
          } else {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                Method: type || '',
                RequestType: requestType || 0,
                RetType: 0,
                HttpCode: xhr.status || 0,
                Ret: ((_d = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _d === void 0 ? void 0 : _d.ret) || 0
              });
            }
          }
          obj.success &amp;&amp; obj.success(resp);
        } catch (e) {
          __moon_report({
            offset: MOON_AJAX_SUCCESS_OFFSET,
            e: e
          });
          throw e;
        }
      };
      var handleRespErr = function handleRespErr(xhr, error, requestType) {
        try {
          obj.error &amp;&amp; obj.error(xhr, {
            type: 2,
            error: error,
            status: xhr.status
          });
          if (!obj.dontReport) {
            report36408({
              CgiPath: urlObj.pathname || '',
              Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
              Query: urlObj.search || '',
              PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
              Method: type,
              RequestType: requestType,
              RetType: 2,
              HttpCode: xhr.status,
              Ret: 0
            });
          }
        } catch (e) {
          __moon_report({
            offset: MOON_AJAX_ERROR_OFFSET,
            e: e
          });
          throw e;
        }
      };
      var handleRespComplete = function handleRespComplete() {
        clearTimeout(timer);
        try {
          obj.complete &amp;&amp; obj.complete();
        } catch (e) {
          __moon_report({
            offset: MOON_AJAX_COMPLETE_OFFSET,
            e: e
          });
          throw e;
        }
        obj.complete = null;
      };
      var handleReqTimeout = function handleReqTimeout(xhr) {
        if (typeof obj.timeout !== 'undefined') {
          timer = setTimeout(function () {
            xhr.abort();
            try {
              obj.complete &amp;&amp; obj.complete();
            } catch (e) {
              __moon_report({
                offset: MOON_AJAX_COMPLETE_OFFSET,
                e: e
              });
              throw e;
            }
            obj.complete = null;
            __moon_report({
              offset: MOON_AJAX_TIMEOUT_OFFSET,
              log: "ajax_timeout_error: ".concat(url),
              e: ''
            });
          }, obj.timeout);
        }
      };
      var retryXhrFn = function retryXhrFn(res, isTimeout, reqLogItem) {
        var retryXhr = new XMLHttpRequest();
        try {
          retryXhr._noVConsole = true;
        } catch (err) {}
        retryXhr.open(type, url);
        retryXhr.onreadystatechange = function () {
          if (isTimeout) return;
          if (retryXhr.readyState === 3) {
            obj.received &amp;&amp; obj.received(retryXhr);
          }
          if (retryXhr.readyState === 4) {
            beforeResp(retryXhr);
            var retryStatus = retryXhr.status;
            if (retryStatus &gt;= 200 &amp;&amp; retryStatus &lt; 400) {
              handleRespSucc(retryXhr, 1);
            } else {
              handleRespErr(retryXhr, res, 1);
              window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; window.WX_BJ_REPORT.BadJs.report('req_failure', JSON.stringify({
                retryXhrStatus: retryStatus,
                transferRes: res
              }), {
                mid: 'mmbizwap:ajaxtransfer',
                view: 'wap_business'
              });
            }
            reqLogItem.status = retryStatus;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = retryXhr.responseText;
            handleRespComplete();
            networkEndLog(reqLogItem);
          }
        };
        setXhrHeader(retryXhr, type, obj);
        retryXhr.send(data);
      };
      if (ajaxScope &amp;&amp; !obj.pureHttp) {
        var header = {
          'User-Agent': navigator.userAgent,
          'Cookie': (window.__test_env__ ? 'uniproxy_route=1; ' : '') + document.cookie,
          'Referer': location.href
        };
        if (obj.contentType) {
          header['Content-Type'] = obj.contentType;
        } else if (type === 'POST') {
          header['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
        }
        if (!obj.noXRequestedWidthHeader) {
          header['X-Requested-With'] = 'XMLHttpRequest';
        }
        var reqUrl = new URL(url, location.href).href;
        var method = METHOD_ENUM[type] || 0;
        var params = Device.os.pc ? {
          url: reqUrl,
          req_json: data || '',
          scope: ajaxScope,
          webcgi_method: method,
          webcgi_header: Object.keys(header).map(function (headerItemKey) {
            return Device.os.Mac ? _defineProperty({}, headerItemKey, header[headerItemKey]) : {
              key: headerItemKey,
              value: header[headerItemKey]
            };
          }),
          cgi_type: 1
        } : {
          reqUrl: reqUrl,
          reqBody: data,
          scope: ajaxScope,
          method: method,
          header: header
        };
        var reqLogItem = networkStartLog({
          method: type,
          url: url,
          postData: obj.data || {},
          requestHeader: header,
          requestType: 'transfer',
          startTime: Date.now(),
          responseType: url.indexOf('f=json') &gt; 0 ? 'json' : undefined
        });
        var isTimeout = false;
        handleReqTimeout({
          abort: function abort() {
            isTimeout = true;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = 'timeout';
            networkEndLog(reqLogItem);
          }
        });
        Device.os.pc &amp;&amp; monitor$1.setSum(115849, 69, 1);
        JSAPI.invoke(Device.os.pc ? 'H5ExtTransfer' : 'webTransfer', params, function (res) {
          var _a, _b, _c, _d, _e, _f;
          if (isTimeout) return;
          var status = 400;
          var result = '';
          if (Device.os.pc) {
            try {
              var retFlag = res.base_resp.ret === 0 &amp;&amp; res.jsapi_resp.ret === 0 &amp;&amp; res.err_msg.indexOf(':ok') &gt; -1;
              var respJsonFlag = res.jsapi_resp.resp_json;
              status = retFlag &amp;&amp; respJsonFlag ? 200 : 400;
              result = res.jsapi_resp.resp_json;
            } catch (err) {
              console.error(err);
            }
          } else {
            status = res &amp;&amp; res.errCode * 1 === 0 &amp;&amp; typeof res.result === 'string' &amp;&amp; res.result ? 200 : 400;
            result = res.result;
          }
          try {
            Log.log("ajax transfer, status: ".concat(status, ", reqUrl: ").concat(reqUrl));
          } catch (err) {
            console.error(err);
          }
          if (status &gt;= 200 &amp;&amp; status &lt; 400) {
            obj.received &amp;&amp; obj.received(null);
            beforeResp({
              status: status
            });
            handleRespSucc({
              status: status,
              responseText: result
            }, 10);
            reqLogItem.status = status;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = result;
            handleRespComplete();
            networkEndLog(reqLogItem);
          } else if (window.__second_open__) {
            JSAPI.invoke('request', {
              url: reqUrl,
              method: type,
              data: data,
              header: header
            }, function (retryRes) {
              try {
                Log.log("ajax retry request, retryStatus: ".concat((retryRes === null || retryRes === void 0 ? void 0 : retryRes.statusCode) || '', ", reqUrl: ").concat(reqUrl));
              } catch (err) {
                console.error(err);
              }
              if (isTimeout) return;
              var retryStatus = retryRes.statusCode;
              obj.received &amp;&amp; obj.received(null);
              beforeResp({
                status: retryStatus
              });
              if (retryRes.err_msg.indexOf(':ok') &gt; -1 &amp;&amp; retryStatus &gt;= 200 &amp;&amp; retryStatus &lt; 400) {
                handleRespSucc({
                  status: retryStatus,
                  responseText: retryRes.data
                }, 20);
              } else {
                retryXhrFn(res, isTimeout, reqLogItem);
                handleRespErr({
                  status: retryStatus
                }, res, 20);
                window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; window.WX_BJ_REPORT.BadJs.report('req_failure_sec_open', JSON.stringify({
                  retryReqJsapiRes: retryRes,
                  transferRes: res,
                  url: reqUrl
                }), {
                  mid: 'mmbizwap:ajaxtransfer',
                  view: 'wap_business'
                });
              }
              reqLogItem.status = retryStatus;
              reqLogItem.endTime = Date.now();
              reqLogItem.response = retryRes.data;
              handleRespComplete();
              networkEndLog(reqLogItem);
            });
          } else {
            retryXhrFn(res, isTimeout, reqLogItem);
          }
          if (Device.os.pc) {
            if (!res.err_msg.includes(':ok')) {
              (_b = (_a = window.WX_BJ_REPORT) === null || _a === void 0 ? void 0 : _a.BadJs) === null || _b === void 0 ? void 0 : _b.report("pc transfer res no ok: ".concat(res.err_msg), params.url || '', {
                mid: window.PAGE_MID,
                _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
              });
            }
            try {
              if (res.jsapi_resp.resp_json &amp;&amp; JSON.parse(res.jsapi_resp.resp_json).base_resp.ret !== 0 &amp;&amp; JSON.parse(res.jsapi_resp.resp_json).base_resp.ret !== 190001 || res.base_resp.ret !== 0 || res.jsapi_resp.ret !== 0) {
                (_d = (_c = window.WX_BJ_REPORT) === null || _c === void 0 ? void 0 : _c.BadJs) === null || _d === void 0 ? void 0 : _d.report("pc transfer res invalid ret", params.url || '', {
                  mid: window.PAGE_MID,
                  _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
                });
              }
            } catch (err) {}
          } else {
            try {
              if (res.errCode !== 0) {
                (_f = (_e = window.WX_BJ_REPORT) === null || _e === void 0 ? void 0 : _e.BadJs) === null || _f === void 0 ? void 0 : _f.report("mobile transfer res invalid ret", params.url || '', {
                  mid: window.PAGE_MID,
                  _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
                });
              }
            } catch (err) {}
          }
        });
        beforeReq();
        return;
      }
      var xhr = new XMLHttpRequest();
      var mayAbort = !!obj.mayAbort;
      var async = typeof obj.async === 'undefined' ? true : obj.async;
      var _onreadystatechange = xhr.onreadystatechange;
      xhr.open(type, url, async);
      xhr.onreadystatechange = function () {
        if (typeof _onreadystatechange === 'function') {
          _onreadystatechange.apply(xhr);
        }
        if (xhr.readyState === 3) {
          obj.received &amp;&amp; obj.received(xhr);
        }
        if (xhr.readyState === 4) {
          beforeResp(xhr);
          xhr.onreadystatechange = null;
          var status = xhr.status;
          if (status &gt;= 200 &amp;&amp; status &lt; 400) {
            handleRespSucc(xhr, 1);
          } else {
            handleRespErr(xhr, 'status error', 1);
            if (!!status || !mayAbort) {
              var __ajaxtest = window.__ajaxtest || '0';
              __moon_report({
                offset: MOON_AJAX_NETWORK_OFFSET,
                log: "ajax_network_error[".concat(status, "][").concat(__ajaxtest, "]: ").concat(url, ";host:").concat(location.host),
                e: ''
              });
            }
          }
          handleRespComplete();
        }
      };
      setXhrHeader(xhr, type, obj);
      handleReqTimeout(xhr);
      try {
        xhr.send(data);
        try {
          if (url &amp;&amp; url.length &gt; LENGTH_LIMIT) {
            reportAjaxLength(27613, 17, "ajax get limit[length: ".concat(url.length, "]").concat(url.substring(0, 1024)));
          }
          if (data &amp;&amp; !(data instanceof Blob) &amp;&amp; data.length &gt; LENGTH_LIMIT) {
            reportAjaxLength(27613, 18, "ajax post limit[length: ".concat(data.length, "]").concat(data.substring(0, 1024)));
          }
          if (data &amp;&amp; data instanceof Blob &amp;&amp; data.size &gt; LENGTH_LIMIT) {
            reportAjaxLength(27613, 18, "ajax post limit[length: ".concat(data.size, "]blob"));
          }
        } catch (e) {
        }
      } catch (e) {
        obj.error &amp;&amp; obj.error(xhr, {
          type: 3,
          error: e,
          status: 0
        });
      }
      beforeReq();
    });
  }

  
  mmVersion.isWindowsWechat &amp;&amp; mmVersion.compareHexVersion('0xf2550000') || mmVersion.isMacWechat &amp;&amp; mmVersion.compareHexVersion('0xf2650000');

  
  var getBrandServiceType = function getBrandServiceType() {
    var serviceType = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : window.service_type;
    var _a, _b;
    var brandServiceType = 0;
    if (serviceType !== undefined) brandServiceType = serviceType + 1;
    if (((_b = (_a = window.cgiData) === null || _a === void 0 ? void 0 : _a.trans_appmsg_info) === null || _b === void 0 ? void 0 : _b.trans_type) * 1 === 1) brandServiceType = 3;
    return brandServiceType;
  };

  function setCurrentMpInfo(ifShow) {
    var supportNewTopBar = mmVersion.isIOS &amp;&amp; mmVersion.gtVersion('7.0.10', true) || mmVersion.isAndroid &amp;&amp; mmVersion.gtVersion('7.0.12', true);
    var supportLiveStatus = mmVersion.isIOS &amp;&amp; mmVersion.gtVersion('8.0.46', true) || mmVersion.isAndroid &amp;&amp; mmVersion.gtVersion('8.0.46', true);
    JSAPI.invoke('currentMpInfo', {
      userName: window.user_name,
      brandName: !!supportNewTopBar &amp;&amp; window.nickname === '' ? '未命名账号' : window.title,
      title: window.msg_title || '',
      brandIcon: window.hd_head_img.replace(/\/0$/, '/132'),
      itemShowType: window.item_show_type,
      isPaySubscribe: window.isPaySubscribe,
      topBarStyle: supportNewTopBar ? 1 : 0,
      topBarShowed: ifShow,
      disableShowFinderLiveTopBar: !ifShow &amp;&amp; supportLiveStatus ? 1 : 0,
      brandServiceType: getBrandServiceType()
    }, function () {});
  }
  function AjaxWx(obj) {
    var report36408 = typeof obj.report36408 === 'function' ? obj.report36408 : function () {};
    obj.url += obj.url.indexOf('?') === -1 ? '?fasttmplajax=1' : '&amp;fasttmplajax=1';
    if (getAjaxScope(obj.url)) {
      Ajax(obj);
      return;
    }
    if (obj.usePb) {
      obj.type = 'POST';
      obj.data = {
        data: JSON.stringify(obj.data)
      };
    }
    if (!/^(http:\/\/|https:\/\/|\/\/)/.test(obj.url)) {
      obj.url = "https://mp.weixin.qq.com/".concat(obj.url.replace(/^\//, ''));
    } else if (/^\/\//.test(obj.url)) {
      obj.url = "https:".concat(obj.url);
    }
    if (obj.f !== 'html' &amp;&amp; (obj.url.indexOf('?f=json') === -1 || obj.url.indexOf('&amp;f=json') === -1)) {
      obj.url += '&amp;f=json';
    }
    if (!obj.notJoinUrl &amp;&amp; obj.f !== 'html') {
      obj.url = Url.joinUrl(obj.url);
    }
    Url.joinUserArticleRole(obj.url, !!obj.notJoinUrl, function (url) {
      obj.url = url;
      var urlObj = new URL(url, location.origin);
      var data = null;
      if (_typeof(obj.data) === 'object') {
        var d = obj.data;
        var ds = [];
        for (var k in d) {
          if (d.hasOwnProperty(k)) {
            ds.push("".concat(k, "=").concat(encodeURIComponent(d[k])));
          }
        }
        data = ds.join('&amp;');
      } else {
        data = typeof obj.data === 'string' ? obj.data : null;
      }
      var header = {
        Cookie: document.cookie,
        referer: location.href
      };
      if (obj.contentType) {
        header['Content-Type'] = obj.contentType;
      } else if ((obj.type || 'GET').toUpperCase() === 'POST') {
        header['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
      }
      var reqLogItem = networkStartLog({
        method: obj.type || 'GET',
        url: obj.url,
        postData: obj.data || {},
        requestHeader: header,
        requestType: 'jsapi',
        startTime: Date.now()
      });
      var retryTime = 1;
      var jsapiRequest = function jsapiRequest(obj, data) {
        return JSAPI.invoke('request', {
          url: obj.url,
          method: obj.type,
          data: data,
          header: header
        }, function (res) {
          var _a, _b, _c, _d, _e, _f;
          if (res.err_msg.indexOf(':ok') &gt; -1 &amp;&amp; (!res.statusCode || res.statusCode &gt;= 200 &amp;&amp; res.statusCode &lt; 400)) {
            if (reqType(obj, '/mp/getappmsgext')) {
              window.receiveGetAppmsgExt = "".concat(res.statusCode, "|").concat(Date.now());
            }
            if (reqType(obj, '/mp/getappmsgad')) {
              window.receiveGetAppmsgAd = "".concat(res.statusCode, "|").concat(Date.now());
            }
            if (retryTime === 1) {
              obj.received &amp;&amp; obj.received(null);
            }
            var resData = {};
            if (res.data) {
              try {
                if (obj.dataType === 'json') {
                  resData = JSON.parse(res.data);
                } else {
                  resData = res.data;
                }
                if (resData &amp;&amp; resData.base_resp &amp;&amp; ((_a = resData.base_resp) === null || _a === void 0 ? void 0 : _a.ret) !== 0 &amp;&amp; typeof window.WX_BJ_REPORT !== 'undefined' &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; Math.random() &lt; 0.001) {
                  var reportUrl = obj.url;
                  if (obj.url.indexOf('?') !== -1) {
                    reportUrl = obj.url.substring(0, obj.url.indexOf('?'));
                    if (Url.getQuery('action', obj.url)) {
                      reportUrl = "".concat(reportUrl, "?action=").concat(Url.getQuery('action', obj.url));
                    }
                  }
                  if (!((reportUrl === '/mp/getappmsgext' || reportUrl === '/mp/getappmsgad') &amp;&amp; typeof resData.base_resp.ret === 'undefined')) {
                    window.WX_BJ_REPORT.BadJs.report(reportUrl, "ret=".concat(resData.base_resp.ret), {
                      mid: window.PAGE_MID,
                      view: 'wap_retcode'
                    });
                  }
                }
              } catch (e) {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 1,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_b = resData === null || resData === void 0 ? void 0 : resData.base_resp) === null || _b === void 0 ? void 0 : _b.ret) || 0
                  });
                }
                console.error(e);
                obj.error &amp;&amp; obj.error(null, {
                  type: 1,
                  error: e,
                  status: res.statusCode
                });
                obj.complete &amp;&amp; obj.complete();
                reqLogItem.endTime = Date.now();
                reqLogItem.response = res;
                networkEndLog(reqLogItem);
                return;
              }
            }
            var tmpResData = {};
            try {
              tmpResData = JSON.parse(res.data);
            } catch (e) {}
            if (tmpResData &amp;&amp; tmpResData.base_resp &amp;&amp; tmpResData.base_resp.ret === -3 &amp;&amp; retryTime &lt; 2 &amp;&amp; (mmVersion.isIOS || mmVersion.isAndroid &amp;&amp; mmVersion.getInner() &gt; '27000600')) {
              if (!obj.dontReport) {
                report36408({
                  CgiPath: urlObj.pathname || '',
                  Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                  Query: urlObj.search || '',
                  PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                  Method: obj.type || '',
                  RequestType: 20,
                  RetType: 1,
                  HttpCode: res.statusCode || 0,
                  Ret: ((_c = resData === null || resData === void 0 ? void 0 : resData.base_resp) === null || _c === void 0 ? void 0 : _c.ret) || 0
                });
              }
              var _retryTime = retryTime++;
              JSAPI.invoke('updatePageAuth', {}, function (res) {
                console.log('[skeleton] updatePageAuth', res);
                monitor$1.setSum(112287, 3, 1);
                if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf(':ok') &gt; -1) {
                  window.top.pass_ticket = encodeURIComponent(Url.getQuery('pass_ticket', res.fullUrl).html(false).replace(/\s/g, '+'));
                  if (obj.pass_ticket) {
                    obj.pass_ticket = window.top.pass_ticket;
                  }
                  console.warn('[skeleton] updatePageAuth resetTopbar');
                  var supportNewTopBar = mmVersion.isIOS &amp;&amp; mmVersion.gtVersion('7.0.10', true);
                  var showBottomBar = !!window.is_login;
                  if (window.top.item_show_type === '0' &amp;&amp; supportNewTopBar) {
                    var top = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop || 0;
                    setCurrentMpInfo(top &gt; 40 &amp;&amp; !showBottomBar);
                  }
                  try {
                    obj.url = Url.addParam(obj.url, 'retry', _retryTime, true);
                  } catch (err) {
                    console.error(err);
                  }
                  jsapiRequest(obj, data);
                  monitor$1.setSum(112287, 4, 1);
                } else {
                  obj.success &amp;&amp; obj.success(resData);
                  obj.complete &amp;&amp; obj.complete();
                  if (mmVersion.isIOS) {
                    monitor$1.setSum(112287, 35, 1);
                  } else {
                    monitor$1.setSum(112287, 36, 1);
                  }
                  reqLogItem.status = 200;
                  reqLogItem.endTime = Date.now();
                  reqLogItem.response = resData;
                  networkEndLog(reqLogItem);
                }
              });
            } else {
              if (((_d = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _d === void 0 ? void 0 : _d.ret) !== 0) {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 4,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_e = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _e === void 0 ? void 0 : _e.ret) || 0
                  });
                }
              } else {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 0,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_f = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _f === void 0 ? void 0 : _f.ret) || 0
                  });
                }
              }
              obj.success &amp;&amp; obj.success(resData);
              obj.complete &amp;&amp; obj.complete();
              reqLogItem.status = 200;
              reqLogItem.endTime = Date.now();
              reqLogItem.response = resData;
              networkEndLog(reqLogItem);
            }
          } else if (res.err_msg.indexOf('no permission') &gt; -1 || !mmVersion.isOnlyWechat) {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                Method: obj.type || '',
                RequestType: 20,
                RetType: 1,
                HttpCode: res.statusCode || 0,
                Ret: 0
              });
            }
            Ajax(obj);
            if (res.err_msg.indexOf('no permission') &gt; -1) {
              console.warn('[JSAPI Request] No permission');
              monitor$1.setSum(112287, 31, 1);
            }
            reqLogItem.status = 302;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = res;
            networkEndLog(reqLogItem);
          } else {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                Method: obj.type || '',
                RequestType: 20,
                RetType: 2,
                HttpCode: res.statusCode || 0,
                Ret: 0
              });
            }
            obj.error &amp;&amp; obj.error(null, {
              type: 3,
              error: res,
              status: 0
            });
            obj.complete &amp;&amp; obj.complete();
            monitor$1.setSum(112287, 32, 1);
            var sample = 0.001;
            if (Math.random() &lt; sample) {
              var msg = "request: ".concat(JSON.stringify(obj.type), " ").concat(JSON.stringify(obj.url), " ;;;; cookie: ").concat(JSON.stringify(document.cookie), " ;;;; data: ").concat(JSON.stringify(data), " ;;;; resp: ").concat(JSON.stringify(res));
              if (window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs) {
                window.WX_BJ_REPORT.BadJs.report('ajax_wx_request_error', msg, {
                  mid: 'mmbizwap:Monitor'
                });
              }
            }
            reqLogItem.status = 400;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = res;
            networkEndLog(reqLogItem);
          }
        });
      };
      if (reqType(obj, '/mp/getappmsgext')) {
        window.startGetAppmsgExtTime = Date.now();
      }
      if (reqType(obj, '/mp/getappmsgad')) {
        window.startGetAppmsgAdTime = Date.now();
      }
      jsapiRequest(obj, data);
    });
  }

  function _regeneratorRuntime() {  _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  var AjaxRouter = function () {
    var _ref = _asyncToGenerator( _regeneratorRuntime().mark(function _callee(obj) {
      return _regeneratorRuntime().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            if (!window.__secPageAuthPromise) {
              _context.next = 3;
              break;
            }
            _context.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            if (!(!mmVersion.isWxWork &amp;&amp; (window.__second_open__ || !getIsAcrossOrigin() &amp;&amp; top.window.__second_open__) &amp;&amp; window.__is_page_auth_return__ &amp;&amp; !obj.pureHttp)) {
              _context.next = 5;
              break;
            }
            return _context.abrupt("return", AjaxWx(obj));
          case 5:
            return _context.abrupt("return", Ajax(obj));
          case 6:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return function AjaxRouter(_x) {
      return _ref.apply(this, arguments);
    };
  }();

  var html = function html(_str, encode) {
    if (!_str) return '';
    var replace = ['&amp;#96;', '`', '&amp;#39;', '\'', '&amp;quot;', '"', '&amp;nbsp;', ' ', '&amp;gt;', '&gt;', '&amp;lt;', '&lt;', '&amp;yen;', '¥', '&amp;amp;', '&amp;', '&amp;#60;', '&lt;', '&amp;#62;', '&gt;'];
    
    var replaceReverse = ['&amp;', '&amp;amp;', '¥', '&amp;yen;', '&lt;', '&amp;lt;', '&gt;', '&amp;gt;', ' ', '&amp;nbsp;', '"', '&amp;quot;', '\'', '&amp;#39;', '`', '&amp;#96;'];
    var str = _str;
    var target;
    if (encode) {
      target = replaceReverse;
    } else {
      target = replace;
    }
    for (var i = 0; i &lt; target.length; i += 2) {
      str = str.replace(new RegExp(target[i], 'g'), target[i + 1]);
    }
    return str;
  };
  var htmlLite = function htmlLite(_str, encode) {
    if (!_str) return '';
    var replace = ['&amp;#96;', '`', '&amp;#39;', '\'', '&amp;quot;', '"', '&amp;gt;', '&gt;', '&amp;lt;', '&lt;', '&amp;amp;', '&amp;'];
    
    var replaceReverse = ['&amp;', '&amp;amp;', '&lt;', '&amp;lt;', '&gt;', '&amp;gt;', '"', '&amp;quot;', '\'', '&amp;#39;', '`', '&amp;#96;'];
    var str = _str;
    var target;
    if (encode) {
      target = replaceReverse;
    } else {
      target = replace;
    }
    for (var i = 0; i &lt; target.length; i += 2) {
      str = str.replace(new RegExp(target[i], 'g'), target[i + 1]);
    }
    return str;
  };
  var htmlEncode = function htmlEncode(str) {
    return html(str, true);
  };
  var htmlDecode = function htmlDecode(str) {
    return html(str, false);
  };
  var htmlEncodeLite = function htmlEncodeLite(str) {
    return htmlLite(str, true);
  };
  var htmlDecodeLite = function htmlDecodeLite(str) {
    return htmlLite(str, false);
  };
  String.prototype.html = function (encode) {
    return html(this.toString(), encode);
  };
  String.prototype.htmlEncode = function () {
    return htmlEncode(this.toString());
  };
  String.prototype.htmlDecode = function () {
    return htmlDecode(this.toString());
  };
  String.prototype.htmlLite = function (encode) {
    return htmlLite(this.toString(), encode);
  };
  String.prototype.htmlEncodeLite = function () {
    return htmlEncodeLite(this.toString());
  };
  String.prototype.htmlDecodeLite = function () {
    return htmlDecodeLite(this.toString());
  };

  var isx5 = navigator.userAgent.indexOf('TBS/') !== -1;
  var getDataFunc = [];
  var reportData = [];
  
  var specificData = {};
  function joinUrl(url) {
    var obj = {};
    if (typeof window.uin !== 'undefined') {
      obj.uin = window.uin;
    }
    if (typeof window.key !== 'undefined') {
      obj.key = window.key;
    }
    if (typeof window.pass_ticket !== 'undefined') {
      obj.pass_ticket = window.pass_ticket;
    }
    if (typeof window.wxtoken !== 'undefined') {
      obj.wxtoken = window.wxtoken;
    }
    if (typeof window.devicetype !== 'undefined') {
      obj.devicetype = window.devicetype;
    }
    if (typeof window.clientversion !== 'undefined') {
      obj.clientversion = window.clientversion;
    }
    if (typeof window.appmsg_token !== 'undefined') {
      obj.appmsg_token = window.appmsg_token;
    } else if (url.indexOf('advertisement_report') &gt; -1) {
      new Image().src = "".concat(location.protocol, "//mp.weixin.qq.com/mp/jsmonitor?idkey=68064_13_1&amp;r=").concat(Math.random());
    }
    obj.x5 = isx5 ? '1' : '0';
    obj.f = 'json';
    return Url.join(url, obj);
  }
  function isObj(obj) {
    return obj &amp;&amp; _typeof(obj) === 'object';
  }
  function assign(target, source) {
    if (isObj(target) &amp;&amp; isObj(source)) {
      for (var key in source) {
        if (Object.prototype.hasOwnProperty.call(source, key)) {
          target[key] = source[key];
        }
      }
    }
  }
  function assembleReportData(initiative) {
    var leaveReportLog = [];
    leaveReportLog.push({
      content: "[LeaveReport] specificData keys: ".concat(Object.keys(specificData)),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] specificData keys: ".concat(Object.keys(specificData)));
    console.log("[LeaveReport] specificData keys: ".concat(Object.keys(specificData)));
    var allReportData = {};
    for (var reportField in specificData) {
      if (!allReportData[reportField]) {
        allReportData[reportField] = {};
      }
      for (var i = 0; i &lt; specificData[reportField].length; i++) {
        var param = specificData[reportField][i];
        if (typeof param === 'function') {
          try {
            assign(allReportData[reportField], param(initiative));
          } catch (err) {
            leaveReportLog.push({
              content: "[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)),
              timestamp: Date.now()
            });
            Log.error("[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)));
            console.error("[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)));
          }
        } else if (isObj(param)) {
          assign(allReportData[reportField], param);
        }
      }
    }
    leaveReportLog.push({
      content: "[LeaveReport] reportData.length: ".concat(reportData.length),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] reportData.length: ".concat(reportData.length));
    console.log("[LeaveReport] reportData.length: ".concat(reportData.length));
    leaveReportLog.push({
      content: "[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length));
    console.log("[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length));
    for (var _i = 0; _i &lt; getDataFunc.length; _i++) {
      try {
        var data = getDataFunc[_i](initiative);
        if (isObj(data)) {
          reportData.push(data);
        }
      } catch (err) {
        leaveReportLog.push({
          content: "[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)),
          timestamp: Date.now()
        });
        Log.error("[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)));
        console.error("[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)));
      }
    }
    for (var _i2 = 0; _i2 &lt; reportData.length; _i2++) {
      if (reportData[_i2].reportUrl) {
        reportData[_i2].reportUrl = joinUrl(reportData[_i2].reportUrl);
      }
    }
    allReportData.data = {
      'requestList': reportData
    };
    leaveReportLog.push({
      content: "[LeaveReport] final reportData.length: ".concat(reportData.length, ", data=").concat(JSON.stringify(reportData)),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] final reportData.length: ".concat(reportData.length));
    console.log("[LeaveReport] final reportData.length: ".concat(reportData.length));
    allReportData.info = leaveReportLog;
    return allReportData;
  }
  function addReport(param) {
    if (typeof param === 'function') {
      getDataFunc.push(param);
    } else if (isObj(param)) {
      reportData.push(param);
    }
  }
  
  function addSpecificReport(reportField, param) {
    if (!specificData[reportField]) {
      specificData[reportField] = [];
    }
    specificData[reportField].push(param);
  }
  
  function reportNow(callback) {
    var allReportData = assembleReportData(true);
    JSAPI.invoke('handleMPPageAction', {
      action: 'reportByLeaveForMPGateway',
      reportData: allReportData
    }, function (res) {
      if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf(':ok') !== -1) {
        getDataFunc = [];
        reportData = [];
        specificData = {};
        typeof callback === 'function' &amp;&amp; callback(res);
      } else {
        getDataFunc = [];
        reportData = [];
        var len = allReportData.data.requestList.length;
        allReportData.data.requestList.forEach(function (req) {
          if (req.reportUrl) {
            AjaxRouter({
              type: req.method || 'GET',
              url: req.reportUrl,
              data: req.reportData,
              async: false,
              success: function success(resp) {
                if (--len &lt; 0) {
                  typeof callback === 'function' &amp;&amp; callback({
                    err_msg: 'handleMPPageAction:ok',
                    fallback: true,
                    resp: resp
                  });
                }
              },
              error: function error(xhr, err) {
                if (--len &lt; 0) {
                  typeof callback === 'function' &amp;&amp; callback({
                    err_msg: 'handleMPPageAction:fail',
                    fallback: true,
                    err: err
                  });
                }
              }
            });
          }
        });
      }
    });
  }
  var leaveReport = {
    reportNow: reportNow,
    addReport: addReport,
    addSpecificReport: addSpecificReport
  };
  var _leaveReport = (function () {
    var doc = {};
    var isCrossOrigin = false;
    try {
      doc = top.window.document;
    } catch (e) {
      isCrossOrigin = true;
    }
    if (!isCrossOrigin &amp;&amp; top.window.__leaveReport) {
      return top.window.__leaveReport;
    }
    if (window.__leaveReport) {
      return window.__leaveReport;
    }
    JSAPI.on('reportOnLeaveForMP', function () {
      return assembleReportData(false);
    });
    return window.__leaveReport = leaveReport;
  })();
  var batchReportDataArr = [];
  var getRepeatedReportJson = function getRepeatedReportJson() {
    if (!batchReportDataArr || !batchReportDataArr.length) return false;
    var reportData = {
      count: 0
    };
    reportData.count = batchReportDataArr.length;
    batchReportDataArr.forEach(function (data, index) {
      reportData["reportjson".concat(index)] = data;
    });
    batchReportDataArr = [];
    console.log('[reportData]: ', reportData);
    return reportData;
  };
  _leaveReport.addReport(function () {
    var repeatedReportJson = getRepeatedReportJson();
    if (!repeatedReportJson) return false;
    var reportData = [];
    for (var _i = 0, _Object$entries = Object.entries(repeatedReportJson); _i &lt; _Object$entries.length; _i++) {
      var _Object_i = _slicedToArray(_Object$entries[_i], 2),
        key = _Object_i[0],
        value = _Object_i[1];
      reportData.push("".concat(key, "=").concat(encodeURIComponent(value)));
    }
    return {
      reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport?action=batch_report',
      reportData: reportData.join('&amp;'),
      method: 'POST'
    };
  });

  
  var isIOS = mmVersion.isIOS,
    isAndroid = mmVersion.isAndroid,
    isHarmonyWechat = mmVersion.isHarmonyWechat,
    compareHexVersion = mmVersion.compareHexVersion;
  var formatReadNum = function formatReadNum(value) {
    if (window.LANG === 'en') {
      return i18n.dealLikeReadShow_en(value);
    }
    var result = '';
    if (parseInt(value, 10) &gt; 100000) {
      result = '10万+';
    } else if (parseInt(value, 10) &gt; 10000 &amp;&amp; parseInt(value, 10) &lt;= 100000) {
      var num = '' + parseInt(value, 10) / 10000;
      var dotIndex = num.indexOf('.');
      if (dotIndex === -1) {
        result = num + '万';
      } else {
        result = num.substr(0, dotIndex) + '.' + num.charAt(dotIndex + 1) + '万';
      }
    } else if (parseInt(value, 10) === 0) {
      result = '';
    } else {
      result = value || '';
    }
    return result;
  };
  var __setTingHeard = function __setTingHeard(container, dom, cnt, isTempUrl) {
    if (!dom || isTempUrl) {
      dom &amp;&amp; dom.parentNode.removeChild(dom);
      return;
    }
    if (isIOS &amp;&amp; mmVersion.compareHexVersion('18002622') || isAndroid &amp;&amp; mmVersion.compareHexVersion('2800253A') || isHarmonyWechat &amp;&amp; compareHexVersion('0xf3100b00') &amp;&amp; !compareHexVersion('0xf3100c00') || compareHexVersion('0xf3800b00') || isSupportTing()) {
      if (cnt &gt; 100000) {
        dom.innerText = "".concat(formatReadNum(cnt), "");
        dom.setAttribute('aria-labelledby', 'js_ting_heard js_a11y_op_ting_heard');
      } else if (cnt &gt; 0) {
        dom.innerText = "".concat(formatReadNum(cnt), "人");
        dom.setAttribute('aria-labelledby', 'js_ting_heard js_a11y_op_ting_heard');
      } else {
        dom.innerText = "听全文";
        dom.setAttribute('aria-labelledby', 'js_ting_heard');
      }
      dom.style.removeProperty('display');
      window.__hasClickedAudioPanelHandler = function () {
        window.__hasClickedAudioPanel = true;
      };
      dom.addEventListener('click', window.__hasClickedAudioPanelHandler);
    } else {
      dom.parentNode.removeChild(dom);
    }
  };
  if (!window.__second_open__) {
    var tempkey = window.tempkey || '';
    var tingHeardDom = document.querySelector('#js_ting_heard');
    document.querySelector('#js_a11y_op_ting_heard');
    var tingIsShow = (window.tts_is_show || '') &amp;&amp; !(window.noneed_tts || '' === '1');
    var tingHeardCnt = window.tts_heard_person_cnt || '';
    console.log('tingIsShow, tingHeardCnt', tingIsShow, tingHeardCnt);
    !!(tingIsShow * 1) &amp;&amp; __setTingHeard(document.querySelector('#js_content'), tingHeardDom, tingHeardCnt * 1, !!tempkey);
    window.__setTingHeard = __setTingHeard;
  }

  return __setTingHeard;

})();
  &lt;/script&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   var __INLINE_SCRIPT__ = (function (exports) {
  'use strict';

  function _typeof(obj) {
    "@babel/helpers - typeof";

    return _typeof = "function" == typeof Symbol &amp;&amp; "symbol" == typeof Symbol.iterator ? function (obj) {
      return typeof obj;
    } : function (obj) {
      return obj &amp;&amp; "function" == typeof Symbol &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj;
    }, _typeof(obj);
  }

  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
    try {
      var info = gen[key](arg);
      var value = info.value;
    } catch (error) {
      reject(error);
      return;
    }
    if (info.done) {
      resolve(value);
    } else {
      Promise.resolve(value).then(_next, _throw);
    }
  }
  function _asyncToGenerator(fn) {
    return function () {
      var self = this,
        args = arguments;
      return new Promise(function (resolve, reject) {
        var gen = fn.apply(self, args);
        function _next(value) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
        }
        function _throw(err) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
        }
        _next(undefined);
      });
    };
  }

  function _regeneratorRuntime$1() {  _regeneratorRuntime$1 = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  
  var doc$1 = {};
  var isAcrossOrigin$1 = false;
  var notFoundedMPPageAction = [];
  var __moon_report$1 = window.__moon_report || function () {};
  var MOON_JSAPI_KEY_OFFSET = 8;
  try {
    doc$1 = top.window.document;
  } catch (e) {
    isAcrossOrigin$1 = true;
  }
  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }
  function ready(onBridgeReady) {
    var bridgeReady = function bridgeReady() {
      try {
        if (onBridgeReady) {
          window.onBridgeReadyTime = window.onBridgeReadyTime || Date.now();
          onBridgeReady();
        }
      } catch (e) {
        __moon_report$1([{
          offset: MOON_JSAPI_KEY_OFFSET,
          log: 'ready',
          e: e
        }]);
        throw e;
      }
      window.jsapiReadyTime = Date.now();
    };
    if (!isAcrossOrigin$1 &amp;&amp; (typeof top.window.WeixinJSBridge === 'undefined' || !top.window.WeixinJSBridge.invoke)) {
      if (doc$1.addEventListener) {
        doc$1.addEventListener('WeixinJSBridgeReady', bridgeReady, false);
      } else if (doc$1.attachEvent) {
        doc$1.attachEvent('WeixinJSBridgeReady', bridgeReady);
        doc$1.attachEvent('onWeixinJSBridgeReady', bridgeReady);
      }
    } else {
      bridgeReady();
    }
  }
  var invokeNotWaitA8key = ['notifyPageInfo', 'updatePageAuth'
  ];
  var checkNotFoundedInvoke = function checkNotFoundedInvoke(methodName, args) {
    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; notFoundedMPPageAction.includes(args === null || args === void 0 ? void 0 : args.action)) {
      return true;
    }
    return false;
  };
  function invoke$1(_x, _x2, _x3) {
    return _invoke.apply(this, arguments);
  }
  function _invoke() {
    _invoke = _asyncToGenerator( _regeneratorRuntime$1().mark(function _callee(methodName, args, callback) {
      return _regeneratorRuntime$1().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__ &amp;&amp; !invokeNotWaitA8key.includes(methodName))) {
              _context.next = 3;
              break;
            }
            _context.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin$1) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                alert('请在微信中打开此链接');
                return false;
              }
              if (checkNotFoundedInvoke(methodName, args)) {
                setTimeout(function () {
                  if (callback) {
                    callback.apply(window, [{
                      err_msg: "".concat(methodName, ":fail"),
                      err_desc: 'action isn\'t supported'
                    }]);
                  }
                }, 0);
              } else {
                top.window.WeixinJSBridge.invoke(methodName, args, function () {
                  try {
                    for (var _len2 = arguments.length, rets = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
                      rets[_key2] = arguments[_key2];
                    }
                    var ret = rets[0];
                    var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
                    if (['handleMPPageAction', 'handleVideoAction', 'handleHaokanAction'].indexOf(methodName) !== -1) {
                      var action = (args === null || args === void 0 ? void 0 : args.action) || '';
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName, ", action-&gt;").concat(action).concat(errMsg));
                    } else {
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName).concat(errMsg));
                    }
                    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; ((ret === null || ret === void 0 ? void 0 : ret.err_desc) === 'action isn\'t supported' || (ret === null || ret === void 0 ? void 0 : ret.err_msg) === 'handleMPPageAction:fail action is not supported')) {
                      notFoundedMPPageAction.push(args === null || args === void 0 ? void 0 : args.action);
                    }
                    if (callback) {
                      callback.apply(window, rets);
                    }
                  } catch (e) {
                    __moon_report$1([{
                      offset: MOON_JSAPI_KEY_OFFSET,
                      log: "invoke;methodName:".concat(methodName),
                      e: e
                    }]);
                    throw e;
                  }
                });
              }
            });
          case 4:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return _invoke.apply(this, arguments);
  }
  function call(_x4) {
    return _call.apply(this, arguments);
  }
  function _call() {
    _call = _asyncToGenerator( _regeneratorRuntime$1().mark(function _callee2(methodName) {
      return _regeneratorRuntime$1().wrap(function _callee2$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__)) {
              _context2.next = 3;
              break;
            }
            _context2.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin$1) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                return false;
              }
              try {
                top.window.WeixinJSBridge.call(methodName);
              } catch (e) {
                __moon_report$1([{
                  offset: MOON_JSAPI_KEY_OFFSET,
                  log: "call;methodName:".concat(methodName),
                  e: e
                }]);
                throw e;
              }
            });
          case 4:
          case "end":
            return _context2.stop();
        }
      }, _callee2);
    }));
    return _call.apply(this, arguments);
  }
  function on(eventName, callback) {
    ready(function () {
      if (isAcrossOrigin$1) return false;
      if (_typeof(top.window.WeixinJSBridge) !== 'object' || !top.window.WeixinJSBridge.on) {
        return false;
      }
      if (!window.JSAPIEventCallbackMap[eventName]) {
        window.JSAPIEventCallbackMap[eventName] = [];
      }
      window.JSAPIEventCallbackMap[eventName].push(callback);
      if (window.JSAPIEventCallbackMap[eventName].length &gt; 1) {
        return false;
      }
      top.window.WeixinJSBridge.on(eventName, function () {
        try {
          for (var _len = arguments.length, rets = new Array(_len), _key = 0; _key &lt; _len; _key++) {
            rets[_key] = arguments[_key];
          }
          var ret = rets[0];
          var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
          console.info('[system]', "[jsapi] event-&gt;".concat(eventName).concat(errMsg));
          if (window.JSAPIEventCallbackMap[eventName] &amp;&amp; window.JSAPIEventCallbackMap[eventName].length) {
            var result;
            for (var i = 0; i &lt; window.JSAPIEventCallbackMap[eventName].length; i++) {
              result = window.JSAPIEventCallbackMap[eventName][i].apply(window, rets);
            }
            return result;
          }
        } catch (e) {
          __moon_report$1([{
            offset: MOON_JSAPI_KEY_OFFSET,
            log: "on;eventName:".concat(eventName),
            e: e
          }]);
          throw e;
        }
      });
    });
  }
  function remove(eventName, callback) {
    ready(function () {
      if (!window.JSAPIEventCallbackMap[eventName]) {
        return false;
      }
      var result = false;
      for (var i = window.JSAPIEventCallbackMap[eventName].length - 1; i &gt;= 0; i--) {
        if (window.JSAPIEventCallbackMap[eventName][i] === callback) {
          window.JSAPIEventCallbackMap[eventName].splice(i, 1);
          result = true;
        }
      }
      return result;
    });
  }
  var JSAPI = {
    ready: ready,
    invoke: invoke$1,
    call: call,
    on: on,
    remove: remove
  };

  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" &amp;&amp; o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$1(o)) || allowArrayLike &amp;&amp; o &amp;&amp; typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i &gt;= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion &amp;&amp; it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
  function _unsupportedIterableToArray$1(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$1(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen); }
  function _arrayLikeToArray$1(arr, len) { if (len == null || len &gt; arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i]; return arr2; }
  
  
  var ua = navigator.userAgent;
  var is_ios = /(iPhone|iPad|iPod|iOS)/i.test(ua);
  var is_wp = /Windows\sPhone/i.test(ua);
  var is_android = /(Android)/i.test(ua);
  var is_wechat = /MicroMessenger\/([\d\.]+)/i.test(ua);
  var is_mac = /mac\sos/i.test(ua) &amp;&amp; !is_ios;
  var is_windows = /windows\snt/i.test(ua) &amp;&amp; !is_wp;
  var is_mpapp = /MPAPP\/([\d\.]+)/i.test(ua);
  var is_ipad = /iPad/i.test(ua);
  var is_windows_wechat = /WindowsWechat/i.test(ua);
  var is_mac_wechat = /MacWechat/i.test(ua) || /wechat.*mac os/i.test(ua);
  var is_prefetch = is_wechat &amp;&amp; window.WeixinPrefecherJSBridge;
  var is_donut_app = /SAAASDK/i.test(ua);
  var is_harmony = /OpenHarmony|ArkWeb/i.test(ua);
  var is_linux = /Linux\s/i.test(ua);
  var xweb_match = ua.match(/XWEB\/([\d.]+)/i);
  var xweb_version = xweb_match &amp;&amp; xweb_match[1] ? parseInt(xweb_match[1], 10) : 0;
  var is_unified_pc_wechat = /UnifiedPC\w+Wechat/i.test(ua);
  var is_in_miniProgram = is_android &amp;&amp; /miniprogram/.test(ua.toLowerCase()) || window.__wxjs_environment == 'miniprogram';
  var is_wx_work = /wxwork/i.test(ua);
  function getUrlParams() {
    var vars = location.search.substring(1).split('&amp;');
    var params = {};
    var _iterator = _createForOfIteratorHelper(vars),
      _step;
    try {
      for (_iterator.s(); !(_step = _iterator.n()).done;) {
        var ele = _step.value;
        var pair = ele.split('=');
        var key = decodeURIComponent(pair[0]);
        if (typeof params[key] === 'undefined') {
          params[key] = decodeURIComponent(pair[1]);
        }
      }
    } catch (err) {
      _iterator.e(err);
    } finally {
      _iterator.f();
    }
    return params;
  }
  function get() {
    var reg = /MicroMessenger\/([\d\.]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMac() {
    var reg = /MacWechat\/([\d\.]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMacOS() {
    var reg = /Mac OS X ([\d_]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1].replace(/_/g, '.');
    }
    return false;
  }
  function getWindows() {
    var reg = /WindowsWechat\(0x(.+?)\)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getWxWork() {
    var reg = /wxwork\/([\d\.]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMpApp() {
    var appVersion = [2, 4, 5];
    var match = navigator.userAgent.match(/MPAPP\/(\d+(\.\d+)*)/);
    if (match) {
      appVersion = match[1].split('.').map(function (v) {
        return Number(v);
      });
    }
    return appVersion.join('.');
  }
  function getUnifiedPcVer() {
    var versionInfo = navigator.userAgent.match(/UnifiedPC\w+Wechat\(0xf\w{2}(\w+?)\w{2}\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(0, 1));
      var subVersion = getVersionNumber(version.slice(1, 2));
      var subVersion2 = getVersionNumber(version.slice(2, 3));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
  }
  function getVersionNumber(hexStr) {
    return Number(Number("0x".concat(hexStr)).toString(10));
  }
  function getWindowsVersionFormat() {
    var versionInfo = navigator.userAgent.match(/WindowsWechat\(0x(\w+?)\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(1, 2));
      var subVersion = getVersionNumber(version.slice(2, 4));
      var subVersion2 = getVersionNumber(version.slice(4, 6));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
    return false;
  }
  function getInner() {
    var reg = /MicroMessenger\/[\d\.]+\(0x(.+?)\)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1] &amp;&amp; ret[1] != null) {
      return ret[1];
    }
    if (!ret &amp;&amp; /MicroMessenger\/[\d\.]+/i.test(ua)) {
      var urlParams = getUrlParams();
      if (urlParams.version) {
        return urlParams.version;
      }
    }
    return false;
  }
  var opfunc = {
    'cp-1': function cp1(a, b) {
      return a &lt; b;
    },
    cp0: function cp0(a, b) {
      return a === b;
    },
    cp1: function cp1(a, b) {
      return a &gt; b;
    }
  };
  function cpVersion(ver, op, canEq, type) {
    var mmver = false;
    switch (type) {
      case 'mac':
        mmver = getMac();
        break;
      case 'windows':
        mmver = getWindowsVersionFormat();
        break;
      case 'wxwork':
        mmver = getWxWork();
        break;
      case 'mpapp':
        mmver = getMpApp();
        break;
      case 'unifiedpc':
        mmver = getUnifiedPcVer();
        break;
      default:
        mmver = get();
        break;
    }
    if (!mmver) {
      return;
    }
    var mmversion = mmver.split('.');
    var version = ver.split('.');
    if (!/\d+/g.test(mmversion[mmversion.length - 1])) {
      mmversion.pop();
    }
    for (var i = 0, len = Math.max(mmversion.length, version.length); i &lt; len; ++i) {
      var mmv = mmversion[i] || '';
      var v = version[i] || '';
      var mmvn = parseInt(mmv, 10) || 0;
      var vn = parseInt(v, 10) || 0;
      var eq = opfunc.cp0(mmvn, vn);
      if (eq) {
        continue;
      }
      var cp = opfunc["cp".concat(op)];
      return cp(mmvn, vn);
    }
    return canEq || op === 0;
  }
  function eqVersion(version) {
    return cpVersion(version, 0);
  }
  function gtVersion(version, canEq) {
    return cpVersion(version, 1, canEq);
  }
  function ltVersion(version, canEq) {
    return cpVersion(version, -1, canEq);
  }
  function getPlatform() {
    if (is_ios) {
      return 'ios';
    }
    if (is_android) {
      return 'android';
    }
    if (is_mac) {
      return 'mac_os';
    }
    if (is_windows) {
      return 'windows';
    }
    return 'unknown';
  }
  var is_google_play = false;
  var inner_ver_for_google_play_check = getInner();
  if (is_android &amp;&amp; inner_ver_for_google_play_check) {
    var v = "0x".concat(inner_ver_for_google_play_check.substr(-2));
    if (parseInt(v) &gt;= 64 &amp;&amp; parseInt(v) &lt;= 79) {
      is_google_play = true;
    }
  }
  function compareHexVersion(hexNum) {
    var innerVersion = getInner();
    if (innerVersion &amp;&amp; hexNum) {
      if (typeof hexNum === 'string') {
        hexNum = parseInt(hexNum, 16);
      }
      var version = parseInt(innerVersion, 16);
      return version &gt;= hexNum;
    }
    return false;
  }
  var mmVersion = {
    get: get,
    getMac: getMac,
    getMacOS: getMacOS,
    getWindows: getWindows,
    getInner: getInner,
    getWxWork: getWxWork,
    getMpApp: getMpApp,
    cpVersion: cpVersion,
    eqVersion: eqVersion,
    gtVersion: gtVersion,
    ltVersion: ltVersion,
    getPlatform: getPlatform,
    getVersionNumber: getVersionNumber,
    isWp: is_wp,
    isIOS: is_ios,
    isAndroid: is_android,
    isHarmony: is_harmony,
    isHarmonyWechat: is_harmony &amp;&amp; is_wechat &amp;&amp; cpVersion('1.0.0', 1, true),
    isInMiniProgram: is_in_miniProgram,
    isWechat: is_wechat,
    isMac: is_mac,
    isWindows: is_windows,
    isLinux: is_linux,
    isMacWechat: is_mac_wechat,
    isWindowsWechat: is_windows_wechat,
    isWxWork: is_wx_work,
    isOnlyWechat: is_wechat &amp;&amp; !is_wx_work,
    isMpapp: is_mpapp,
    isIPad: is_ipad,
    isGooglePlay: is_google_play,
    isPrefetch: is_prefetch,
    isDonutAPP: is_donut_app,
    compareHexVersion: compareHexVersion,
    isPcWechat: is_windows_wechat || is_mac_wechat,
    xwebVersion: xweb_version,
    isUnifiedPcWechat: is_unified_pc_wechat
  };

  function _arrayWithHoles(arr) {
    if (Array.isArray(arr)) return arr;
  }

  function _iterableToArrayLimit(arr, i) {
    var _i = null == arr ? null : "undefined" != typeof Symbol &amp;&amp; arr[Symbol.iterator] || arr["@@iterator"];
    if (null != _i) {
      var _s,
        _e,
        _x,
        _r,
        _arr = [],
        _n = !0,
        _d = !1;
      try {
        if (_x = (_i = _i.call(arr)).next, 0 === i) {
          if (Object(_i) !== _i) return;
          _n = !1;
        } else for (; !(_n = (_s = _x.call(_i)).done) &amp;&amp; (_arr.push(_s.value), _arr.length !== i); _n = !0);
      } catch (err) {
        _d = !0, _e = err;
      } finally {
        try {
          if (!_n &amp;&amp; null != _i["return"] &amp;&amp; (_r = _i["return"](), Object(_r) !== _r)) return;
        } finally {
          if (_d) throw _e;
        }
      }
      return _arr;
    }
  }

  function _arrayLikeToArray(arr, len) {
    if (len == null || len &gt; arr.length) len = arr.length;
    for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i];
    return arr2;
  }

  function _unsupportedIterableToArray(o, minLen) {
    if (!o) return;
    if (typeof o === "string") return _arrayLikeToArray(o, minLen);
    var n = Object.prototype.toString.call(o).slice(8, -1);
    if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name;
    if (n === "Map" || n === "Set") return Array.from(o);
    if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
  }

  function _nonIterableRest() {
    throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }

  function _slicedToArray(arr, i) {
    return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
  }

  function _toPrimitive(input, hint) {
    if (_typeof(input) !== "object" || input === null) return input;
    var prim = input[Symbol.toPrimitive];
    if (prim !== undefined) {
      var res = prim.call(input, hint || "default");
      if (_typeof(res) !== "object") return res;
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return (hint === "string" ? String : Number)(input);
  }

  function _toPropertyKey(arg) {
    var key = _toPrimitive(arg, "string");
    return _typeof(key) === "symbol" ? key : String(key);
  }

  function _defineProperty(obj, key, value) {
    key = _toPropertyKey(key);
    if (key in obj) {
      Object.defineProperty(obj, key, {
        value: value,
        enumerable: true,
        configurable: true,
        writable: true
      });
    } else {
      obj[key] = value;
    }
    return obj;
  }

  
  
  var Device = {};
  function detect(ua) {
    var MQQBrowser = ua.match(/MQQBrowser\/(\d+\.\d+)/i);
    var MQQClient = ua.match(/QQ\/(\d+\.(\d+)\.(\d+)\.(\d+))/i) || ua.match(/V1_AND_SQ_([\d\.]+)/);
    var WeChat = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/) || ua.match(/MicroMessenger\/((\d+)\.(\d+))/);
    var MacOS = ua.match(/Mac\sOS\sX\s(\d+[\.|_]\d+)/);
    var WinOS = ua.match(/Windows(\s+\w+)?\s+?(\d+\.\d+)/);
    var Linux = ua.match(/Linux\s/);
    var MiuiBrowser = ua.match(/MiuiBrowser\/(\d+\.\d+)/i);
    var M1 = ua.match(/MI-ONE/);
    var MIPAD = ua.match(/MI PAD/);
    var UC = ua.match(/UCBrowser\/(\d+\.\d+(\.\d+\.\d+)?)/) || ua.match(/\sUC\s/);
    var IEMobile = ua.match(/IEMobile(\/|\s+)(\d+\.\d+)/) || ua.match(/WPDesktop/);
    var ipod = ua.match(/(ipod).*\s([\d_]+)/i);
    var ipad = ua.match(/(ipad).*\s([\d_]+)/i);
    var iphone = ua.match(/(iphone)\sos\s([\d_]+)/i);
    var Chrome = ua.match(/Chrome\/(\d+\.\d+)/);
    var AndriodBrowser = ua.match(/Mozilla.*Linux.*Android.*AppleWebKit.*Mobile Safari/);
    var android = ua.match(/(android)\s([\d\.]+)/i);
    var harmony = ua.match(/(OpenHarmony)\s([\d\.]+)/i);
    Device.browser = Device.browser || {}, Device.os = Device.os || {};
    Device.os.type = -1;
    Device.os.unifiedPC = ua.match(/UnifiedPC/);
    Device.os.unifiedMac = /UnifiedPCMac/i.test(ua);
    Device.os.unifiedWindows = /UnifiedPCWindows/i.test(ua);
    if (window.ActiveXObject) {
      var vie = 6;
      (window.XMLHttpRequest || ua.indexOf('MSIE 7.0') &gt; -1) &amp;&amp; (vie = 7);
      (window.XDomainRequest || ua.indexOf('Trident/4.0') &gt; -1) &amp;&amp; (vie = 8);
      ua.indexOf('Trident/5.0') &gt; -1 &amp;&amp; (vie = 9);
      ua.indexOf('Trident/6.0') &gt; -1 &amp;&amp; (vie = 10);
      Device.browser.ie = true, Device.browser.version = vie;
    } else if (ua.indexOf('Trident/7.0') &gt; -1) {
      Device.browser.ie = true, Device.browser.version = 11;
    }
    if (android) {
      Device.os.android = true;
      Device.os.version = android[2];
      Device.os.type = 2;
    }
    if (harmony) {
      Device.os.harmony = true;
      Device.os.version = harmony[2];
      Device.os.type = 42;
    }
    if (ipod) {
      Device.os.ios = Device.os.ipod = true;
      Device.os.version = ipod[2].replace(/_/g, '.');
    }
    if (ipad) {
      Device.os.ios = Device.os.ipad = true;
      Device.os.version = ipad[2].replace(/_/g, '.');
      Device.os.type = 13;
    }
    if (iphone) {
      Device.os.iphone = Device.os.ios = true;
      Device.os.version = iphone[2].replace(/_/g, '.');
      Device.os.type = 1;
    }
    if (WinOS) Device.os.windows = true, Device.os.version = WinOS[2], Device.os.type = 15;
    if (MacOS) Device.os.Mac = true, Device.os.version = MacOS[1], Device.os.type = 14;
    if (Linux) Device.os.Linux = true, Device.os.type = 33;
    if (ua.indexOf('lepad_hls') &gt; 0) Device.os.LePad = true;
    if (MIPAD) Device.os.MIPAD = true;
    if (MQQBrowser) Device.browser.MQQ = true, Device.browser.version = MQQBrowser[1];
    if (MQQClient) Device.browser.MQQClient = true, Device.browser.version = MQQClient[1];
    if (WeChat) Device.browser.WeChat = true, Device.browser.mmversion = Device.browser.version = WeChat[1];
    if (MiuiBrowser) Device.browser.MIUI = true, Device.browser.version = MiuiBrowser[1];
    if (UC) Device.browser.UC = true, Device.browser.version = UC[1] || NaN;
    if (IEMobile) Device.browser.IEMobile = true, Device.browser.version = IEMobile[2];
    if (AndriodBrowser) {
      Device.browser.AndriodBrowser = true;
    }
    if (M1) {
      Device.browser.M1 = true;
    }
    if (Chrome) {
      Device.browser.Chrome = true, Device.browser.version = Chrome[1];
    }
    if (Device.os.windows) {
      if (typeof navigator.platform !== "undefined" &amp;&amp; navigator.platform.toLowerCase() == "win64") {
        Device.os.win64 = true;
      } else {
        Device.os.win64 = false;
      }
    }
    if (Device.os.Mac || Device.os.windows || Device.os.Linux || Device.os.unifiedPC || /OpenHarmony/i.test(ua) &amp;&amp; /pc/i.test(ua)) {
      Device.os.pc = true;
    }
    var osType = {
      iPad7: 'iPad; CPU OS 7',
      LePad: 'lepad_hls',
      XiaoMi: 'MI-ONE',
      SonyDTV: "SonyDTV",
      SamSung: 'SAMSUNG',
      HTC: 'HTC',
      VIVO: 'vivo'
    };
    for (var os in osType) {
      Device.os[os] = ua.indexOf(osType[os]) !== -1;
    }
    Device.os.phone = Device.os.phone || /windows phone/i.test(ua);
    Device.os.getNumVersion = function () {
      return parseFloat(Device.os.version);
    };
    Device.os.hasTouch = 'ontouchstart' in window;
    if (Device.os.hasTouch &amp;&amp; Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 6) {
      Device.os.hasTouch = false;
    }
    if (Device.browser.WeChat &amp;&amp; Device.browser.version &lt; 5.0) {
      Device.os.hasTouch = false;
    }
    Device.browser.getNumVersion = function () {
      return parseFloat(Device.browser.version);
    };
    Device.browser.isFFCanOcx = function () {
      return !!Device.browser.firefox &amp;&amp; Device.browser.getNumVersion() &gt;= 3.0;
    };
    Device.browser.isCanOcx = function () {
      return !!Device.os.windows &amp;&amp; (!!Device.browser.ie || Device.browser.isFFCanOcx() || !!Device.browser.webkit);
    };
    Device.browser.isNotIESupport = function () {
      return !!Device.os.windows &amp;&amp; (!!Device.browser.webkit || Device.browser.isFFCanOcx());
    };
    Device.userAgent = {};
    Device.userAgent.browserVersion = Device.browser.version;
    Device.userAgent.osVersion = Device.os.version;
    if (Device.os.unifiedPC) {
      if (Device.os.unifiedWindows) Device.os.type = 37;else if (Device.os.unifiedMac) Device.os.type = 38;else Device.os.type = 39;
    }
    delete Device.userAgent.version;
  }
  detect(window.navigator.userAgent);
  function canSupportH5Video() {
    var ua = window.navigator.userAgent,
      m = null;
    if (!!Device.os.android) {
      if (Device.browser.MQQ &amp;&amp; Device.browser.getNumVersion() &gt;= 4.2) {
        return true;
      }
      if (ua.indexOf('MI2') != -1) {
        return true;
      }
      if (Device.os.version &gt;= '4' &amp;&amp; (m = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/))) {
        if (parseFloat(m[1]) &gt;= 4.2) {
          return true;
        }
      }
      if (Device.os.version &gt;= '4.1') {
        return true;
      }
    }
    return false;
  }
  function canSupportVideoMp4() {
    var video = document.createElement('video');
    if (typeof video.canPlayType === 'function') {
      if (video.canPlayType('video/mp4; codecs="mp4v.20.8"') === 'probably') {
        return true;
      }
      if (video.canPlayType('video/mp4; codecs="avc1.42E01E"') === 'probably' || video.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"') === 'probably') {
        return true;
      }
    }
    return false;
  }
  function canSupportAutoPlay() {
    if (Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 10) {
      return false;
    }
    return true;
  }
  function isLockdownMode() {
    if (!Device.os.ios || Device.os.getNumVersion() &lt; 16) {
      return false;
    }
    if (typeof WebAssembly === 'undefined' &amp;&amp; typeof OfflineAudioContext === 'undefined' &amp;&amp; typeof WebGLRenderingContext === 'undefined') {
      return true;
    }
    return false;
  }
  Device.canSupportVideo = canSupportVideoMp4 || canSupportH5Video;
  Device.canSupportVideoMp4 = canSupportVideoMp4;
  Device.canSupportH5Video = canSupportH5Video;
  Device.canSupportAutoPlay = canSupportAutoPlay;
  Device.isLockdownMode = isLockdownMode;
  
  Device.cpVersion = function (version) {
    var cp = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 0;
    var canEqual = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    var nowVersionStr = Device.os.version;
    if (!nowVersionStr) return false;
    var versionArr = version.split('.');
    var nowVersionArr = nowVersionStr.split('.');
    for (var i = 0; i &lt; Math.max(nowVersionArr.length, versionArr.length); i++) {
      var vi = +versionArr[i];
      var nvi = +nowVersionArr[i];
      if (vi === nvi) continue;
      if (cp &gt; 0) return vi &gt; nvi;
      if (cp &lt; 0) return vi &lt; nvi;
    }
    return canEqual || cp === 0;
  };

  var initJsBridge = false;
  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }
  function connectWebViewJavascriptBridge(callback) {
    if (window.WebViewMPapp || window.WebViewJavascriptBridge) {
      return callback(window.WebViewMPapp || window.WebViewJavascriptBridge);
    }
    if (window.WVJBCallbacks) {
      return window.WVJBCallbacks.push(callback);
    }
    window.WVJBCallbacks = [callback];
    if (!mmVersion.isMpapp) {
      return false;
    }
    if (!initJsBridge) {
      initJsBridge = true;
      var WVJBIframe = document.createElement('iframe');
      WVJBIframe.style.display = 'none';
      WVJBIframe.src = 'https://__bridge_loaded__';
      document.body.appendChild(WVJBIframe);
      setTimeout(function () {
        initJsBridge = false;
        document.body.removeChild(WVJBIframe);
      }, 0);
    }
    return false;
  }
  function invoke(jsapiName, opt, callback) {
    connectWebViewJavascriptBridge(function (bridge) {
      try {
        if (typeof opt === 'function') {
          callback = opt;
        }
        if (_typeof(opt) !== 'object' &amp;&amp; typeof opt !== 'string') {
          opt = {};
        }
        bridge.callHandler(jsapiName, opt, function (res) {
          try {
            var ret = _typeof(res) === 'object' ? res : JSON.parse(res);
            var errMsg = ret.err_msg || ret.errMsg;
            console.info("[mpapp jsapi] invoke-&gt;".concat(jsapiName, " ").concat(opt.action || '', " ").concat(errMsg));
            typeof callback === 'function' &amp;&amp; callback(ret);
          } catch (e) {
            window.WX_BJ_REPORT.BadJs.report('invoke', "callback ".concat(jsapiName, " error:"), {
              mid: 'mmbizwebapp:js_brridge',
              _info: e
            });
            console.error("[mpapp jsapi] ".concat(jsapiName, " ").concat(opt.action || ''), e, res);
          }
        });
      } catch (e) {
        window.WX_BJ_REPORT.BadJs.report('invoke', 'callback error:', {
          mid: 'mmbizwebapp:js_brridge',
          _info: e
        });
        console.error('[mpapp jsapi]', e);
      }
    });
  }

  
  function _log(level, msg) {
    if (level === 'log') {
      level = 'info';
      msg = "[WechatFe]".concat(msg);
    } else {
      var prefix = "__wap__".concat(window.__second_open__ ? ' (sec)' : '');
      msg = "".concat(prefix, " ").concat(msg, " location:[").concat(location.href, "]");
    }
    msg += new Error().stack;
    if (mmVersion.isMpapp) {
      invoke('WNNativeCallbackLog', msg);
    } else if (mmVersion.isWechat) {
      if (mmVersion.isAndroid) {
        console.warn('[system]', "[MicroMsg.JsApiLog][".concat(level, "] jslog : ").concat(msg));
      } else if (mmVersion.isIOS) {
        JSAPI.invoke('writeLog', {
          level: level,
          msg: msg
        });
      } else {
        JSAPI.invoke('log', {
          level: level,
          msg: msg
        });
      }
    }
  }
  var Log = {
    info: function info() {
      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key &lt; _len; _key++) {
        args[_key] = arguments[_key];
      }
      _log('info', args.join(' '));
    },
    warn: function warn() {
      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
        args[_key2] = arguments[_key2];
      }
      _log('warn', args.join(' '));
    },
    error: function error() {
      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 &lt; _len3; _key3++) {
        args[_key3] = arguments[_key3];
      }
      _log('error', args.join(' '));
    },
    debug: function debug() {
      for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 &lt; _len4; _key4++) {
        args[_key4] = arguments[_key4];
      }
      _log('debug', args.join(' '));
    },
    log: function log() {
      for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 &lt; _len5; _key5++) {
        args[_key5] = arguments[_key5];
      }
      _log('info', args.join(' '));
    }
  };

  
  
  var reportLogs = [];
  var reportExtraLogs = [];
  var sendUrl = '/mp/jsmonitor?#wechat_redirect';
  var monitor = {};
  monitor._reportOptions = {
    idkey: {}
  };
  function ObjWithoutProperty(source, exclude) {
    if (source === null) return {};
    var target = {};
    var sourceKeys = Object.keys(source);
    for (var i = 0; i &lt; sourceKeys.length; i++) {
      var key = sourceKeys[i];
      if (exclude.indexOf(key) &gt;= 0) continue;
      target[key] = source[key];
    }
    return target;
  }
  function formatDataToString(data) {
    var reportData = [];
    for (var key in data) {
      if (Object.prototype.hasOwnProperty.call(data, key)) {
        reportData.push(key + '=' + encodeURIComponent(data[key]));
      }
    }
    return reportData.join('&amp;');
  }
  monitor.getReportData = function (opt) {
    opt = opt || {};
    var idkey = monitor._reportOptions.idkey || {};
    var key = null;
    var reportData = {};
    var nextKey;
    try {
      for (key in idkey) {
        if (Object.prototype.hasOwnProperty.call(idkey, key) &amp;&amp; idkey[key]) {
          reportLogs.push(key + '_' + idkey[key]);
        }
      }
    } catch (e) {
      return false;
    }
    if (reportLogs.length === 0) {
      return false;
    }
    if (reportExtraLogs.length) {
      reportData.lc = reportExtraLogs.length;
      reportExtraLogs.forEach(function (extraLog, index) {
        reportData["log".concat(index)] = extraLog;
      });
    }
    try {
      var reportOptions = monitor._reportOptions;
      if (reportOptions !== null &amp;&amp; reportOptions !== undefined) {
        for (nextKey in reportOptions) {
          if (Object.prototype.hasOwnProperty.call(reportOptions, nextKey)) {
            reportData[nextKey] = reportOptions[nextKey];
          }
        }
      }
    } catch (e) {
      reportData = {};
    }
    reportData.idkey = reportLogs.join(';');
    reportData.t = Math.random();
    if (opt.remove !== false) {
      reportLogs = [];
      reportExtraLogs = [];
      monitor._reportOptions = {
        idkey: {}
      };
    }
    return reportData;
  };
  monitor.setLogs = function (opt) {
    var id = opt.id;
    var key = opt.key;
    var value = opt.value;
    var extraLog = opt.log;
    var others = ObjWithoutProperty(opt, ['id', 'key', 'value', 'log']);
    var idkey = monitor._reportOptions.idkey || {};
    var param = id + '_' + key;
    if (idkey[param]) {
      idkey[param] += value;
    } else {
      idkey[param] = value;
    }
    monitor._reportOptions.idkey = idkey;
    if (extraLog) {
      reportExtraLogs.push(extraLog);
    }
    try {
      if (others !== null &amp;&amp; others !== undefined) {
        for (var otherKey in others) {
          if (Object.prototype.hasOwnProperty.call(others, otherKey)) {
            monitor._reportOptions[otherKey] = others[otherKey];
          }
        }
      }
    } catch (e) {
      console.log(e);
    }
    return monitor;
  };
  monitor.setAvg = function (id, key, value) {
    var idkey = monitor._reportOptions.idkey || {};
    var param1 = id + '_' + key;
    var param2 = id + '_' + (key - 1);
    if (idkey[param1]) {
      idkey[param1] += value;
    } else {
      idkey[param1] = value;
    }
    if (idkey[param2]) {
      idkey[param2] += 1;
    } else {
      idkey[param2] = 1;
    }
    monitor._reportOptions.idkey = idkey;
    return monitor;
  };
  monitor.setSum = function (id, key) {
    var value = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : 1;
    var idkey = monitor._reportOptions.idkey;
    var param = id + '_' + key;
    if (idkey[param]) {
      idkey[param] += value;
    } else {
      idkey[param] = value;
    }
    monitor._reportOptions.idkey = idkey;
    return monitor;
  };
  monitor.send = function (async, ajax, origin) {
    if (async !== false) {
      async = true;
    }
    var data = monitor.getReportData();
    origin = origin || '';
    if (!data) {
      return;
    }
    if (!!ajax &amp;&amp; ajax instanceof Function) {
      ajax({
        url: origin + sendUrl,
        type: 'POST',
        mayAbort: true,
        data: data,
        async: async,
        timeout: 2000,
        dontReport: true
      });
    } else {
      new Image().src = origin + '/mp/jsmonitor?' + formatDataToString(data) + '#wechat_redirect';
    }
  };
  if (typeof window !== 'undefined' &amp;&amp; window.__monitor) {
    monitor = window.__monitor;
  } else {
    typeof window !== 'undefined' &amp;&amp; (window.__monitor = monitor);
  }
  var monitor$1 = monitor;

  
  var logList = [];
  var log = function log(msg) {
    logList.push(msg);
  };
  var printLog = function printLog() {
    for (var i = 0, len = logList.length; i &lt; len; ++i) {
      console.log("[RespType]".concat(logList[i]));
    }
  };
  var isArray = function isArray(val) {
    return Object.prototype.toString.call(val) === '[object Array]';
  };
  var getValueType = function getValueType(value) {
    if (isArray(value)) {
      return 'array';
    }
    return _typeof(value);
  };
  var parseRtDesc = function parseRtDesc(rtDesc, k) {
    var type = 'mix';
    var isRequired = false;
    var key = k;
    if (k) {
      var requireKeyWord = '_R';
      var pos = k.indexOf(requireKeyWord);
      var len = k.length - requireKeyWord.length;
      isRequired = pos !== -1 &amp;&amp; pos === len;
      key = isRequired ? k.substring(0, len) : k;
    }
    if (typeof rtDesc === 'string') {
      type = rtDesc;
    } else if (isArray(rtDesc)) {
      type = 'array';
    } else if (_typeof(rtDesc) === 'object') {
      type = 'object';
    }
    return {
      key: key,
      type: type,
      isRequired: isRequired
    };
  };
  var checkForArrayRtDesc = function checkForArrayRtDesc(arr, rtDescs) {
    if (!isArray(arr)) {
      return false;
    }
    for (var i = 0, len = arr.length; i &lt; len; ++i) {
      var value = arr[i];
      var rtDesc = void 0;
      var j = 0;
      var flag = rtDescs.length === 0;
      while (rtDesc = rtDescs[j++]) {
        if (checkForRtDesc(value, rtDesc)) {
          flag = true;
          break;
        }
      }
      if (!flag) {
        return false;
      }
    }
    return true;
  };
  var checkForStringRtDesc = function checkForStringRtDesc(value, rtDesc) {
    var valueType = getValueType(value);
    var desc = parseRtDesc(rtDesc);
    var ret = desc.type === valueType;
    if (!ret) {
      log("miss match type : ".concat(valueType, " !== ").concat(desc.type));
    }
    return ret;
  };
  var checkForObjectRtDesc = function checkForObjectRtDesc(json, rtDesc) {
    if (_typeof(json) !== 'object' || isArray(json)) {
      log('must be object');
      return false;
    }
    var rootJson = json;
    var nowCheckValue = json;
    for (var k in rtDesc) {
      if (rtDesc.hasOwnProperty(k)) {
        var nowCheckDesc = rtDesc[k];
        var desc = parseRtDesc(nowCheckDesc, k);
        var key = desc.key;
        nowCheckValue = rootJson[key];
        var valueType = getValueType(nowCheckValue);
        if (desc.isRequired &amp;&amp; nowCheckValue === undefined) {
          log("is required @key=".concat(key));
          return false;
        }
        if (nowCheckValue !== undefined) {
          if (valueType !== desc.type &amp;&amp; desc.type !== 'mix') {
            log("miss match type : ".concat(valueType, " !== ").concat(desc.type, " @key=").concat(key));
            return false;
          }
          if ((valueType === 'array' || valueType === 'object') &amp;&amp; desc.type !== 'mix') {
            if (!checkForRtDesc(nowCheckValue, nowCheckDesc)) {
              return false;
            }
          }
        }
      }
    }
    return true;
  };
  var checkForRtDesc = function checkForRtDesc(json, rtDesc) {
    if (isArray(rtDesc)) {
      return checkForArrayRtDesc(json, rtDesc);
    }
    if (_typeof(rtDesc) === 'object') {
      return checkForObjectRtDesc(json, rtDesc);
    }
    if (typeof rtDesc === 'string') {
      return checkForStringRtDesc(json, rtDesc);
    }
    return false;
  };
  var _check = function check(json, rtDescs) {
    if (typeof json === 'string') {
      try {
        json = eval("(".concat(json, ")"));
      } catch (e) {
        log('parse json error');
        return false;
      }
    }
    if (_typeof(json) !== 'object') {
      log('must be object');
      return false;
    }
    if (!isArray(rtDescs)) {
      rtDescs = [rtDescs];
    }
    var rtDesc;
    var i = 0;
    while (rtDesc = rtDescs[i++]) {
      if (checkForRtDesc(json, rtDesc)) {
        return true;
      }
    }
    return false;
  };
  var RespTypes = {
    check: function check(json, rtDesc) {
      logList = [];
      try {
        var ret = _check(json, rtDesc);
        if (!ret) {
          printLog();
        }
        return ret;
      } catch (e) {
        logList.push("[rtException]".concat(e.toString()));
        printLog();
        return false;
      }
    },
    getMsg: function getMsg() {
      return logList.join(';');
    }
  };

  function getInflightMap() {
    if (!window.__dedupe_promise_inflight__) {
      window.__dedupe_promise_inflight__ = new Map();
    }
    return window.__dedupe_promise_inflight__;
  }
  
  function dedupePromise(key, factory) {
    var inflightMap = getInflightMap();
    var existing = inflightMap.get(key);
    console.log("dedupePromise key=".concat(key, " existing=").concat(existing));
    if (existing) {
      return existing;
    }
    var promise = Promise.resolve().then(factory)["finally"](function () {
      inflightMap["delete"](key);
    });
    inflightMap.set(key, promise);
    return promise;
  }

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  function _defineProperties(target, props) {
    for (var i = 0; i &lt; props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor) descriptor.writable = true;
      Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
    }
  }
  function _createClass(Constructor, protoProps, staticProps) {
    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
    if (staticProps) _defineProperties(Constructor, staticProps);
    Object.defineProperty(Constructor, "prototype", {
      writable: false
    });
    return Constructor;
  }

  
  var prefix = '__WXLS__';
  var localStorage$1 = window.localStorage || {
    getItem: function getItem() {},
    setItem: function setItem() {},
    removeItem: function removeItem() {},
    key: function key() {},
    clear: function clear() {
      var _a, _b;
      (_b = (_a = window.localStorage) === null || _a === void 0 ? void 0 : _a.clear) === null || _b === void 0 ? void 0 : _b.call(_a);
    },
    length: 0
  };
  var evictionPolicies = {
    noeviction: function noeviction(data) {
      return data;
    },
    'allkeys-random': function allkeysRandom(data, size) {
      var keys = Object.keys(data);
      var memCnt = 0;
      while (memCnt &lt; size) {
        var len = keys.length;
        var randomKeyIdx = Math.floor(Math.random() * len);
        var randomKey = keys[randomKeyIdx];
        memCnt += JSON.stringify(data[randomKey]).length;
        delete data[randomKey];
        keys = Object.keys(data);
      }
      return data;
    },
    'volatile-ttl': function volatileTtl(data, size) {
      var keys = Object.keys(data);
      keys = keys.sort(function (key1, key2) {
        var d1 = data[key1];
        var d2 = data[key2];
        if (d1.exp &lt; d2.exp) return -1;
        if (d1.exp &gt; d2.exp) return 1;
        return 0;
      });
      var memCnt = 0;
      for (var i = 0; i &lt; keys.length; i++) {
        if (memCnt &gt;= size) break;
        var key = keys[i];
        memCnt += JSON.stringify(data[key]).length;
        delete data[key];
      }
      return data;
    },
    'clear-all': function clearAll() {
      localStorage$1.clear();
      return {};
    }
  };
  function formatLogMsg(str) {
    return "[WXLS] ".concat(str);
  }
  
  var LS = function () {
    function LS(func, evictionPolicy, logger) {
      _classCallCheck(this, LS);
      this.logger = function () {};
      if (!func) throw 'require function name.';
      this.evictionPolicy = 'noeviction';
      this.key = func;
      if (typeof logger === 'function') {
        this.logger = function (str, type) {
          return logger(formatLogMsg(str), type);
        };
      }
      if (evictionPolicy &amp;&amp; Object.keys(evictionPolicies).indexOf(evictionPolicy) !== -1) {
        this.evictionPolicy = evictionPolicy;
      }
      this.init();
    }
    _createClass(LS, [{
      key: "init",
      value: function init() {
        var _a, _b;
        this.check();
        if (Math.random() * 1000 &lt; 1) {
          (_a = this.logger) === null || _a === void 0 ? void 0 : _a.call(this, "LSlen: ".concat(((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length) || localStorage$1.length), 'report');
        }
      }
    }, {
      key: "getData",
      value: function getData() {
        var data = LS.getItem(this.key) || '{}';
        try {
          data = JSON.parse(data);
        } catch (e) {
          this.logger("getData error: ".concat(e), 'error');
          localStorage$1.removeItem(prefix + this.key);
          data = {};
        }
        return data;
      }
    }, {
      key: "check",
      value: function check(isReturn) {
        var data = this.getData();
        var temp = {};
        var now = +new Date();
        var key;
        var val;
        for (key in data) {
          val = data[key];
          if (+val.exp &gt; now) {
            temp[key] = val;
          }
        }
        this.logger("check info: isReturn:".concat(isReturn, " data:").concat(JSON.stringify(temp)), 'info');
        if (isReturn) return temp;
        LS.setItem(this.key, JSON.stringify(temp), this.logger);
      }
    }, {
      key: "set",
      value: function set(key, val, exp) {
        var _a, _b;
        var data = this.check(true);
        data[key] = {
          val: val,
          exp: exp || +new Date()
        };
        try {
          if (localStorage$1.getItem(prefix + this.key)) localStorage$1.removeItem(prefix + this.key);
          localStorage$1.setItem(prefix + this.key, JSON.stringify(data));
          this.logger("first set success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data)), 'success');
        } catch (e) {
          this.logger("first set error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data), " k:").concat(key, " v:").concat(val, " exp:").concat(exp), 'error');
          localStorage$1.clear();
          LS.setItem(this.key, JSON.stringify(_defineProperty({}, key, {
            val: val,
            exp: exp || +new Date()
          })), this.logger);
        }
      }
    }, {
      key: "get",
      value: function get(key) {
        var data = this.getData();
        data = data[key];
        return data ? data.val || null : null;
      }
    }, {
      key: "remove",
      value: function remove(key) {
        var data = this.getData();
        if (data[key]) delete data[key];
        LS.setItem(this.key, JSON.stringify(data), this.logger);
      }
    }], [{
      key: "getItem",
      value: function getItem(key) {
        key = prefix + key;
        return localStorage$1.getItem(key);
      }
    }, {
      key: "setItem",
      value: function setItem(key, val, logger) {
        var _a, _b;
        key = prefix + key;
        var n = 3;
        while (n--) {
          try {
            if (localStorage$1.getItem(key)) localStorage$1.removeItem(key);
            localStorage$1.setItem(key, val);
            typeof logger === 'function' &amp;&amp; logger("setItem success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(key, " val:").concat(val), 'success');
            break;
          } catch (e) {
            typeof logger === 'function' &amp;&amp; logger("setItem error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(key, " val:").concat(val), 'error');
            LS.clear();
          }
        }
      }
    }, {
      key: "clear",
      value: function clear() {
        var i;
        var k;
        for (i = localStorage$1.length - 1; i &gt;= 0; i--) {
          k = localStorage$1.key(i);
          if (k.indexOf(prefix) == 0) {
            localStorage$1.removeItem(k);
          }
        }
      }
    }, {
      key: "getSupportEvicationPolicy",
      value: function getSupportEvicationPolicy() {
        return Object.keys(evictionPolicies);
      }
    }]);
    return LS;
  }();
  var innerVersion = (mmVersion.getInner() || '').toUpperCase();
  var getBizLS = new LS('get_biz_result');
  function getBizMap() {
    if (!window.__get_biz_map__) {
      window.__get_biz_map__ = {};
    }
    return window.__get_biz_map__;
  }
  var isGetBizSupported = mmVersion.isOnlyWechat &amp;&amp; mmVersion.isIOS &amp;&amp; innerVersion &gt;= '18003C2A' || mmVersion.isOnlyWechat &amp;&amp; mmVersion.isAndroid &amp;&amp; innerVersion &gt;= '28003D3C' || mmVersion.isUnifiedPcWechat &amp;&amp; mmVersion.cpVersion('4.1.10', 1, true, 'unifiedpc');
  function invokeGetBiz(needCheckBiz, bizType) {
    return dedupePromise("getBiz:".concat(needCheckBiz, ":").concat(bizType), function () {
      return new Promise(function (resolve, reject) {
        if (!isGetBizSupported) {
          reject('Not support');
        } else {
          JSAPI.invoke('handleMPPageAction', {
            action: 'getBiz',
            needCheckBiz: needCheckBiz,
            bizType: bizType
          }, function (res) {
            console.log("getBiz needCheckBiz=".concat(needCheckBiz, " bizType=").concat(bizType, " res: ").concat(JSON.stringify(res)));
            if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf('ok') &gt; -1) {
              var bizMap = getBizMap();
              bizMap[bizType] = res.biz;
              resolve(res.biz);
              getBizLS.set("".concat(bizType, "_get_biz_result"), res.biz, +new Date() + 3 * 24 * 60 * 60 * 1000);
            } else {
              reject('Failed to get biz');
            }
          });
        }
      });
    });
  }
  function getBiz(needCheckBiz, bizType) {
    var _a;
    if (needCheckBiz === void 0) {
      needCheckBiz = false;
    }
    if (bizType === void 0) {
      bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
    }
    var bizMap = getBizMap();
    if (!needCheckBiz &amp;&amp; bizMap[bizType] !== undefined) {
      return Promise.resolve(bizMap[bizType]);
    }
    return invokeGetBiz(needCheckBiz, bizType);
  }
  mmVersion.isOnlyWechat &amp;&amp; mmVersion.isIOS || mmVersion.isOnlyWechat &amp;&amp; mmVersion.isAndroid || mmVersion.isUnifiedPcWechat &amp;&amp; mmVersion.cpVersion('4.1.10', 1, true, 'unifiedpc');
  var getIsAuthor = function getIsAuthor(cb, bizuin, needCheckBiz, bizType) {
    var _a;
    if (bizuin === void 0) {
      bizuin = window.biz;
    }
    if (needCheckBiz === void 0) {
      needCheckBiz = false;
    }
    if (bizType === void 0) {
      bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
    }
    getBiz(needCheckBiz, bizType).then(function (biz) {
      cb(biz &amp;&amp; biz === bizuin);
    })["catch"](function () {
      cb(false);
    });
  };

  function parseUrl(url) {
    var len = url.length;
    var ques_pos = url.indexOf('?');
    var hash_pos = url.indexOf('#');
    hash_pos = hash_pos == -1 ? len : hash_pos;
    ques_pos = ques_pos == -1 ? hash_pos : ques_pos;
    var host = url.substring(0, ques_pos);
    var query_str = url.substring(ques_pos + 1, hash_pos);
    var hash = url.substring(hash_pos + 1);
    return {
      host: host,
      query_str: query_str,
      hash: hash
    };
  }
  function join(url, args, noEncode) {
    var ret = parseUrl(url);
    var query_str = ret.query_str;
    var args_arr = [];
    if (_typeof(args) === 'object') {
      for (var key in args) {
        if (args.hasOwnProperty(key)) {
          args_arr.push("".concat(key, "=").concat(noEncode ? args[key] : encodeURIComponent(args[key])));
        }
      }
    } else {
      args_arr.push(noEncode ? args : encodeURIComponent(args));
    }
    if (args_arr.length &gt; 0) {
      query_str += (query_str !== "" ? "&amp;" : "") + args_arr.join("&amp;");
    }
    return ret.host + (query_str !== "" ? "?".concat(query_str) : "") + (ret.hash !== "" ? "#".concat(ret.hash) : "");
  }
  
  function addParam(url, param, value, forceReplace) {
    url = url || location.href;
    var firstAndPos = url.indexOf("&amp;");
    var len = url.length;
    var reverseUrl = url.replace(/^[\w\d]+:[/\\]+/g, "").split("").reverse();
    if (!Array.prototype.indexOf) {
      Array.prototype.indexOf = function (searchElement, fromIndex) {
        var k;
        if (this == null) {
          throw new TypeError('"this" is null or not defined');
        }
        var O = Object(this);
        var len = O.length &gt;&gt;&gt; 0;
        if (len === 0) {
          return -1;
        }
        var n = fromIndex || 0;
        if (Math.abs(n) === Infinity) {
          n = 0;
        }
        if (n &gt;= len) {
          return -1;
        }
        k = Math.max(n &gt;= 0 ? n : len - Math.abs(n), 0);
        while (k &lt; len) {
          if (k in O &amp;&amp; O[k] === searchElement) {
            return k;
          }
          k++;
        }
        return -1;
      };
    }
    var lastSlashPos = len - 1 - reverseUrl.indexOf("/");
    if (firstAndPos !== -1 &amp;&amp; url.indexOf("?") == -1 &amp;&amp; firstAndPos &gt; lastSlashPos) {
      url = url.replace("&amp;", "?");
    }
    var reg = new RegExp("([\\?&amp;]".concat(param, "=)[^&amp;#]*"));
    if (!url.match(reg)) {
      var urlInfo = parseUrl(url);
      var hash = urlInfo.hash ? '#' + urlInfo.hash : '';
      url = url.replace(hash, '');
      var _pos = url.indexOf("?");
      if (_pos == -1) {
        return "".concat(url, "?").concat(param, "=").concat(value).concat(hash);
      }
      if (_pos == url.length - 1) {
        return "".concat(url + param, "=").concat(value).concat(hash);
      }
      return "".concat(url, "&amp;").concat(param, "=").concat(value).concat(hash);
    }
    if (forceReplace === true) {
      return url.replace(reg, "$1".concat(value));
    }
    return url;
  }
  function addWxfrom(src, wxfrom) {
    var offset = window.service_type === 1 ? 10000 : 0;
    return addParam(src, 'wxfrom', offset + Number(wxfrom), true);
  }
  function removeParam(url, param) {
    var _URL = new URL(url),
      protocol = _URL.protocol,
      host = _URL.host,
      pathname = _URL.pathname,
      search = _URL.search,
      hash = _URL.hash;
    var queryParams = new URLSearchParams(search);
    queryParams["delete"](param);
    var newSearch = queryParams.toString();
    var newUrl = new URL("".concat(protocol, "//").concat(host).concat(pathname).concat(newSearch ? "?".concat(decodeURIComponent(newSearch)) : "").concat(hash));
    return newUrl.toString();
  }
  function getQuery(name, url) {
    var u = url || window.location.search;
    var reg = new RegExp("(^|&amp;)".concat(name, "=([^&amp;]*)(&amp;|$)"));
    var r = u.substring(u.indexOf('?') + 1).match(reg);
    return r !== null ? r[2] : '';
  }
  function encodeBase64(value) {
    try {
      return window.btoa(value);
    } catch (e) {
      return '';
    }
  }
  function decodeBase64(value) {
    try {
      return window.atob(value);
    } catch (e) {
      return '';
    }
  }
  function joinUrl$1(url) {
    var obj = {};
    if (typeof window.uin !== 'undefined') {
      obj.uin = window.uin;
    }
    if (typeof window.key !== 'undefined') {
      obj.key = window.key;
    }
    if (typeof window.pass_ticket !== 'undefined') {
      obj.pass_ticket = window.pass_ticket;
    }
    if (typeof window.wxtoken !== 'undefined') {
      obj.wxtoken = window.wxtoken;
    }
    if (typeof window.devicetype !== 'undefined') {
      obj.devicetype = window.devicetype;
    }
    if (typeof window.clientversion !== 'undefined') {
      obj.clientversion = window.clientversion || mmVersion.getInner();
    }
    obj.version = obj.clientversion;
    if (window.biz) {
      obj.__biz = window.biz;
    }
    if (getQuery('enterid')) {
      obj.enterid = getQuery('enterid');
    }
    if (typeof window.appmsg_token !== 'undefined') {
      obj.appmsg_token = window.appmsg_token;
    } else if (url.indexOf('advertisement_report') &gt; -1) {
      new Image().src = "".concat(location.protocol, "//mp.weixin.qq.com/mp/jsmonitor?idkey=68064_13_1&amp;r=").concat(Math.random());
    }
    obj.x5 = navigator.userAgent.indexOf('TBS/') !== -1 ? '1' : '0';
    obj.f = 'json';
    return join(url, obj);
  }
  function joinUserArticleRole(url, notJoin, cb) {
    var bizuin = arguments.length &gt; 3 &amp;&amp; arguments[3] !== undefined ? arguments[3] : window.biz;
    var needCheckBiz = arguments.length &gt; 5 &amp;&amp; arguments[5] !== undefined ? arguments[5] : false;
    if (notJoin) {
      cb(url);
    } else {
      getIsAuthor(function (isAuthor) {
        cb(addParam(url, 'user_article_role', isAuthor ? 1 : 0, true));
      }, bizuin, needCheckBiz);
    }
  }
  function getA8keyQuery(name, url) {
    return new Promise(function (resolve) {
      if (window.__secPageAuthPromise) {
        window.__secPageAuthPromise.then(function () {
          resolve(getQuery(name, url));
        });
      } else {
        resolve(getQuery(name, url));
      }
    });
  }
  function addHash(url, hash) {
    var isReplace = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    if (isReplace) {
      return "".concat(url.split('#')[0]).concat(hash);
    }
    return "".concat(url).concat(url.indexOf('#') === -1 ? '#' : '').concat(hash);
  }
  function decodeUrl(url) {
    var _url = url;
    while (_url.indexOf('&amp;amp;') !== -1) {
      _url = _url.htmlDecode();
    }
    return _url;
  }
  var Url = {
    parseUrl: parseUrl,
    join: join,
    addParam: addParam,
    addWxfrom: addWxfrom,
    addHash: addHash,
    getQuery: getQuery,
    getA8keyQuery: getA8keyQuery,
    encodeBase64: encodeBase64,
    decodeBase64: decodeBase64,
    joinUrl: joinUrl$1,
    joinUserArticleRole: joinUserArticleRole,
    removeParam: removeParam,
    decodeUrl: decodeUrl
  };

  var _a;
  var doc;
  var isAcrossOrigin = false;
  try {
    doc = (_a = window.top) === null || _a === void 0 ? void 0 : _a.window.document;
  } catch (e) {
    isAcrossOrigin = true;
  }
  var StatusTextMap = {
    200: 'OK',
    302: 'Found',
    400: 'Bad Request',
    500: 'Internal Server Error'
  };
  function getIsAcrossOrigin() {
    return isAcrossOrigin;
  }
  function networkStartLog(item) {
    var _a, _b, _c, _d, _e;
    console.log('[system]', "&lt; [request ".concat(item.requestType, "]"), item.url, item.method, item);
    var rdevRequestId;
    var requestTime = performance.now() / 1000;
    if ((_b = (_a = window.RemoteDevSdk) === null || _a === void 0 ? void 0 : _a.instance) === null || _b === void 0 ? void 0 : _b.Network) {
      try {
        var willBeSentOptions = {
          url: item.url,
          method: item.method,
          requestHeaders: Object.assign({}, item.requestHeader || {}, {
            RDEV_REQUEST_TYPE: item.requestType
          }),
          requestBody: item.postData,
          requestTime: requestTime
        };
        rdevRequestId = window.RemoteDevSdk.instance.Network.customRequestWillBeSent(willBeSentOptions);
      } catch (err) {}
    }
    if ((_c = window.vConsole) === null || _c === void 0 ? void 0 : _c.network) {
      try {
        var vconsoleNetworkItem = (_e = (_d = window.vConsole.network).add) === null || _e === void 0 ? void 0 : _e.call(_d, Object.assign({}, item, {
          startTime: Date.now(),
          endTime: Date.now(),
          status: 0,
          readyState: 2,
          response: ''
        }));
        vconsoleNetworkItem.rdevRequestId = rdevRequestId;
        vconsoleNetworkItem.requestTime = requestTime;
        return vconsoleNetworkItem;
      } catch (err) {}
    }
    if (rdevRequestId) {
      return Object.assign(Object.assign({}, item), {
        id: '__only_rdev_log__',
        rdevRequestId: rdevRequestId,
        requestTime: requestTime
      });
    }
    return Object.assign({}, item, {
      id: '__system_log__'
    });
  }
  function networkEndLog(item) {
    var _a, _b, _c, _d, _e;
    console.log('[system]', "&gt; [response ".concat(item.requestType, "]"), item.url, item.response, item);
    if (item.rdevRequestId &amp;&amp; ((_b = (_a = window.RemoteDevSdk) === null || _a === void 0 ? void 0 : _a.instance) === null || _b === void 0 ? void 0 : _b.Network) &amp;&amp; item.id !== '__system_log__') {
      try {
        var finishedOptions = {
          requestId: item.rdevRequestId,
          url: item.url,
          status: +(item.status || '500'),
          statusText: StatusTextMap[+(item.status || '500')] || 'Error',
          responseHeaders: {
            RDEV_RESPONSE_TYPE: item.requestType
          },
          responseBody: item.response,
          requestTime: item.requestTime || 0,
          duration: item.costTime || (item.endTime &amp;&amp; item.startTime ? item.endTime - item.startTime : performance.now() / 1000 - (item.requestTime || 0))
        };
        window.RemoteDevSdk.instance.Network.customRequestFinished(finishedOptions);
      } catch (err) {}
    }
    if (((_c = window.vConsole) === null || _c === void 0 ? void 0 : _c.network) &amp;&amp; item.id !== '__system_log__') {
      try {
        item.statusText = "".concat(item.status);
        item.responseSize = item.response.length;
        item.responseSizeText = "".concat(item.response.length);
        return (_e = (_d = window.vConsole.network).update) === null || _e === void 0 ? void 0 : _e.call(_d, item.id, Object.assign({}, item, {
          readyState: 4
        }));
      } catch (err) {}
    }
  }
  function reqType(obj, path) {
    return obj.url.indexOf(path) &gt; -1 &amp;&amp; obj.url.indexOf('action=') === -1 &amp;&amp; (!obj.data || !obj.data.action);
  }
  function findAjaxScopeByConfig(url, config) {
    var pathname = new URL(url, location.href).pathname || '';
    var scope = config[pathname.slice(1)];
    if (scope) {
      return scope;
    }
  }
  function getAjaxScope(ajaxUrl) {
    if (Url.getQuery('no_transfer', location.href) !== '1' &amp;&amp; mmVersion.isWechat &amp;&amp; !mmVersion.isInMiniProgram &amp;&amp; !mmVersion.isWxWork &amp;&amp; !mmVersion.isMpapp &amp;&amp; !isAcrossOrigin &amp;&amp; window.__ajaxTransferConfig &amp;&amp; _typeof(window.__ajaxTransferConfig) === 'object' &amp;&amp; (
    mmVersion.isIOS &amp;&amp; mmVersion.compareHexVersion('1800282F') || mmVersion.isAndroid &amp;&amp; mmVersion.compareHexVersion('28002234') || mmVersion.isWindowsWechat &amp;&amp; mmVersion.cpVersion('3.9.5', 1, true, 'windows') || mmVersion.isMacWechat &amp;&amp; mmVersion.cpVersion('3.8.4', 1, true, 'mac') || mmVersion.isHarmonyWechat &amp;&amp; mmVersion.compareHexVersion('0xf3100b00') &amp;&amp; !mmVersion.compareHexVersion('0xf3100c00') || mmVersion.compareHexVersion('0xf3800b00'))) {
      try {
        return findAjaxScopeByConfig(ajaxUrl, window.__ajaxTransferConfig);
      } catch (err) {
        
      }
    }
  }
  function getActionByData(data) {
    var _a, _b;
    if (_typeof(data) === 'object' &amp;&amp; !(data instanceof Blob)) {
      if (data.hasOwnProperty('data') &amp;&amp; typeof data.data === 'string') {
        try {
          var workedData = JSON.parse(data.data);
          return workedData.action || '';
        } catch (e) {}
      }
      return data.action || '';
    }
    if (typeof data === 'string') {
      return ((_b = (_a = data.split(/[?&amp;]/).find(function (x) {
        return x.indexOf('action=') &gt;= 0;
      })) === null || _a === void 0 ? void 0 : _a.split('=')) === null || _b === void 0 ? void 0 : _b[1]) || '';
    }
    return '';
  }

  var METHOD_ENUM = {
    GET: 0,
    POST: 1
  };
  var __moon_report = window.__moon_report || function () {};
  var MOON_AJAX_SUCCESS_OFFSET = 3;
  var MOON_AJAX_NETWORK_OFFSET = 4;
  var MOON_AJAX_ERROR_OFFSET = 5;
  var MOON_AJAX_TIMEOUT_OFFSET = 6;
  var MOON_AJAX_COMPLETE_OFFSET = 7;
  var LENGTH_LIMIT = 4096;
  function reportRtError(type, id, key, content) {
    var log = '';
    var prefix = type === 'rt' ? 'rtCheckError' : 'Ajax Length Limit';
    if (content === null || content === void 0 ? void 0 : content.length) {
      var loglen = 1000;
      var len = content.length;
      var lc = Math.ceil(len / loglen);
      log = ["&amp;lc=".concat(lc)];
      for (var i = 0; i &lt; lc; ++i) {
        log.push("&amp;log".concat(i, "=") + "[".concat(prefix, "][").concat(i, "]").concat(encodeURIComponent(content.substring(i * loglen, i * loglen + loglen))));
      }
      log = log.join('');
    }
    var data = "idkey=".concat(id, "_").concat(key, "_1").concat(log, "&amp;r=").concat(Math.random());
    var xmlobj = new XMLHttpRequest();
    xmlobj.open('POST', "".concat(location.protocol, "//").concat(location.host, "/mp/jsmonitor?"), true);
    xmlobj.setRequestHeader('cache-control', 'no-cache');
    xmlobj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    xmlobj.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    xmlobj.send(data);
    if (type === 'ajaxLen') {
      monitor$1.setLogs({
        id: id,
        key: key,
        value: 1,
        log: log
      });
    }
  }
  function reportRt(id, key, content) {
    reportRtError('rt', id, key, content);
  }
  function reportAjaxLength(id, key, content) {
    reportRtError('ajaxLen', id, key, content);
  }
  function setXhrHeader(xhr, type, opt) {
    if (opt.contentType) {
      xhr.setRequestHeader('Content-Type', opt.contentType);
    } else if (type === 'POST') {
      xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    }
    if (!opt.noXRequestedWidthHeader) {
      xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    }
  }
  function Ajax(obj) {
    var report36408 = typeof obj.report36408 === 'function' ? obj.report36408 : function () {};
    if (obj.usePb) {
      obj.type = 'POST';
      obj.data = {
        data: JSON.stringify(obj.data)
      };
    }
    var ajaxScope = getAjaxScope(obj.url);
    var type = (obj.type || 'GET').toUpperCase();
    var timer;
    var _url;
    if (obj.notJoinUrl) {
      _url = obj.url;
    } else {
      _url = Url.joinUrl(obj.url);
    }
    Url.joinUserArticleRole(_url, !!obj.notJoinUrl, function (url) {
      var urlObj = new URL(url, location.origin);
      if (obj.f === 'html') {
        url = url.replace('&amp;f=json', '');
      }
      var data = null;
      if (obj.data instanceof Blob) {
        data = obj.data;
      } else if (_typeof(obj.data) === 'object') {
        var d = obj.data;
        var ds = [];
        for (var k in d) {
          if (d.hasOwnProperty(k)) {
            ds.push("".concat(k, "=").concat(encodeURIComponent(d[k])));
          }
        }
        data = ds.join('&amp;');
      } else {
        data = typeof obj.data === 'string' ? obj.data : null;
      }
      var beginTs;
      var beforeReq = function beforeReq() {
        if (reqType(obj, '/mp/getappmsgext')) {
          window.startGetAppmsgExtTime = Date.now();
          Log.log('start get appmsgext, url: ', obj.url);
        }
        if (reqType(obj, '/mp/getappmsgad')) {
          window.startGetAppmsgAdTime = Date.now();
          Log.log('start get appmsgad, url: ', obj.url);
        }
        beginTs = Date.now();
      };
      var beforeResp = function beforeResp(xhr) {
        if (reqType(obj, '/mp/getappmsgext')) {
          window.receiveGetAppmsgExt = "".concat(xhr.status, "|").concat(Date.now());
          Log.log("receive appmsgext response, status: ".concat(xhr.status));
        }
        if (reqType(obj, '/mp/getappmsgad')) {
          window.receiveGetAppmsgAd = "".concat(xhr.status, "|").concat(Date.now());
          Log.log("receive appmsgad response, status: ".concat(xhr.status));
        }
        if (Math.random() &lt; 0.001 &amp;&amp; window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs) {
          try {
            var key = ajaxScope ? 'transfer' : 'xhr';
            var interval = 250;
            var time = Date.now() - beginTs;
            var range = Math.floor(time / interval) * interval;
            var pathname = new URL(obj.url, location.href).pathname || '';
            window.WX_BJ_REPORT.BadJs.report("".concat(key, "_perf:").concat(pathname), JSON.stringify({
              status: xhr.status,
              time: "[".concat(range, "-").concat(range + interval, ")")
            }), {
              mid: 'mmbizwap:ajaxtransfer',
              view: 'wap_business'
            });
          } catch (err) {}
        }
      };
      var handleRespSucc = function handleRespSucc(xhr, requestType) {
        var _a, _b, _c, _d;
        try {
          var responseText = xhr.responseText;
          var resp = responseText;
          if (obj.dataType === 'json') {
            try {
              if (JSON &amp;&amp; JSON.parse) {
                resp = JSON.parse(resp);
              } else {
                resp = eval("(".concat(resp, ")"));
                monitor$1.setSum(523105, 127, 1).send();
              }
              var rtId = obj.rtId;
              var rtKey = obj.rtKey || 0;
              var rtDesc = obj.rtDesc;
              if (rtId &amp;&amp; rtDesc &amp;&amp; RespTypes &amp;&amp; !RespTypes.check(resp, rtDesc)) {
                reportRt(+rtId, +rtKey, "".concat(RespTypes.getMsg(), "[detail]").concat(responseText, ";").concat(obj.url));
              }
              if (resp &amp;&amp; resp.base_resp &amp;&amp; ((_a = resp.base_resp) === null || _a === void 0 ? void 0 : _a.ret) !== 0 &amp;&amp; typeof window.WX_BJ_REPORT !== 'undefined' &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; Math.random() &lt; 0.001) {
                var reportUrl = url;
                if (url.indexOf('?') !== -1) {
                  reportUrl = url.substring(0, url.indexOf('?'));
                  if (Url.getQuery('action', url)) {
                    reportUrl = "".concat(reportUrl, "?action=").concat(Url.getQuery('action', url));
                  }
                }
                if (!((reportUrl === '/mp/getappmsgext' || reportUrl === '/mp/getappmsgad') &amp;&amp; typeof resp.base_resp.ret === 'undefined')) {
                  window.WX_BJ_REPORT.BadJs.report(reportUrl, "ret=".concat(resp.base_resp.ret), {
                    mid: window.PAGE_MID,
                    view: 'wap_retcode'
                  });
                }
              }
            } catch (e) {
              obj.error &amp;&amp; obj.error(xhr, {
                type: 1,
                error: e,
                status: xhr.status
              });
              if (!obj.dontReport) {
                report36408({
                  CgiPath: urlObj.pathname || '',
                  Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                  Query: urlObj.search || '',
                  PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                  Method: type || '',
                  RequestType: requestType || 0,
                  RetType: 1,
                  HttpCode: xhr.status || 0,
                  Ret: 0
                });
              }
              return;
            }
          }
          if (_typeof(resp) === 'object' &amp;&amp; ((_b = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _b === void 0 ? void 0 : _b.ret) !== 0) {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                Method: type || '',
                RequestType: requestType || 0,
                RetType: 4,
                HttpCode: xhr.status || 0,
                Ret: ((_c = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _c === void 0 ? void 0 : _c.ret) || 0
              });
            }
          } else {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                Method: type || '',
                RequestType: requestType || 0,
                RetType: 0,
                HttpCode: xhr.status || 0,
                Ret: ((_d = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _d === void 0 ? void 0 : _d.ret) || 0
              });
            }
          }
          obj.success &amp;&amp; obj.success(resp);
        } catch (e) {
          __moon_report({
            offset: MOON_AJAX_SUCCESS_OFFSET,
            e: e
          });
          throw e;
        }
      };
      var handleRespErr = function handleRespErr(xhr, error, requestType) {
        try {
          obj.error &amp;&amp; obj.error(xhr, {
            type: 2,
            error: error,
            status: xhr.status
          });
          if (!obj.dontReport) {
            report36408({
              CgiPath: urlObj.pathname || '',
              Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
              Query: urlObj.search || '',
              PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
              Method: type,
              RequestType: requestType,
              RetType: 2,
              HttpCode: xhr.status,
              Ret: 0
            });
          }
        } catch (e) {
          __moon_report({
            offset: MOON_AJAX_ERROR_OFFSET,
            e: e
          });
          throw e;
        }
      };
      var handleRespComplete = function handleRespComplete() {
        clearTimeout(timer);
        try {
          obj.complete &amp;&amp; obj.complete();
        } catch (e) {
          __moon_report({
            offset: MOON_AJAX_COMPLETE_OFFSET,
            e: e
          });
          throw e;
        }
        obj.complete = null;
      };
      var handleReqTimeout = function handleReqTimeout(xhr) {
        if (typeof obj.timeout !== 'undefined') {
          timer = setTimeout(function () {
            xhr.abort();
            try {
              obj.complete &amp;&amp; obj.complete();
            } catch (e) {
              __moon_report({
                offset: MOON_AJAX_COMPLETE_OFFSET,
                e: e
              });
              throw e;
            }
            obj.complete = null;
            __moon_report({
              offset: MOON_AJAX_TIMEOUT_OFFSET,
              log: "ajax_timeout_error: ".concat(url),
              e: ''
            });
          }, obj.timeout);
        }
      };
      var retryXhrFn = function retryXhrFn(res, isTimeout, reqLogItem) {
        var retryXhr = new XMLHttpRequest();
        try {
          retryXhr._noVConsole = true;
        } catch (err) {}
        retryXhr.open(type, url);
        retryXhr.onreadystatechange = function () {
          if (isTimeout) return;
          if (retryXhr.readyState === 3) {
            obj.received &amp;&amp; obj.received(retryXhr);
          }
          if (retryXhr.readyState === 4) {
            beforeResp(retryXhr);
            var retryStatus = retryXhr.status;
            if (retryStatus &gt;= 200 &amp;&amp; retryStatus &lt; 400) {
              handleRespSucc(retryXhr, 1);
            } else {
              handleRespErr(retryXhr, res, 1);
              window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; window.WX_BJ_REPORT.BadJs.report('req_failure', JSON.stringify({
                retryXhrStatus: retryStatus,
                transferRes: res
              }), {
                mid: 'mmbizwap:ajaxtransfer',
                view: 'wap_business'
              });
            }
            reqLogItem.status = retryStatus;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = retryXhr.responseText;
            handleRespComplete();
            networkEndLog(reqLogItem);
          }
        };
        setXhrHeader(retryXhr, type, obj);
        retryXhr.send(data);
      };
      if (ajaxScope &amp;&amp; !obj.pureHttp) {
        var header = {
          'User-Agent': navigator.userAgent,
          'Cookie': (window.__test_env__ ? 'uniproxy_route=1; ' : '') + document.cookie,
          'Referer': location.href
        };
        if (obj.contentType) {
          header['Content-Type'] = obj.contentType;
        } else if (type === 'POST') {
          header['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
        }
        if (!obj.noXRequestedWidthHeader) {
          header['X-Requested-With'] = 'XMLHttpRequest';
        }
        var reqUrl = new URL(url, location.href).href;
        var method = METHOD_ENUM[type] || 0;
        var params = Device.os.pc ? {
          url: reqUrl,
          req_json: data || '',
          scope: ajaxScope,
          webcgi_method: method,
          webcgi_header: Object.keys(header).map(function (headerItemKey) {
            return Device.os.Mac ? _defineProperty({}, headerItemKey, header[headerItemKey]) : {
              key: headerItemKey,
              value: header[headerItemKey]
            };
          }),
          cgi_type: 1
        } : {
          reqUrl: reqUrl,
          reqBody: data,
          scope: ajaxScope,
          method: method,
          header: header
        };
        var reqLogItem = networkStartLog({
          method: type,
          url: url,
          postData: obj.data || {},
          requestHeader: header,
          requestType: 'transfer',
          startTime: Date.now(),
          responseType: url.indexOf('f=json') &gt; 0 ? 'json' : undefined
        });
        var isTimeout = false;
        handleReqTimeout({
          abort: function abort() {
            isTimeout = true;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = 'timeout';
            networkEndLog(reqLogItem);
          }
        });
        Device.os.pc &amp;&amp; monitor$1.setSum(115849, 69, 1);
        JSAPI.invoke(Device.os.pc ? 'H5ExtTransfer' : 'webTransfer', params, function (res) {
          var _a, _b, _c, _d, _e, _f;
          if (isTimeout) return;
          var status = 400;
          var result = '';
          if (Device.os.pc) {
            try {
              var retFlag = res.base_resp.ret === 0 &amp;&amp; res.jsapi_resp.ret === 0 &amp;&amp; res.err_msg.indexOf(':ok') &gt; -1;
              var respJsonFlag = res.jsapi_resp.resp_json;
              status = retFlag &amp;&amp; respJsonFlag ? 200 : 400;
              result = res.jsapi_resp.resp_json;
            } catch (err) {
              console.error(err);
            }
          } else {
            status = res &amp;&amp; res.errCode * 1 === 0 &amp;&amp; typeof res.result === 'string' &amp;&amp; res.result ? 200 : 400;
            result = res.result;
          }
          try {
            Log.log("ajax transfer, status: ".concat(status, ", reqUrl: ").concat(reqUrl));
          } catch (err) {
            console.error(err);
          }
          if (status &gt;= 200 &amp;&amp; status &lt; 400) {
            obj.received &amp;&amp; obj.received(null);
            beforeResp({
              status: status
            });
            handleRespSucc({
              status: status,
              responseText: result
            }, 10);
            reqLogItem.status = status;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = result;
            handleRespComplete();
            networkEndLog(reqLogItem);
          } else if (window.__second_open__) {
            JSAPI.invoke('request', {
              url: reqUrl,
              method: type,
              data: data,
              header: header
            }, function (retryRes) {
              try {
                Log.log("ajax retry request, retryStatus: ".concat((retryRes === null || retryRes === void 0 ? void 0 : retryRes.statusCode) || '', ", reqUrl: ").concat(reqUrl));
              } catch (err) {
                console.error(err);
              }
              if (isTimeout) return;
              var retryStatus = retryRes.statusCode;
              obj.received &amp;&amp; obj.received(null);
              beforeResp({
                status: retryStatus
              });
              if (retryRes.err_msg.indexOf(':ok') &gt; -1 &amp;&amp; retryStatus &gt;= 200 &amp;&amp; retryStatus &lt; 400) {
                handleRespSucc({
                  status: retryStatus,
                  responseText: retryRes.data
                }, 20);
              } else {
                retryXhrFn(res, isTimeout, reqLogItem);
                handleRespErr({
                  status: retryStatus
                }, res, 20);
                window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; window.WX_BJ_REPORT.BadJs.report('req_failure_sec_open', JSON.stringify({
                  retryReqJsapiRes: retryRes,
                  transferRes: res,
                  url: reqUrl
                }), {
                  mid: 'mmbizwap:ajaxtransfer',
                  view: 'wap_business'
                });
              }
              reqLogItem.status = retryStatus;
              reqLogItem.endTime = Date.now();
              reqLogItem.response = retryRes.data;
              handleRespComplete();
              networkEndLog(reqLogItem);
            });
          } else {
            retryXhrFn(res, isTimeout, reqLogItem);
          }
          if (Device.os.pc) {
            if (!res.err_msg.includes(':ok')) {
              (_b = (_a = window.WX_BJ_REPORT) === null || _a === void 0 ? void 0 : _a.BadJs) === null || _b === void 0 ? void 0 : _b.report("pc transfer res no ok: ".concat(res.err_msg), params.url || '', {
                mid: window.PAGE_MID,
                _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
              });
            }
            try {
              if (res.jsapi_resp.resp_json &amp;&amp; JSON.parse(res.jsapi_resp.resp_json).base_resp.ret !== 0 &amp;&amp; JSON.parse(res.jsapi_resp.resp_json).base_resp.ret !== 190001 || res.base_resp.ret !== 0 || res.jsapi_resp.ret !== 0) {
                (_d = (_c = window.WX_BJ_REPORT) === null || _c === void 0 ? void 0 : _c.BadJs) === null || _d === void 0 ? void 0 : _d.report("pc transfer res invalid ret", params.url || '', {
                  mid: window.PAGE_MID,
                  _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
                });
              }
            } catch (err) {}
          } else {
            try {
              if (res.errCode !== 0) {
                (_f = (_e = window.WX_BJ_REPORT) === null || _e === void 0 ? void 0 : _e.BadJs) === null || _f === void 0 ? void 0 : _f.report("mobile transfer res invalid ret", params.url || '', {
                  mid: window.PAGE_MID,
                  _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
                });
              }
            } catch (err) {}
          }
        });
        beforeReq();
        return;
      }
      var xhr = new XMLHttpRequest();
      var mayAbort = !!obj.mayAbort;
      var async = typeof obj.async === 'undefined' ? true : obj.async;
      var _onreadystatechange = xhr.onreadystatechange;
      xhr.open(type, url, async);
      xhr.onreadystatechange = function () {
        if (typeof _onreadystatechange === 'function') {
          _onreadystatechange.apply(xhr);
        }
        if (xhr.readyState === 3) {
          obj.received &amp;&amp; obj.received(xhr);
        }
        if (xhr.readyState === 4) {
          beforeResp(xhr);
          xhr.onreadystatechange = null;
          var status = xhr.status;
          if (status &gt;= 200 &amp;&amp; status &lt; 400) {
            handleRespSucc(xhr, 1);
          } else {
            handleRespErr(xhr, 'status error', 1);
            if (!!status || !mayAbort) {
              var __ajaxtest = window.__ajaxtest || '0';
              __moon_report({
                offset: MOON_AJAX_NETWORK_OFFSET,
                log: "ajax_network_error[".concat(status, "][").concat(__ajaxtest, "]: ").concat(url, ";host:").concat(location.host),
                e: ''
              });
            }
          }
          handleRespComplete();
        }
      };
      setXhrHeader(xhr, type, obj);
      handleReqTimeout(xhr);
      try {
        xhr.send(data);
        try {
          if (url &amp;&amp; url.length &gt; LENGTH_LIMIT) {
            reportAjaxLength(27613, 17, "ajax get limit[length: ".concat(url.length, "]").concat(url.substring(0, 1024)));
          }
          if (data &amp;&amp; !(data instanceof Blob) &amp;&amp; data.length &gt; LENGTH_LIMIT) {
            reportAjaxLength(27613, 18, "ajax post limit[length: ".concat(data.length, "]").concat(data.substring(0, 1024)));
          }
          if (data &amp;&amp; data instanceof Blob &amp;&amp; data.size &gt; LENGTH_LIMIT) {
            reportAjaxLength(27613, 18, "ajax post limit[length: ".concat(data.size, "]blob"));
          }
        } catch (e) {
        }
      } catch (e) {
        obj.error &amp;&amp; obj.error(xhr, {
          type: 3,
          error: e,
          status: 0
        });
      }
      beforeReq();
    });
  }

  
  mmVersion.isWindowsWechat &amp;&amp; mmVersion.compareHexVersion('0xf2550000') || mmVersion.isMacWechat &amp;&amp; mmVersion.compareHexVersion('0xf2650000');

  
  var getBrandServiceType = function getBrandServiceType() {
    var serviceType = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : window.service_type;
    var _a, _b;
    var brandServiceType = 0;
    if (serviceType !== undefined) brandServiceType = serviceType + 1;
    if (((_b = (_a = window.cgiData) === null || _a === void 0 ? void 0 : _a.trans_appmsg_info) === null || _b === void 0 ? void 0 : _b.trans_type) * 1 === 1) brandServiceType = 3;
    return brandServiceType;
  };

  function setCurrentMpInfo(ifShow) {
    var supportNewTopBar = mmVersion.isIOS &amp;&amp; mmVersion.gtVersion('7.0.10', true) || mmVersion.isAndroid &amp;&amp; mmVersion.gtVersion('7.0.12', true);
    var supportLiveStatus = mmVersion.isIOS &amp;&amp; mmVersion.gtVersion('8.0.46', true) || mmVersion.isAndroid &amp;&amp; mmVersion.gtVersion('8.0.46', true);
    JSAPI.invoke('currentMpInfo', {
      userName: window.user_name,
      brandName: !!supportNewTopBar &amp;&amp; window.nickname === '' ? '未命名账号' : window.title,
      title: window.msg_title || '',
      brandIcon: window.hd_head_img.replace(/\/0$/, '/132'),
      itemShowType: window.item_show_type,
      isPaySubscribe: window.isPaySubscribe,
      topBarStyle: supportNewTopBar ? 1 : 0,
      topBarShowed: ifShow,
      disableShowFinderLiveTopBar: !ifShow &amp;&amp; supportLiveStatus ? 1 : 0,
      brandServiceType: getBrandServiceType()
    }, function () {});
  }
  function AjaxWx(obj) {
    var report36408 = typeof obj.report36408 === 'function' ? obj.report36408 : function () {};
    obj.url += obj.url.indexOf('?') === -1 ? '?fasttmplajax=1' : '&amp;fasttmplajax=1';
    if (getAjaxScope(obj.url)) {
      Ajax(obj);
      return;
    }
    if (obj.usePb) {
      obj.type = 'POST';
      obj.data = {
        data: JSON.stringify(obj.data)
      };
    }
    if (!/^(http:\/\/|https:\/\/|\/\/)/.test(obj.url)) {
      obj.url = "https://mp.weixin.qq.com/".concat(obj.url.replace(/^\//, ''));
    } else if (/^\/\//.test(obj.url)) {
      obj.url = "https:".concat(obj.url);
    }
    if (obj.f !== 'html' &amp;&amp; (obj.url.indexOf('?f=json') === -1 || obj.url.indexOf('&amp;f=json') === -1)) {
      obj.url += '&amp;f=json';
    }
    if (!obj.notJoinUrl &amp;&amp; obj.f !== 'html') {
      obj.url = Url.joinUrl(obj.url);
    }
    Url.joinUserArticleRole(obj.url, !!obj.notJoinUrl, function (url) {
      obj.url = url;
      var urlObj = new URL(url, location.origin);
      var data = null;
      if (_typeof(obj.data) === 'object') {
        var d = obj.data;
        var ds = [];
        for (var k in d) {
          if (d.hasOwnProperty(k)) {
            ds.push("".concat(k, "=").concat(encodeURIComponent(d[k])));
          }
        }
        data = ds.join('&amp;');
      } else {
        data = typeof obj.data === 'string' ? obj.data : null;
      }
      var header = {
        Cookie: document.cookie,
        referer: location.href
      };
      if (obj.contentType) {
        header['Content-Type'] = obj.contentType;
      } else if ((obj.type || 'GET').toUpperCase() === 'POST') {
        header['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
      }
      var reqLogItem = networkStartLog({
        method: obj.type || 'GET',
        url: obj.url,
        postData: obj.data || {},
        requestHeader: header,
        requestType: 'jsapi',
        startTime: Date.now()
      });
      var retryTime = 1;
      var jsapiRequest = function jsapiRequest(obj, data) {
        return JSAPI.invoke('request', {
          url: obj.url,
          method: obj.type,
          data: data,
          header: header
        }, function (res) {
          var _a, _b, _c, _d, _e, _f;
          if (res.err_msg.indexOf(':ok') &gt; -1 &amp;&amp; (!res.statusCode || res.statusCode &gt;= 200 &amp;&amp; res.statusCode &lt; 400)) {
            if (reqType(obj, '/mp/getappmsgext')) {
              window.receiveGetAppmsgExt = "".concat(res.statusCode, "|").concat(Date.now());
            }
            if (reqType(obj, '/mp/getappmsgad')) {
              window.receiveGetAppmsgAd = "".concat(res.statusCode, "|").concat(Date.now());
            }
            if (retryTime === 1) {
              obj.received &amp;&amp; obj.received(null);
            }
            var resData = {};
            if (res.data) {
              try {
                if (obj.dataType === 'json') {
                  resData = JSON.parse(res.data);
                } else {
                  resData = res.data;
                }
                if (resData &amp;&amp; resData.base_resp &amp;&amp; ((_a = resData.base_resp) === null || _a === void 0 ? void 0 : _a.ret) !== 0 &amp;&amp; typeof window.WX_BJ_REPORT !== 'undefined' &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; Math.random() &lt; 0.001) {
                  var reportUrl = obj.url;
                  if (obj.url.indexOf('?') !== -1) {
                    reportUrl = obj.url.substring(0, obj.url.indexOf('?'));
                    if (Url.getQuery('action', obj.url)) {
                      reportUrl = "".concat(reportUrl, "?action=").concat(Url.getQuery('action', obj.url));
                    }
                  }
                  if (!((reportUrl === '/mp/getappmsgext' || reportUrl === '/mp/getappmsgad') &amp;&amp; typeof resData.base_resp.ret === 'undefined')) {
                    window.WX_BJ_REPORT.BadJs.report(reportUrl, "ret=".concat(resData.base_resp.ret), {
                      mid: window.PAGE_MID,
                      view: 'wap_retcode'
                    });
                  }
                }
              } catch (e) {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 1,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_b = resData === null || resData === void 0 ? void 0 : resData.base_resp) === null || _b === void 0 ? void 0 : _b.ret) || 0
                  });
                }
                console.error(e);
                obj.error &amp;&amp; obj.error(null, {
                  type: 1,
                  error: e,
                  status: res.statusCode
                });
                obj.complete &amp;&amp; obj.complete();
                reqLogItem.endTime = Date.now();
                reqLogItem.response = res;
                networkEndLog(reqLogItem);
                return;
              }
            }
            var tmpResData = {};
            try {
              tmpResData = JSON.parse(res.data);
            } catch (e) {}
            if (tmpResData &amp;&amp; tmpResData.base_resp &amp;&amp; tmpResData.base_resp.ret === -3 &amp;&amp; retryTime &lt; 2 &amp;&amp; (mmVersion.isIOS || mmVersion.isAndroid &amp;&amp; mmVersion.getInner() &gt; '27000600')) {
              if (!obj.dontReport) {
                report36408({
                  CgiPath: urlObj.pathname || '',
                  Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                  Query: urlObj.search || '',
                  PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                  Method: obj.type || '',
                  RequestType: 20,
                  RetType: 1,
                  HttpCode: res.statusCode || 0,
                  Ret: ((_c = resData === null || resData === void 0 ? void 0 : resData.base_resp) === null || _c === void 0 ? void 0 : _c.ret) || 0
                });
              }
              var _retryTime = retryTime++;
              JSAPI.invoke('updatePageAuth', {}, function (res) {
                console.log('[skeleton] updatePageAuth', res);
                monitor$1.setSum(112287, 3, 1);
                if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf(':ok') &gt; -1) {
                  window.top.pass_ticket = encodeURIComponent(Url.getQuery('pass_ticket', res.fullUrl).html(false).replace(/\s/g, '+'));
                  if (obj.pass_ticket) {
                    obj.pass_ticket = window.top.pass_ticket;
                  }
                  console.warn('[skeleton] updatePageAuth resetTopbar');
                  var supportNewTopBar = mmVersion.isIOS &amp;&amp; mmVersion.gtVersion('7.0.10', true);
                  var showBottomBar = !!window.is_login;
                  if (window.top.item_show_type === '0' &amp;&amp; supportNewTopBar) {
                    var top = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop || 0;
                    setCurrentMpInfo(top &gt; 40 &amp;&amp; !showBottomBar);
                  }
                  try {
                    obj.url = Url.addParam(obj.url, 'retry', _retryTime, true);
                  } catch (err) {
                    console.error(err);
                  }
                  jsapiRequest(obj, data);
                  monitor$1.setSum(112287, 4, 1);
                } else {
                  obj.success &amp;&amp; obj.success(resData);
                  obj.complete &amp;&amp; obj.complete();
                  if (mmVersion.isIOS) {
                    monitor$1.setSum(112287, 35, 1);
                  } else {
                    monitor$1.setSum(112287, 36, 1);
                  }
                  reqLogItem.status = 200;
                  reqLogItem.endTime = Date.now();
                  reqLogItem.response = resData;
                  networkEndLog(reqLogItem);
                }
              });
            } else {
              if (((_d = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _d === void 0 ? void 0 : _d.ret) !== 0) {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 4,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_e = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _e === void 0 ? void 0 : _e.ret) || 0
                  });
                }
              } else {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 0,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_f = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _f === void 0 ? void 0 : _f.ret) || 0
                  });
                }
              }
              obj.success &amp;&amp; obj.success(resData);
              obj.complete &amp;&amp; obj.complete();
              reqLogItem.status = 200;
              reqLogItem.endTime = Date.now();
              reqLogItem.response = resData;
              networkEndLog(reqLogItem);
            }
          } else if (res.err_msg.indexOf('no permission') &gt; -1 || !mmVersion.isOnlyWechat) {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                Method: obj.type || '',
                RequestType: 20,
                RetType: 1,
                HttpCode: res.statusCode || 0,
                Ret: 0
              });
            }
            Ajax(obj);
            if (res.err_msg.indexOf('no permission') &gt; -1) {
              console.warn('[JSAPI Request] No permission');
              monitor$1.setSum(112287, 31, 1);
            }
            reqLogItem.status = 302;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = res;
            networkEndLog(reqLogItem);
          } else {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                Method: obj.type || '',
                RequestType: 20,
                RetType: 2,
                HttpCode: res.statusCode || 0,
                Ret: 0
              });
            }
            obj.error &amp;&amp; obj.error(null, {
              type: 3,
              error: res,
              status: 0
            });
            obj.complete &amp;&amp; obj.complete();
            monitor$1.setSum(112287, 32, 1);
            var sample = 0.001;
            if (Math.random() &lt; sample) {
              var msg = "request: ".concat(JSON.stringify(obj.type), " ").concat(JSON.stringify(obj.url), " ;;;; cookie: ").concat(JSON.stringify(document.cookie), " ;;;; data: ").concat(JSON.stringify(data), " ;;;; resp: ").concat(JSON.stringify(res));
              if (window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs) {
                window.WX_BJ_REPORT.BadJs.report('ajax_wx_request_error', msg, {
                  mid: 'mmbizwap:Monitor'
                });
              }
            }
            reqLogItem.status = 400;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = res;
            networkEndLog(reqLogItem);
          }
        });
      };
      if (reqType(obj, '/mp/getappmsgext')) {
        window.startGetAppmsgExtTime = Date.now();
      }
      if (reqType(obj, '/mp/getappmsgad')) {
        window.startGetAppmsgAdTime = Date.now();
      }
      jsapiRequest(obj, data);
    });
  }

  function _regeneratorRuntime() {  _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  var AjaxRouter = function () {
    var _ref = _asyncToGenerator( _regeneratorRuntime().mark(function _callee(obj) {
      return _regeneratorRuntime().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            if (!window.__secPageAuthPromise) {
              _context.next = 3;
              break;
            }
            _context.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            if (!(!mmVersion.isWxWork &amp;&amp; (window.__second_open__ || !getIsAcrossOrigin() &amp;&amp; top.window.__second_open__) &amp;&amp; window.__is_page_auth_return__ &amp;&amp; !obj.pureHttp)) {
              _context.next = 5;
              break;
            }
            return _context.abrupt("return", AjaxWx(obj));
          case 5:
            return _context.abrupt("return", Ajax(obj));
          case 6:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return function AjaxRouter(_x) {
      return _ref.apply(this, arguments);
    };
  }();

  var isx5 = navigator.userAgent.indexOf('TBS/') !== -1;
  var getDataFunc = [];
  var reportData = [];
  
  var specificData = {};
  function joinUrl(url) {
    var obj = {};
    if (typeof window.uin !== 'undefined') {
      obj.uin = window.uin;
    }
    if (typeof window.key !== 'undefined') {
      obj.key = window.key;
    }
    if (typeof window.pass_ticket !== 'undefined') {
      obj.pass_ticket = window.pass_ticket;
    }
    if (typeof window.wxtoken !== 'undefined') {
      obj.wxtoken = window.wxtoken;
    }
    if (typeof window.devicetype !== 'undefined') {
      obj.devicetype = window.devicetype;
    }
    if (typeof window.clientversion !== 'undefined') {
      obj.clientversion = window.clientversion;
    }
    if (typeof window.appmsg_token !== 'undefined') {
      obj.appmsg_token = window.appmsg_token;
    } else if (url.indexOf('advertisement_report') &gt; -1) {
      new Image().src = "".concat(location.protocol, "//mp.weixin.qq.com/mp/jsmonitor?idkey=68064_13_1&amp;r=").concat(Math.random());
    }
    obj.x5 = isx5 ? '1' : '0';
    obj.f = 'json';
    return Url.join(url, obj);
  }
  function isObj(obj) {
    return obj &amp;&amp; _typeof(obj) === 'object';
  }
  function assign(target, source) {
    if (isObj(target) &amp;&amp; isObj(source)) {
      for (var key in source) {
        if (Object.prototype.hasOwnProperty.call(source, key)) {
          target[key] = source[key];
        }
      }
    }
  }
  function assembleReportData(initiative) {
    var leaveReportLog = [];
    leaveReportLog.push({
      content: "[LeaveReport] specificData keys: ".concat(Object.keys(specificData)),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] specificData keys: ".concat(Object.keys(specificData)));
    console.log("[LeaveReport] specificData keys: ".concat(Object.keys(specificData)));
    var allReportData = {};
    for (var reportField in specificData) {
      if (!allReportData[reportField]) {
        allReportData[reportField] = {};
      }
      for (var i = 0; i &lt; specificData[reportField].length; i++) {
        var param = specificData[reportField][i];
        if (typeof param === 'function') {
          try {
            assign(allReportData[reportField], param(initiative));
          } catch (err) {
            leaveReportLog.push({
              content: "[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)),
              timestamp: Date.now()
            });
            Log.error("[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)));
            console.error("[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)));
          }
        } else if (isObj(param)) {
          assign(allReportData[reportField], param);
        }
      }
    }
    leaveReportLog.push({
      content: "[LeaveReport] reportData.length: ".concat(reportData.length),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] reportData.length: ".concat(reportData.length));
    console.log("[LeaveReport] reportData.length: ".concat(reportData.length));
    leaveReportLog.push({
      content: "[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length));
    console.log("[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length));
    for (var _i = 0; _i &lt; getDataFunc.length; _i++) {
      try {
        var data = getDataFunc[_i](initiative);
        if (isObj(data)) {
          reportData.push(data);
        }
      } catch (err) {
        leaveReportLog.push({
          content: "[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)),
          timestamp: Date.now()
        });
        Log.error("[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)));
        console.error("[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)));
      }
    }
    for (var _i2 = 0; _i2 &lt; reportData.length; _i2++) {
      if (reportData[_i2].reportUrl) {
        reportData[_i2].reportUrl = joinUrl(reportData[_i2].reportUrl);
      }
    }
    allReportData.data = {
      'requestList': reportData
    };
    leaveReportLog.push({
      content: "[LeaveReport] final reportData.length: ".concat(reportData.length, ", data=").concat(JSON.stringify(reportData)),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] final reportData.length: ".concat(reportData.length));
    console.log("[LeaveReport] final reportData.length: ".concat(reportData.length));
    allReportData.info = leaveReportLog;
    return allReportData;
  }
  function addReport(param) {
    if (typeof param === 'function') {
      getDataFunc.push(param);
    } else if (isObj(param)) {
      reportData.push(param);
    }
  }
  
  function addSpecificReport(reportField, param) {
    if (!specificData[reportField]) {
      specificData[reportField] = [];
    }
    specificData[reportField].push(param);
  }
  
  function reportNow(callback) {
    var allReportData = assembleReportData(true);
    JSAPI.invoke('handleMPPageAction', {
      action: 'reportByLeaveForMPGateway',
      reportData: allReportData
    }, function (res) {
      if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf(':ok') !== -1) {
        getDataFunc = [];
        reportData = [];
        specificData = {};
        typeof callback === 'function' &amp;&amp; callback(res);
      } else {
        getDataFunc = [];
        reportData = [];
        var len = allReportData.data.requestList.length;
        allReportData.data.requestList.forEach(function (req) {
          if (req.reportUrl) {
            AjaxRouter({
              type: req.method || 'GET',
              url: req.reportUrl,
              data: req.reportData,
              async: false,
              success: function success(resp) {
                if (--len &lt; 0) {
                  typeof callback === 'function' &amp;&amp; callback({
                    err_msg: 'handleMPPageAction:ok',
                    fallback: true,
                    resp: resp
                  });
                }
              },
              error: function error(xhr, err) {
                if (--len &lt; 0) {
                  typeof callback === 'function' &amp;&amp; callback({
                    err_msg: 'handleMPPageAction:fail',
                    fallback: true,
                    err: err
                  });
                }
              }
            });
          }
        });
      }
    });
  }
  var leaveReport = {
    reportNow: reportNow,
    addReport: addReport,
    addSpecificReport: addSpecificReport
  };
  var _leaveReport = (function () {
    var doc = {};
    var isCrossOrigin = false;
    try {
      doc = top.window.document;
    } catch (e) {
      isCrossOrigin = true;
    }
    if (!isCrossOrigin &amp;&amp; top.window.__leaveReport) {
      return top.window.__leaveReport;
    }
    if (window.__leaveReport) {
      return window.__leaveReport;
    }
    JSAPI.on('reportOnLeaveForMP', function () {
      return assembleReportData(false);
    });
    return window.__leaveReport = leaveReport;
  })();

  var getReportJson = function getReportJson(logId, rawData) {
    var data = JSON.parse(JSON.stringify(rawData));
    data.log_id = Number(logId);
    data.TimeStamp = Math.round(Date.now() / 1000);
    console.log('[comm_report] reportjson: ', data);
    return JSON.stringify(data);
  };
  var getSuccessHandler = function getSuccessHandler(logId, data, opt) {
    return function (res) {
      if (res &amp;&amp; res.err_code !== 0) {
        console.warn("[comm_report] report ".concat(logId, " fail: "), res.err_msg, data);
      }
      if (typeof opt.success === 'function') {
        opt.success(res);
      }
    };
  };
  var getErrorHandler = function getErrorHandler(logId, data, opt) {
    return function (xhr, info) {
      console.error("[comm_report] report ".concat(logId, " error: "), info, data);
      if (typeof opt.error === 'function') {
        opt.error(xhr, info);
      }
    };
  };
  var batchReportDataArr = [];
  var blackLogId = [25587, 18832, 28208, 25574, 29139, 10945];
  var BATCH_SIZE = 4;
  var BATCH_TIME = 1000;
  var getRepeatedReportJson = function getRepeatedReportJson() {
    if (!batchReportDataArr || !batchReportDataArr.length) return false;
    var reportData = {
      count: 0
    };
    reportData.count = batchReportDataArr.length;
    batchReportDataArr.forEach(function (data, index) {
      reportData["reportjson".concat(index)] = data;
    });
    batchReportDataArr = [];
    console.log('[reportData]: ', reportData);
    return reportData;
  };
  var timeOutId;
  function batchReport() {
    if (!batchReportDataArr || !batchReportDataArr.length) return;
    var repeatedReportJson = getRepeatedReportJson();
    if (!repeatedReportJson) return;
    AjaxRouter({
      type: 'POST',
      dataType: 'json',
      url: '/mp/wapcommreport?action=batch_report',
      data: repeatedReportJson,
      dontReport: true,
      success: function success(res) {
        if (res &amp;&amp; res.err_code) {
          console.warn("[comm_report] batch report fail: ", res.err_msg, batchReportDataArr);
        }
      },
      error: function error(xhr, info) {
        console.error("[comm_report] batch report error: ", info, batchReportDataArr);
      }
    });
  }
  function batchReportThrottle(logId, rawData) {
    var reportJsonData = getReportJson(logId, rawData);
    if (!reportJsonData) return;
    batchReportDataArr.push(reportJsonData);
    if (batchReportDataArr.length &gt;= BATCH_SIZE) {
      batchReport();
    } else {
      if (!timeOutId) {
        timeOutId = setTimeout(function () {
          batchReport();
          clearTimeout(timeOutId);
          timeOutId = null;
        }, BATCH_TIME);
      }
    }
  }
  _leaveReport.addReport(function () {
    var repeatedReportJson = getRepeatedReportJson();
    if (!repeatedReportJson) return false;
    var reportData = [];
    for (var _i = 0, _Object$entries = Object.entries(repeatedReportJson); _i &lt; _Object$entries.length; _i++) {
      var _Object_i = _slicedToArray(_Object$entries[_i], 2),
        key = _Object_i[0],
        value = _Object_i[1];
      reportData.push("".concat(key, "=").concat(encodeURIComponent(value)));
    }
    return {
      reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport?action=batch_report',
      reportData: reportData.join('&amp;'),
      method: 'POST'
    };
  });
  var commReport = {
    report: function report(logId, rawData, rawOpt) {
      var opt = rawOpt || {};
      if (!opt.realTime &amp;&amp; !blackLogId.includes(logId)) {
        batchReportThrottle(logId, rawData);
      } else {
        AjaxRouter({
          type: 'POST',
          dataType: 'json',
          url: '/mp/wapcommreport',
          data: {
            reportjson: getReportJson(logId, rawData)
          },
          async: opt.async,
          success: getSuccessHandler(logId, rawData, opt),
          error: getErrorHandler(logId, rawData, opt)
        });
      }
    },
    leaveReport: function leaveReport(logId, rawData) {
      _leaveReport.addReport(function () {
        var data = typeof rawData === 'function' ? rawData() : rawData;
        if (!data) {
          return false;
        }
        return {
          reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport',
          reportData: "reportjson=".concat(encodeURIComponent(getReportJson(logId, data))),
          method: 'POST'
        };
      });
    },
    reportByBeacon: function reportByBeacon(logId, rawData) {
      try {
        if (!Device.os.android &amp;&amp; !Device.os.ios &amp;&amp; !Device.os.harmony) {
          var data = typeof rawData === 'function' ? rawData() : rawData;
          if (!data) {
            return false;
          }
          var url = '/mp/wapcommreport';
          var reportJsonData = encodeURIComponent(getReportJson(logId, data));
          console.log("reportByBeacon", JSON.stringify(reportJsonData));
          navigator.sendBeacon(Url.joinUrl(url), "reportjson=".concat(reportJsonData));
        } else {
          _leaveReport.addReport(function () {
            var data = typeof rawData === 'function' ? rawData() : rawData;
            if (!data) {
              return false;
            }
            return {
              reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport',
              reportData: "reportjson=".concat(encodeURIComponent(getReportJson(logId, data))),
              method: 'POST'
            };
          });
        }
      } catch (error) {
        console.log(error);
      }
    }
  };

  var html = function html(_str, encode) {
    if (!_str) return '';
    var replace = ['&amp;#96;', '`', '&amp;#39;', '\'', '&amp;quot;', '"', '&amp;nbsp;', ' ', '&amp;gt;', '&gt;', '&amp;lt;', '&lt;', '&amp;yen;', '¥', '&amp;amp;', '&amp;', '&amp;#60;', '&lt;', '&amp;#62;', '&gt;'];
    
    var replaceReverse = ['&amp;', '&amp;amp;', '¥', '&amp;yen;', '&lt;', '&amp;lt;', '&gt;', '&amp;gt;', ' ', '&amp;nbsp;', '"', '&amp;quot;', '\'', '&amp;#39;', '`', '&amp;#96;'];
    var str = _str;
    var target;
    if (encode) {
      target = replaceReverse;
    } else {
      target = replace;
    }
    for (var i = 0; i &lt; target.length; i += 2) {
      str = str.replace(new RegExp(target[i], 'g'), target[i + 1]);
    }
    return str;
  };
  var htmlLite = function htmlLite(_str, encode) {
    if (!_str) return '';
    var replace = ['&amp;#96;', '`', '&amp;#39;', '\'', '&amp;quot;', '"', '&amp;gt;', '&gt;', '&amp;lt;', '&lt;', '&amp;amp;', '&amp;'];
    
    var replaceReverse = ['&amp;', '&amp;amp;', '&lt;', '&amp;lt;', '&gt;', '&amp;gt;', '"', '&amp;quot;', '\'', '&amp;#39;', '`', '&amp;#96;'];
    var str = _str;
    var target;
    if (encode) {
      target = replaceReverse;
    } else {
      target = replace;
    }
    for (var i = 0; i &lt; target.length; i += 2) {
      str = str.replace(new RegExp(target[i], 'g'), target[i + 1]);
    }
    return str;
  };
  var htmlEncode = function htmlEncode(str) {
    return html(str, true);
  };
  var htmlDecode = function htmlDecode(str) {
    return html(str, false);
  };
  var htmlEncodeLite = function htmlEncodeLite(str) {
    return htmlLite(str, true);
  };
  var htmlDecodeLite = function htmlDecodeLite(str) {
    return htmlLite(str, false);
  };
  String.prototype.html = function (encode) {
    return html(this.toString(), encode);
  };
  String.prototype.htmlEncode = function () {
    return htmlEncode(this.toString());
  };
  String.prototype.htmlDecode = function () {
    return htmlDecode(this.toString());
  };
  String.prototype.htmlLite = function (encode) {
    return htmlLite(this.toString(), encode);
  };
  String.prototype.htmlEncodeLite = function () {
    return htmlEncodeLite(this.toString());
  };
  String.prototype.htmlDecodeLite = function () {
    return htmlDecodeLite(this.toString());
  };

  
  var isIOS = mmVersion.isIOS,
    isAndroid = mmVersion.isAndroid;
  var renderDom = function renderDom(dom, cnt, hasStar) {
    if (dom) {
      if (hasStar) {
        dom.innerText = "已星标";
      } else {
        dom.innerText = "星标";
      }
      if (hasStar) {
        dom.classList.add('rich_media_meta_star');
        dom.classList.remove('rich_media_meta_star_cancel');
      } else {
        dom.classList.add('rich_media_meta_star_cancel');
        dom.classList.remove('rich_media_meta_star');
      }
      dom.style.removeProperty('display');
      localStorage.setItem('star_info', JSON.stringify({
        mid: window.mid,
        idx: window.idx,
        has_star: !!hasStar
      }));
    }
  };
  var __setStar = function __setStar(dom, cnt, statStatus) {
    var hasReportExpose = false;
    var hasStar = statStatus;
    var realCnt = cnt;
    function addStar() {
      var dispatchEvent = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : true;
      hasStar = 1;
      realCnt = realCnt + 1;
      renderDom(dom, realCnt, hasStar);
      if (dispatchEvent) window.dispatchEvent(new CustomEvent('star'));
    }
    function cancelStar() {
      var dispatchEvent = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : true;
      hasStar = 0;
      realCnt = realCnt - 1;
      renderDom(dom, realCnt, hasStar);
      if (dispatchEvent) window.dispatchEvent(new CustomEvent('cancel-star'));
    }
    if (dom) {
      renderDom(dom, cnt, statStatus);
      var clickHander = function clickHander() {
        if (hasStar === 0) {
          JSAPI.invoke('operateStar', {
            opType: 'addStar'
          }, function (res) {
            if (res.err_msg &amp;&amp; /:ok$/.test(res.err_msg)) addStar();
          });
        } else {
          JSAPI.invoke('operateStar', {
            opType: 'cancelStar'
          }, function (res) {
            if (res.err_msg &amp;&amp; /:ok$/.test(res.err_msg)) cancelStar();
          });
        }
        var data = {
          BizUin: window.biz,
          AppMsgID: window.mid * 1,
          ItemIndex: window.idx * 1,
          Scene: window.scene,
          SubScene: window.subscene * 1,
          EnterId: window.enterid,
          SessionId: "".concat(window.sessionid),
          Event: hasStar ? 8 : 7,
          ItemShowType: window.item_show_type * 1
        };
        commReport.report(17335, data);
      };
      var exposeHandler = function exposeHandler() {
        if (hasReportExpose) return;
        var data = {
          BizUin: window.biz,
          AppMsgID: window.mid * 1,
          ItemIndex: window.idx * 1,
          Scene: window.scene,
          SubScene: window.subscene * 1,
          EnterId: window.enterid,
          SessionId: "".concat(window.sessionid),
          Event: 6,
          ItemShowType: window.item_show_type * 1
        };
        commReport.report(17335, data);
        hasReportExpose = true;
      };
      dom.addEventListener('click', clickHander);
      JSAPI.on('onPageStarStateChanged', function (res) {
        console.log('onPageStarStateChanged', res);
        if (res.state) addStar();else cancelStar();
        window.__hasStarInLifecycle = !!hasStar;
      });
      var intersectionObserver = new IntersectionObserver(exposeHandler);
      intersectionObserver.observe(dom);
      window.addEventListener('star', function (e) {
        if (e &amp;&amp; e.detail &amp;&amp; e.detail.from === 'frontend') addStar(false);
      });
      window.addEventListener('cancel-star', function (e) {
        if (e &amp;&amp; e.detail &amp;&amp; e.detail.from === 'frontend') cancelStar(false);
      });
      document.addEventListener('visibilitychange', function () {
        var visible = document.visibilityState === 'visible';
        if (!visible) return;
        window.__hasStarInLifecycle = !!hasStar;
      });
    }
  };
  if (!window.__second_open__) {
    var starDom = document.querySelector('#js_star');
    var canUseStar = window.canUseStar || isIOS &amp;&amp; mmVersion.compareHexVersion('18003623') || isAndroid &amp;&amp; mmVersion.compareHexVersion('28003630');
    var startPersonCnt = window.star_person_cnt || '';
    console.log('canUseStar, startPersonCnt', canUseStar, startPersonCnt);
    if (!!(canUseStar * 1)) {
      var starSwitch = localStorage.getItem('mp_star_switch');
      if (starSwitch === 'true') {
        var starInfo = localStorage.getItem('star_info');
        var hasStar = 0;
        if (starInfo) {
          var parseStarInfo = JSON.parse(starInfo);
          if (Number(parseStarInfo.mid) === Number(window.mid) &amp;&amp; Number(parseStarInfo.idx) === Number(window.idx) &amp;&amp; parseStarInfo.has_star) {
            hasStar = 1;
          }
        }
        starDom &amp;&amp; renderDom(starDom, startPersonCnt * 1, hasStar);
        var spanElement = document.getElementById('meta_content_hide_info');
        spanElement &amp;&amp; spanElement.classList.remove('rich_media_meta_padding');
      } else {
        starDom &amp;&amp; starDom.parentNode.removeChild(starDom);
      }
    } else {
      starDom &amp;&amp; starDom.parentNode.removeChild(starDom);
    }
    window.__setStar = __setStar;
  }

  exports.__setStar = __setStar;
  exports.renderDom = renderDom;

  Object.defineProperty(exports, '__esModule', { value: true });

  return exports;

})({});
  &lt;/script&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   var __INLINE_SCRIPT__ = (function () {
  'use strict';

  function _typeof(obj) {
    "@babel/helpers - typeof";

    return _typeof = "function" == typeof Symbol &amp;&amp; "symbol" == typeof Symbol.iterator ? function (obj) {
      return typeof obj;
    } : function (obj) {
      return obj &amp;&amp; "function" == typeof Symbol &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj;
    }, _typeof(obj);
  }

  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
    try {
      var info = gen[key](arg);
      var value = info.value;
    } catch (error) {
      reject(error);
      return;
    }
    if (info.done) {
      resolve(value);
    } else {
      Promise.resolve(value).then(_next, _throw);
    }
  }
  function _asyncToGenerator(fn) {
    return function () {
      var self = this,
        args = arguments;
      return new Promise(function (resolve, reject) {
        var gen = fn.apply(self, args);
        function _next(value) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
        }
        function _throw(err) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
        }
        _next(undefined);
      });
    };
  }

  function _regeneratorRuntime() {  _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  
  var doc = {};
  var isAcrossOrigin = false;
  var notFoundedMPPageAction = [];
  var __moon_report = window.__moon_report || function () {};
  var MOON_JSAPI_KEY_OFFSET = 8;
  try {
    doc = top.window.document;
  } catch (e) {
    isAcrossOrigin = true;
  }
  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }
  function ready(onBridgeReady) {
    var bridgeReady = function bridgeReady() {
      try {
        if (onBridgeReady) {
          window.onBridgeReadyTime = window.onBridgeReadyTime || Date.now();
          onBridgeReady();
        }
      } catch (e) {
        __moon_report([{
          offset: MOON_JSAPI_KEY_OFFSET,
          log: 'ready',
          e: e
        }]);
        throw e;
      }
      window.jsapiReadyTime = Date.now();
    };
    if (!isAcrossOrigin &amp;&amp; (typeof top.window.WeixinJSBridge === 'undefined' || !top.window.WeixinJSBridge.invoke)) {
      if (doc.addEventListener) {
        doc.addEventListener('WeixinJSBridgeReady', bridgeReady, false);
      } else if (doc.attachEvent) {
        doc.attachEvent('WeixinJSBridgeReady', bridgeReady);
        doc.attachEvent('onWeixinJSBridgeReady', bridgeReady);
      }
    } else {
      bridgeReady();
    }
  }
  var invokeNotWaitA8key = ['notifyPageInfo', 'updatePageAuth'
  ];
  var checkNotFoundedInvoke = function checkNotFoundedInvoke(methodName, args) {
    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; notFoundedMPPageAction.includes(args === null || args === void 0 ? void 0 : args.action)) {
      return true;
    }
    return false;
  };
  function invoke(_x, _x2, _x3) {
    return _invoke.apply(this, arguments);
  }
  function _invoke() {
    _invoke = _asyncToGenerator( _regeneratorRuntime().mark(function _callee(methodName, args, callback) {
      return _regeneratorRuntime().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__ &amp;&amp; !invokeNotWaitA8key.includes(methodName))) {
              _context.next = 3;
              break;
            }
            _context.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                alert('请在微信中打开此链接');
                return false;
              }
              if (checkNotFoundedInvoke(methodName, args)) {
                setTimeout(function () {
                  if (callback) {
                    callback.apply(window, [{
                      err_msg: "".concat(methodName, ":fail"),
                      err_desc: 'action isn\'t supported'
                    }]);
                  }
                }, 0);
              } else {
                top.window.WeixinJSBridge.invoke(methodName, args, function () {
                  try {
                    for (var _len2 = arguments.length, rets = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
                      rets[_key2] = arguments[_key2];
                    }
                    var ret = rets[0];
                    var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
                    if (['handleMPPageAction', 'handleVideoAction', 'handleHaokanAction'].indexOf(methodName) !== -1) {
                      var action = (args === null || args === void 0 ? void 0 : args.action) || '';
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName, ", action-&gt;").concat(action).concat(errMsg));
                    } else {
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName).concat(errMsg));
                    }
                    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; ((ret === null || ret === void 0 ? void 0 : ret.err_desc) === 'action isn\'t supported' || (ret === null || ret === void 0 ? void 0 : ret.err_msg) === 'handleMPPageAction:fail action is not supported')) {
                      notFoundedMPPageAction.push(args === null || args === void 0 ? void 0 : args.action);
                    }
                    if (callback) {
                      callback.apply(window, rets);
                    }
                  } catch (e) {
                    __moon_report([{
                      offset: MOON_JSAPI_KEY_OFFSET,
                      log: "invoke;methodName:".concat(methodName),
                      e: e
                    }]);
                    throw e;
                  }
                });
              }
            });
          case 4:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return _invoke.apply(this, arguments);
  }
  function call(_x4) {
    return _call.apply(this, arguments);
  }
  function _call() {
    _call = _asyncToGenerator( _regeneratorRuntime().mark(function _callee2(methodName) {
      return _regeneratorRuntime().wrap(function _callee2$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__)) {
              _context2.next = 3;
              break;
            }
            _context2.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                return false;
              }
              try {
                top.window.WeixinJSBridge.call(methodName);
              } catch (e) {
                __moon_report([{
                  offset: MOON_JSAPI_KEY_OFFSET,
                  log: "call;methodName:".concat(methodName),
                  e: e
                }]);
                throw e;
              }
            });
          case 4:
          case "end":
            return _context2.stop();
        }
      }, _callee2);
    }));
    return _call.apply(this, arguments);
  }
  function on(eventName, callback) {
    ready(function () {
      if (isAcrossOrigin) return false;
      if (_typeof(top.window.WeixinJSBridge) !== 'object' || !top.window.WeixinJSBridge.on) {
        return false;
      }
      if (!window.JSAPIEventCallbackMap[eventName]) {
        window.JSAPIEventCallbackMap[eventName] = [];
      }
      window.JSAPIEventCallbackMap[eventName].push(callback);
      if (window.JSAPIEventCallbackMap[eventName].length &gt; 1) {
        return false;
      }
      top.window.WeixinJSBridge.on(eventName, function () {
        try {
          for (var _len = arguments.length, rets = new Array(_len), _key = 0; _key &lt; _len; _key++) {
            rets[_key] = arguments[_key];
          }
          var ret = rets[0];
          var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
          console.info('[system]', "[jsapi] event-&gt;".concat(eventName).concat(errMsg));
          if (window.JSAPIEventCallbackMap[eventName] &amp;&amp; window.JSAPIEventCallbackMap[eventName].length) {
            var result;
            for (var i = 0; i &lt; window.JSAPIEventCallbackMap[eventName].length; i++) {
              result = window.JSAPIEventCallbackMap[eventName][i].apply(window, rets);
            }
            return result;
          }
        } catch (e) {
          __moon_report([{
            offset: MOON_JSAPI_KEY_OFFSET,
            log: "on;eventName:".concat(eventName),
            e: e
          }]);
          throw e;
        }
      });
    });
  }
  function remove(eventName, callback) {
    ready(function () {
      if (!window.JSAPIEventCallbackMap[eventName]) {
        return false;
      }
      var result = false;
      for (var i = window.JSAPIEventCallbackMap[eventName].length - 1; i &gt;= 0; i--) {
        if (window.JSAPIEventCallbackMap[eventName][i] === callback) {
          window.JSAPIEventCallbackMap[eventName].splice(i, 1);
          result = true;
        }
      }
      return result;
    });
  }
  var JSAPI = {
    ready: ready,
    invoke: invoke,
    call: call,
    on: on,
    remove: remove
  };

  var __setPreview = function __setPreview() {
    var extData = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    if (extData &amp;&amp; extData.previewType === 1) {
      JSAPI.invoke('setNavigationBarButtons', {
        right: {
          hidden: true
        }
      });
    }
    var quotePreviewSwitch = document.getElementById('js_quote_preview_switch');
    if (quotePreviewSwitch &amp;&amp; extData &amp;&amp; extData.quoteList &amp;&amp; extData.quoteList.length) {
      quotePreviewSwitch.innerHTML = "备注内容仅自己可见，可" + '&amp;nbsp;&lt;a href="javascript:;" id="js_quote_preview_switch_inner"&gt;' + '预览公开发表视角' + '&lt;/a&gt;';
    }
  };
  if (!window.__second_open__) {
    var previewType = '' * 1;
    var quoteList = null;
    try {
      quoteList = JSON.parse('[]');
    } catch (e) {
      console.error(e);
    }
    var extData = {
      quoteList: quoteList,
      previewType: previewType
    };
    __setPreview(extData);
    window.__setPreview = __setPreview;
  }

  return __setPreview;

})();
  &lt;/script&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   (function () {
  'use strict';

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  function _typeof(obj) {
    "@babel/helpers - typeof";

    return _typeof = "function" == typeof Symbol &amp;&amp; "symbol" == typeof Symbol.iterator ? function (obj) {
      return typeof obj;
    } : function (obj) {
      return obj &amp;&amp; "function" == typeof Symbol &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj;
    }, _typeof(obj);
  }

  function _toPrimitive(input, hint) {
    if (_typeof(input) !== "object" || input === null) return input;
    var prim = input[Symbol.toPrimitive];
    if (prim !== undefined) {
      var res = prim.call(input, hint || "default");
      if (_typeof(res) !== "object") return res;
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return (hint === "string" ? String : Number)(input);
  }

  function _toPropertyKey(arg) {
    var key = _toPrimitive(arg, "string");
    return _typeof(key) === "symbol" ? key : String(key);
  }

  function _defineProperties(target, props) {
    for (var i = 0; i &lt; props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor) descriptor.writable = true;
      Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
    }
  }
  function _createClass(Constructor, protoProps, staticProps) {
    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
    if (staticProps) _defineProperties(Constructor, staticProps);
    Object.defineProperty(Constructor, "prototype", {
      writable: false
    });
    return Constructor;
  }

  function _assertThisInitialized(self) {
    if (self === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }
    return self;
  }

  function _possibleConstructorReturn(self, call) {
    if (call &amp;&amp; (_typeof(call) === "object" || typeof call === "function")) {
      return call;
    } else if (call !== void 0) {
      throw new TypeError("Derived constructors may only return object or undefined");
    }
    return _assertThisInitialized(self);
  }

  function _getPrototypeOf(o) {
    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {
      return o.__proto__ || Object.getPrototypeOf(o);
    };
    return _getPrototypeOf(o);
  }

  function _setPrototypeOf(o, p) {
    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {
      o.__proto__ = p;
      return o;
    };
    return _setPrototypeOf(o, p);
  }

  function _inherits(subClass, superClass) {
    if (typeof superClass !== "function" &amp;&amp; superClass !== null) {
      throw new TypeError("Super expression must either be null or a function");
    }
    subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, {
      constructor: {
        value: subClass,
        writable: true,
        configurable: true
      }
    });
    Object.defineProperty(subClass, "prototype", {
      writable: false
    });
    if (superClass) _setPrototypeOf(subClass, superClass);
  }

  var classWhiteList = ['rich_pages', 'blockquote_info', 'blockquote_biz', 'blockquote_other', 'blockquote_article', 'h5_image_link', 'img_loading', 'list-paddingleft-1', 'list-paddingleft-2', 'list-paddingleft-3', 'selectTdClass', 'noBorderTable', 'ue-table-interlace-color-single', 'ue-table-interlace-color-double', '__bg_gif', 'normal_text_link', 'mp_article_text_link', 'album', 'weapp_text_link', 'weapp_image_link', 'product_image_link', 'qqmusic_area', 'tc', 'tips_global', 'unsupport_tips', 'qqmusic_wrp', 'appmsg_card_context', 'appmsg_card_active', 'qqmusic_bd', 'play_area', 'icon_qqmusic_switch', 'pic_qqmusic_default', 'qqmusic_thumb', 'access_area', 'qqmusic_songname', 'qqmusic_singername', 'qqmusic_source', 'share_audio_context', 'flex_context', 'pages_reset', 'share_audio_switch', 'icon_share_audio_switch', 'share_audio_info', 'flex_bd', 'share_audio_title', 'share_audio_tips', 'share_audio_progress_wrp', 'share_audio_progress', 'share_audio_progress_inner', 'share_audio_progress_buffer', 'share_audio_progress_loading', 'share_audio_progress_loading_inner', 'share_audio_progress_handle', 'share_audio_desc', 'share_audio_length_current', 'share_audio_length_total', 'video_iframe', 'vote_iframe', 'res_iframe', 'card_iframe', 'weapp_display_element', 'weapp_card', 'app_context', 'weapp_card_bd', 'weapp_card_profile', 'radius_avatar', 'weapp_card_avatar', 'weapp_card_nickname', 'weapp_card_info', 'weapp_card_title', 'weapp_card_thumb_wrp', 'weapp_card_ft', 'weapp_card_logo', 'pay', 'pay__mask', 'ct_geography_loc_tip', 'subsc_context', 'subsc_btn', 'reset_btn', 'icon_subsc', 'weui-primary-loading', 'weui-primary-loading__dot', 'wxw-img', 'mp-caret', 'appmsg_poi_iframe', 'cpc_iframe', 'channels_iframe_wrp', 'channels_iframe', 'videosnap_video_iframe', 'videosnap_live_iframe', 'videosnap_image_iframe', 'channels_live_iframe', 'minishop_iframe_wrp', 'minishop_iframe', 'mp_profile_iframe', 'mp_profile_iframe_wrp', 'mp_search_iframe_wrp', 'appmsg_search_iframe_wrp', 'appmsg_search_iframe', 'vote_area', 'vote_iframe', 'mp_vote_iframe_wrp', 'mp_vote_iframe', 'qqmusic_iframe', 'blockquote_iframe', 'blockquote_tips_iframe', 'video_iframe', 'shopcard_iframe', 'topic_iframe', 'weapp_app_iframe', 'img_fail_iframe', 'mp_miniprogram_iframe', 'appmsg_cpslink_iframe', 'js_editor_mpcpslink', 'mp-cpslink-iframe-wrp', 'mp_common_sticker_iframe', 'mp_common_sticker_iframe_wrp', 'mp_common_product_iframe', 'mp_common_product_iframe_wrp', 'mp_lottery_iframe_wrp', 'mp_shopprofile_wrp', 'new_cps_iframe', 'redpackage_iframe', 'mp_redpacket_iframe_wrp', 'product_text_link', 'clmusic_iframe', 'clalbum_iframe', 'mp_common_custom_iframe_wrp', 'mp_common_custom_iframe'];
  var classWhiteListReg = [new RegExp('^editor__content__'), new RegExp('^wxw'), new RegExp('^js_'), new RegExp('^cps_inner'), new RegExp('^bizsvr_'),
  new RegExp('^code-snippet'),
  new RegExp('^wx_(?!text_underline)'),
  new RegExp('^wx-'),
  new RegExp('^icon_emoji_'),
  new RegExp('^custom_select_card')
  ];
  var contentStyle = {
    classWhiteList: classWhiteList,
    classWhiteListReg: classWhiteListReg
  };

  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
  function DomFilter (cgiOptData) {
    return function (Plugin) {
      var isMMVersionSetted = false;
      var contentDom = document.getElementById('js_content');
      var classWhiteList = contentStyle.classWhiteList,
        classWhiteListReg = contentStyle.classWhiteListReg;
      var removeClassByWhiteList = function removeClassByWhiteList(node) {
        var classAttr = node.getAttribute('class');
        if (classAttr) {
          var classList = classAttr.split(/\s+/);
          var newClassList = [];
          for (var i = 0, len = classList.length; i &lt; len; ++i) {
            var className = classList[i];
            if (className &amp;&amp; classWhiteList.indexOf(className) != -1) {
              newClassList.push(className);
            } else {
              for (var j = 0, jl = classWhiteListReg.length; j &lt; jl; j++) {
                if (classWhiteListReg[j].test(className)) {
                  newClassList.push(className);
                  break;
                }
              }
            }
          }
          node.setAttribute('class', newClassList.join(' '));
        }
      };
      var langBlackList = ['zh-cn', 'en-us'];
      var removeLangByBlackList = function removeLangByBlackList(node) {
        var langAttr = node.getAttribute('lang');
        if (langAttr) {
          var lang = langAttr.toLowerCase();
          for (var i = 0; i &lt; langBlackList.length; i++) {
            if (lang === langBlackList[i]) {
              node.removeAttribute('lang');
              return;
            }
          }
        }
      };
      var isAccessMode = window.localStorage.getItem('isMpUserAccessibility');
      var isCarton = (cgiOptData === null || cgiOptData === void 0 ? void 0 : cgiOptData.copyright_info.is_cartoon_copyright) || (cgiOptData === null || cgiOptData === void 0 ? void 0 : cgiOptData.user_info.is_care_mode) || isAccessMode === '1';
      var bgPlaceholder = 'url("data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==")';
      var lazyloadBackgroundImage = function lazyloadBackgroundImage(node) {
        if (window.__second_open__ &amp;&amp; !isCarton &amp;&amp; node &amp;&amp; node.style &amp;&amp; typeof node.getAttribute === 'function' &amp;&amp; !node.getAttribute('data-lazy-bgimg')) {
          var bgImg = node.style.backgroundImage;
          var bgImgUrl = bgImg &amp;&amp; bgImg.match(/url\(['"]?(.*?)['"]?\)/);
          if (bgImgUrl &amp;&amp; bgImgUrl[1]) {
            node.style.backgroundImage = bgImg.replace(/url\(['"]?.*?['"]?\)/, bgPlaceholder);
            node.setAttribute('data-lazy-bgimg', bgImgUrl[1]);
            node.classList.add('wx_imgbc_placeholder');
          }
        }
      };
      var recoverFontFamily = function recoverFontFamily(node) {
        var ua = navigator.userAgent;
        var isAppleSystem = /(iPhone|iPad|iPod|iOS|mac\sos)/i.test(ua);
        if (isAppleSystem &amp;&amp; node &amp;&amp; node.style) {
          var fontFamily = node.style.fontFamily;
          var pingfangFont = 'PingFang SC';
          var systemFont = ['system-ui', '-apple-system-font', '-apple-system'];
          if (fontFamily) {
            var fontArray = fontFamily.split(',').map(function (item) {
              return item.trim();
            });
            var pingfangIndex = fontArray.findIndex(function (item) {
              return item.includes(pingfangFont);
            });
            var systemIndex = fontArray.findIndex(function (item) {
              return systemFont.some(function (sysFont) {
                return item.includes(sysFont);
              });
            });
            if (systemIndex !== -1 &amp;&amp; pingfangIndex !== -1 &amp;&amp; systemIndex &lt; pingfangIndex) {
              var pingfangItem = fontArray[pingfangIndex];
              fontArray.splice(pingfangIndex, 1);
              fontArray.splice(systemIndex, 0, pingfangItem);
              node.style.fontFamily = fontArray.join(', ');
            }
            return;
          }
        }
      };
      return function (_Plugin) {
        _inherits(_class, _Plugin);
        function _class() {
          _classCallCheck(this, _class);
          return _callSuper(this, _class, arguments);
        }
        _createClass(_class, [{
          key: "beforeConvertNode",
          value: function beforeConvertNode(el) {
            if (el &amp;&amp; el.tagName) {
              var tagName = el.tagName.toLowerCase();
              if (tagName !== 'iframe') {
                removeClassByWhiteList(el);
                removeLangByBlackList(el);
                recoverFontFamily(el);
                lazyloadBackgroundImage(el);
              } else {
                if (el.getAttribute('class') === 'video_ad_iframe') {
                  el.setAttribute('class', '');
                }
              }
            }
          }
        }, {
          key: "afterConvertNode",
          value: function afterConvertNode(el) {
            if (!isMMVersionSetted) {
              var ua = navigator.userAgent;
              /(iPhone|iPad|iPod|iOS|mac\sos)/i.test(ua) ? contentDom.classList.add('fix_apple_default_style') : null;
              isMMVersionSetted = true;
            }
            if (el.style &amp;&amp; el.style.webkitTextSizeAdjust !== '' &amp;&amp; el.style.webkitTextSizeAdjust !== 'none') {
              el.style.webkitTextSizeAdjust = 'inherit';
            }
            if (el.tagName === 'animate' &amp;&amp; el.getAttribute('attributeName') === 'height') {
              var repeatCountVal = el.getAttribute('repeatCount');
              if (repeatCountVal === 'indefinite' || repeatCountVal &gt; '10') {
                if (el.getAttribute('begin') !== 'click' &amp;&amp; el.getAttribute('end') !== 'click') {
                  el.setAttribute('repeatCount', 'undefined');
                  el.setAttribute('attributeName', 'undefined');
                  new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=306525_1_1';
                }
              }
            }
            if (el.tagName === 'OL') {
              
              if ((el.parentNode === document.getElementById('js_content') || el.parentNode.getAttribute('id') === 'js_secopen_content') &amp;&amp; el.getAttribute('style') &amp;&amp; el.getAttribute('style').indexOf('padding-left') &lt; 0) {
                if (el.childNodes.length &gt;= 10 &amp;&amp; el.childNodes.length &lt; 100) {
                  el.classList.add('extra-list-padding-level1');
                  el.style.paddingLeft = '2.2em';
                } else if (el.childNodes.length &gt; 100) {
                  el.classList.add('extra-list-padding-level2');
                  el.style.paddingLeft = '3.2em';
                }
              }
            }
            if (el.tagName === 'MP-STYLE-TYPE') {
              var styleType = parseInt(el.getAttribute('data-value'), 10);
              if (styleType === 3) {
                if (el.parentNode &amp;&amp; el.parentNode.previousSibling) {
                  var realLastP = el.parentNode.previousSibling;
                  if ((realLastP.tagName === 'P' || realLastP.tagName === 'SECTION') &amp;&amp; realLastP.style &amp;&amp; !realLastP.style.marginBottom) {
                    realLastP.style.marginBottom = '0';
                  }
                }
              }
            }
            if (el.tagName === 'svg') {
              if (!el.hasAttribute('role')) {
                el.setAttribute('role', 'img');
              }
              if (!el.hasAttribute('aria-label')) {
                el.setAttribute('aria-label', '插图');
              }
            }
          }
        }]);
        return _class;
      }(Plugin);
    };
  }

  
  if (!window.__second_open__ &amp;&amp; window.Darkmode) {
    var cost = 0;
    window.Darkmode.extend([DomFilter()]);
    window.Darkmode.run(document.querySelectorAll('#js_content *'), {
      mode: '',
      defaultDarkTextColor: '#989898',
      defaultDarkBgColor: '',
      whitelist: {
        attribute: ['data-no-dark']
      },
      error: function error() {
        new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_0_1';
      },
      begin: function begin(isSwitch) {
        new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_2_1';
        isSwitch &amp;&amp; (new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_4_1');
        cost = new Date() * 1;
      },
      showFirstPage: function showFirstPage() {
        document.getElementById('js_content').style.removeProperty('opacity');
        cost = new Date() * 1 - cost;
        var isTop = (document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop) === 0;
        if (cost &lt;= 10) {
          new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_6_1';
          isTop &amp;&amp; (new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_13_1');
        } else if (cost &gt; 10 &amp;&amp; cost &lt;= 20) {
          new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_7_1';
          isTop &amp;&amp; (new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_14_1');
        } else if (cost &gt; 20 &amp;&amp; cost &lt;= 30) {
          new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_8_1';
          isTop &amp;&amp; (new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_15_1');
        } else if (cost &gt; 30 &amp;&amp; cost &lt;= 40) {
          new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_9_1';
          isTop &amp;&amp; (new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_16_1');
        } else if (cost &gt; 40 &amp;&amp; cost &lt;= 50) {
          new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_10_1';
          isTop &amp;&amp; (new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_17_1');
        } else if (cost &gt; 50 &amp;&amp; cost &lt;= 60) {
          new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_11_1';
          isTop &amp;&amp; (new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_18_1');
        } else {
          new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_12_1';
          isTop &amp;&amp; (new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_19_1');
        }
      }
    });
    document.getElementById('js_content').style.removeProperty('visibility');
  }

})();
  &lt;/script&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   var __INLINE_SCRIPT__ = (function (exports) {
  'use strict';

  function _typeof(obj) {
    "@babel/helpers - typeof";

    return _typeof = "function" == typeof Symbol &amp;&amp; "symbol" == typeof Symbol.iterator ? function (obj) {
      return typeof obj;
    } : function (obj) {
      return obj &amp;&amp; "function" == typeof Symbol &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj;
    }, _typeof(obj);
  }

  function _toPrimitive(input, hint) {
    if (_typeof(input) !== "object" || input === null) return input;
    var prim = input[Symbol.toPrimitive];
    if (prim !== undefined) {
      var res = prim.call(input, hint || "default");
      if (_typeof(res) !== "object") return res;
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return (hint === "string" ? String : Number)(input);
  }

  function _toPropertyKey(arg) {
    var key = _toPrimitive(arg, "string");
    return _typeof(key) === "symbol" ? key : String(key);
  }

  function _defineProperty(obj, key, value) {
    key = _toPropertyKey(key);
    if (key in obj) {
      Object.defineProperty(obj, key, {
        value: value,
        enumerable: true,
        configurable: true,
        writable: true
      });
    } else {
      obj[key] = value;
    }
    return obj;
  }

  function _arrayLikeToArray$1(arr, len) {
    if (len == null || len &gt; arr.length) len = arr.length;
    for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i];
    return arr2;
  }

  function _arrayWithoutHoles(arr) {
    if (Array.isArray(arr)) return _arrayLikeToArray$1(arr);
  }

  function _iterableToArray(iter) {
    if (typeof Symbol !== "undefined" &amp;&amp; iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
  }

  function _unsupportedIterableToArray$1(o, minLen) {
    if (!o) return;
    if (typeof o === "string") return _arrayLikeToArray$1(o, minLen);
    var n = Object.prototype.toString.call(o).slice(8, -1);
    if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name;
    if (n === "Map" || n === "Set") return Array.from(o);
    if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen);
  }

  function _nonIterableSpread() {
    throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }

  function _toConsumableArray(arr) {
    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray$1(arr) || _nonIterableSpread();
  }

  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r &amp;&amp; (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
  function _objectSpread(e) { for (var r = 1; r &lt; arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" &amp;&amp; o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike &amp;&amp; o &amp;&amp; typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i &gt;= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion &amp;&amp; it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
  function _arrayLikeToArray(arr, len) { if (len == null || len &gt; arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i]; return arr2; }
  function updateProfileAttr(profiles, infos) {
    if (!profiles || !Array.isArray(profiles) || !infos || !Array.isArray(infos)) {
      return;
    }
    var _iterator = _createForOfIteratorHelper(profiles),
      _step;
    try {
      for (_iterator.s(); !(_step = _iterator.n()).done;) {
        var profile = _step.value;
        var profileId = profile.getAttribute('data-id');
        var profileInfo = findBizCardInfo(infos, profileId);
        if (profileInfo) {
          var is_biz_ban = profileInfo.is_biz_ban,
            original_num = profileInfo.original_num,
            biz_account_status = profileInfo.biz_account_status,
            verify_status = profileInfo.verify_status,
            round_head_img = profileInfo.round_head_img,
            nickname = profileInfo.nickname,
            signature = profileInfo.signature;
          profile.setAttribute('data-origin_num', original_num * 1);
          profile.setAttribute('data-is_biz_ban', is_biz_ban * 1);
          profile.setAttribute('data-isban', is_biz_ban * 1);
          profile.setAttribute('data-biz_account_status', biz_account_status * 1);
          profile.setAttribute('data-verify_status', verify_status * 1);
          profile.setAttribute('data-headimg', round_head_img);
          profile.setAttribute('data-nickname', nickname.htmlDecode());
          profile.setAttribute('data-signature', signature.htmlDecode());
        }
      }
    } catch (err) {
      _iterator.e(err);
    } finally {
      _iterator.f();
    }
  }
  function findBizCardInfo(infos, id) {
    return infos.find(function (info) {
      return info.fakeid === id;
    });
  }
  function dealWithProfileData(data) {
    var _data$biz_card;
    if (!window.__second_open__) {
      return data;
    }
    var profileData = (data === null || data === void 0 ? void 0 : (_data$biz_card = data.biz_card) === null || _databiz_card.list) || [];
    profileData.map(function (item) {
      return item['original_num'] = item['orignal_num'];
    });
    return profileData;
  }
  function updateCustomElementAttrs(dom, data) {
    if (!dom || !data) return;
    var profiles = dom.querySelectorAll('mp-common-profile');
    updateProfileAttr(Array.from(profiles), dealWithProfileData(data));
  }
  function preprocessMpAudios(dom, data) {
    var voiceList = window.__second_open__ ? data === null || data === void 0 ? void 0 : data.voice_in_appmsg_list_json : data.voiceList;
    if (typeof voiceList === 'string') {
      try {
        voiceList = JSON.parse(voiceList);
      } catch (e) {
        return;
      }
    }
    if (!dom || !voiceList) return;
    var albumlist = [];
    if (voiceList.voice_in_appmsg &amp;&amp; voiceList.voice_in_appmsg.length &gt; 0) {
      albumlist = voiceList.voice_in_appmsg;
    }
    var mpvoices = _toConsumableArray(dom.querySelectorAll('mpvoice'));
    mpvoices.forEach(function (mpvoice) {
      var mpaudio = document.createElement('mp-common-mpaudio');
      var attrs = mpvoice.getAttributeNames().reduce(function (acc, name) {
        if (name === 'data-trans_state' || name === 'err_tips') return acc;
        return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, name, mpvoice.getAttribute(name)));
      }, {});
      for (var key in attrs) {
        mpaudio.setAttribute(key, attrs[key]);
      }
      mpaudio.setAttribute('data-trans_state', 1);
      mpvoice.parentNode.replaceChild(mpaudio, mpvoice);
    });
    var mpaudios = _toConsumableArray(dom.querySelectorAll('mp-common-mpaudio'));
    mpaudios.forEach(function (mpaudio) {
      mpaudio.style.opacity = 0;
      mpaudio.setAttribute('author', data.nick_name || '');
      var album = albumlist.find(function (a) {
        var voice_encode_fileid = mpaudio.getAttribute('voice_encode_fileid');
        try {
          voice_encode_fileid = decodeURIComponent(voice_encode_fileid);
        } catch (e) {}
        return a.voice_id === voice_encode_fileid &amp;&amp; a.appmsgalbuminfo;
      });
      if (album) {
        mpaudio.setAttribute('data-topic_id', album.appmsgalbuminfo.album_id || 0);
        mpaudio.setAttribute('data-topic_name', album.appmsgalbuminfo.title || '');
        mpaudio.setAttribute('data-topic_link', album.appmsgalbuminfo.link.html(false).replace('#wechat_redirect', '') + '#wechat_redirect');
        mpaudio.setAttribute('data-topic_num', album.appmsgalbuminfo.tag_content_num || 0);
      }
    });
    var claudios = _toConsumableArray(dom.querySelectorAll('mp-common-claudio'));
    claudios.forEach(function (claudio) {
      claudio.style.opacity = 0;
    });
  }
  function handleTagReplacement(ele, newTagName) {
    var newTag = document.createElement(newTagName);
    var _iterator2 = _createForOfIteratorHelper(ele.attributes),
      _step2;
    try {
      for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
        var attr = _step2.value;
        newTag.setAttribute(attr.name, attr.value);
      }
    } catch (err) {
      _iterator2.e(err);
    } finally {
      _iterator2.f();
    }
    newTag.innerHTML = ele.innerHTML;
    ele.parentNode.replaceChild(newTag, ele);
    return newTag;
  }
  function preprocessMpMusic(root) {
    var qqmusicEles = _toConsumableArray(root.querySelectorAll('qqmusic'));
    qqmusicEles.forEach(function (ele) {
      return handleTagReplacement(ele, 'mp-common-qqmusic');
    });
  }
  if (!window.__second_open__) {
    updateCustomElementAttrs(window.document, window.mp_profile);
    preprocessMpAudios(window.document, {
      voiceList: window.voiceList,
      nick_name: window.nickname
    });
    preprocessMpMusic(window.document);
  }

  exports.preprocessMpAudios = preprocessMpAudios;
  exports.preprocessMpMusic = preprocessMpMusic;
  exports.updateCustomElementAttrs = updateCustomElementAttrs;
  exports.updateProfileAttr = updateProfileAttr;

  Object.defineProperty(exports, '__esModule', { value: true });

  return exports;

})({});
  &lt;/script&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   var __INLINE_SCRIPT__ = (function () {
  'use strict';

  function _typeof(obj) {
    "@babel/helpers - typeof";

    return _typeof = "function" == typeof Symbol &amp;&amp; "symbol" == typeof Symbol.iterator ? function (obj) {
      return typeof obj;
    } : function (obj) {
      return obj &amp;&amp; "function" == typeof Symbol &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj;
    }, _typeof(obj);
  }

  function _toPrimitive(input, hint) {
    if (_typeof(input) !== "object" || input === null) return input;
    var prim = input[Symbol.toPrimitive];
    if (prim !== undefined) {
      var res = prim.call(input, hint || "default");
      if (_typeof(res) !== "object") return res;
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return (hint === "string" ? String : Number)(input);
  }

  function _toPropertyKey(arg) {
    var key = _toPrimitive(arg, "string");
    return _typeof(key) === "symbol" ? key : String(key);
  }

  function _defineProperty(obj, key, value) {
    key = _toPropertyKey(key);
    if (key in obj) {
      Object.defineProperty(obj, key, {
        value: value,
        enumerable: true,
        configurable: true,
        writable: true
      });
    } else {
      obj[key] = value;
    }
    return obj;
  }

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  function _defineProperties(target, props) {
    for (var i = 0; i &lt; props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor) descriptor.writable = true;
      Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
    }
  }
  function _createClass(Constructor, protoProps, staticProps) {
    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
    if (staticProps) _defineProperties(Constructor, staticProps);
    Object.defineProperty(Constructor, "prototype", {
      writable: false
    });
    return Constructor;
  }

  
  var prefix = '__WXLS__';
  var localStorage = window.localStorage || {
    getItem: function getItem() {},
    setItem: function setItem() {},
    removeItem: function removeItem() {},
    key: function key() {},
    clear: function clear() {
      var _a, _b;
      (_b = (_a = window.localStorage) === null || _a === void 0 ? void 0 : _a.clear) === null || _b === void 0 ? void 0 : _b.call(_a);
    },
    length: 0
  };
  var evictionPolicies = {
    noeviction: function noeviction(data) {
      return data;
    },
    'allkeys-random': function allkeysRandom(data, size) {
      var keys = Object.keys(data);
      var memCnt = 0;
      while (memCnt &lt; size) {
        var len = keys.length;
        var randomKeyIdx = Math.floor(Math.random() * len);
        var randomKey = keys[randomKeyIdx];
        memCnt += JSON.stringify(data[randomKey]).length;
        delete data[randomKey];
        keys = Object.keys(data);
      }
      return data;
    },
    'volatile-ttl': function volatileTtl(data, size) {
      var keys = Object.keys(data);
      keys = keys.sort(function (key1, key2) {
        var d1 = data[key1];
        var d2 = data[key2];
        if (d1.exp &lt; d2.exp) return -1;
        if (d1.exp &gt; d2.exp) return 1;
        return 0;
      });
      var memCnt = 0;
      for (var i = 0; i &lt; keys.length; i++) {
        if (memCnt &gt;= size) break;
        var key = keys[i];
        memCnt += JSON.stringify(data[key]).length;
        delete data[key];
      }
      return data;
    },
    'clear-all': function clearAll() {
      localStorage.clear();
      return {};
    }
  };
  function formatLogMsg(str) {
    return "[WXLS] ".concat(str);
  }
  
  var LS = function () {
    function LS(func, evictionPolicy, logger) {
      _classCallCheck(this, LS);
      this.logger = function () {};
      if (!func) throw 'require function name.';
      this.evictionPolicy = 'noeviction';
      this.key = func;
      if (typeof logger === 'function') {
        this.logger = function (str, type) {
          return logger(formatLogMsg(str), type);
        };
      }
      if (evictionPolicy &amp;&amp; Object.keys(evictionPolicies).indexOf(evictionPolicy) !== -1) {
        this.evictionPolicy = evictionPolicy;
      }
      this.init();
    }
    _createClass(LS, [{
      key: "init",
      value: function init() {
        var _a, _b;
        this.check();
        if (Math.random() * 1000 &lt; 1) {
          (_a = this.logger) === null || _a === void 0 ? void 0 : _a.call(this, "LSlen: ".concat(((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length) || localStorage.length), 'report');
        }
      }
    }, {
      key: "getData",
      value: function getData() {
        var data = LS.getItem(this.key) || '{}';
        try {
          data = JSON.parse(data);
        } catch (e) {
          this.logger("getData error: ".concat(e), 'error');
          localStorage.removeItem(prefix + this.key);
          data = {};
        }
        return data;
      }
    }, {
      key: "check",
      value: function check(isReturn) {
        var data = this.getData();
        var temp = {};
        var now = +new Date();
        var key;
        var val;
        for (key in data) {
          val = data[key];
          if (+val.exp &gt; now) {
            temp[key] = val;
          }
        }
        this.logger("check info: isReturn:".concat(isReturn, " data:").concat(JSON.stringify(temp)), 'info');
        if (isReturn) return temp;
        LS.setItem(this.key, JSON.stringify(temp), this.logger);
      }
    }, {
      key: "set",
      value: function set(key, val, exp) {
        var _a, _b;
        var data = this.check(true);
        data[key] = {
          val: val,
          exp: exp || +new Date()
        };
        try {
          if (localStorage.getItem(prefix + this.key)) localStorage.removeItem(prefix + this.key);
          localStorage.setItem(prefix + this.key, JSON.stringify(data));
          this.logger("first set success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data)), 'success');
        } catch (e) {
          this.logger("first set error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data), " k:").concat(key, " v:").concat(val, " exp:").concat(exp), 'error');
          localStorage.clear();
          LS.setItem(this.key, JSON.stringify(_defineProperty({}, key, {
            val: val,
            exp: exp || +new Date()
          })), this.logger);
        }
      }
    }, {
      key: "get",
      value: function get(key) {
        var data = this.getData();
        data = data[key];
        return data ? data.val || null : null;
      }
    }, {
      key: "remove",
      value: function remove(key) {
        var data = this.getData();
        if (data[key]) delete data[key];
        LS.setItem(this.key, JSON.stringify(data), this.logger);
      }
    }], [{
      key: "getItem",
      value: function getItem(key) {
        key = prefix + key;
        return localStorage.getItem(key);
      }
    }, {
      key: "setItem",
      value: function setItem(key, val, logger) {
        var _a, _b;
        key = prefix + key;
        var n = 3;
        while (n--) {
          try {
            if (localStorage.getItem(key)) localStorage.removeItem(key);
            localStorage.setItem(key, val);
            typeof logger === 'function' &amp;&amp; logger("setItem success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(key, " val:").concat(val), 'success');
            break;
          } catch (e) {
            typeof logger === 'function' &amp;&amp; logger("setItem error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(key, " val:").concat(val), 'error');
            LS.clear();
          }
        }
      }
    }, {
      key: "clear",
      value: function clear() {
        var i;
        var k;
        for (i = localStorage.length - 1; i &gt;= 0; i--) {
          k = localStorage.key(i);
          if (k.indexOf(prefix) == 0) {
            localStorage.removeItem(k);
          }
        }
      }
    }, {
      key: "getSupportEvicationPolicy",
      value: function getSupportEvicationPolicy() {
        return Object.keys(evictionPolicies);
      }
    }]);
    return LS;
  }();

  var key = 'stream_last_read_pos';
  new LS(key);
  var interactionStatusLS = new LS('bottom_interaction_status');
  function getInteractionStatus() {
    var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    var biz = opt.biz || window.biz;
    var sn = opt.sn || window.sn;
    var mid = opt.mid || window.mid;
    var idx = opt.idx || window.idx;
    var interactionStatusKey = [biz, sn, mid, idx].join('_');
    var interactionStatusInfo = interactionStatusLS.get(interactionStatusKey) || {};
    if (Object.prototype.toString.call(interactionStatusInfo) !== '[object Object]' || window.cgiData &amp;&amp; window.cgiData.trans_appmsg_info &amp;&amp; window.cgiData.trans_appmsg_info.trans_type === 1
    ) {
      interactionStatusInfo = {};
    }
    var interactionSubscribeInfo = interactionStatusLS.get(biz + 'interaction_subscribe') || {};
    interactionStatusInfo.is_subscribed = interactionSubscribeInfo.is_subscribed || false;
    return interactionStatusInfo;
  }

  
  var formatReadNum = function formatReadNum(value) {
    var result = '';
    var unit = window.LANG === 'en' ? 'k' : '万';
    if (parseInt(value, 10) &gt; 100000) {
      result = 10 + unit + '+';
    } else if (parseInt(value, 10) &gt; 10000 &amp;&amp; parseInt(value, 10) &lt;= 100000) {
      var num = "".concat(parseInt(value, 10) / (unit === 'k' ? 1000 : 10000));
      var dotIndex = num.indexOf('.');
      if (dotIndex === -1) {
        result = "".concat(num).concat(unit);
      } else {
        result = "".concat(num.substr(0, dotIndex), ".").concat(num.charAt(dotIndex + 1)).concat(unit);
      }
    } else if (parseInt(value, 10) === 0) {
      result = '';
    } else {
      result = value || '';
    }
    return result;
  };
  var formatTime = function formatTime(value) {
    var time = new Date(value * 1000);
    var year = time.getFullYear();
    var month = time.getMonth() + 1;
    var day = time.getDate();
    return year + '年' + month + '月' + day + '日';
  };
  var __setPageContentBottomData = function __setPageContentBottomData(cgiData) {
    if (!cgiData) return;
    try {
      var tempReadNum = document.getElementById('js_btm_temp_read_num');
      var tempModifyTime = document.getElementById('js_btm_temp_modify_time');
      var claimSourceContent = document.getElementById('js_claim_source_content');
      var claimSourceInfo = typeof cgiData.claim_source === 'string' ? JSON.parse(cgiData.claim_source) : cgiData.claim_source;
      if (claimSourceContent &amp;&amp; claimSourceInfo) {
        var Regions = ['香港', '澳门', '台湾'];
        var claimSourceType;
        if (claimSourceInfo.claim_source_type === 2) {
          if (claimSourceInfo.media_source_type_info.media_source_from === 1) {
            claimSourceType = "素材来源于" + claimSourceInfo.media_source_type_info.biz_nickname;
          } else {
            claimSourceType = claimSourceInfo.claim_source;
          }
          var claimSourceTime = formatTime(claimSourceInfo.media_source_type_info.news_time);
          var claimSourcePosition = '';
          var position = claimSourceInfo.media_source_type_info.news_position_info;
          if (!position) {
            return '';
          }
          if (position.province) {
            claimSourcePosition += Regions.includes(position.province) ? "中国" + position.province : position.province;
          }
          if (position.city) {
            claimSourcePosition += position.city;
          }
          if (claimSourceTime || claimSourcePosition) {
            claimSourceContent.innerText = "作者提示: " + claimSourceType + '，' + "文中事件发生于" + claimSourceTime + ' ' + claimSourcePosition;
          } else {
            claimSourceContent.innerText = "作者提示: " + claimSourceType;
          }
        } else if (claimSourceInfo.claim_source) {
          claimSourceType = claimSourceInfo.claim_source;
          claimSourceContent.innerText = "作者提示: " + claimSourceType;
        }
      }
      var interactionStatus = getInteractionStatus({
        biz: cgiData.biz,
        mid: cgiData.mid,
        sn: cgiData.sn,
        idx: cgiData.idx
      });
      var readNum = interactionStatus.read_num * 1 ? Math.max(interactionStatus.read_num * 1, cgiData.read_num) : cgiData.read_num || 0;
      window.__inline_read_num = readNum;
      if (readNum &amp;&amp; tempReadNum) {
        tempReadNum.innerText = formatReadNum(readNum);
      }
      if (cgiData.modify_time &amp;&amp; tempModifyTime) {
        tempModifyTime.innerText = formatTime(cgiData.modify_time);
      }
    } catch (error) {
      console.log(error);
    }
  };
  if (!window.__second_open__) {
    var cgiData = {
      claim_source: '',
      modify_time: '' * 1,
      read_num: '' * 1,
      idx: ''  ,
      biz: '' ,
      mid: ''  ,
      sn: ''  
    };
    __setPageContentBottomData(cgiData);
    window.__setPageContentBottomData = __setPageContentBottomData;
  }

  return __setPageContentBottomData;

})();
  &lt;/script&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   (function(_g){
    _g.appmsg_like_type = "2" * 1 ? "2" * 1 : 1;
   
    _g.clientversion = "";
    _g.passparam = "";
    if(!_g.msg_link) {
      _g.msg_link = "https://mp.weixin.qq.com/s/WLqxs0Wkk2YdklqfU15IKQ";
    }
    _g.appmsg_type = "9";
    _g.devicetype = "";
    _g.kanyikan_video_educate_pic = "//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/pic/pic_like_comment_primary7ead77.png";
    _g.kanyikan_educate_pic = "//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/pic/pic_like_comment7ead77.png";
})(window);
  &lt;/script&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   (function() {
  var ua = navigator.userAgent;
  if (ua.indexOf("MicroMessenger") != -1 &amp;&amp; ua.indexOf("Android") != -1){
    var script = document.createElement('script');
    var head = document.getElementsByTagName('head')[0];
    script.type = 'text/javascript';
    script.src = "https://midas.gtimg.cn/h5sdk/js/api/h5sdk.js";
    head.appendChild(script);
  }
})();
  &lt;/script&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   var real_show_page_time = +new Date();
if (!!window.addEventListener){
  window.addEventListener("load", function(){
    window.onload_endtime = +new Date();
  });
}
  &lt;/script&gt;
  &lt;script nonce="1435168589" reportloaderror="" type="text/javascript"&gt;
   (function() {
  const ua = navigator.userAgent;
  const is_ios = /(iPhone|iPad|iPod|iOS)/i.test(ua);
  const is_wp = /Windows\sPhone/i.test(ua);
  const is_mac = /mac\sos/i.test(ua) &amp;&amp; !is_ios;
  const is_windows = /windows\snt/i.test(ua) &amp;&amp; !is_wp;
  if ((is_mac &amp;&amp; !is_ios) || (is_windows &amp;&amp; !is_wp)) {
    var script = document.createElement('script');
    var head = document.getElementsByTagName('head')[0];
    script.type = 'text/javascript';
    script.src = "https://res.wx.qq.com/connect/zh_CN/htmledition/js/wxopensdk.js";
    head.appendChild(script);
  }
})();
  &lt;/script&gt;
  &lt;script nomodule="" nonce="1435168589" reportloaderror=""&gt;
   new Image().src='https://mp.weixin.qq.com/mp/jsmonitor?idkey=66881_111_1&amp;t='+Math.random();
  &lt;/script&gt;
  &lt;script nomodule="" nonce="1435168589" reportloaderror=""&gt;
   !function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&amp;&amp;"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",(function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()}),!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();
  &lt;/script&gt;
  &lt;script crossorigin="" id="vite-legacy-polyfill" nomodule="" nonce="1435168589" reportloaderror="" src="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/polyfills-legacy.mqdcxtig018ce5f5.js"&gt;
  &lt;/script&gt;
  &lt;script crossorigin="" data-src="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/appmsg-legacy.mqdcxtigb3855d03.js" id="vite-legacy-entry" nomodule="" nonce="1435168589" reportloaderror=""&gt;
   System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))
  &lt;/script&gt;
 &lt;/body&gt;
&lt;/html&gt;</content:encoded><link>https://mp.weixin.qq.com/s/WLqxs0Wkk2YdklqfU15IKQ</link><pubDate>Fri, 12 Jun 2026 15:10:07 +0800</pubDate></item><item><id>3877547210-2247512747_1</id><title>又一个神级 skill 开源了。</title><description>我们每天接触的知识载体太多了：PDF 电子书，EPUB，DOCX 文档，团队内部的 Markdown 笔记...          这些文件都会面临一个同样的问题，那就是翻了好几遍，就是记不住。          你想让AI帮你记住它们，但是格式五花八门，有的甚至连标题都没有。          更麻烦的是不同的格式提取效果差别很大：纯文字的书籍可以瞬间提取，但是技术书籍里边的表格、代码块却全部丢...</description><guid>https://mp.weixin.qq.com/s/eP17bzu_lM9XIG1paZi3zg</guid><enclosure url="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblJFU1KYEldayZC9o9KdXUyMxqOQfHCliaL4z08J15O5uQ8uzsXakleBF9UblE29Eg5bSiam2D0KVa1FBO4wCAS4rkw56G7Gdt2jE/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; padding: 0px 10px; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1154" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   我们每天接触的知识载体太多了：PDF 电子书，EPUB，DOCX 文档，团队内部的 Markdown 笔记...
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   这些文件都会面临一个同样的问题，那就是翻了好几遍，就是记不住。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   你想让AI帮你记住它们，但是格式五花八门，有的甚至连标题都没有。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   更麻烦的是不同的格式提取效果差别很大：纯文字的书籍可以瞬间提取，但是技术书籍里边的表格、代码块却全部丢失。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   那么有没有什么工具可以解决这些问题呢 ？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   最近在 GitHub 上刷到了一个叫做 book-to-skill 的项目，可以支持 9 种不同的文档格式，并且会对技术书籍进行布局感知提取。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   已经有 5000 个Star 了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLJl6dAzjVK7cwGBTEx35sBRNNTPILKcY9eXkktEWH8dR2578wHc0Nb9GIEupkuMNsUHJibY7JW1OKuXY5ONKibnooIZ2n0uedib8/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
   s
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    这是我所知道的目前最聪明的让 AI 学会一本书的方法。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   并不是让你读得更好，而是让 AI 学会这本书，直接学会书中的结构。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   我用 Open Code 命令来执行
  &lt;/span&gt;
  &lt;code style='font-size: 14px; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: rgb(30, 107, 184); background-color: rgba(27, 31, 35, 0.05); font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace; word-break: break-all; visibility: visible;'&gt;
   &lt;span style="visibility: visible;"&gt;
    /book-to-skill E:\code\pdf\py.pdf
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span style="visibility: visible;"&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   模型用的是 DeepSeek。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJtMAoIROdRFRCjxm1icYIlIcibU8V4xciakk50VyjNDWnDDsickVacfbugicoYFDbn1jHiafAWekjtIwy7H1LUD2sLUT3xPkaG5Yc2A/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   我给的是 Python 算法的 PDF，因此我选择了 1。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   然后它就开始开始识别提取了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKIMVbJkvlNYQ8gKrh95PABibFhxy6SNIgYqZkDLicDYLQ23F4WgS14Lr561b44icqic8y2cfSvicL99b25ibUBD70qZC0RdzpnkYcDY/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   等了3分钟之后，解析完毕就可以提问了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   相关的章节都已经找到了，可以继续追问了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblI6e25vEZR1rqTQv8jh668pQrYZtyCIcLlkNmrh8Rnj2PPjrDIOibR0NwMBKt45tbgX15eicAkQXLbPd17tfibcib0JQiaTkHQ4KZfo/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    它把书编译成一个完整的Skill文件。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   那么编译出的是什么呢 ？看下实际生成的文件结构。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKJHXoHd3lEs97RicVIVf5j9YxPMEia27JjcP7nSKD8xnr8mgDHZdNNSbOicDREuVr3QvqDtu93eMmGZl42t7ocqicTbiawPFMb6HHs/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKwhjUn1Z1iazPHc0jYwlJbjrhZf30iaFZbwseLficvDn4gEPZKTIibIGHbZP2zJocgSibFUCqVVuyb4A0pbhuD5mr4ZrUGyp6NnJSg/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    01 核心框架文件。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    SKILL.md
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   包含了心智模型和章节索引。这是平时加载的核心部分，当你提出一个问题时，它会去读取相应章节的内容。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 按需加载的章节文件。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    chapters/
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   目录里每章对应一个文件，每章大约 1000 tokens（1 token 约等于半个汉字）。一本 400 页的书差不多有 20 万 tokens。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   book-to-skill 采用按需加载机制。启动时只读取 SKILL.md，只有当你询问具体内容时，才会去加载相关章节文件。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果每次对话都把整本书塞进上下文，成本会非常高。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 术语表、模式库。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    glossary.md
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   按照字母顺序排列出所有的术语和章节索引。
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    patterns.md
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   收集所有的技术、算法和设计模式。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    04 决策速查表。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    cheatsheet.md
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   相当于一本书的“导航页”，把重要框架、决策规则和常见反模式集中整理起来，需要时可以直接定位到相关内容。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    05 9格式的支持。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   格式支持很全：PDF、EPUB、DOCX、MOBI/AZW/AZW3 五种电子书格式。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   再加上 TXT、Markdown、reStructuredText、AsciiDoc、HTML、RTF 等一共 9 种。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    和直接给 PDF 有什么区别。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   了解了产物的结构之后，再看它与直接把 PDF 交给 AI 的区别。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   直接把 PDF 文件给 DeepSeek，是它用来做搜索，在原文里找到关键词并告诉你所在页码范围。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   book-to-skill 是提取，在编译的时候把作者花几年时间建立起来的框架、命名、心智模型都抽取出来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你可以看到，当问到“Python递归算法”的时候，得到的回答是“这本书上有关于递归算法的章节”，而不会是一堆页码。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblI4B0KUWA9H0rqxznZ4uxibzm36ibbo38pgIiaHruFXh6S7x25kvNQF0gxA6rIfhHKibKPsia4W7AxoTI6w5HictYN0I1dfjfkCVtS7I/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   有人会问到效率的问题吗？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   官方给出的对比是：103页的技术书籍，用普通的文本提取工具（pdftotext）只需要 0.1 秒就可以完成，但是表格和代码块全部丢失了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   而用布局感知工具（Docling）则需要花费 164 秒的时间，花的时间多了一些，但是保留了 48 个表格和 36 个代码块。关键信息都被保留了下来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIymcG3yibAuxyIkx1Oqh0ibCbWJBbbd4iat5OibjYXr9p7mBmb9J4ic2WDvau0rxibeHsX9pWzibcsWf18ngDiatcAOeGuhpKdRgmFjW8/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    看到这，有些人可能想试试。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   直接打开 Open Code 然后说。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;帮我安装 https://github.com/virgiliojr94/book-to-skill&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKZdGxDDc5mVFHvV7mYf8CCyAAFTDROkUQGcuKibjsUn6zUMsD84SwwLDTZWOhg7ts0ulicPldOBvO8U1bSrCKwtcGmROh77FgqU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   当然，Claude Code、Codex、爱马仕这些也可以。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   在Open Code中直接调用：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;~/path/to/your-book.pdf/book-to-skill&lt;/span&gt;&lt;br/&gt;&lt;span&gt;/your-book-slug replication 查询主题&lt;/span&gt;&lt;br/&gt;&lt;span&gt;/your-book-slug ch05 深入章节&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    但是缺点也给大家说一下。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   功能看起来很好，但是实际使用的时候会有一些限制，提前了解一下可以避免走弯路。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   章节识别并不是万能的，一般要看到像“Chapter 1”或者罗马数字这样的明显的章节标志。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   《Moby-Dick》这样的裸标题排版，或者《Pro Git》这样的文档，可能无法正确拆分成章节。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   对于技术 PDF，直接提取文本容易丢失标题层级和文档结构，因此建议用 Docling 按技术文档模式来解析。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   说实话，第一次用的时候我就踩到了一个坑。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   拿一本章节标题不符合规范的书来测试，结果整本书的内容被当作一章。后来才发现要使用 technical 模式，虽然速度慢一些，但是结构比较完整。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   以前想要让AI帮自己读一本书的话，只能把PDF塞进上下文里，或者搭建一个RAG。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   即使跑通了，每次对话都会消耗很多的 Token，而 AI 一般只能给出零散的信息，不能完整地解释整本书的结构。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   book-to-skill 的思路不同，它是把一本书先编译成可以复用的Skill。之后提问的时候，只需要用很少的Token就可以调用到书中知识结构了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   拿到的不是某几页的内容片段，而是一本书完整的思维框架。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这样以后遇到问题，就不用反复翻 PDF 找答案了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址为：https://github.com/virgiliojr94/book-to-skill
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然已经看到了，欢迎随手点赞、观看、转发、星标⭐，接收最新文章，下期再见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1154" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   &lt;br/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/eP17bzu_lM9XIG1paZi3zg</link><pubDate>Thu, 11 Jun 2026 15:09:27 +0800</pubDate></item><item><id>3877547210-2247512724_1</id><title>一个 Claude Code 晚上写的编辑器，火了。</title><description>你睡觉的时候，Claude Code 写了这个项目。          这并不是一个概念，而是正在发生的事。          AI 经过几天的爆肝之后，一个可以在浏览器中直接编辑 .docx 文件的编辑器就诞生了。          第一月 500  星，两个月之后就达到了 1700+，这个项目很有意思。               它可以直接编辑 .docx 文件。            编辑...</description><guid>https://mp.weixin.qq.com/s/WTU2hw6F0nn2pzdPoVIbug</guid><enclosure url="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblI9KuQWGUMMwhvCqY9YgFiciaZqCZh2tOvOhTVCtGviaRW4zJTKj3zA6UAa2hgUic8EHCN3lPXfqicHvYjk8DYvSmblpRuKQOh3BW1w/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; padding: 0px 10px; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1153" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   你睡觉的时候，Claude Code 写了这个项目。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   这并不是一个概念，而是正在发生的事。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   AI 经过几天的爆肝之后，一个可以在浏览器中直接编辑 .docx 文件的编辑器就诞生了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   第一月 500  星，两个月之后就达到了 1700+，这个项目很有意思。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblL73FBhx5Tk3yPXupQDGoSl6ps5hCCia6xYulDR7cAPYDLSUfqkicEXmIHNXGMfInD1QDWJQdfYmAq5QwUVBEOrCOicraFLyCAfTc/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它可以直接编辑 .docx 文件。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    编辑完后保存，文档原有格式不会丢。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   之后不管用 Word，LibreOffice 还是 Google Docs 打开，都可以继续编辑。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px; visibility: visible;"&gt;
  &lt;span style="font-family: STHeitiSC-Light; font-size: 22px; color: rgb(14, 136, 235); font-weight: bolder; display: inline-block; padding-left: 10px; border-left-width: 5px; border-left-style: solid; border-left-color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    开发的方式比较特别
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   作者 Jedrzej Blaszyk 最初是因为用户需要在网页上编辑 Word 文档里的模板变量。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   他找了找现有的开源方案，要么许可证不友好，要么转换来转换去格式就丢了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   干脆自己写一个。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   但不是传统的一行一行敲代码，而是让 Claude Code 自动开发。他给个方向，Agent 自己迭代，用 Playwright 做视觉验证。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   几天之后，编辑器就跑起来了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   很多的功能已经接近了 Google Docs。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px; visibility: visible;"&gt;
  &lt;span style="font-family: STHeitiSC-Light; font-size: 22px; color: rgb(14, 136, 235); font-weight: bolder; display: inline-block; padding-left: 10px; border-left-width: 5px; border-left-style: solid; border-left-color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    这个项目填补了三难之间的空白
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    01 格式不丢。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   这个前面说过了，它直接操作 .docx 里的 XML，而不是转成 JSON 或 HTML 再转回来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   我试了一下，上传一个带复杂表格的文档，在线编辑后下载，用 Word 打开，表格边框，合并单元格都还在。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    02 数据在本地，常用功能都有。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   完全在浏览器本地运行，没有后端，数据不会上传。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   常用的功能都有。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJfQRYHlZe53cYdqIAlGAMicqsCaSdcszL8qsmiaOAbUKY4YUmkjicC1x2BnA5joustyVNVxD7Ku2kfNEUnIpLICTX7peibruGRcKE/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   插入表格。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIn1jRdnkPKqzOypNkSj4nVJgUePxiaPn69ldtIiaKakuTypYVzMgvKkfDyv4vXSHb0MhCq78KBnCSxREY5j3qjWdLYN8tpcZMI0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   支持多语言。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIU01z7vgJbHgYZIiaGMibhrNFAs7p2u75qZltuFolnibCQNdzMwiafQoRKmFYWpggqXibtR91cicAIHkznticiaibXcTX3j5HbrAqsnCt0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 修改标记。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这是 Word 中经典的修订模式功能，但在网页编辑器中很少见。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   该项目支持建议模式，打开之后你所做的所有修改都会被标记为“建议”，不会直接修改原文。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKpkMiaW4PibA5yN2FP8ZPpz3viaL7ANUsuxA2ZCYQNMozAV6Tg4MymY21SicH1NZZt1QiabJrmyOeQB4lddbNBLnWfSkBYGsKXjVKo/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   其他人可以接受或拒绝每一个修改建议，就像在 Word 中审阅修订一样。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   另外，修订记录将以标准的 OOXML 格式（
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    w:ins
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   ，
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    w:del
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   标记）保存，在 Word 和编辑器之间切换的时候，修订历史也不会丢失。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    04 评论系统。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   类似 Google Docs，选中文本就能添加评论，可以回复，讨论，最后标记为"已解决"。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   评论会保存在 .docx 文件的 comments.xml 里，换到 Word 打开也还在。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKeQoXCrWn8mJhfbc5sUfXib9m0hxtJF4v96HnFtx6bw51ZOQSHWH6f0vFLvu8v2MHcPCAibPd7p2CKYLziaeNzuXUlqqSQoy5fY8/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    还有一个地方我很在意，那就是为AI Agent做了适配。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    05 实时协作。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   基于 Yjs，可以多人同时编辑，实时光标显示。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   评论和修改后，其它人可以马上看到。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   协作后端可以选 y-webrtc，PartyKit，Liveblocks 或者 Hocuspocus。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    06 Agent SDK。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   作者为该项目做了一个 Agent 工具包，里面包含了 14 个和文档有关的工具。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   AI 可以读取文档，添加评论，提出修改意见，并且可以处理修订的结果。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   并且还可以和 MCP Server 一起使用，直接连接到 Claude Desktop 等客户端。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   和单纯的生成内容不同，它让 AI 直接参与到文档协作的过程中。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它不是写完就走，而是用批注，修改的方式来和人一起打磨文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblL67TyrB4EiaH1Mg4WnhsytsibZ8EVv14fJchH9JKNFHKogOs0KB80eyexfFAJibIdq1gcz3aBbK4RjCSriceDNMZm3mantibpW53yo/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这个功能我还没深入试，但思路挺有意思。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    看完这些功能，估计不少朋友已经想上手试试了
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   最简单的方式是直接访问官网 Demo：https://docx-editor.dev/editor
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   上传一个 .docx 文件就能编辑，保存。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果要集成到项目里，React 项目可以用
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    npm install @eigenpal/docx-editor-react
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   ，Vue 3 也有支持（目前还是 Beta 版）。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJy8M46qs7wcjcmaXrkHGxzv1bfTHcEiaP2BzAjCzB4xibpXI7c2vJHbWRrWR85nNQNbL5bc1MIktZEcT45P0cZia8gptPpsX6pBM/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    需要注意的地方也说一下
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Vue 支持还是 Beta 版，Next.js 需要通过动态导入来处理 SSR。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   协作功能的后端需要自己配置。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   另外，目前没有拼写检查，邮件合并，表单字段，PDF 直接导出这些功能。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   经常有人抱怨说，AI写的代码质量很差。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   看了这个项目之后，我认为很多问题并不是出在 AI 上，而是在模型的选择上和使用方法上。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   作者用 Claude Code 晚上完成了真正可用的项目。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   docx-editor 属于值得借鉴的 AI 编程实践案例。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不管你是想要在网页上处理 Word 文档，还是对 AI 编程感兴趣，都可以试一试这个项目。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目基于 Apache-2.0 协议开放，感兴趣的同学可以去 GitHub 仓库看看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/eigenpal/docx-editor
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然看到这了，欢迎随手点赞，在看，转发，也可以给我个星标⭐，接收最新的文章，我们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1153" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/WTU2hw6F0nn2pzdPoVIbug</link><pubDate>Wed, 10 Jun 2026 15:09:51 +0800</pubDate></item><item><id>3877547210-2247512711_1</id><title>这个备份工具，我用了一次就放心了...</title><description>7200+ Star。          一年时间。          数据库备份相关的领域。          三个放在一起就非常稀奇了。          毕竟这是一个只有 DBA 才会去点开的项目，能够得到这么高的关注度，说明不少人都遇到过同样的麻烦。            Databasus，一个开源的自托管数据库备份工具。                 Databasus Dashbo...</description><guid>https://mp.weixin.qq.com/s/ft3T2HS9iYPjLBAK2_70qg</guid><enclosure url="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblKj6Ria80GtpHTjLpyQhWDWjTBFuOOyichDoQoxbbqVNFkmI9YM3ciaGiax0vmS30aKmjFwzfub0mgGcRw54a4bfvRqjicjbyIxHqWM/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1153" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
 &lt;/mp-common-profile&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; padding: 0px 10px; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   7200+ Star。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   一年时间。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   数据库备份相关的领域。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   三个放在一起就非常稀奇了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   毕竟这是一个只有 DBA 才会去点开的项目，能够得到这么高的关注度，说明不少人都遇到过同样的麻烦。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    Databasus，一个开源的自托管数据库备份工具。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_svg/Q3auHgzwzM7BHT8eeEZneiaLRicqLQQzQ6mxmZDmRotV6AtBEFrJ3poztF0sjaqVvjo2qZN1Biaa7B98Pkb5uMic46oCNOb6GAqQCVc3kuY0cjNMzUxsnELtXQ/640?wx_fmt=svg&amp;amp;from=appmsg&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px; text-align: center; color: rgb(136, 136, 136); display: block; font-size: 12px; font-family: PingFangSC-Light; visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    Databasus Dashboard
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   支持 PostgreSQL，MySQL，MariaDB，MongoDB 数据库。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   简单来说。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    就是把数据库备份这件事情交给它来管理：自动调度，多存储后端，备份存储，团队协作，最重要的一点是它会真的把备份恢复一遍，确认可用。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px; visibility: visible;"&gt;
  &lt;span style="font-family: STHeitiSC-Light; font-size: 22px; color: rgb(14, 136, 235); font-weight: bolder; display: inline-block; padding-left: 10px; border-left-width: 5px; border-left-style: solid; border-left-color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    它会自动验证你的备份是否可以真正地恢复
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   说实话，开始的时候我认为它就是一个带有 WebUI 的备份调度器，在市场上有很多这样的产品。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   但是当我看到 “Restore Verification” 这个功能的时候，我就认真的研究了一下。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblL08icBcP48AQvqtbamgJic4vmSno6tGKxzkA9JHXjQoNVD0ZJqxgf4bY13AcBoUrdziabDFISTyZPyym5lMgz9ia5ktgcibjQGUE4s/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它并不是用来检验文件是否完整的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它是拉取你最新的备份文件，启动一个独立的数据库容器，在里面进行真实的恢复操作，并且统计出每张表的行数，最后生成一份详细的报告。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   整个过程都在你的生产环境之外运行，结束后会把容器删除掉，不留任何痕迹。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   当时我就说了一句：
  &lt;/span&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    这才是备份应该有的样子。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   很多团队的流程就是这样的：每天凌晨 cron 执行 pg_dump，日志显示成功，大家就都很放心。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 0px; line-height: 1.75; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   但是 dump 命令没有报错，并不能说明备份就一定可以使用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px; visibility: visible;"&gt;
  &lt;span style="font-family: STHeitiSC-Light; font-size: 22px; color: rgb(14, 136, 235); font-weight: bolder; display: inline-block; padding-left: 10px; border-left-width: 5px; border-left-style: solid; border-left-color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    除了恢复验证之外，我还发现了几个好玩的功能
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   &lt;br/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss" style="text-align: center;"&gt;
  &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJbnAbY6ShKSxUut73or3Oib4ZPKedEGZPCR9FpRhUiblh0fn7UjWzUpIN97Y0rKzDMYGLreu3Y8aFicUFWmvfE4Ya4TvticCEFsr0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="height: auto !important; visibility: visible !important; width: 660px !important;"/&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    01 首先要说明的是备份的方式。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   之前我都是用 pg_dump 进行逻辑备份，对于一个 100GB 的库来说，每次都要花上半个小时以上。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Databasus 支持增量备份，用的是 WAL 归档。第一次备份要全量，但是之后的增量备份，同一个库只需要几分钟。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   并且它还支持 PITR，可以恢复到任意的时间点。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   对于经常误删数据的草台班子来说，这简直就是救命稻草。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 调度的方式比我想象中的要灵活一些。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我原以为只是一般的定时任务，但是发现它可以精确到分钟级别，支持 cron 表达式，并且可以设置业务低峰期执行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKTlicg3bhS1LVibicibtHf77uyGiaxpEMIiaicqno3B84Jon8U2HcK5DgHcTfgI6AVA9YRG2WoGbe2kGexLJqkUYHuqqPkmx9C4wFwTI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果数据库很大，可以将备份时间设为凌晨，以免影响白天的访问。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 存储这块多种方式。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   之前我们的备份分散在各个地方，有的放在本地磁盘里，有的手动上传到云存储，还有一些库没有配置远程存储。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Databasus 统一管理。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   本地，S3，Google Drive，Azure Blob 都可以支持，并且可以使用 Rclone 连接 70 多种云服务。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKH6FdC7vVvNtAQJK7BXWljRnHq3ucV0KqFfVxnc4icwJBJapaLjicyTnnz0w8FQqiaKKKuvwFWBEDLLpKepGl27gALibLPDoGWhFs/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    04 这这块做得很好。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   AES-256-GCM 加密备份文件，所有的敏感信息在存储之前都会被加密。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不用担心备份文件会泄露出去。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    05 多人合作管理。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   之前我之前干运维。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   组上有五个人，十几个数据库分布在不同的微服务中。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   最大的问题是备份的状态不清楚——谁负责备份，用的是什么策略，最近有没有成功过，这些信息分散在各个脚本和文档中，想要统一看一下很困难。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Databasus 的工作区功能就把这事儿给理顺了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   按照项目来分组，数据库，存储，通知配置都在一起，权限也分开：管理员可以查看所有的项目，成员只能查看自己负责的部分。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJFnZv9Ot1zm0sFwzexicOhmEVibsfVicdfnasOJfyRT88SiaoFMwSINhPicbjNOvulVkctU6pLJDbibQf52ILpJAYkMo321WnaKQC7s/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   审计日志把配置变更都会记录下来，查找问题的时候也不用到处问人了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    06 通知功能。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Databasus 可以用 Slack，Email，Webhook 等方式来通知备份的状态。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   备份成功，备份失败，备份文件大小等信息都会及时通知到你。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJfxZR1MZ7WzG4Kv46crkaGdN7RgQpiawz2xFBea4vN2GGHjmGLFlw4rujRxrAW6r0acqgURCfiaiaenzNBPLXhpm3jiaXzclurkeU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    上手很容易
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;docker run -d&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;--name databasus&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;- p 4005:4005&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;- ./databasus-data:/databasus-data \&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;--restart unless-stopped&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;databasus/databasus:latest&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   执行完毕之后访问
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    http://localhost:4005
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   就可以看见 Web 界面了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   界面引导做的很好，按照向导来添加数据库连接，选择存储位置，设置调度策略，大概十分钟就可以跑通第一个备份了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你使用的是云数据库（AWS RDS，Google Cloud SQL等），Databasus 可以直接通过网络连接，不需要访问底层文件系统。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   比pgBackRest等传统的工具要方便很多。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    和其它工具相比，我自己的真实感受是这样的。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   PGBackRest 的性能很猛，TB 级别的大库都没有问题，但是配置太复杂了，看完文档头都要大了，部署更是劝退。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   纯命令行工具，没有图形界面，查询状态还要通过SSH登录后执行命令。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    pgBackRest 更适合专业的 DBA 使用，小团队用起来的门槛太高了。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Barman 也差不多，还要多准备一台服务器。WAL-G 虽然很轻，但是仍然采用命令行的方式，没有 Web UI。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Databasus 的定位就是实际的：面向开发团队，中小企业，上手快，有界面。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   当然，TB级的大库或者追求极致性能的场景下，pgBackRest仍然是首选。但是对于大部分中小项目（几十GB以内）来说，Databasus 已经足够了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    说说踩过的坑以及需要注意的地方
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   PostgreSQL 支持最好。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   MySQL，MongoDB等也已经支持了，但是功能还比较新，可能会有小坑。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果是自管的话，之后的维护就只能靠自己了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Docker部署很容易，但是建议加上健康检查和报警，否则容器挂了，备份停了可能无法及时发现。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   PITR 需要配置 WAL 归档，没有接触过的话最好先了解一下。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   压缩会带来大约 20% 的性能开销，但可以节省 4～8 倍的空间，我觉得很值得。如果想快一点完成备份，关掉也不影响。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我之前也认为备份脚本能跑就可以了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   直到有一次出示了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   真的去恢复数据的时候才发现，备份命令显示成功了，但是实际备份文件是空的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Databasus 让我比较喜欢的一点并不是备份功能多么强大，而是可以查看到备份的状态。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   备份成功或者失败，最近有没有什么不正常的情况，打开面板就可以知道了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   很多时候备份出了问题并不怕，怕的是过了好几天才发现。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   已经到了最好的抢救时间。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目基于 Apache-2.0 协议开放，感兴趣的同学可以去 GitHub 仓库看看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/databasus/databasus
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然看到这了，欢迎随手点赞，在看，转发，也可以给我个星标⭐，接收最新的文章，我们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 0px;line-height: 1.75;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   &lt;br/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1153" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/ft3T2HS9iYPjLBAK2_70qg</link><pubDate>Tue, 09 Jun 2026 15:07:29 +0800</pubDate></item><item><id>3877547210-2247512692_1</id><title>老外做了 5年，终于开源了。</title><description>只有核心功能的笔记工具。          在 GitHub 上获得了 3300 多个 Star。               大家有没有发现。          Obsidian 和 Notion 的功能越来越多，但是真正用来思考的时间却越来越少。          我之前用的 Obsidian 装了一堆插件，图谱视图看着挺炫，实际用的时候几乎想不起来打开。          就在大家还在和这些...</description><guid>https://mp.weixin.qq.com/s/yw4K4QSjVelvEPF-Ex7_Bw</guid><enclosure url="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblKILWGPicibiaFuYlSL2LicPB3hVianOibia7nIAKfbIFucJibh1HibTEDicerFpdHpQIkvRHbdO89IOthw9I3YicEoduIOa6g35Hj6kDmFAU/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; padding: 0px 10px; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1151" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="color: black; padding: 0px; margin: 10px 0px; line-height: 2; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="color: black; padding: 0px; margin: 10px 0px; line-height: 2; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   只有核心功能的笔记工具。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="color: black; padding: 0px; margin: 10px 0px; line-height: 2; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   在 GitHub 上获得了 3300 多个 Star。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJib1iaLlJrzpiaN4JibaULyNO0kq1xVgBoB3ADxDkAEJW6CibFIRuIp6DGuBsm2S2KjibG8wD4wa1ziaTW8xXH7ZBVBg1r2rD8PD8vYA/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="color: black; padding: 0px; margin: 10px 0px; line-height: 2; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   大家有没有发现。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="color: black; padding: 0px; margin: 10px 0px; line-height: 2; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   Obsidian 和 Notion 的功能越来越多，但是真正用来思考的时间却越来越少。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="color: black; padding: 0px; margin: 10px 0px; line-height: 2; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   我之前用的 Obsidian 装了一堆插件，图谱视图看着挺炫，实际用的时候几乎想不起来打开。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="color: black; padding: 0px; margin: 10px 0px; line-height: 2; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   就在大家还在和这些复杂工具较劲的时候，一个项目悄悄开源了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLYy4czt13pn5s7ymkIbeebTUNzON0jt2UgGLibiaXNX4OWY9Dicw2r2OfJrtdN76LbRKXBgm4n2oAytyCp136FXjpVicibia6jk745Q/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px; text-align: center; color: rgb(136, 136, 136); display: block; font-size: 12px; font-family: PingFangSC-Light; visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    Files.md 应用程序界面
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="color: black; padding: 0px; margin: 10px 0px; line-height: 2; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   Files.md 是一个本地优先的 Markdown 文件管理工具。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="color: black; padding: 0px; margin: 10px 0px; line-height: 2; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    这是目前为止我所见过的最克制的笔记工具，它把笔记，日记，任务，待办事项都存成了纯.md文件，在一个极简的界面里进行管理。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="color: black; padding: 0px; margin: 10px 0px; line-height: 2; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   定位很明确，就是 Obsidian 和 Notion 的开源候补，走完全不同的道路。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="color: black; padding: 0px; margin: 10px 0px; line-height: 2; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   不提供插件系统，不搞图谱视图，不内置 AI 工作流，只保留最基础的功能。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px; visibility: visible;"&gt;
  &lt;span style="font-family: STHeitiSC-Light; font-size: 22px; color: rgb(14, 136, 235); font-weight: bolder; display: inline-block; padding-left: 10px; border-left-width: 5px; border-left-style: solid; border-left-color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    它把笔记管理的主要功能都给你了
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="color: black; padding: 0px; margin: 10px 0px; line-height: 2; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    01 聊天式输入流。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="color: black; padding: 0px; margin: 10px 0px; line-height: 2; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   看到这个交互功能，我还挺意外的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="color: black; padding: 0px; margin: 10px 0px; line-height: 2; letter-spacing: 0.3em; font-size: 13px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   打开聊天窗口（Cmd+Enter），输入内容，按Enter发送，然后选择保存位置。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJtLjQialZTFkYK8ZqTOlLSlIbgr79RWBbgeTokkuOmYVEcne3tvskct3ulNBkVfSFwsOLdOCxhk5E7eH55pGPYZibMOfDTI5qz4/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    打开聊天窗口发送消息
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   可以用来记笔记，写日记，做任务清单或者待办事项清单。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   暂时没有分类的话，可以把它们先放到 Chat.md 中，有时间再进行整理。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLprjj1N47hbz2Y8NgdFibsayw9YjPf6UoOY6P4azicoBeQKXnnIfvmuqFYYDNExiaNls7yWdPxPqDyjhviaMKCGaL3UbQHGdO2EEc/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    选择保存的位置为
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这样的设计类似于 Telegram 的聊天界面，作者也创建了一个 Telegram Bot。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   发送消息就可以直接保存到对应的
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    .md
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   文件中。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这个 Bot 我试了一下，还挺方便的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   周末在地铁上想到个点子，掏出手机发条消息就记下来了，不用等到回家再打开电脑。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_gif/VDCUoW3UiblIXLic1J7yR9sk9Bu0yibgOHoaQfSRhpu24nE4wWibn1lXiaibpyI071Kaiaia1l7Ikjby7yyMZQJG44SA1gWDWrH8wBz9abH4DCdupZM/640?wx_fmt=gif&amp;amp;from=appmsg&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Bot使用示例
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 多种同步的方式。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   最简单的方法就是使用云文件夹：iCloud，Dropbox，Google Drive 都可以，不需要做其它的设置。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   想要更高的可控性，也可以自己搭建同步服务器。作者已经提供了 Go 服务端，局域网部署后即可使用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   当然，如果你不想折腾的话，也可以直接使用作者托管的服务 api.files.md。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   嗯，这个托管服务我没有用过，但是看 README 里说可以免费使用，具体效果要自己去体验了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLJMzLz5yDZ9AzhDSSibF8ow8657SyTzWomphaj0YNxiaricYYfiacxyujHx1c2JGO4DxyhXNISLoJOVycsDkw5AvM0IslpYNPHv0Q/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Files.md 完整界面
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 笔记本电脑。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   所有的笔记都是
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    .md
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   文件，可以根据文件夹进行分类，例如
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    brain/
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   ，
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    dev/
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   等。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   输入
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    [
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   可以插入文件链接，支持双向链接。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这个双向链接我一开始没搞懂怎么用，后来发现其实就是个简单的文件引用，没那么复杂。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    04 日记记录。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   发送完消息之后点击“To Journal”，或者在消息的末尾加上
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    jj
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   或者
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    жж
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   ，就会被自动保存到
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    journal/YYYY.MM Month.md
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   文件中，并按照月份进行整理。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJbuj87G1XR0uzymK5iau4Ao18gjBQSE5aaqCUBXPcYl0rIxlSiaJ5EeSXq4eALOHWvMDrIDwRt8uUCn8D6UMicvOKhhSt5JTnZTU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    日记记录界面
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    jj
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   的快捷键很有趣，俄语字母
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    жж
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   也可以，作者是俄语背景，所以两个都支持。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    05 任务管理。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   快速添加小而可操作的任务项，作者特意强调不要添加宽泛的任务比如"Plan a vacation"，而是具体的下一步动作。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLqMtYo6DonydI8c1Qzn5SiaWE9MIOOvLv7f0sjcibn0HDejZhxKRl9AQOyfJPKgafviaH72A9N9mKKicicwkdic6L40khJ0Ae6FyKYs/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    添加任务界面
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这个建议我觉得很实在，宽泛的任务容易拖延，具体的行动才容易去做。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    06 待办事项清单。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Read.md，Watch.md，Shop.md 等分类清单可以用来记录书单，影单，购物清单等。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   快捷键也很方便：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJsWxTpyjiadwHaLZvD1cL5aoumEgEz5vNK87ztbCJPY9YRj5Ya5icOt1uFsKicXiaVwXakxPoqnBlLmT5FZvWalibROPh0FWq61zvY/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Markdown 编辑常用的命令有：Cmd+B 加粗，Cmd+I 斜体，Cmd+Y 插入复选框。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你可能会问：这些功能 Obsidian 不都有吗？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   是的，但 Files.md 的区别在于——它只有这些，没有更多。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    除了主要的功能之外，Files.md 还有一些不错的地方
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    不需要安装任何软件，打开浏览器就可以使用。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   打开 app.files.md，这是一个 PWA 应用，在浏览器中运行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   点击地址栏右方的 “Install files.md”，选择一个本地文件夹之后就可以使用了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIxtiaXSZH4MjwUmXmENFqIvMnH39uC8mQn6wlibgqRWo8kiaLxzsR1f2umFLYLV6FlOs9R1rU5Exmp0HIluJRoNYJr5g0t2DS444/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=9" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    安装说明
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   整个过程不需要安装任何软件，也不需要注册账号。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKwh7WarmaJcxciaCviaym6vbo9QjPLBIUZa7yWAMIib3rLYe8w8dIkZL2LG2CBXOSzbsXM4X7qxlVZ1Pwia3FlKKglhuGPRVwwEGs/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=10" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   说实话，这个体验还蛮丝滑的，选择一个文件夹就可以用了，不需要去折腾安装。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    看过这些功能之后，大家应该都按捺不住想要尝试了
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   最低门槛的打开方式就是直接打开 app.files.md，选择一个本地文件夹，开始记录。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你有 Telegram，也可以先试一下 Bot，看看用聊天的方式记录是否方便。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   实事求是地说，我建议先用Bot试试，发个消息就可以记录下来了，体验一下这样的聊天方式。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIExzUIf32e9xEMIWVCZMj6MlClNGr6w5YWT6azBR1kZAalUfgbrJ2KWibic67QStSfZM45gVYicJYkh4nndHNic7qG50pgVEruNRU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=11" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Bot 功能说明
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    到这里缺点也给大家提一提
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   第一点就是浏览器的兼容性问题。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它使用了 File System API，目前 Chrome 支持最好，Firefox 和 Safari 的体验会受到影响。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   其次是功能边界。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果要进行合作，用数据库或者自动化的话，Files.md 不合适——它只适合个人极简使用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   作者 Artem Zakirullin 花了五年的时间来打磨这个项目。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   直到最近才把它开源，这份耐心本身就很不容易。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   README 中有一句话给我留下了很深的印象：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;em style="font-style: italic;color: #0e88eb;letter-spacing: 0.3em;"&gt;
   &lt;span&gt;
    限制可以激发人的创造力。
   &lt;/span&gt;
  &lt;/em&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIY0XZ29CWamautRnWGFXxNfUNZOFG8W7HNxRTfeG2NOfvAFK828DYSHic6mlbHADA3hAU1HibV5JCaodGMOsYfYBRjU9RDxmfqY/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=12" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 660px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   很多时候，我们花费在研究工具上的时间比思考本身还要多。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Files.md 的好处就是所有的数据都归用户自己所有，可以随时迁移。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   当然，如果你依靠 Obsidian 的插件生态或者 Notion 的协作功能的话，那么它就不适合你了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我觉得笔记工具并不一定越复杂越好。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   有时候一个安静的工具反而会让人把注意力放在思考上。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你说呢 ？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目使用 MIT 许可证进行开源，有兴趣的同学可以到 GitHub 仓库查看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/zakirullin/files.md
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然已经看到了，欢迎随手点赞，在看，转发，并且给我一个星标⭐，接收最新的文章，下期再见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;padding: 0px;margin: 10px 0px;line-height: 2.0;letter-spacing: 0.3em;font-size: 13px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   &lt;br/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1151" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/yw4K4QSjVelvEPF-Ex7_Bw</link><pubDate>Mon, 08 Jun 2026 15:04:04 +0800</pubDate></item><item><id>3877547210-2247512624_1</id><title>DeepSeek 非官方 GUI ，上手更简单了。</title><description>命令行很强大，但是并不是每个人都会用。          DeepSeek Agent 的推理过程，工具调用，文件改动，全在黑框里跑。          信息都在，但盯着看久了，眼睛和脑子都容易累。          最近在 GitHub 上又看到一个项目，把这套体验搬进了桌面窗口。               它的名字叫 DeepSeek-GUI，已经有 1300+ Star。         ...</description><guid>https://mp.weixin.qq.com/s/KNqiI_InwlPU2Z1pGyC0Sw</guid><enclosure url="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblILpiaL45eD3GOenNlK08AQSDBicAlNFYCXEosQutywvapRayK0HibR21cUfykGjoPQ1VkSBrJanPThWMVYZAm2nq6fmepZ6zzn4I/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1151" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   命令行很强大，但是并不是每个人都会用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   DeepSeek Agent 的推理过程，工具调用，文件改动，全在黑框里跑。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   信息都在，但盯着看久了，眼睛和脑子都容易累。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   最近在 GitHub 上又看到一个项目，把这套体验搬进了桌面窗口。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIKS68C3QicbZ8icx2icqFYWOM9Y3Nup4S9G5Fyhb6ONpmBxWWgpUNIQiaLvsAxwibXKO0Ax9fYVRs0ibTLEm9picsstAxGNNt1v2WBas/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它的名字叫 DeepSeek-GUI，已经有 1300+ Star。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   不是 DeepSeek 官方做的，而是个人开发者对 DeepSeek TUI (Kun) 进行了 GUI 封装。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   虽然不是官方出品，但是它把 Agent 的上手难度降低了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   底层用的是 DeepSeek TUI 的 Kun 运行时，GUI 层负责把终端里的 agent 体验整理成桌面流程。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   真正有趣的是。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px; visibility: visible;"&gt;
  &lt;span style="font-family: STHeitiSC-Light; font-size: 22px; color: rgb(14, 136, 235); font-weight: bolder; display: inline-block; padding-left: 10px; border-left-width: 5px; border-left-style: solid; border-left-color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    它把工作场景分成了三种类型，每种类型都有不同的设计
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   Code 模式就是项目开发的主要战场。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   可以按照项目的目录来组织多个代理会话，并且可以实时地看到推理的过程，工具调用以及文件的变化。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJ03xDrHoiaAAkxsZEY9P7l0oIGYxanfFb0AB915oyYnvp4WM8pgbVyQGMh3qgum81Ywwo2sZdbTZ0avj9bkricEFZnvRK2K71Oc/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px; text-align: center; color: rgb(136, 136, 136); display: block; font-size: 12px; font-family: PingFangSC-Light; visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    Code 模式界面
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    01 变更审核。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   最实用的一个功能。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   内联 diff 和侧边审查面板会记录每一处文件改动，你可以在应用内直接完成 review。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss" style="text-align: center;"&gt;
  &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJ89GwibJlnwZ21ksztE6xysJO6cO9xSoCL6oM1swLibBop3Cn8jdgqBljN4RNx0Jr9mBRUHh7M5WSOvSXXYyicuCqTxxsGblQVEw/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="width: 564px !important; height: auto !important; visibility: visible !important;"/&gt;
 &lt;/section&gt;
 &lt;section powered-by="werss"&gt;
  &lt;span&gt;
   &lt;br/&gt;
  &lt;/span&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我试过之后发现比在终端中查看diff要直观很多。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 权限控制。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   做得比较细。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   只读，工作区可写，完全访问三个层次，并且可以设置工具调用之前是否需要人工审批。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 新建的需求。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   先写需求草稿，让 AI 帮忙澄清问题，再根据澄清问题的结果，生成实施计划。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   /plan 命令可以创建可以编辑的计划文件，并且右侧面板会同步线程 Todo。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    Write 模式就是文档写作的一个独立空间
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   左侧文件树支持新建，重命名与删除。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   中间是 Live 编辑器——当前行保留 Markdown 源码，其余行实时渲染。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJZYDKYqo7yJ78q7aZicI58wW4cm6l36Rx5hXPuEOS5AfKf4Ge1lgjwOodbvsGuVTH3R97argo8ziaaqlRwTVNic2mrzylxIEvgQU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Write 模式界面
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这个地方我很喜欢，它的文本补全设计也很好。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   把补全分成两种写作目的：短补全，灵感长补全。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   短补全响应速度快，数量少，可以用来做实时输入的辅助。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   灵感长补可以用来补充写作灵感，但是停顿时间长，量大，适合接住写作灵感。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   右边有写作助手，可以进行摘要，大纲，润色等功能。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    Claw 模式就是连接手机与 IM 的入口
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   可以给飞书，Lark，微信配置独立的 Agent，设置不同的角色，默认模型和工作目录。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKh2tUCYnViahyAvMEiaFLgqO52jiaqqdbY8ibW5mcdsfPWWPDfAx5STGbQiaDJGNYYHzpSbsDwXdUfRTNndjWcTtVMmsCgarfrnTac/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Claw 模式界面
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   可以在手机上用飞书让 AI 在电脑上新建 txt 文件，删除 txt 文件，打开 Chrome 进行搜索。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss" style="text-align: center;"&gt;
  &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblK9PwvGImoZLBlO7uhUucbB8dWpIYdQBMvePbYho7jM2H4BQJgcnO7xZusXF62Jt23xibYgoBibOeNrs2s9j6rltSTB9Razsm8Mk/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="width: 558px !important; height: auto !important; visibility: visible !important;"/&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   基本上都是秒执行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   人在外面，一句话就可以让家里的电脑干活，这样的感觉还是挺不错的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   还有定时任务的功能，可以创建一次性的，每天的，间隔的或者手动的任务。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    除了这三种模式之外，Kun 运行时底层的设计也值得提及
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它借鉴了 Reasonix 的 cache-first agent loop。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   简单来说，就是能缓存的尽量缓存，日志只追加不修改，再统一管理缓存。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这样一来，很多重复内容都不用重新计算，Token 消耗自然就降下来了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   而且它的系统提示词和工具 Schema 基本保持不变，更容易命中 DeepSeek 的缓存。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   跑任务时还能直接看到缓存命中率和 Token 使用量，省了多少成本一眼就能看出来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    看完这些功能，估计不少朋友已经想上手试试了
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   到 GitHub Releases 或者官网下载安装包，macOS，Windows，Linux 都有对应的版本。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJC5dm7o2BfF5Fj9hLFEce7eYuClVaLcjsPtQWKTmUtIR8qu9HqVwVddZ7BqRX6vibzHarPXTib268lYmt5ibF41iacRSZUg7LLkfM/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   安装完毕之后打开，第一次启动会提示你选择语言，输入API Key，选择默认的工作目录。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你想试试的话，可以从 Code 模式开始。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   选择一个正在做的项目的目录，给一个简单的任务，比如说“帮我整理一下这个项目目录结构”。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   然后看看它是如何进行推理，调用工具，得出结论的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这个过程很有趣，可以清楚地看到人工智能是如何分步骤来解决这个问题的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    但是缺点也要提出来
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   目前只支持DeepSeek API，其他的模型暂时不能用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   作为非官方的项目，稳定性，后续更新，数据怎么走这些问题都要考虑清楚。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我这两天用了一下。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   出现过一两次卡顿的情况，但是重启之后就恢复正常了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   还有一些场景是会失败的，比如说让 AI 去读百度搜索的结果，有些时候会被反爬给挡住。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   总体来说，如果想要在本地使用 DeepSeek+Agent 这套的话，又不想接触命令行，那么它就是个低门槛的入口。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   推理的过程，工具的调用，文件的修改都在同一个界面中体现出来，审批和回退也更加直观。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   目前，DeepSeek 的生态系统正在迅速扩展。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   从模型本身，周边工具到应用层封装，整个链条都在加快速度。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   AI 的下半场，比拼的不是语言的华丽，而是用更低的成本去实现更高的效率。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你说呢？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目基于 MIT 协议开放，感兴趣的同学可以去 GitHub 仓库看看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/XingYu-Zhong/DeepSeek-GUI
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然看到这了，欢迎随手点赞，在看，转发，也可以给我个星标⭐，接收最新的文章，我们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1151" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/KNqiI_InwlPU2Z1pGyC0Sw</link><pubDate>Sun, 07 Jun 2026 15:06:51 +0800</pubDate></item><item><id>3877547210-2247512613_1</id><title>又一个清理神器，我的电脑更干净了。</title><description>又一个 Windows 清理工具，只有 45MB。               它做的事情很简单：清理系统垃圾文件。目前在 GitHub 上已经有 1800 多个 Star。               很多清理工具总喜欢用弹窗吓人，推全家桶，鼓吹一键优化。            它不一样，只专注于一件事：帮你把临时文件，缓存，日志和残留垃圾清理干净。            用作者的话来说就是，在...</description><guid>https://mp.weixin.qq.com/s/LpSteNQgNZ_bdsNqUYYu-A</guid><enclosure url="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblL2FfS0JpgTzibc5uS1AMeebZcLDphUcHvW5dGUcrOvrSC87k3K3nOtOFQqBg8tQH3J9CS8tibrAD9006v43Js5HBibhjHCpGK94s/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1151" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   又一个 Windows 清理工具，只有 45MB。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLAMISZSBXXu4PibBOtXPmiayoguhlISVTI8vNiacSrNhhIUJHHaIB381XmSbFg16EF6fEQxSbB3TsicN2cj5Ky2LLX07M57QLyKd0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它做的事情很简单：清理系统垃圾文件。目前在 GitHub 上已经有 1800 多个 Star。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLLlSIgyNlialvULc7ibmzzoic5Rf2Nft91CibSby4grStpwgb3JKAbibpdTEkMNZ2TuRB0InTR14icnjDxiciaH96kDs8WI4wWUOFFicNE/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   很多清理工具总喜欢用弹窗吓人，推全家桶，鼓吹一键优化。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    它不一样，只专注于一件事：帮你把临时文件，缓存，日志和残留垃圾清理干净。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   用作者的话来说就是，在早期 CCleaner 的时代，工具就是工具，不能成为流量入口。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   作者 Belim 创建该项目的原因也很简单，他发现了一个现象，一些原本很好的工具，在被公司收购之后就会变得越来越垃圾。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   知名的 CCleaner 被 Avast 收购后，软件里开始出现越来越多的广告和捆绑推广。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   2017 年还发生过供应链攻击事件，安装包被植入恶意代码，不少老用户从那时起就选择离开了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   FluentCleaner 想让软件回归用完即走，干净利落的体验。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   实现方式也很巧妙。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它没自己重新发明轮子，而是直接采用了社区维护多年的 winapp2.ini 规则库，省去了从头积累规则的过程。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLRsAq95n2eYQdk7DHtZj4iaMmiayb4MNpPqWXWJpVC9QzwpyFZE0OowIcTwFmzCndDxSL7lPaHa0JCVG6sAc4HMw0yGOtsNFVF8/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   该数据库有大约 3700 条清理规则，可以识别出几百款软件留下的垃圾文件。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这样做的好好处就是，用户可以自己找新规则直接导入进去。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   另外作者没有重写一个庞大的清理器，而是专注于规则解析和执行，因此整个工具十分轻量。按他的说法，实际用起来比CCleaner 还要快和准。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   有人做过一个对比，在同一台电脑上，Windows 11 内置的工具发现了 15.9GB 的临时文件，FluentCleaner 发现了 19.43GB。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   并不是因为内置工具不好，而是 FluentCleaner 挖得更深，能精准识别应用程序的缓存。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    整体设计克制不花哨
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   FluentCleaner 采用 WinUI 3 开发，完全融入了 Windows 11 的设计语言，看起来更像是系统自带的工具，不像传统的第三方清理软件。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   打开之后的第一感觉就是“很 Windows 11”。圆角，亚克力效果全都安排上了，没有以前的清理软件那种陈旧的感觉。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   操作逻辑非常克制，不会出现一键式操作的情况，而是让用户一项项地勾选需要清理的项目。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   左侧是分类列表（Microsoft Edge，Applications，Internet，Multimedia，Utilities，Windows，Firefox，Google Chrome，Games等），右侧是分析结果。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   一般先做 Analyze 扫描，再决定是否运行 Run Cleaner。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJvSj6D0QPK7KgIBcDTFojlkg1DIqHIc4Vz6nxYibFDhYBbQKfZiaFE2ciaddyfnhI8F0giatX3UDq9U4aqYRqNR1ibaibLv9K7EOvu4/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这样的设计可以减少误删的风险，并且保持操作的透明性，也就是说你清楚地知道要删除的内容是什么，不会被一个一键优化按钮所欺骗。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLYyeVJppHsjtXGKoXnGA4hKbcvEiagtdEZCZkQGkTWibciajByJcicJCZ4UR4Xr8QqwmLQat4icvBbdxFicM4ibVPudVJN5PnPhWRgicI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    自定义清理和人工智能辅助
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   最新的版本中增加了一些实用的功能。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   最值得一提的是自定义清理器，在应用里可以创建自己清理规则，支持 Winapp2 格式和 PowerShell 脚本。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJFElRceytsKLK04dxGTFtf0wdiclm9f61ynALc71XM3RbDlpk6hXwIxuHXrIPwNnDSqZS7cov1VtiaicVyO3HPPGmyTEzVz1whQ8/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   还有 AI 辅助创建的功能，可以描述要清理的内容，AI 就会生成相应的条目（需要使用 Groq API 密钥）。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLej91ZPibcYMoPibROLvf20j1WhJ7teMSiabzTNRIkLjWNAypicDHkzGu8OsXNLeCfScR3F8TP3ESnwbyu2SunynWmicq6OV8vp7sE/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它还有一项很贴心的功能，在清理之前会提示你关闭浏览器。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   因为浏览器打开的时候，很多缓存文件都在占用着，关闭之后再清理就会干净很多。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJKiaf7DHlyMfRD9KqjOL0uibf7p2iaf4ia0eBPG8GOGPr9HibcN0f0uAetNhnWQEldFXbz7cBtqpDBPfgOh0ia8Iq9wUMRvvzKnF4oE/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    两个小缺点我也提一下
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   01 只能用在 Windows 10（2004 及以上版本），Windows 11 上，只支持 64 位。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   02 没有开机启动项设置，使用的时候需要手动打开。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   作者不认可那些夸大其词的“注册表优化神话”，但是仍然保留了注册表清理的功能，并把最终的选择权交给用户。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    上手难度很小
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   到 GitHub Releases 页面下载
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    FluentCleaner-win-x64.zip
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   （约 45MB）。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJ1NMnju2mub1ah4ibh5VoMYcUhG3LJPzHehTm6Gg3BxiaxxibNRwGKuHOibR2G4lVdsAN8VS2cDLrjBZw75BcTfAr0IHwRMIkLpMY/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   解压后直接运行
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    FCleaner.exe
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   即可，不需要安装。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLl6jUaFxF5WZVa3wj8kCm6cuicJ8pBSxicRv8icn0NHRLrMx8XMAoeyKLL2DRnLl5m3lSNnlic0llk5HCVycoyRmqc43xEwiaovKibw/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=9" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   第一次使用的时候最好先用 Analyze 分析一下可以清理的内容，再决定是否要运行清理。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   说了这么多功能之后，回到最初的问题，你是否需要一个专门的清理工具？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   社区里有很多不同的观点。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   有人认为 Windows 自带的磁盘清理已经足够好，不需要安装第三方软件；也有人觉得系统工具过于保守，该清理的东西没有清理干净，第三方软件才能把事情做好。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   两种说法都有一定的道理。我认为主要的问题不在于工具，而在于使用习惯。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   定期清理一下，电脑配置还可以。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   自带工具就可以。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   经常安装和卸载软件，浏览器打开很多，硬盘空间不足。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   FluentCleaner 这样的工具的优势也就显现出来了。它用了社区维护的规则库，覆盖范围会更大一些。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你的看法呢？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目使用 MIT 许可证进行开源，有兴趣的同学可以到 GitHub 仓库里查看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址为：https://github.com/builtbybel/FluentCleaner
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然已经看到了，欢迎随手点赞，观看，转发，星标⭐，接收最新文章，下期再见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1151" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/LpSteNQgNZ_bdsNqUYYu-A</link><pubDate>Sat, 06 Jun 2026 15:18:49 +0800</pubDate></item><item><id>3877547210-2247512569_1</id><title>15MB 做的 Windows 便签，这个更香了。</title><description>笔记软件很久没有分享了。          并不是不想，只是没有遇到好的，今天终于刷到了一个。          GitHub 开源四十几天了，Star 已经有 3400 多个。               这个项目有一个好听的中文名字，叫做花笺。          基于 Tauri 2+React 19 开发构建，便携版大小为 15MB。            可以让你随时把想法记下来。    ...</description><guid>https://mp.weixin.qq.com/s/RXW0hVWQNmSymheEZHglHw</guid><enclosure url="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblK1RQdvWsibC9I8t8pXAeyq0LD1YZtwbMkXhAib06ic7zdyGJIicoDbZJib0eicHd5icZPuhbq34vrUBe0KFiaBgfXx9ntYQUvfuyKwHDU/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1148" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   笔记软件很久没有分享了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   并不是不想，只是没有遇到好的，今天终于刷到了一个。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   GitHub 开源四十几天了，Star 已经有 3400 多个。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKLKXLiaqkbH7N5Iiah2NISCGDJwQeVicRUKW4Jcj2lCCATrRlc9MVm0SBERCCWpKyYq4tyicHq2icZEicvpH4iaNHUia6Io3hphyepiciag/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   这个项目有一个好听的中文名字，叫做花笺。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   基于 Tauri 2+React 19 开发构建，便携版大小为 15MB。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    可以让你随时把想法记下来。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   把Markdown编辑、全局快捷键唤出、磁贴固定等最实用的功能都集成到一起。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   一句话概括一下就是：
  &lt;/span&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    它把 Windows 便签应该有的功能都给补齐了，支持 Markdown，全局快捷键唤出，磁贴固定。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLZXqwggs17B88Ea6kmvDagn6icZdJYIXO1VqW0cN5XlkpuPmGnD0Poziaias71bMLU84UEkf91FuhPRXVM1MDo2vs9e8Q96NFpJU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px; text-align: center; color: rgb(136, 136, 136); display: block; font-size: 12px; font-family: PingFangSC-Light; visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    主窗口截图
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   软件包最小只有 15MB，启动速度很快。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   相比于动辄上百 MB 的 Electron 应用，它更像一个为桌面设计的原生工具。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px; visibility: visible;"&gt;
  &lt;span style="font-family: STHeitiSC-Light; font-size: 22px; color: rgb(14, 136, 235); font-weight: bolder; display: inline-block; padding-left: 10px; border-left-width: 5px; border-left-style: solid; border-left-color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    它把开发者真正关心的功能都做进去了。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    01 全局快捷键唤出。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   不管你在写代码，看文档还是刷视频，同时按下
  &lt;/span&gt;
  &lt;code style='font-size: 14px; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: rgb(30, 107, 184); background-color: rgba(27, 31, 35, 0.05); font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace; word-break: break-all; visibility: visible;'&gt;
   &lt;span style="visibility: visible;"&gt;
    Ctrl+Space
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span style="visibility: visible;"&gt;
   ，就可以把便签窗口弹出来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   不用切窗口。不用找图标的。不用等加载完成。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   这个交互方式看似简陋，但它把使用成本降到了最低，非常适合随时记录想法。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果用
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    Ctrl+Space
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   不习惯，也可以自定义快捷键。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   假如你用的快捷键和微信，QQ或者输入法有冲突的话，它也会进行优化处理。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;section powered-by="werss" style="text-align: center;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_gif/VDCUoW3UiblJTW6EWEWtrIQItzuRGwqpgnTJBtUx1e4lNtEVLjGQ8nc3Ly9oa6ib2iag3DQbv8IregTacmcicAvDekKUjW0YRrhufJxbF31kwvM/640?wx_fmt=gif&amp;amp;from=appmsg&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="height: auto !important; visibility: visible !important; width: 640px !important;"/&gt;
  &lt;/section&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 Markdown 编辑，预览。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   支持全部的 GitHub Flavored Markdown 语法。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   包括表格，任务列表，代码高亮，LaTeX 数学公式等等。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   编辑，预览模式可以互相转换，想要看到渲染效果就切换到预览模式，想要继续编辑就切换回编辑模式。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   临时记一段代码，写一个待办事项清单或者整理一下思路，用 Markdown 格式比用纯文本要方便得多。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   并且可以导出为
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    .md
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   ，
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    .html
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   或者
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    .pdf
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   格式，方便分享。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKvdCNPZJic3UX1Jqo1qMc6UpnWwyibYlHUJnBtyKCEc2M673Biaa35XufmpFUQk2Zibl3KZhAS65tDGWDaHJ7fgMADRjmAsibH3Tib4/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    磁贴示例
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 磁贴模式。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你可以把便签固定在电脑桌面的任意一个地方，不管任何时候都可以看到它。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   支持同时固定多张便签，自由拖拽排序，并且可以设置全局置顶。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblI98kxic8HmXaUZzNFibCJnP8sBH28wNQ6sI3uayH7BeIw61zUNPpMUoYIkianZjhtsnrm5WZh0IoaTpdGHVdZuSWEjxsC9oBmFCA/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   该功能非常适合用来做桌面待办事项清单，也可以把一些经常需要查看的信息放在眼前。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJn8u3IuibX244ex38U23UC1XhtC4QGFxV6TyyvlXqthHGBWw5zA3fPhVs260iasO91hO0O3QeZWichpqD0CcgGYqnNn4vFFTJ3fM/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   例如我在写代码时，把 API 文档中重要的字段放在右边，这样就不需要来回切换窗口查看。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    04 本地优先的设计。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   所有的数据都在本地，不需要联网，也不需要云同步。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   也就意味着你的笔记不会被上传到任何服务器，所有的隐私都掌握在自己手中。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   自然它没有跨设备同步的能力。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你要将手机上的笔记同步到电脑上，那就要看看其它工具了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    05 体积，性能。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   便携版只有 15MB，解压就可以用了，不需要安装。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   启动速度很快，内存占用也不大。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它底层用了 Rust 写后端逻辑，用 React 19 写界面。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   和 Electron 不一样的是，Tauri 使用系统自带的 WebView，并不需要打包整个 Chromium，因此体积可以做到这么小。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   对于桌面小工具而言，这种选择很合适。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    除了核心功能，花笺还有一些好的细节。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    支持三种主题。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   深色，浅色，系统跟随，可以自定义主色调，字体，字号。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   界面设计也很现代，有毛玻璃效果，圆角，阴影和动画，使用起来不会觉得过时。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblK19ckl4r4GhVBJOJ0x4R1jeJ0skmiaAbIsKHMngpq5Jqppe1DuDkXc9QmDIRBg6gpfBibZrXURDEe2YejddoibRUS2zPmPibWyQRs/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    多语言支持。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   目前支持简体文中，英文，繁体中文，有点少，不过已经够用了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblK4mMLfFo0XaVyjB4RHib6IFyXjdmjEHqgKfVofcIUj1TEOPdkPFMyS9DOice44vhnCVJ0IOicAIwI6sJ0U2Ljdqk2Z9YgicEzQhqc/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    灵活配置。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   可以配置启停，自动保存，磁贴功能开关，自定义全局快捷键，调整字号，磁贴配色以及默认编辑视图。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLIOyoIoF246djh5Qns1oSziaGPuPbe1oia6pbiaSZB9Op89lPBuibNiaV1ULjCEpXPlSUg714umCgicsSTBzulf4NiaKwGib7lBP96ic18/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    看了这些功能之后，大家应该都按捺不住想要试一试了。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   上手门槛很低。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   到 GitHub Releases 下载最新版本，解压之后就可以直接运行了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLKZPOhf3aWoHna5nvMumicqXvSZZ8g2y0PiaRraBchHlic9QJvdBwk5Fb896khMZfH2OVvHOXPssDicB4wjKIc0EV4ibSY4MbR83ys/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=9" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   或者下载便携版，只有15MB，可以放在任何地方使用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   第一次打开就会自动创建一个便签，按住
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    Ctrl+Space
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   可以随时唤出新的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    用之前看看需要注意的3个点
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   01 目前主要在 Windows 11 上进行测试，其它系统还没做完整的兼容性测试。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   02 没有云同步的功能，如果要实现跨设备同步的话，这个工具就不太合适了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   03 macOS 和 Linux 版本现在用可能会存在一些兼容性的问题。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我现在的状况是经常需要临时记一些东西，但是又不愿意打开那些又重又麻烦的应用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   今天用了一把花笺。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   很方便。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它把随时记录的场景做好了，体积小，启动快，唤出方便，该有的功能都有，不该有的累赘一个都没有。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   对于一个便签工具来说，这就已经足够了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   评论聊聊大家都是怎样临时记东西的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目采用 MIT 许可证进行开源，有兴趣的同学可以到 GitHub 仓库查看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/Achilng/floral-notepaper
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然已经看到了，欢迎随手点赞，在看，转发，并且给我一个星标⭐，接收最新的文章，下期再见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1148" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/RXW0hVWQNmSymheEZHglHw</link><pubDate>Fri, 05 Jun 2026 15:17:26 +0800</pubDate></item><item><id>3877547210-2247512553_1</id><title>4 天狂揽 4.5 万 Star ，AI 工作流终于打通了。</title><description>4 天，45000 Star。               这个数字本身就很炸裂。          但是更炸的是项目作者 PewDiePie，在油管上拥有超过一亿订阅量，他是油管上最火的博主之一。          这次他并不是在拍视频，而是在认真的研究本地的AI。            项目叫 Odysseus，一个自托管的AI工作台，希望把聊天，Agent，模型管理，邮件，日历，文档等等所有...</description><guid>https://mp.weixin.qq.com/s/5TD0cQ0ZfTVM2iSIGpQnqg</guid><enclosure url="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblJM4krUxmNhglte5mAqWeLibEgs9IB12yv8HYreWYJNvYGxSwYKuQ9gGnrkcFZEibUsAFm46Y43gIxic5icnph04SkKAcVJcVr5pkM/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1147" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   4 天，45000 Star。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJjspDemjaT213ZmUt6u0KSlkhoicSiblzWiaUyC5JoH9tnic8saXUsuGDRlicJbpX0pLeGm9V77khFobF8GVsXvia6zPCd3lRiabuMgc/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   这个数字本身就很炸裂。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   但是更炸的是项目作者 PewDiePie，在油管上拥有超过一亿订阅量，他是油管上最火的博主之一。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   这次他并不是在拍视频，而是在认真的研究本地的AI。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    项目叫 Odysseus，一个自托管的AI工作台，希望把聊天，Agent，模型管理，邮件，日历，文档等等所有的事情都拉回到你的机器上运行。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   他在发布的视频里说了一句：“对大科技公司发起的战争才刚刚开始。”
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px; visibility: visible;"&gt;
  &lt;span style="font-family: STHeitiSC-Light; font-size: 22px; color: rgb(14, 136, 235); font-weight: bolder; display: inline-block; padding-left: 10px; border-left-width: 5px; border-left-style: solid; border-left-color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    口号很响，下面拆开来看看它解决了哪些问题。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    01 聊天界面也可以换成ChatGPT或者Claude风格的主题。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   不同的主题布局，交互习惯都不同，喜欢哪个就切哪个。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblI5lV240r9LzH4S9zavLovfS9MskTichc0icTeccgtbNK1WqlYJQqzFyuaXmYYof3lVniar4SfIXCleAl5hQWHQC831MMriaIAUWEs/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJwaKTiaFBcJJsgzibibsQ2YAce3crawV6B0Arx3xZkWuofaWnLWaHVt0iaohQj3ibibfQwAIssf1h2EVpsSu8d2hd6YRMwbmOgPviaic0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    02 除了聊天之外，它还有 Agent的能力。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   底层使用的是 Opencode 框架，可以调用Shell，文件，MCP等工具，自己拆分任务并执行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLBJbeWGEicyLvITH3ta8h3CiajtsH1OGsaFkEAntQiclQOUqYtI92mQfBMU1sJurSkHKoC3jSMiaiatEYjR7wCGxYj5A5ibQdyqPoG0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 如果只是简单的问答不满足的话，也可以进行深入的研究。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它可以把资料收集起来，读取内容，整理信息，并且会生成带有可视化的报告。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这个用阿里 Tongyi DeepResearch 进行的本地化改的，可以免费使用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblItx9KGlW5HRMib0CrNZbhTlD7K7DMgdjicPj0bLQrbzo0XzLkOrrSwTVySLgZZVMpial8bu88NDf7MUpgBHQ3LYRX2H5iaWQeYJew/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    04 模型很多不知道选哪个？Cookbook 可以帮助。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   扫描硬件之后，它会推荐适合本机运行的模型，并给出 Fit Score，还支持一键部署。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLsk8ybIjL3f7ncX9Aa5KtgGmX8ick4vug6UeKMVJ0a8v2Mr57514lf8GEE1on7hyiboQ3D7EyD9joI1vPficicGUFRD4r7p5Nrpls/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    05 日常办公场景也考虑到了。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   邮件管理方面，它可以自动对邮件进行分类，生成摘要，撰写回复，并且过滤掉垃圾邮件。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKLMndcHVdJc3RaC1aopWIBxcDBEE4ELGrTOnwLEyNgs8pbgGFgbCkXSbpm8MyzP7Zu5hyU4jMQZibyA71WAQavdqJt3iaYHfDCM/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    06 遇到文档也不用回复制粘贴。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   把文件丢进去之后，它就可以读取文件的内容，提取出重点或者生成总结了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLNxd1h5ib9szYfU1gjSkvQ1ChkKZibcibGhVicCdwqbqwwBzWqbmN4fhib4BfwKU9bXrotrKjSxm3exicQKKtpV3mqslNpJlTu7RrsI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    07 甚至可以帮你把一些事情自动运行起来。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   设置好定时任务之后，它就会根据预先设定好的条件来自动运行，在某个 Session 出现的时候就会触发相应的流程。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblI203Eep4PGwgyx2iaCRoBkskDOShVtBeiczV65UaWua6XvQWicVW0fRH6VyicueGicQ5PdSojvqlm06zOiaLV4H3C0k5C5v7u69nOwI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    很多人都想用本地大模型，但是却卡在了第一步上。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   显卡型号，显存大小，量化格式，推理引擎等对于新手来说就是一道障碍。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Odysseus 的
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    Cookbook
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   就是用来打破这道墙的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它会检测到你的电脑硬件配置，并且根据显存和算力来推荐适合的模型，还会给出一个fit score——RTX 3060 12GB最适合运行Qwen2.5 7B GGUF，fit score 92%。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   点击一下就可以把模型下载下来，把推理服务部署上去，不需要你去设置 vLLM 或者 llama.cpp。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLU3GxAyJ4u87AibIp73Rn6nRsshczYw8LbMTVTCpJiaIIjPzaOqj1cO6iaW5ibDFShV2TqOErZKtv83OuzSvwHnOnu2kNRvJLIJLE/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=9" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   选择好模型之后，Odysseus 就把聊天，Agent，研究和比较都塞进一个界面里：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    01 Chat 模块——和 ChatGPT 一样聊天。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   支持本地模型（vLLM，llama.cpp，Ollama）以及云上的API（OpenRouter，OpenAI）。最大的优点就是数据保存在本地，不会担心聊天记录被传到别人服务器上。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 Agent 模块——把 AI 从“会聊天”变成“会干活”。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它可以调用Shell，文件，MCP，Memory等工具，自己完成整个任务。比如说让它写一个备份脚本，它可以生成代码，也可以直接运行测试来检验效果。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 Deep Research——用AI帮你做研究。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它可以把资料收集起来，读取内容，整理信息，并且制作出一份带有图表的可视化的报告。通过阿里 Tongyi DeepResearch 进行改造之后，在本地就可以免费使用了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   上面说的功能 Open WebUI，LibreChat 都可以实现大部分。但是后面两个，它们真的没有——邮件，日历。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Email 模块支持IMAP/SMTP，并且具有AI triage功能，可以自动分类，摘要，生成回复草稿，过滤垃圾邮件。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Calendar 模块支持 CalDAV 同步，并可以连接Radicale，Nextcloud，AppleCalendar，Fastmail等。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    到这风险也提一下
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   把邮件和日历交给本地AI，这件事情本身就有一定的风险。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Odysseus 在 SECURITY.md 中写得很清楚：默认绑定 127.0.0.1 不对外网开放，AUTH 开启，默认高危工具只有管理员可以使用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   但是配置写得再好也不代表真的能抵御住风险。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    总结一下就是，如果要修改本地的AI，取消ChatGPT/Claude订阅，把邮件日历拉回本地的话，那么Odysseus就值得尝试一下了。但是不能直接当作生产工具来使用。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    看到这里想试一试的朋友可以用 Docker 快速运行起来
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;git &lt;/span&gt;&lt;span style="color: #e6c07b;line-height: 26px;"&gt;&lt;span&gt;clone&lt;/span&gt;&lt;/span&gt;&lt;span&gt; https://github.com/pewdiepie-archdaemon/odysseus.git&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #e6c07b;line-height: 26px;"&gt;&lt;span&gt;cd&lt;/span&gt;&lt;/span&gt;&lt;span&gt; odysseus&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;cp .env.example .env&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;docker-compose up -d --build&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLEMOQem3VutslLJ68M8TtA2GhvI5UgC0EL12qbkylgFje3cdNcLL4fgnvgIianuSzmtpziaRUEo6GncyotAHVXBUAdLuBGzBwd0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=10" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   第一种方式创建的时间大约是几分钟，创建完毕之后查看容器的状态：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;docker-compose ps&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJuTDrY2pKnPn8JSpe09TwpfYV8mf4v2X3xdfw7drX6fjXOOLkcIuxEyghnqZxuoevXRVoCpn3ic8ePwfSWRmRNjEUKlQTgg9EY/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=11" style="max-width: 100%; border-radius: 0px 0px 5px 5px; height: auto !important; visibility: visible !important; width: 680px !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   打开 http://127.0.0.1:7000，用终端打印出来的临时密码登录，在Settings里设置模型，搜索，邮箱。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblISNdCMGicicVFwghPFKqFNHyFAUoia2P15xZUSUjK1kicBKsJpN3k4yB1Rib2yCTdxtvLF5XdfpL6BmlAlAOUgzYxN9YySNgQEEibn8/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=12" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   没有GPU也可以用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   可以直接用 DeepSeek API Key 。在 platform.deepseek.com/api_keys上获取，设置中把 DeepSeek 加入到 providers 里，并把Key粘贴进去进行测试。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKMAyuWwr50RdP9kdtXorDZibmJGbU9zOM70HVEtkicOyianb59wIJrOOnorHgItBQFtQeqvGBxxIlcAUFiaG7cMpMqglbzKcTdQfo/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=13" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果有 GPU 的话，在
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    .env
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   文件里加入一条
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    COMPOSE_FILE=docker-compose.yml:docker/gpu.nvidia.yml
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   ，否则 Cookbook 就看不到显卡。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   还附赠免费检索。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Docker 启动之后，容器会自动启动 SearXNG—— 开源搜索引擎，不需要 API Key，也不会产生费用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJLhwvh5djFCpiaBpibPs16F4vf13nCSg0zs0YQHNhBia8sPVXdlAPhpddpf7KQZmyAFyAuq3ttnb9XIhoVKvA2uQ0Hia7JFiajgWYQ/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=14" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   打开搜索模式可以得到最新的新闻，这一切都是免费的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   到目前为止，我对该项目的看法是。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    它是给那些想折腾的人先试一试的，并不是用来直接当作生产工具的。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   优点是：功能多，Cookbook对新手很友好，邮件日历集成有区别。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   缺点是：刚刚发布了v1.0版本，还没有正式发布，测试覆盖率不够。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   所以如果要找一个可以替代它的生产级产品的话，还是等等吧。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   但是如果你本来就是想寻找 Open WebUI 或者 LibreChat 的替代品，并且愿意做小白鼠的话，也可以尝试一下。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    最后一个问题就是：你们平时用不用本地的AI？把邮件，日历等私人信息交给本地模型处理可以吗？
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   MIT 协议开源，想看的可以去 GitHub 看看。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/pewdiepie-archdaemon/odysseus
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然已经看到了，欢迎随手点赞，在看，转发，并且给我一个星标⭐，以接收最新的文章，下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1147" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/5TD0cQ0ZfTVM2iSIGpQnqg</link><pubDate>Thu, 04 Jun 2026 15:18:53 +0800</pubDate></item><item><id>3877547210-2247512534_1</id><title>不抢鼠标的数字员工，终于来了。</title><description>短短几个月，GitHub 有 17000 多人 Star。               作者并不是来自硅谷的大公司，而是曾在 Xbox 和 Microsoft AI 工作过的开发者，之后去 YC 创业。          该项目在开发者社区中引起了很大的关注。          它叫 Cua。               一句话来总结就是：          让 AI Agent 安全地控制整个桌...</description><guid>https://mp.weixin.qq.com/s/h8mHojj5nVrZeXwFJ0rWsQ</guid><enclosure url="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblL0mYNhth3NZ12gy1rEcTFMIibibAkS6CtdUZkPwPTW0iaibEWFZXia4jo3C3A09fADxm4rp3srSAWUPMiap6V42kL6TWPIAS7Z0e6xw/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1146" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   短短几个月，GitHub 有 17000 多人 Star。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKMwOXzyOa9Yh3Jw7kfk5vC8UNJwQbhLDNdI6H1TQKHLH2tAVjK1YCia0nkXEZRSKWFW1A2G7eh9JHsEZCjSQArzB8wnadeWHw0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   作者并不是来自硅谷的大公司，而是曾在 Xbox 和 Microsoft AI 工作过的开发者，之后去 YC 创业。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   该项目在开发者社区中引起了很大的关注。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它叫 Cua。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKKiaekBS5zb0Poib5n1pIMjQa0Xxibiak7lyXOOsrFF8LHjVnoUTtJuSOPLMBoyHDLicQDvAsxteCqgZOwI1M0QFPAZ10ibraC9pJCE/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   一句话来总结就是：
  &lt;/span&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    让 AI Agent 安全地控制整个桌面系统，就像在操作一台虚拟的电脑一样。截图、点击、打字、跑命令都可以。而且这台虚拟电脑是完全隔离的，AI干什么都不会影响到你真实的电脑。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px; visibility: visible;"&gt;
  &lt;span style="font-family: STHeitiSC-Light; font-size: 22px; color: rgb(14, 136, 235); font-weight: bolder; display: inline-block; padding-left: 10px; border-left-width: 5px; border-left-style: solid; border-left-color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    人工智能真的在用电脑
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   最简单的使用姿势就是使用 Cuabot：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px; margin-bottom: 10px; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px; visibility: visible;"&gt;&lt;code style='overflow-x: auto; padding: 15px 16px 16px; color: rgb(171, 178, 191); display: -webkit-box; font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace; font-size: 12px; background: rgb(40, 44, 52); border-radius: 5px; visibility: visible;'&gt;&lt;span style="visibility: visible;"&gt;npx cuabot&lt;/span&gt;&lt;span style="visibility: visible;"&gt;&lt;br style="visibility: visible;"/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它会弹出一个可视化的窗口，让你亲眼目睹Agent在沙盒中是如何操作桌面的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLYCRQYtrrN5ib0tAJnnOo9IZHsBolWWdRRSvqfpb3TDuCXnwMTFhfEibG2nSBhla0TAicHyLL3zy9gVkaPOnbj5hrEnAq9WuIZjI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你能看到：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;ul class="list-paddingleft-1" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: black;list-style-type: disc;"&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     AI 在独立窗口操作虚拟桌面
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     截图、点击、输入文字
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     执行命令行操作
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     和主机共享剪贴板
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
 &lt;/ul&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   整个过程就是看着一个数字员工在工作。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   而且，在后台工作的时候，你的电脑不会受到影响。你可以继续写代码、看视频、回信息，互不影响。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    Cua 最主要的功能就是使 AI 在隔离环境中安全地进行桌面操作，不会影响到你的实际机器。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    主要的思想就是三层结构。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   上面是AI Agent，中间是统一的 Computer SDK，下面就是沙盒层。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Cua 三层架构：Agent、SDK、Sandbox。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJ8mSUNlwZViaxicjX65NgeNXAibZF95NXficm9aQEZ1zaNMLPak75Cu5Ny7BA8vrH5vXlkubwJ1PSmQiaJS1gXsUCH7fyPYRwHr2NM/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Cua 三层架构：Agent、SDK、Sandbox
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不管底层使用什么虚拟化技术，对于 AI 来说都是相同的接口。写一次代码就可以在不同的系统中运行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   该设计的优点是：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;ul class="list-paddingleft-1" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: black;list-style-type: disc;"&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     统一接口：不需要关心底层是 macOS、Windows、Linux 还是 Android
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     安全隔离：所有的AI操作都放在沙盒中，不会影响到主机
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     灵活部署：可以使用云沙盒，也可以本地虚拟化
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
 &lt;/ul&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   值得一提的是，Cua 不仅支持桌面系统，还支持移动端。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Android 可以通过云沙盒或本地虚拟化运行，iOS 也通过 agent-device 内置支持。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这意味着 AI Agent 可以像操作电脑一样操作手机，执行手势、点击、滑动等操作。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLHvicHcyN6OPt9HQc5ibTKgPz4E4TCTcauLC9NkZ9eqkMicovvtYMaWbuf3Ca1VticxSBZvcF7vJAiaju5eVx1rRTnA8Y4XBKAKfx0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    下面继续看看 Cua 的四大核心能力
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    01 Cua Driver：后台控制，不抢夺光标。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   后台桌面控制程序。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   可以在后台控制原生桌面应用程序，不会占用你的光标、焦点。AI在工作的时候，你还可以继续使用电脑做其它的事情。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   macOS、Windows 系统都可以正常使用，但是 Linux 还处于预发布状态。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJQmj07TD78FrrtMfp8UqxoWNjdkI8aFGJcXgJKJMpYrFrpicNJcicdUoFhKDMXUxkQDIDg5WRRIf5JWZeVTd1R4cXDugNFaHVOw/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Cua Driver：后台桌面操控引擎
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 Cua Sandbox：隔离沙盒，热启动不到 1 秒。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   沙盒环境可以使用云沙盒也可以用本地虚拟化的方式。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   macOS 上有一个叫做 Lume 的组件，它是用 Apple Virtualization.Framework 开发的，可以达到原生 CPU 97% 的速度。Apple Silicon 的用户会很开心。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   支持快照、Fork。保持一个干净的状态，从这个快照中克隆出多个并行的实例，让几百个Agent同时运行不同的任务。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblK5oIRHsMTTtH3yfNR7AEZpEaFkvB5NO9jAWLKtDXPc8vcDGAwZYicUtKIo8oQ8RY9WMeUicpJQYbZVE34tsibWfRpPyBoibdgUDo0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 Cuabot：给编码Agent提供无缝沙盒。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   多 Agent 协作工具。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   可以使用 Claude Code、OpenClaw 或者其他的图形化工作流。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   单独创建一个窗口来原生显示在桌面上，使用 H.265 编码，还可以和主机共享剪贴板以及支持音频。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLuvtwBoDHo3xH1oegYw1PwmtGUP1Idqwl9AcLlUeHDyyrTibGBkudRjia7HWNCica2tkMR1YhOpoZaHmichnE2zBwRy2H8DG5PXL4/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Cuabot：多 Agent 协作工具界面
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    04 Cua-Bench：用 OSWorld 基准来对 Agent 进行测试。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   评测基准模块。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   支持 OSWorld、ScreenSpot、WindowsArena 等主流基准，并可以导出 Agent 执行轨迹来训练。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   想要大规模的测试，可以使用 CLI 工具并行启动几百个 Agent，把数据喂给强化学习。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKzicKVaKA1lKKuEEZT0bx5gjbKEXJALXykxYrJg7V1K55mIy0U6pXFlBRv5ribia3N5vF0KOwC6B5bEMkdJwtlR4p1mianfHbicdeI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    看完这些功能，估计不少朋友已经想上手试试了。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   macOS或者Linux，一条命令就可以安装好CuaDriver：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;/bin/bash -c &lt;/span&gt;&lt;span style="color: #98c379;line-height: 26px;"&gt;&lt;span&gt;"&lt;/span&gt;&lt;span style="color: #d19a66;line-height: 26px;"&gt;&lt;span&gt;$(curl -fsSL https://raw.githubusercontent.com/trycua/cua/main/libs/cua-driver/scripts/install.sh)&lt;/span&gt;&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Windows 使用 PowerShell：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;irm https://raw.githubusercontent.com/trycua/cua/main/libs/cua-driver/scripts/install.ps1 | iex&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   使用 pip命令安装Python SDK：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;pip install cua&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Cuabot快速体验：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;npx cuabot&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   给一个可视化的窗口，看到 Agent 在沙盒中是如何操作桌面的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblL4R0CLAmibkDBDKd3aThiaJona6VtWPSibnlWZLcA0nJdYzoFX0CSMTnMvgQY4scQ4C8jyENbe0H1SJkuPnLgnFHMjrTmmXibG4k4/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=9" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Cua Computer SDK：截图、点击、键盘、Shell 统一接口
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    但是缺点也要提一下
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Linux 的支持目前还处于预发布状态。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   macOS 上 Rust 版本和 Swift 版本还没有对齐，生产环境建议使用 Swift 版本。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   使用 MCP Server 需要有效的模型 API Key。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你主要是用 Mac 或者 Windows，想要让 AI Agent 来帮你跑 GUI 任务，并且又不希望把主机暴露出来的话，那么 Cua 就可以帮到你。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   以前我们认为 AI 可以写代码、画图、聊天，但是缺少一个环节，那就是 AI 能不能用电脑？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不是调用API、不是运行脚本，而是像人一样看屏幕、移动鼠标、点击按钮、输入文字。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Cua 给了一个轻量级的开源方案。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它为 AI Agent 提供了一个安全的操作环境，使AI可以像数字员工一样真正地“使用”电脑，而不是“访问”电脑。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这一切都在沙盒中进行，并不会影响到你的电脑。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   评论区大家发表一下自己的看法。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   该项目使用的是MIT许可协议，有兴趣的朋友可以到GitHub上查看源代码以及相关文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址为：https://github.com/trycua/cua
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然看到这了，欢迎随手点赞、在看、转发，也可以给我个星标⭐，接收最新的文章，我们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1146" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/h8mHojj5nVrZeXwFJ0rWsQ</link><pubDate>Wed, 03 Jun 2026 15:17:52 +0800</pubDate></item><item><id>3877547210-2247512510_1</id><title>能连 40 多种数据库，这个更轻了。</title><description>15MB 安装包。          没有 Java JRE，没有 Python venv，也没有捆绑 Chromium。          光是这一点，就已经和市面上大多数数据库客户端拉开差距了。          DBX 项目在 GitHub 上开源一个月，就获得了 3000 个 Star。          一句话来总结就是，它其实就是一个用 Tauri 编写的跨平台数据库管理工具。    ...</description><guid>https://mp.weixin.qq.com/s/Mq3MuGcwVO9dYOVMqGRADQ</guid><enclosure url="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblJ1XAiaBUvQiam9KjfxFtCXgB4T4kic9d7d9LCbIjgQLFbygob5icIEtdj2OzFOSP6VTgwPibxW8q4w7Mzm8ByUBflqSxhYFzPEoMDw/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1145" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   15MB 安装包。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   没有 Java JRE，没有 Python venv，也没有捆绑 Chromium。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   光是这一点，就已经和市面上大多数数据库客户端拉开差距了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   DBX 项目在 GitHub 上开源一个月，就获得了 3000 个 Star。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   一句话来总结就是，它其实就是一个用 Tauri 编写的跨平台数据库管理工具。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    支持 MySQL、PostgreSQL、Redis、MongoDB 等四十多种数据库，并且自带AI SQL助手以及MCP集成。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKTGztjKgBEDDg3mJ4DtNWEnv6woAMvhzUiag7bjllIXWcefC1mT5NTDjkabKicibmslG1ImCNZqB3TJWePjJdJmCnMESmofQDhm4/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   DBX 的作者曾经在掘金上发表过一篇关于它的介绍文章。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   一开始就直截了当地指出问题所在。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   使用了多年的 Navicat、DBeaver、DataGrip，都有各自的问题。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   Navicat 是收费的，企业版价格为 1599 元人民币，界面多年没有变化；DBeaver 是用 Java 开发的，启动速度很慢，并且会占用大量的内存；DataGrip 功能强大但是比较沉重，需要订阅。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   于是作者就站出来了，用 Tauri 2、Vue 3 和 Rust 重新做了这件事情。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   真正有趣的地方就是把轻量做到位，并不是简单的把功能堆积在一起。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   安装包大小为15MB左右，内存占用大约是 80MB。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   没有用Java JRE，Python venv，Chromium 这些乱七八槽的东西。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   这就意味着你在打开它之前不需要等待一个重大的运行时加载完成，就可以直接工作了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px; visibility: visible;"&gt;
  &lt;span style="font-family: STHeitiSC-Light; font-size: 22px; color: rgb(14, 136, 235); font-weight: bolder; display: inline-block; padding-left: 10px; border-left-width: 5px; border-left-style: solid; border-left-color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    它把常用的数据库操作都整理好了。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    01 40多种数据库可以一键连接。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   MySQL、PostgreSQL、SQLite、Redis、MongoDB、DuckDB、ClickHouse、SQL Server、Oracle、Elasticsearch等主流数据库都支持。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   也包括了 TiDB、OceanBase、openGauss、GaussDB、Kingbase 等国产数据库。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   还可以用 JDBC 来扩展连接 Snowflake、BigQuery、Trino 这样的数据仓库。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblLfmCVhItTCyCLTjsdzN7XYnVwib4ANvlibXnKFqtxqJYLric6NLZvgLviawFspCd7VqQRj8ftsXmMZic36FiaQPSK2vYpyJfiapuHtsU/640?wx_fmt=jpeg&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   一个工具可以连接这么多数据库，听上去就是功能堆积了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   但是使用之后就会发现，高频的操作都被集中到一个界面上了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 SQL 编辑器很方便使用。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   使用的是 CodeMirror 6，自带语法高亮、自动补全和格式化等功能。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   还可以选择一部分 SQL 直接运行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   查询的历史会被持久化地保存下来，在下一次打开的时候可以找到上一次运行过的命令。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   数据表格刷数据很丝滑。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblK1RT8eXJEdPona4pmZwGFmr3C8UzDt4UREmqEc2mFecxuTvGibyHU5fXsCeay4YQlCpsGeDpZ2LENq9ibFHmj47aF0wR6aoosrw/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   虚拟滚动万行的数据也可以很流畅，不会卡成PPT。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   行内的编辑可以双击修改，修改后批量保存，不需要逐行点击。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   矩形选择复制、转置查看和单元格详情这些功能，在列很多或内容较长时，查看和复制数据会方便不少。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   导出支持 CSV、JSON、Markdown、XLSX和INSERT 语句，日常用起来已经足够了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJ71pvG2aIdZYojUz3fq2NglibA0XiciaSYFGPrLvFLxICfMQBibVFXyQuE8xV1eHTKmCt6fMwGUyXkLq2mpR2kiab8dkguic5X5lHVY/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    04 Schema 工具一应俱全。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   侧边栏可以查看到数据库、Schema、表、列、索引、外键、触发器等信息，并且可以进行搜索和固定常用的对象。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   ER 图可以把表之间的关系可视化出来，在做设计评审时很有帮助。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLzEDqjCnia0EfJCDx3tD6h4rJE519Ho3A6fvtXuS97mibVUFjUu9WPgUyia8icE9sKKZlZ078Q85Sun3SCsB8hnRQWic7H6RXSSsPQ/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Schema diff 可以比较出不同的连接之间的结构上的区别，并且可以产生对应的 SQL 语句，在迁移或者是版本比较的时候就可以减少很多人工去比较的时间。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    除了核心数据库的功能之外，DBX 还有一些不错的地方。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    内置了人工智能SQL助手。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这两年来，人工智能编程工具发展很快，但是大部分只在代码层面上进行，对于数据库的操作方面一直没有涉及。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   DBX 将人工智能直接集成到 SQL 编辑器中。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你可以用自然语言来表达自己的需求，它可以自动生成 SQL，并且可以解释语句、优化性能、修正错误、转换方言。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblKFhjN7LIylkCHQdD1zeUXno7ibfeZDFvOXib1skw1pe9D7XVico49yzHOyrTk7AqyT9uYWicKicZOEibZXhZ1MC9auXhduoZCXgKOic0/640?wx_fmt=jpeg&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   支持 Claude、OpenAI、本地模型（例如Ollama）和所有的 OpenAI 兼容端点。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   重要的是，AI 生成的 SQL 在执行之前会给你看一遍，不会直接运行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   该设计比较保守，并没有因为追求新奇的功能而忽视安全问题。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    MCP集成使得AI Agent可以直接访问到数据库。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   MCP（Model Context Protocol）是由 Anthropic 提出的一种协议，使得 AI Agent 可以与外界工具进行直接交互。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   DBX 提供了 MCP Server。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKQwicrPOE00iaxwJoibptZJDP9KuC2wAKwT7I49lOhD6xSUUg9Ed5Qk5MP7iaRSnaYQUWSQo4CueLZYxOsTbn3azp1Umqpz4r4D7g/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   配置完毕后，Claude Code、Cursor、Windsurf 等 AI 编程助手就可以直接访问你的数据库了，可以查看到所有的连接信息、浏览各个表的内容，并且还可以运行 SQL 查询语句。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   以前要想让 AI 知道数据库的结构，只能手动把 schema 粘上去或者自己搭建桥梁。现在可以直接用 MCP 连接了，省去了中间的一层。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    看完这些功能，估计不少朋友已经想上手试试了。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   桌面客户端支持 macOS、Windows 和 Linux。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblL5ltibnGvUdYB3CHNmaONvZ0qM87BLgUcnLibU7Tt6jv6JpYiakibsfic3cibb4yHUCBdHFSk0Lp6sLLMuyVgozLAcbxw4icCic2y2icdI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   还可以用 Docker 来部署一个 Web 版本，团队成员可以共享使用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   连接导入的功能。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   使用 DBeaver 或者 Navicat 导入连接配置，不需要一个接一个地去设置。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果想让整个团队共享的话，可以使用 Docker 来部署一个 Web 版本，执行命令
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    docker run -d --name dbx -p 4224:4224 t8y2/dbx
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   即可运行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    还有一些需要注意的地方我也提一下。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   01 目前还没有团队协作的功能，不像 Navicat 那样可以实现云端同步。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   02 没有数据库监控、图表可视化等功能。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   03 存储过程调试等高级功能还没有实现。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   04 开源协议为AGPL-3.0，在进行商业化的时候要遵守相关条款。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   试用了一下，我觉得 DBX 还行，但也别指望它能解决所有问题。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   想要 Navicat 那样的云端同步、团队协作，或者需要数据库监控、图表可视化这些高级功能，可能会觉得差点意思。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它适合这些人：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你只需要一个轻量级的数据库客户端；
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你经常需要连接多种数据库；
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你想用 AI 辅助写 SQL，但不想把数据传到外部服务；
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你对成本很敏感，不想为数据库工具付费。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   感兴趣的朋友可以试试。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   评论区说说你用的是哪个数据库客户端。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目基于 AGPL-3.0 协议开放，感兴趣的同学可以去 GitHub 仓库看看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/t8y2/dbx
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然看到这了，欢迎随手点赞、在看、转发，也可以给我个星标⭐，接收最新的文章，我们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   &lt;br/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1145" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   &lt;br/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/Mq3MuGcwVO9dYOVMqGRADQ</link><pubDate>Tue, 02 Jun 2026 15:17:56 +0800</pubDate></item><item><id>3877547210-2247512498_1</id><title>9 天 2000 Star，这次又火了 。</title><description>9 天收了 2000 Star。               又一个 AI 编码工具在 GitHub 火了，它叫 GSD Core。          连 Amazon，Google，Shopify，Webflow 的工程师都在用它。               详细介绍前，我们先看一下，社区真实案例的效果。          有人连续用了 3 个月，复杂任务完成度能做到 95%，已经用它做出了自...</description><guid>https://mp.weixin.qq.com/s/EDjM-B8TPS7kG_V9H_uyog</guid><enclosure url="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblLTezYUOW6EFyaTKskQOWE7yR6XWjyNsGQQD0dwQmwxc4nb2IHO4UBtkXQdf8wK3cLfxwaLI0MicvZzD9OBusHibYQJLaIXFvvjw/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible; margin-bottom: 0px;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1145" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   9 天收了 2000 Star。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKzxQCpqvYTBgle7rl5WQx63oJvOic2mWbMSwsrpBfBrDYN6JUuYLcsP960y8Vur9g8QjqXVib3G3wEicV9AJhvbR1uCicicA67XlicM/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   又一个 AI 编码工具在 GitHub 火了，它叫 GSD Core。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   连 Amazon，Google，Shopify，Webflow 的工程师都在用它。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLUusOsN7F4ZuqHjicvVQMxLwkVAtDeNNTyvPiaKIqiaLLvycUDCH9AMN2djiaNWhA0bW67y21aJolMLBc0SZfO6baCkRgtyge2QNs/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   详细介绍前，我们先看一下，社区真实案例的效果。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   有人连续用了 3 个月，复杂任务完成度能做到 95%，已经用它做出了自己的 SaaS 产品。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIicOSvq2gSvnRC7Q2IXexfgw2iaic7iayOsh2qPKwlT07m05T53IWQWkzVlibvXicdRDPUeWdBibgx5KNutRexzB9Mw9zaSUykEOhOZE/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   另外一位系统工程师，没有任何编程经验，用它一个月，生成了 25 万行代码，做出了一个完整的应用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px; visibility: visible;"&gt;
  &lt;span style="font-family: STHeitiSC-Light; font-size: 22px; color: rgb(14, 136, 235); font-weight: bolder; display: inline-block; padding-left: 10px; border-left-width: 5px; border-left-style: solid; border-left-color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    它解决的核心问题，上下文腐烂
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   GSD Core 要解决的核心问题就是
  &lt;/span&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    上下文腐烂
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span style="visibility: visible;"&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   这次词我估计不少朋友应该听过。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   说的是 Claude Code 或者 Cursor 连续跑上几十个任务后，AI 的输出质量就会明显开始下滑。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它会把之前定好的规则忘掉，反复追问已经回答过的问题，有时还会编造出一些根本不存在的东西。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   说白了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   就是因为 AI 的记忆里面塞进了太多信息。任务一长就分不清哪些是重点，哪些只是噪音。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我用一张图给大家做一个比对。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIdXE2iaviaL8MyHlhbOm6mGlhicuqurICBTGoicibb9iawLvwXZqqpmAntNQ1ia220C0nCuKIvT7QHyVoPa4AtCyTaMnkGaicDMp6wibYk/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   左边就是最直接的 vibecoding 方式，所有对话和代码全都塞进同一个上下文当中，越往后越乱。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   右边则是 GSD 的思路是：每个任务都会在一个干净的上下文里面去执行，这样即便跑到第 50 个任务，也和第 1 个任务一样清爽。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   有人会好奇，GSD 是怎么做到的？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   简答概括一下
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    GSD 给每个任务都给 AI 一个崭新的 200K token 上下文窗口。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这听上去有些奢侈，但带来的效果却很明显。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   每个任务都在干净的上下文里执行，AI 根本就不需要背着之前所有任务的包袱向前走。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这就好比每次开会都会换一间全新的会议室。而不是挤在一间越来越乱的房间里硬撑。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    它把整个开发过程拆成了 6 个命令，每个命令只做一件事。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblL64t01wWCc3G5EibibqUzbBvicGrfJ9GJcNtyFicfiaUdXh9BmHytJiciafmpsEyFdVcnqb6y1jtmgRkpMDzmBYTBwiaCficDe6Fr4la7k/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    01 项目初始化。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    /gsd-new-project
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   会先把你的想法转变成结构化的需求以及路线图，它会一步步来询问你所遇到的麻烦，协助你把需求梳理得更加清楚。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLn5EDyNWduqDA9Gnib7L8KUD5qnv6KUJ71sCdsDiakzx5gI5r3EibTlicOEickicymHFDUqDEX7YDu2Tibe2dOLV6B2Q3wibarJAWxDUQ/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 阶段讨论。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    /gsd-discuss-phase
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   则是在动手之前，先把实现细节聊透彻，消除掉那些灰色区域，避免掉后面反复返工的情况。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIJZURpLbckOqibOZr8c3wzl3zIHQJXDD3iaB0pPXbg0eD67XSlHuYuBFTBzJIsGG5PEm1VkfflTeqfzbRia1YjVRMHaJsIAHTOeY/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 阶段规划。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    /gsd-plan-phase
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   会把每一个阶段拆解成具体的任务。走探究 → 计划 → 验证这样的循环，直到计划审查凭借为止。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLrGeAQrmUy44wnxTGn4eLrGnEWhHW63GGBOjOfQClJJibibhgvnK2qd0DL2Xs6oIzrPYJOSTibv1JcD0P0eO5YehUTt3Z1dib30kI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    04 阶段执行。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    /gsd-execute-phase
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   负责去执行任务，沿用波浪式的并行执行方式，每个执行器都会获得一个全新的上下文窗口。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    05 工作验证。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    /gsd-verify-work
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   检查构建出来的内容，诊断失败缘由，并且生成修复计划。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLN1fdXjdC1ebLG6PkvHXVZf8LjwkqiaUjdNVFVXJZBFcaMqSjHAERJ3aiczHVZBmzLwI233eS7UbDsLia309icxiband7ias1jicXaXk/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    06 发布。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    /gsd-ship
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   则从验证阶段创建 PR，完成最终的交付。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这套流程看上去稍微有些重，实际使用起来，反而比那种大杂烩式的 AI 编码方式更让人省心。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   因为每个阶段都拥有明确的边界，AI 就不需要在一个超长会话里同时去处理需求，规划，编码以及验证等多项工作。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    除了核心工作流，GSD Core 还有一些好的细节。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    波浪式并行执行。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它会先剖析任务相互之间的依赖关系，把那些没有依赖的任务放进一色波里面并行执行，有依赖的任务则安排到后面的波次里依次推进。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   举例在 Wave 1 里再就是跑任务 A 以及任务 B，它们互不干扰。到了 Wave 2 再跑任务 C，它需要依赖 A 和 B 所产出的成果。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIP9JoItfnm238VvxBqdoRSWWcJc82G8fgHibmvzBLKpeeS2KkLsHSbSsWP0vu7LT01o74IM5cAUly1sRdTyIHhibiap6HxXR58EU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=9" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这样既保障了效率，又不会让 AI 在一堆纠缠不清的任务当中乱了阵脚。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    原子 Git 提交。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   每个任务做完，它都会做一次 Git 提交。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这样拙的好处是，如果哪个人物出问题了，很容易就回滚过去。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    Nyquist 验证层。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我经常看到有人吐槽，用 AI 写代码，写的很快，结果代码跑一起，全是 bug。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   为了解决这个问题。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它在 AI 动手写代码之前，它会先确认一件事，
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    写完以后怎么验证。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它让每个任务都提前准备好验证方式。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   一条测试命令，或者是一套明确的检查步骤都可以，总之要有。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这样 AI 写完以后，先跑一遍验证，确认真没问题，任务才算完成。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    上下文窗口监控。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它会实时显示上下文的使用率。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   到 60% 就会发出警告，到了 70% 就进入临界状态。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这样有个好处是就能提前决定是不是要新开一个会话，防止窗口被撑满之后，任务失败。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    看完这些功能，估计不少朋友已经想上手试试了。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   打开电脑终端，复制下面的命令执行一下。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;npx @opengsd/gsd-core@latest&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   执行到最后，页面会展示 15 种 AI 编程工具。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   按照序号提示，输入需要的数字编号就可以了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKLVicKwJn2Y0UeF7SA6Z4icYOUljkwC2VSBk26J1QTbntMicBMBNUQcf0uH6cswaoOLoRofVSkECFJnY5vuUuELgBlXWI42ialPbA/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=10" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   注意装完后，还不能直接用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   打开上面选择的 AI 编程终端，比如 Claude Code，就在终端里执行
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    claude
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   然后就可以用上面提到的命令了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我记得我刚开始听说 Claude Code 很牛X的时候，装了一个，让它帮我重构一个老项目。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   刚开始还行，到后面发现，前面定好的规则，经常就忘了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   要反复强调才勉强可以，用起来很费脑子。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   现在 GSD Core 把这个事情系统化了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不过再提醒一下小项目建议不要用它，直接用 Claude Code 就好了，更省心。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   顺便说一下，GSD Core 源自 get-shit-done 项目。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   今年 4 月原作者失联后，社区 Fork 出了现在的 GSD Core。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   评论区聊聊，你们是怎么解决上下文腐烂的？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目基于 MIT 协议开放，感兴趣的同学可以去 GitHub 仓库看看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/open-gsd/gsd-core
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然看到这了，欢迎随手点赞，在看，转发，也可以给我个星标⭐，接收最新的文章，我们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1145" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/EDjM-B8TPS7kG_V9H_uyog</link><pubDate>Mon, 01 Jun 2026 15:17:29 +0800</pubDate></item><item><id>3877547210-2247512469_1</id><title>tmux 自动化终于有人重写了，更稳了。</title><description>tmux 很强。          可一碰终端自动化，很多人还是得靠 grep 和 sleep 硬凑流程。          有人实在受不了，干脆从零写了个不到 5MB 的工具。          两周后，这个叫 rmux 的项目，在 GitHub 上获得了 1300 个 Star。               rmux 终端              它是一个专门用来解决终端自动化难题的工具。 ...</description><guid>https://mp.weixin.qq.com/s/44iTGpgPtkY-kjVcwQwU3w</guid><enclosure url="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblJKSHiahJmNP7ibEELibXcQwHjmmU3bqSKC98T8n3Xx2BTbee8C3NSEflEm4ap0bnibvht2eb36aw1XCia2gn9XqpD2zSDDNPgsb6uU/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1145" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   tmux 很强。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   可一碰终端自动化，很多人还是得靠 grep 和 sleep 硬凑流程。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   有人实在受不了，干脆从零写了个不到 5MB 的工具。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   两周后，这个叫 rmux 的项目，在 GitHub 上获得了 1300 个 Star。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_gif/VDCUoW3UiblIbcEhzHltLjzwoRZwkWlMWLyWBhEOBExPL4UiclwTvNcDpgxRsBEH56lV8EoIIjK1j0YTXicxCNk6cnGwFT7HAXQLFdNt38Iziac/640?wx_fmt=gif&amp;amp;from=appmsg&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px; text-align: center; color: rgb(136, 136, 136); display: block; font-size: 12px; font-family: PingFangSC-Light; visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    rmux 终端
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    它是一个专门用来解决终端自动化难题的工具。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   tmux 有多好用，用过的人基本都懂：多窗口、断线不中断，做远程开发特别顺手。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   但真要让脚本去自动操作终端，画风就变了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   通常需要搞这么一套流程：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   发送命令。随后 sleep 等待，接着抓取屏幕输出，再运用正则去猜测成果，接着才能继续下一步。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   整个过程，就好像在门外不停地敲门：好了没有？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   rmux 想要突破的，正是这件事。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    rmux 的做法是直接装了个门铃——任务完成，它自己通知你。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLJNEn5nJicHmFoFz3x9atL5ZflnXR7QsvKGWv3qqicFGyPwNiboeQcvt5TDRKn17pZrYSb3RonQddVHlDtNiav4RP4MhlvibXVg83E/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px; text-align: center; color: rgb(136, 136, 136); display: block; font-size: 12px; font-family: PingFangSC-Light; visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    rmux 架构图
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px; visibility: visible;"&gt;
  &lt;span style="font-family: STHeitiSC-Light; font-size: 22px; color: rgb(14, 136, 235); font-weight: bolder; display: inline-block; padding-left: 10px; border-left-width: 5px; border-left-style: solid; border-left-color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    先看个小白例子
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   你想要编写一个脚本来完成这样的任务：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    自动登录到服务器，之后运行一个测试，等待测试跑完，获取结果，随后把通知发送给你。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    01 用 tmux 的话，你得这样写：
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJUjQuWQtxsic7ccAV4NSeSISPkRCsQick0JzLAA9AKLGWVFEiabnq3RXicLWdcg7LekfYYEgDRk7KDZicHuUMCGapNvUqAaz7K0R8k/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    sleep(3)
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   — 这个 3 秒到底是怎么定出来的？纯粹靠猜测！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   网络要是快的话，就会浪费时间，网络慢的时候，命令还没执行完，你就得去捕捉屏幕了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    sleep(10)
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   在实际测试当中，有时候 5 秒就跑完了，有时却要 30 秒，你永远没办法把它定得十分准确。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    re.search
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   你需要用正则表达式，在一堆乱码当中去匹配结果，只要少一个空格，可能就匹配不到。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 用 rmux 就可以这样写：
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKDKEWeSsloVEXFwvsFBEdvHOHp5LeQicNJmY3RiaZlUP9XCAjnibic8afTkKK3MfojX6RPlazslJ78TdPGiaQiakQeL1TSOOsZRrm1Q/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我用一张图给大家做一个对比。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKNzRyibWvIwEllRibvyKpTgiaeuibyiaqbyDeD5whhkg6Sg0twtMXKhUsU9Hk3KuV2DibD09sDz7fV9Biar61Ad9Mu658ybQwW50fkD4/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   用大白话概括一下：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   用 tmux 做自动化类似盲人摸象，用 rmux 则好比睁眼开车。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    最大的改变是什么？
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    01 不再靠猜，而是等
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   以前我写 tmux 自动化脚本的时候。最折磨人的地方就在于估算等待的时间。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   要是等待的时间太短，命令可能还没有执行完成，要是等待的时间太长，不仅浪费了时间。还不一定准确。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   rmux 直接用
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    wait_for_text("ready")
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   命令。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你只需要告诉它等到出现 ready 这个词就继续，它就会老实地在那儿等着，一旦出现马上就会通知你。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   完全不用 sleep，也不用盲目去猜测。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 能读懂屏幕上的字
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   tmux 捕捉到的屏幕内容多半是一堆乱码，从专业角度来讲，它叫作 escape 序列，这时候就需要你自己去解析它了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   而 rmux 则会直接告诉你：第几行第几个字符具体是什么字，运用了什么颜色，用了什么样式。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这就像你能够直接看懂终端上，显示的本末，而不用拿着一堆原始数据再去慢慢琢磨。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 写代码像操作浏览器
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   用过 Playwright 的朋友应该能看出来思路基本相同。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   类比一下就是。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;ul class="list-paddingleft-1" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: black;list-style-type: disc;"&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     连接终端，就好比打开浏览器
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     发送命令，相当于点击按钮
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     等待结果，类似于等待页面加载完毕
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     读取状态。则类似于读取页面上的文字
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
 &lt;/ul&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   把这种等它好了再下一步的模式搬到了终端上。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJwS4xk79y0IrP7HUwiaEaFdUgQVo99Lh0LtU2sNicvuBWSmMhuScfuicCGRibCibzXzfUibdo38P6kX7AZFZIFQa34IUxlWtCOT2dRw/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Playwright Testing 演示
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    04 Windows 用户终于有救了
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这一点对于 Windows 用户来讲尤其重要。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   以往想要在 Windows 上运用一个好用的终端多路复用器，要么得去安装 WSL，也就是 Linux 子系统，要么就得依赖各种各样的兼容层，常常要折腾很长时间。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span style="font-weight: bold;"&gt;
   rmux 是真正原生的 Windows 支持。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   rmux 直接给出了原生的 Windows 支持，不需要虚拟机，也不需要任何兼容层，直接安装上去就能用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   对于那些每天在 Windows 上敲代码的朋友们来说，这是头一回有一个正儿八经的终端工具，可以直接跑起来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    05 连 htop 这种界面都能自动化
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不只是能自动化命令，还能去自动化界面程序。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   只要你了解 htop，lazygit 这类工具，就会明白它们并不是简单地输入命令之后输出结果。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它们属于那种带有界面的，，需要运用键盘上下左右开展导航的程序。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   传统的自动化方式很难去应对这类程序的自动化工作，但 rmux 可以观察到这些程序的界面状态，之后模拟按键去操作它们。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这就意味着：
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    你几乎，能够自动化终端里的所有东西，而不仅仅局限于简单的命令行工具。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblK9NUBBG5NYf5libzfK4BqFglFwxTJzEKicYVZZDOjib9HiaeR3jXS6b07utRQ8UAG6FibNB98jJPYkyqbPLCmCWK9c3EQOQic3rEWJU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Mini-Zellij
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblI7QzzUYbtAFnotz0GWtd6v7X4XVwUFozPfnhrgxNgptCZVIWaGMIhfC9kbdhWBqfyYgfz41y7Hd4Vdic9ibL3buO2FKd3teDcu4/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Terminal Browser Mirroring
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    特别是在多 Agent 协调和复杂任务编排方面，rmux 展现出了强大的潜力：
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblK7qH4fibhCPficVMm4O7GJ9AOVo0kAI6bibibvzJOibBVm7Ia875f33aohI3ic4gTUiceYNscL5WDia76C6ia3NkRf8yaBfZM2GnZOglkY/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Multi Agents Orchestration
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLic8nMphwpYFuhB63gib8UkFd8q8wEfBbdvcib0icAhzG7j9TmNiaBK7Ey1ZFqkZVXicWHSVNU6N52d3UhCAJWSFQ3tGCdynlv9sr2k/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=9" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Agent Broadcast Arena
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    看完这些功能，估计不少朋友已经想上手试试了。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Mac 和 Linux 用户，直接用下面这一行命令就能把它安装上去。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;curl -fsSL https://rmux.io/install.sh | sh&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   使用 Windows 的朋友，打开 PowerShell，直接复制并执行这段命令。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;irm https://rmux.io/install.ps1 | iex&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   要是你不想用命令来安装。也可以直接去下载安装包。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJMQMVujRZGKia9BGxohSQpACNnlc9iaq0pVcmDyicOrmibWItQOIDkmia3GicEfvqFnZYxv1tFwx7iagYDPn1iakvCyBaMibib7PGVAdFNM/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=10" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   用起来和 tmux 非常类似：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;rmux new-session -d -s work&lt;/span&gt;&lt;br/&gt;&lt;span&gt;rmux split-window -h -t work&lt;/span&gt;&lt;br/&gt;&lt;span&gt;rmux send-keys -t work &lt;/span&gt;&lt;span style="color: #98c379;line-height: 26px;"&gt;&lt;span&gt;'echo "hello from rmux"'&lt;/span&gt;&lt;/span&gt;&lt;span&gt; Enter&lt;/span&gt;&lt;br/&gt;&lt;span&gt;rmux attach-session -t work&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   用过 tmux 的朋友。会发现上手几乎是零成本。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   rmux 确实是个好东西，但也别把它神化了，在日常使用场景下，tmux 会显得更加稳定一些。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   毕竟 rmux 还只是刚刚起步。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   平时工作中 tmux 用的少，那手动去操作终端，已经足够了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   没必要再搞 tmux。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   但是你希望让终端做自动化工作，想让 AI 帮你干活，想用程序化的方式去读取终端的状态。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   那么 rmux 绝对值得你去尝试一下。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    毕竟，能让程序员省时间的工具，都值得鼓励。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   大家可以在评论区聊聊各自的看法。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这个项目基于 MIT 或 Apache-2.0 双协议开放，感兴趣的同学，可以去 GitHub 仓库查看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/Helvesec/rmux
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然都早就看到这儿了，欢迎顺手点个赞，在看和转发，也可以给个星标⭐，以便接收最新的文章，下一期再见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   &lt;br/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1145" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/44iTGpgPtkY-kjVcwQwU3w</link><pubDate>Sun, 31 May 2026 15:17:00 +0800</pubDate></item><item><id>3877547210-2247512454_1</id><title>一键做有声书 ，终于找到了本地方案 。</title><description>一键做有声书 ，终于找到了本地方案 。                      原创                      开源日记                      开源日记                        开源日记                                                 在小说阅读器读本章                   ...</description><guid>https://mp.weixin.qq.com/s/Ot3Jei2u_-t2vDOF5qxy6A</guid><enclosure url="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblJzHjCia1RblcgTgAWOkKyrMoiaicOg8jmmfPosGmqmgDowDKchE1wvPGiagmqowhFpMmhljFC356vn00YvWKntmiczWeiaVlEc9ibOFs/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;!DOCTYPE html&gt;
&lt;html class=""&gt;
 &lt;head&gt;
  &lt;meta content="true" name="wechat-enable-text-zoom-em"/&gt;
  &lt;meta content="true" name="wechat-enable-text-size-adjust"/&gt;
  &lt;meta content="text/html; charset=utf-8" http-equiv="Content-Type"/&gt;
  &lt;meta content="IE=edge" http-equiv="X-UA-Compatible"/&gt;
  &lt;meta content="light dark" name="color-scheme"/&gt;
  &lt;meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0,viewport-fit=cover" name="viewport"/&gt;
  &lt;link href="//res.wx.qq.com/a/wx_fed/assets/res/NTI4MWU5.ico" rel="shortcut icon" reportloaderror="" type="image/x-icon"/&gt;
  &lt;link color="#4C4C4C" href="//res.wx.qq.com/a/wx_fed/assets/res/MjliNWVm.svg" rel="mask-icon" reportloaderror=""/&gt;
  &lt;link href="//res.wx.qq.com/a/wx_fed/assets/res/OTE0YTAw.png" rel="apple-touch-icon-precomposed" reportloaderror=""/&gt;
  &lt;meta content="yes" name="apple-mobile-web-app-capable"/&gt;
  &lt;meta content="black" name="apple-mobile-web-app-status-bar-style"/&gt;
  &lt;meta content="telephone=no" name="format-detection"/&gt;
  &lt;meta content="origin-when-cross-origin" name="referrer"/&gt;
  &lt;meta content="strict-origin-when-cross-origin" name="referrer"/&gt;
  &lt;script nonce="579543733" reportloaderror=""&gt;
   try{var ua=navigator.userAgent;if(!/Android/i.test(ua)&amp;&amp;!/Harmony/i.test(ua)){document.getElementsByTagName('html').item(0).style.webkitTextSizeAdjust=JSON.parse(window.__wxWebEnv.getEnv()).fontScale+'%'}}catch(e){}
  &lt;/script&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   window.logs = { pagetime: {} };
  window.logs.pagetime['html_begin'] = (+new Date());
  window.LANG = "zh_CN";
  &lt;/script&gt;
  &lt;script nonce="579543733" reportloaderror=""&gt;
   window.__moon_initcallback = function () {
  if (!!window.__initCatch) {
    window.__initCatch({
      idkey: 27611 + 2,
      startKey: 0,
      limit: 128,
      badjsId: 43,
      reportOpt: {
        uin: '',
        biz: "Mzg3NzU0NzIxMA==" || "",
        mid: "2247512454" || "" || "",
        idx: "1" || "" || "",
        sn: "3630fdfb432730a9089817fd428a7b43" || "" || "",
      },
      extInfo: {
        network_rate: 0.01,   
        badjs_rate: 0.1
      }
    });
  }
}
  &lt;/script&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   var WX_BJ_REPORT = window.WX_BJ_REPORT || {};
  (function(_) {
    if (_.BadJs) {
      return;
    }
   
    var BADJS_WIN_ERR = 'BadjsWindowError';
    var extend = function(source, destination) {
      for (var property in destination) {
        source[property] = destination[property]
      }
      return source
    }
    
    _.BadJs = {
      uin: 0,
      mid: "",
      bizid: 5,
      view: "wap",
      _cache: {},
      _info: {},
      _hookCallback: null,
      ignorePath: true,
      throw: function(e, extData) {
        this.onError(e, extData);
        throw e;
      },
     
     
      onError: function(e, extData) {
        try {
         
          if (e.BADJS_EXCUTED == true) {
            return;
          }
          e.BADJS_EXCUTED = true;
          var data = errToData(e);
          data.uin = this.uin;
          data.mid = this.mid;
          data.view = this.view;
          data.bizid = this.bizid;
          data.cmdb_module = 'mmbizwap';
         
          if (!!extData) {
            data = extend(data, extData);
          }
         
          if (data.cid) {
            data.key = "[" + data.cid + "]:" + data.key;
          }
          if (data.key.includes('Failed to fetch dynamically imported module')) {
            data.key = 'Failed to fetch dynamically imported module';
          }
          if (window.biz) {
            data.msg += ` || https://mp.weixin.qq.com/s?__biz=${window.biz}&amp;mid=${window.mid}&amp;idx=${window.idx}&amp;sn=${window.sn}&amp;scene=${window.source} || sec_open=${!!window.__second_open__}`;
          }
          if (data._info) {
            if (Object.prototype.toString.call(data._info) == "[object Object]") {
              data.msg += " || info:" + JSON.stringify(data._info);
            } else if (Object.prototype.toString.call(data._info) == "[object String]") {
              data.msg += " || info:" + data._info;
            } else {
              data.msg += " || info:" + data._info;
            }
          }
          if (typeof this._hookCallback == "function") {
            if (this._hookCallback(data) === false) {
              return
            }
          }

          if (e.error) {
            data.bizid = 20307;
            data.key = e.error.name || data.name;
            this._send(data);
          } else {
            this._send(data);
          }
          return _.BadJs;
        } catch (e) {
          console.error(e);
        }
      },
      winErr: function(event) {
        if (event.error &amp;&amp; event.error.BADJS_EXCUTED) {
          return;
        }
        if (event.type === 'unhandledrejection') {
          if (event.reason instanceof Error) {
            var e = event.reason || {};
            _.BadJs.onError(createError(event.type, e.message || "", e.sourceURL || "", e.line || "", e.column || "", event.reason));
          } else {
            var message = typeof event.reason === 'object' ? JSON.stringify(event.reason) : event.reason;
            _.BadJs.onError(createError(event.type, message, "", "", "", event.reason));
          }
        } else {
          _.BadJs.onError(createError(BADJS_WIN_ERR, event.message, event.filename, event.lineno, event.colno, event.error));
        }
      },
      init: function(uin, mid, view) {
        this.uin = uin || this.uin;
        this.mid = mid || this.mid;
        this.view = view || this.view;
        return _.BadJs;
      },
     
      hook: function(fn) {
        this._hookCallback = fn;
        return _.BadJs;
      },
      _send: function(data) {
       
        if (!data.mid) {
          if (typeof window.PAGE_MID !== 'undefined' &amp;&amp; window.PAGE_MID) {
            data.mid = window.PAGE_MID;
          } else {
            return;
          }
        }
        if (!data.uin) {
          data.uin = window.user_uin || 0;
        }
       
        var flag = [data.mid, data.name, data.key, data.bizid].join("|");
        if (this._cache &amp;&amp; this._cache[flag]) {
          return
        } else {
          this._cache &amp;&amp; (this._cache[flag] = true);
          this._xhr(data);
        }
        return _.BadJs;
      },
      _xhr: function(data) {
       
        var xmlobj;
        if (window.ActiveXObject) {
          try {
            xmlobj = new ActiveXObject("Msxml2.XMLHTTP");
          } catch (e) {
            try {
              xmlobj = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (E) {
              xmlobj = false;
            }
          }
        } else if (window.XMLHttpRequest) {
          xmlobj = new XMLHttpRequest();
        }
        var param = "";
        for (var key in data) {
          if (key &amp;&amp; data[key]) {
            param += [key, "=", encodeURIComponent(data[key]), "&amp;"].join("");
          }
        }
        if (xmlobj &amp;&amp; typeof xmlobj.open == "function") {
          xmlobj.open("POST", "https://badjs.weixinbridge.com/report", true);
          xmlobj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
          xmlobj.onreadystatechange = function(status) {};
          xmlobj.send(param.slice(0, -1));
        } else {
          var img = new Image();
          img.src = "https://badjs.weixinbridge.com/report?" + param;
        }
      },
     
      report: function(name, key, data) {
        this.onError(createError(name, key), data);
        return this;
      },
     
      mark: function(info) {
        this._info = extend(this._info, info);
      },
      nocache: function() {
        this._cache = false;
        return _.BadJs;
      },
      setBizId: function(bizid) {
        this.bizid = bizid;
        return _.BadJs;
      },
    }
    function createError(name, msg, url, line, col, error) {
      return {
        name: name || "",
        message: msg || "",
        file: url || "",
        line: line || "",
        col: col || "",
        stack: (error &amp;&amp; error.stack) || "",
        error: error,
      }
    }
   
    
    function errToData(e) {
      var _stack = parseStack(e);
      return {
        name: e.name,
        key: e.message,
        msg: e.message,
        stack: _stack.info,
        file: _stack.file,
        line: _stack.line,
        col: _stack.col,
        client_version: "",
        _info: e._info
      }
    }
    function parseStack(e) {
      e._info = e._info || "";
      var stack = e.stack || "";
      var _stack = {
        info: stack,
        file: e.file || "",
        line: e.line || "",
        col: e.col || "",
      };
      if (_stack.file == "") {
       
        var stackArr = stack.split(/\bat\b/);
        if (stackArr &amp;&amp; stackArr[1]) {
          var match = /(https?:\/\/[^\n]+)\:(\d+)\:(\d+)/.exec(stackArr[1]);
          if (match) {
           
            if (match[1] &amp;&amp; match[1] != _stack.file) {
              _stack.file &amp;&amp; (e._info += " [file: " + _stack.file + " ]");
              _stack.file = match[1];
            }
            if (match[2] &amp;&amp; match[2] != _stack.line) {
              _stack.line &amp;&amp; (e._info += " [line: " + _stack.line + " ]");
              _stack.line = match[2];
            }
            if (match[3] &amp;&amp; match[3] != _stack.col) {
              _stack.col &amp;&amp; (e._info += " [col: " + _stack.col + " ]");
              _stack.col = match[3];
            }
          }
        }
      }
     
      if (_stack &amp;&amp; _stack.file &amp;&amp; _stack.file.length &gt; 0) {
        _stack.info = _stack.info.replace(new RegExp(_stack.file.split("?")[0], "gi"), "__FILE__")
      }
     
      if (_.BadJs.ignorePath) {
        _stack.info = _stack.info.replace(/http(s)?\:[^:\n]*\//ig, "").replace(/\n/gi, "");
      }
      return _stack;
    }
   
    window.addEventListener &amp;&amp; window.addEventListener('error', _.BadJs.winErr);
    window.addEventListener &amp;&amp; window.addEventListener('unhandledrejection', _.BadJs.winErr);
    return _.BadJs;
  })(WX_BJ_REPORT);
  window.WX_BJ_REPORT = WX_BJ_REPORT;
  
  function __moonf__() {
    if (window.__moonhasinit) return;
    window.__moonhasinit = true;
    window.__moonclientlog = [];
    if (typeof JSON != "object") {
      window.JSON = {
        stringify: function() { return ""; },
        parse: function() { return {}; }
      };
    }
    var moon_init = function() {
      
      (function() {
        var inWx = (/MicroMessenger/i).test(navigator.userAgent);
        var inMp = (/MPAPP/i).test(navigator.userAgent);
        var _idkey = 121261;
        var _startKey;
        var _limit;
        var _badjsId;
        var _reportOpt;
        var _extInfo;
        var MOON_AJAX_NETWORK_OFFSET = 4;
        window.__initCatch = function(opt) {
          _idkey = opt.idkey;
          _startKey = opt.startKey || 0;
          _limit = opt.limit;
          _badjsId = opt.badjsId;
          _reportOpt = opt.reportOpt || "";
          _extInfo = opt.extInfo || {};
          _extInfo.rate = _extInfo.rate || 0.5;
        }
       
        window.__moon_report = function(array, rate_opt) {
          var isAcrossOrigin = false;
          var href = '';
          try {
            href = top.location.href;
          } catch (e) {
            isAcrossOrigin = true;
          }
          var rate = 0.5;
          if (!!_extInfo &amp;&amp; !!_extInfo.rate) {
            rate = _extInfo.rate;
          }
          if (!!rate_opt &amp;&amp; (typeof rate_opt == 'number')) {
            rate = rate_opt;
          }
          if (
            (!(/mp\.weixin\.qq\.com/).test(location.href) &amp;&amp; !(/payapp\.weixin\.qq\.com/).test(location.href)) ||
            Math.random() &gt; rate ||
            !(inWx || inMp) ||
            (top != window &amp;&amp; !isAcrossOrigin &amp;&amp; !(/mp\.weixin\.qq\.com/).test(href))
          ) {
           
          }
          if (isObject(array))
            array = [array];
          if (!isArray(array) || _idkey == '')
            return;
          var data = "";
          var log = [];
          var key = [];
          var val = [];
          var idkey = [];
         
          if (typeof _limit != "number") {
            _limit = Infinity;
          }
          for (var i = 0; i &lt; array.length; i++) {
            var item = array[i] || {};
            if (item.offset &gt; _limit) continue;
            if (typeof item.offset != "number") continue;
            if (item.offset == MOON_AJAX_NETWORK_OFFSET &amp;&amp; !!_extInfo &amp;&amp; !!_extInfo.network_rate &amp;&amp; Math.random() &gt;= _extInfo.network_rate) {
              continue;
            }
           
            var k = _limit == Infinity ? _startKey : (_startKey + item.offset);
            log[i] = (("[moon]" + _idkey + "_" + k + ";") + item.log + ";" + getErrorMessage(item.e || {})) || "";
            key[i] = k;
            val[i] = 1;
          }
          for (var j = 0; j &lt; key.length; j++) {
            idkey[j] = _idkey + "_" + key[j] + "_" + val[j];
            data = data + "&amp;log" + j + "=" + log[j];
          }
          if (idkey.length &gt; 0) {
           
            sendReport("POST", location.protocol + '//mp.weixin.qq.com/mp/jsmonitor?', "idkey=" + idkey.join(";") + "&amp;r=" + Math.random() + "&amp;lc=" + log.length + data);
           
           
            var rate = 1;
            if (_extInfo &amp;&amp; _extInfo.badjs_rate) {
              rate = _extInfo.badjs_rate;
            }
            if (Math.random() &lt; rate) {
              data = data.replace(/uin\:(.)*\|biz\:(.)*\|mid\:(.)*\|idx\:(.)*\|sn\:(.)*\|/, '');
              if(!!_badjsId){
                var _img = new Image();
                var _src = 'https://badjs.weixinbridge.com/badjs?id=' + _badjsId + '&amp;level=4&amp;from=' + encodeURIComponent(location.host) + '&amp;msg=' + encodeURIComponent(data);
                _img.src = _src.slice(0, 1024);
              }
             
              if (typeof WX_BJ_REPORT != "undefined" &amp;&amp; WX_BJ_REPORT.BadJs) {
                for (var i = 0; i &lt; array.length; i++) {
                  var item = array[i] || {};
                  if (item.e) {
                    WX_BJ_REPORT.BadJs.onError(item.e,{_info:item.log});
                  } else {
                    var name = /[^:;]*/.exec(item.log)[0];
                    WX_BJ_REPORT.BadJs.report(name, item.log, { mid: "mmbizwap:Monitor" });
                  }
                }
              }
            } else {
             
              for (var i = 0; i &lt; array.length; i++) {
                var item = array[i] || {};
                if (item.e) {
                  item.e.BADJS_EXCUTED = true;
                }
              }
            }
          }
        }
        function isArray(obj) {
          return Object.prototype.toString.call(obj) === '[object Array]';
        }
        function isObject(obj) {
          return Object.prototype.toString.call(obj) === '[object Object]';
        }
        function getErrorMessage(e) {
          var stack = e.stack + ' ' + e.toString() || "";
          try {
           
            if (!window.testenv_reshost) {
              stack = stack.replace(/http(s)?:\/\/res\.wx\.qq\.com/g, "");
            } else {
              var host = 'http(s)?://' + window.testenv_reshost;
              var reg = new RegExp(host, 'g');
              stack = stack.replace(reg, "");
            }
           
            var reg = /\/([^.]+)\/js\/(\S+?)\.js(\,|:)?/g;
            while (reg.test(stack)) {
             
              stack = stack.replace(reg, function(a, b, c, d, e, f) {
                return c + d
              });
            }
          } catch (e) {
            stack = e.stack ? e.stack : ""
          }
          var ret = [];
          for (o in _reportOpt) {
            if (_reportOpt.hasOwnProperty(o)) {
              ret.push(o + ":" + _reportOpt[o]);
            }
          }
          ret.push("STK:" + stack.replace(/\n/g, ""));
          return ret.join("|");
        }
        function sendReport(type, url, data) {
          if (!/^mp\.weixin\.qq\.com$/.test(location.hostname)) {
            var tmp = [];
            data = data.replace(location.href, (location.origin || "") + (location.pathname || "")).replace("#wechat_redirect", "").replace("#rd", "").split("&amp;");
            for (var i = 0, il = data.length; i &lt; il; i++) {
              var a = data[i].split("=");
              if (!!a[0] &amp;&amp; !!a[1]) {
                tmp.push(a[0] + "=" + encodeURIComponent(a[1]));
              }
            }
            var _img = new window.Image();
            _img.src = (url + tmp.join("&amp;")).substr(0, 1024);
            return;
          }
          var xmlobj;
          if (window.ActiveXObject) {
            try {
              xmlobj = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
              try {
                xmlobj = new ActiveXObject("Microsoft.XMLHTTP");
              } catch (E) {
                xmlobj = false;
              }
            }
          } else if (window.XMLHttpRequest) {
            xmlobj = new XMLHttpRequest();
          }
          if (!xmlobj) return;
         
          xmlobj.open(type, url, true);
          xmlobj.setRequestHeader("cache-control", "no-cache");
          xmlobj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
          xmlobj.setRequestHeader("X-Requested-With", "XMLHttpRequest");
          xmlobj.send(data);
        }

      })();
     
    };
    moon_init();
   
    (!!window.__moon_initcallback) &amp;&amp; (window.__moon_initcallback());
  }
 
 
 
 
  __moonf__();
  
  if (!!window.addEventListener){
    window.addEventListener("load",function(){
      var MOON_SCRIPT_ERROR_KEY_OFFSET = 1;
      var ns = document.querySelectorAll("[reportloaderror]");
      for(var ni=0,nl=ns.length;ni&lt;nl;ni++)
        ns[ni].onerror=function(ev){
          window.__moon_report([{ offset: MOON_SCRIPT_ERROR_KEY_OFFSET, log: "load_script_error:" + ev.target.src, e: new Error('LoadResError') }], 1);
          window.WX_BJ_REPORT.BadJs.report("load_script_error", ev.target.src, { mid: "mmbizwap:Monitor" });
        };
    });
  }
  &lt;/script&gt;
  &lt;meta content="" name="description"&gt;
   &lt;meta content="开源日记" name="author"&gt;
    &lt;meta content="一键做有声书 ，终于找到了本地方案 。" property="og:title"&gt;
     &lt;meta content="https://mp.weixin.qq.com/s/Ot3Jei2u_-t2vDOF5qxy6A" property="og:url"&gt;
      &lt;meta content="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblJFjcx91vib3omibttTB8DdY7iabxzGU8zzwawHEwesPWWmEyIl4xicKb9FzicZF8bocib4BvdLBFblBsPx4c9LCYABzdXKOibflLZuI4/0?wx_fmt=jpeg" property="og:image"&gt;
       &lt;meta content="" property="og:description"&gt;
        &lt;meta content="微信公众平台" property="og:site_name"&gt;
         &lt;meta content="article" property="og:type"&gt;
          &lt;meta content="开源日记" property="og:article:author"&gt;
           &lt;meta content="summary" property="twitter:card"&gt;
            &lt;meta content="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblJFjcx91vib3omibttTB8DdY7iabxzGU8zzwawHEwesPWWmEyIl4xicKb9FzicZF8bocib4BvdLBFblBsPx4c9LCYABzdXKOibflLZuI4/0?wx_fmt=jpeg" property="twitter:image"&gt;
             &lt;meta content="一键做有声书 ，终于找到了本地方案 。" property="twitter:title"/&gt;
             &lt;meta content="开源日记" property="twitter:creator"/&gt;
             &lt;meta content="微信公众平台" property="twitter:site"/&gt;
             &lt;meta content="" property="twitter:description"/&gt;
             &lt;title&gt;
             &lt;/title&gt;
             &lt;script nonce="579543733" reportloaderror=""&gt;
              (() =&gt; {
     
      const ua = navigator.userAgent;
      const noMobile = !(/(iPhone|iPad|iPod|iOS)/i.test(ua) || /Windows\sPhone/i.test(ua) || /(Android)/i.test(ua));
      setTimeout(() =&gt; {
        noMobile &amp;&amp; document.title === '' &amp;&amp; (document.title = '微信公众平台');
      }, 1000);

     
      window.addEventListener('securitypolicyviolation', (e) =&gt; {
       
        if (e.effectiveDirective === 'base-uri') {
          (new Image()).src = location.protocol + '//mp.weixin.qq.com/mp/jsmonitor?idkey=523105_1_1&amp;r=' + Math.random();
        }

        const reportData = {
          violatedDirective: e.effectiveDirective,
          blockedURI: e.blockedURI,
          sourceFile: e.sourceFile,
          lineNumber: e.lineNumber,
          columnNumber: e.columnNumber,
          disposition: e.disposition,
          referrer: e.referrer,
          sample: e.sample,
          originalPolicy: e.originalPolicy
        };
        let str = '';
        const keys = Object.keys(reportData);
        for (let i = 0; i &lt; keys.length; i++) {
          const key = keys[i];
          str += key + ': ' + reportData[key] + ' || ';
        }
        str += 'location: ' + location.href;

        window.WX_BJ_REPORT
        &amp;&amp; window.WX_BJ_REPORT.BadJs
        &amp;&amp; window.WX_BJ_REPORT.BadJs.report(
          e.effectiveDirective,
          str,
          {
            mid: 'mmbizwap:csp_report',
            view: 'wap_business'
          }
        );
      });
    })();
             &lt;/script&gt;
             &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
              try {
        if (typeof globalThis === 'undefined') {
          var globalThis = typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : global;
        }
      } catch (error) {
        console.log(error)
      }
     
      try {
        if (typeof queueMicrotask === 'undefined') {
          queueMicrotask = function (cb) {
            Promise.resolve().then(cb);
          };
        }
      } catch (error) {
        console.log(error)
      }
             &lt;/script&gt;
             &lt;script h5only="" nonce="579543733" reportloaderror="" type="text/javascript"&gt;
              (function(e,t){"object"===typeof exports&amp;&amp;"object"===typeof module?module.exports=t():"function"===typeof define&amp;&amp;define.amd?define([],t):"object"===typeof exports?exports["weEmoji"]=t():e["weEmoji"]=t()})("undefined"!==typeof self?self:this,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!==typeof Symbol&amp;&amp;Symbol.toStringTag&amp;&amp;Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&amp;t&amp;&amp;(e=n(e)),8&amp;t)return e;if(4&amp;t&amp;&amp;"object"===typeof e&amp;&amp;e&amp;&amp;e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&amp;t&amp;&amp;"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&amp;&amp;e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s="5149")}({"02c6":function(e,t,n){var r,o,i=n("2673"),s=n("f8b5"),a=i.process,c=a&amp;&amp;a.versions,u=c&amp;&amp;c.v8;u?(r=u.split("."),o=r[0]+r[1]):s&amp;&amp;(r=s.match(/Edge\/(\d+)/),(!r||r[1]&gt;=74)&amp;&amp;(r=s.match(/Chrome\/(\d+)/),r&amp;&amp;(o=r[1]))),e.exports=o&amp;&amp;+o},"0452":function(e,t,n){var r=n("25e1"),o=n("6dc1").f,i={}.toString,s="object"==typeof window&amp;&amp;window&amp;&amp;Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],a=function(e){try{return o(e)}catch(t){return s.slice()}};e.exports.f=function(e){return s&amp;&amp;"[object Window]"==i.call(e)?a(e):o(r(e))}},"08a5":function(e,t,n){var r=n("c388"),o=n("18e7"),i=n("4a6d"),s=n("cb59");e.exports=function(e,t){for(var n=o(t),a=s.f,c=i.f,u=0;u&lt;n.length;u++){var p=n[u];r(e,p)||a(e,p,c(t,p))}}},"097a":function(e,t,n){"use strict";var r=n("ad7a"),o=n("720c");r({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},"0988":function(e,t,n){"use strict";var r=n("3aa2"),o=n("2673"),i=n("34bc"),s=n("13f0"),a=n("c388"),c=n("3eeb"),u=n("5350"),p=n("b70b"),f=n("da9f"),l=n("c3b1"),h=n("6dc1").f,d=n("4a6d").f,y=n("cb59").f,g=n("2d5c").trim,x="Number",m=o[x],w=m.prototype,_=c(l(w))==x,v=function(e){var t,n,r,o,i,s,a,c,u=p(e,!1);if("string"==typeof u&amp;&amp;u.length&gt;2)if(u=g(u),t=u.charCodeAt(0),43===t||45===t){if(n=u.charCodeAt(2),88===n||120===n)return NaN}else if(48===t){switch(u.charCodeAt(1)){case 66:case 98:r=2,o=49;break;case 79:case 111:r=8,o=55;break;default:return+u}for(i=u.slice(2),s=i.length,a=0;a&lt;s;a++)if(c=i.charCodeAt(a),c&lt;48||c&gt;o)return NaN;return parseInt(i,r)}return+u};if(i(x,!m(" 0o1")||!m("0b1")||m("+0x1"))){for(var b,E=function(e){var t=arguments.length&lt;1?0:e,n=this;return n instanceof E&amp;&amp;(_?f((function(){w.valueOf.call(n)})):c(n)!=x)?u(new m(v(t)),n,E):v(t)},j=r?h(m):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,fromString,range".split(","),k=0;j.length&gt;k;k++)a(m,b=j[k])&amp;&amp;!a(E,b)&amp;&amp;y(E,b,d(m,b));E.prototype=w,w.constructor=E,s(o,x,E)}},"0d66":function(e,t,n){"use strict";var r=n("ad7a"),o=n("dc54"),i=n("d360"),s=n("3823"),a=n("b850"),c=n("25e1"),u=n("2db9"),p=n("ef21"),f=n("4c94"),l=f("slice"),h=p("species"),d=[].slice,y=Math.max;r({target:"Array",proto:!0,forced:!l},{slice:function(e,t){var n,r,p,f=c(this),l=a(f.length),g=s(e,l),x=s(void 0===t?l:t,l);if(i(f)&amp;&amp;(n=f.constructor,"function"!=typeof n||n!==Array&amp;&amp;!i(n.prototype)?o(n)&amp;&amp;(n=n[h],null===n&amp;&amp;(n=void 0)):n=void 0,n===Array||void 0===n))return d.call(f,g,x);for(r=new(void 0===n?Array:n)(y(x-g,0)),p=0;g&lt;x;g++,p++)g in f&amp;&amp;u(r,p,f[g]);return r.length=p,r}})},"120a":function(e,t,n){var r=n("ef21"),o=n("c3b1"),i=n("cb59"),s=r("unscopables"),a=Array.prototype;void 0==a[s]&amp;&amp;i.f(a,s,{configurable:!0,value:o(null)}),e.exports=function(e){a[s][e]=!0}},1283:function(e,t,n){var r=n("3d32");e.exports=r("document","documentElement")},"13f0":function(e,t,n){var r=n("2673"),o=n("8fdb"),i=n("c388"),s=n("79ec"),a=n("bade"),c=n("ee23"),u=c.get,p=c.enforce,f=String(String).split("String");(e.exports=function(e,t,n,a){var c,u=!!a&amp;&amp;!!a.unsafe,l=!!a&amp;&amp;!!a.enumerable,h=!!a&amp;&amp;!!a.noTargetGet;"function"==typeof n&amp;&amp;("string"!=typeof t||i(n,"name")||o(n,"name",t),c=p(n),c.source||(c.source=f.join("string"==typeof t?t:""))),e!==r?(u?!h&amp;&amp;e[t]&amp;&amp;(l=!0):delete e[t],l?e[t]=n:o(e,t,n)):l?e[t]=n:s(t,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&amp;&amp;u(this).source||a(this)}))},1425:function(e,t,n){"use strict";var r=n("da9f");e.exports=function(e,t){var n=[][e];return!!n&amp;&amp;r((function(){n.call(null,t||function(){throw 1},1)}))}},"15f7":function(e,t,n){var r=n("a356"),o=n("3e0d"),i=function(e){return function(t,n){var i,s,a=String(o(t)),c=r(n),u=a.length;return c&lt;0||c&gt;=u?e?"":void 0:(i=a.charCodeAt(c),i&lt;55296||i&gt;56319||c+1===u||(s=a.charCodeAt(c+1))&lt;56320||s&gt;57343?e?a.charAt(c):i:e?a.slice(c,c+2):s-56320+(i-55296&lt;&lt;10)+65536)}};e.exports={codeAt:i(!1),charAt:i(!0)}},"164c":function(e,t,n){var r=n("da9f"),o=n("237c"),i="​᠎";e.exports=function(e){return r((function(){return!!o[e]()||i[e]()!=i||o[e].name!==e}))}},"18e7":function(e,t,n){var r=n("3d32"),o=n("6dc1"),i=n("45ef"),s=n("8325");e.exports=r("Reflect","ownKeys")||function(e){var t=o.f(s(e)),n=i.f;return n?t.concat(n(e)):t}},"1ab8":function(e,t,n){var r=n("3aa2"),o=n("cb59").f,i=Function.prototype,s=i.toString,a=/^\s*function ([^ (]*)/,c="name";r&amp;&amp;!(c in i)&amp;&amp;o(i,c,{configurable:!0,get:function(){try{return s.call(this).match(a)[1]}catch(e){return""}}})},"1ac6":function(e,t,n){"use strict";var r=n("3aa2"),o=n("da9f"),i=n("f4db"),s=n("45ef"),a=n("9397"),c=n("db5b"),u=n("3604"),p=Object.assign,f=Object.defineProperty;e.exports=!p||o((function(){if(r&amp;&amp;1!==p({b:1},p(f({},"a",{enumerable:!0,get:function(){f(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),o="abcdefghijklmnopqrst";return e[n]=7,o.split("").forEach((function(e){t[e]=e})),7!=p({},e)[n]||i(p({},t)).join("")!=o}))?function(e,t){var n=c(e),o=arguments.length,p=1,f=s.f,l=a.f;while(o&gt;p){var h,d=u(arguments[p++]),y=f?i(d).concat(f(d)):i(d),g=y.length,x=0;while(g&gt;x)h=y[x++],r&amp;&amp;!l.call(d,h)||(n[h]=d[h])}return n}:p},"1adc":function(e,t,n){"use strict";var r=n("9e20").forEach,o=n("1425"),i=o("forEach");e.exports=i?[].forEach:function(e){return r(this,e,arguments.length&gt;1?arguments[1]:void 0)}},2193:function(e,t,n){var r=n("ad7a"),o=n("1ac6");r({target:"Object",stat:!0,forced:Object.assign!==o},{assign:o})},"21fa":function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"===typeof window&amp;&amp;(n=window)}e.exports=n},"237c":function(e,t){e.exports="\t\n\v\f\r                　\u2028\u2029\ufeff"},"25e1":function(e,t,n){var r=n("3604"),o=n("3e0d");e.exports=function(e){return r(o(e))}},2673:function(e,t,n){(function(t){var n=function(e){return e&amp;&amp;e.Math==Math&amp;&amp;e};e.exports=n("object"==typeof globalThis&amp;&amp;globalThis)||n("object"==typeof window&amp;&amp;window)||n("object"==typeof self&amp;&amp;self)||n("object"==typeof t&amp;&amp;t)||function(){return this}()||Function("return this")()}).call(this,n("21fa"))},"28a9":function(e,t,n){var r=n("745e"),o=n("3eeb"),i=n("ef21"),s=i("toStringTag"),a="Arguments"==o(function(){return arguments}()),c=function(e,t){try{return e[t]}catch(n){}};e.exports=r?o:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=c(t=Object(e),s))?n:a?o(t):"Object"==(r=o(t))&amp;&amp;"function"==typeof t.callee?"Arguments":r}},"2a74":function(e,t,n){var r=n("ad7a"),o=n("da9f"),i=n("25e1"),s=n("4a6d").f,a=n("3aa2"),c=o((function(){s(1)})),u=!a||c;r({target:"Object",stat:!0,forced:u,sham:!a},{getOwnPropertyDescriptor:function(e,t){return s(i(e),t)}})},"2b64":function(e,t,n){var r=n("fe45"),o=n("e452");(e.exports=function(e,t){return o[e]||(o[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.9.1",mode:r?"pure":"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})},"2c28":function(e,t,n){"use strict";n("097a");var r=n("13f0"),o=n("da9f"),i=n("ef21"),s=n("720c"),a=n("8fdb"),c=i("species"),u=!o((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$&lt;a&gt;")})),p=function(){return"$0"==="a".replace(/./,"$0")}(),f=i("replace"),l=function(){return!!/./[f]&amp;&amp;""===/./[f]("a","$0")}(),h=!o((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));e.exports=function(e,t,n,f){var d=i(e),y=!o((function(){var t={};return t[d]=function(){return 7},7!=""[e](t)})),g=y&amp;&amp;!o((function(){var t=!1,n=/a/;return"split"===e&amp;&amp;(n={},n.constructor={},n.constructor[c]=function(){return n},n.flags="",n[d]=/./[d]),n.exec=function(){return t=!0,null},n[d](""),!t}));if(!y||!g||"replace"===e&amp;&amp;(!u||!p||l)||"split"===e&amp;&amp;!h){var x=/./[d],m=n(d,""[e],(function(e,t,n,r,o){return t.exec===s?y&amp;&amp;!o?{done:!0,value:x.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}}),{REPLACE_KEEPS_$0:p,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:l}),w=m[0],_=m[1];r(String.prototype,e,w),r(RegExp.prototype,d,2==t?function(e,t){return _.call(e,this,t)}:function(e){return _.call(e,this)})}f&amp;&amp;a(RegExp.prototype[d],"sham",!0)}},"2d5c":function(e,t,n){var r=n("3e0d"),o=n("237c"),i="["+o+"]",s=RegExp("^"+i+i+"*"),a=RegExp(i+i+"*$"),c=function(e){return function(t){var n=String(r(t));return 1&amp;e&amp;&amp;(n=n.replace(s,"")),2&amp;e&amp;&amp;(n=n.replace(a,"")),n}};e.exports={start:c(1),end:c(2),trim:c(3)}},"2db9":function(e,t,n){"use strict";var r=n("b70b"),o=n("cb59"),i=n("dbca");e.exports=function(e,t,n){var s=r(t);s in e?o.f(e,s,i(0,n)):e[s]=n}},3306:function(e,t,n){var r=n("ad7a"),o=n("91e8"),i=n("43cd"),s=!i((function(e){Array.from(e)}));r({target:"Array",stat:!0,forced:s},{from:o})},"34bc":function(e,t,n){var r=n("da9f"),o=/#|\.prototype\./,i=function(e,t){var n=a[s(e)];return n==u||n!=c&amp;&amp;("function"==typeof t?r(t):!!t)},s=i.normalize=function(e){return String(e).replace(o,".").toLowerCase()},a=i.data={},c=i.NATIVE="N",u=i.POLYFILL="P";e.exports=i},3604:function(e,t,n){var r=n("da9f"),o=n("3eeb"),i="".split;e.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==o(e)?i.call(e,""):Object(e)}:Object},3823:function(e,t,n){var r=n("a356"),o=Math.max,i=Math.min;e.exports=function(e,t){var n=r(e);return n&lt;0?o(n+t,0):i(n,t)}},"38ea":function(e,t,n){var r=n("ad7a"),o=n("4f6f").values;r({target:"Object",stat:!0},{values:function(e){return o(e)}})},"3aa2":function(e,t,n){var r=n("da9f");e.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},"3d32":function(e,t,n){var r=n("e63e"),o=n("2673"),i=function(e){return"function"==typeof e?e:void 0};e.exports=function(e,t){return arguments.length&lt;2?i(r[e])||i(o[e]):r[e]&amp;&amp;r[e][t]||o[e]&amp;&amp;o[e][t]}},"3e0d":function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},"3e7f":function(e,t,n){var r=n("dc54"),o=n("3eeb"),i=n("ef21"),s=i("match");e.exports=function(e){var t;return r(e)&amp;&amp;(void 0!==(t=e[s])?!!t:"RegExp"==o(e))}},"3ed7":function(e,t,n){var r=n("3aa2"),o=n("2673"),i=n("34bc"),s=n("5350"),a=n("cb59").f,c=n("6dc1").f,u=n("3e7f"),p=n("c6b1"),f=n("ff86"),l=n("13f0"),h=n("da9f"),d=n("ee23").set,y=n("6baa"),g=n("ef21"),x=g("match"),m=o.RegExp,w=m.prototype,_=/a/g,v=/a/g,b=new m(_)!==_,E=f.UNSUPPORTED_Y,j=r&amp;&amp;i("RegExp",!b||E||h((function(){return v[x]=!1,m(_)!=_||m(v)==v||"/a/i"!=m(_,"i")})));if(j){var k=function(e,t){var n,r=this instanceof k,o=u(e),i=void 0===t;if(!r&amp;&amp;o&amp;&amp;e.constructor===k&amp;&amp;i)return e;b?o&amp;&amp;!i&amp;&amp;(e=e.source):e instanceof k&amp;&amp;(i&amp;&amp;(t=p.call(e)),e=e.source),E&amp;&amp;(n=!!t&amp;&amp;t.indexOf("y")&gt;-1,n&amp;&amp;(t=t.replace(/y/g,"")));var a=s(b?new m(e,t):m(e,t),r?this:w,k);return E&amp;&amp;n&amp;&amp;d(a,{sticky:n}),a},S=function(e){e in k||a(k,e,{configurable:!0,get:function(){return m[e]},set:function(t){m[e]=t}})},O=c(m),P=0;while(O.length&gt;P)S(O[P++]);w.constructor=k,k.prototype=w,l(o,"RegExp",k)}y("RegExp")},"3eeb":function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},"3f05":function(e,t,n){"use strict";var r,o,i,s=n("da9f"),a=n("ae5b"),c=n("8fdb"),u=n("c388"),p=n("ef21"),f=n("fe45"),l=p("iterator"),h=!1,d=function(){return this};[].keys&amp;&amp;(i=[].keys(),"next"in i?(o=a(a(i)),o!==Object.prototype&amp;&amp;(r=o)):h=!0);var y=void 0==r||s((function(){var e={};return r[l].call(e)!==e}));y&amp;&amp;(r={}),f&amp;&amp;!y||u(r,l)||c(r,l,d),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:h}},4266:function(e,t,n){var r=n("7d38");e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},"430b":function(e,t,n){"use strict";var r=n("ad7a"),o=n("9e20").find,i=n("120a"),s="find",a=!0;s in[]&amp;&amp;Array(1)[s]((function(){a=!1})),r({target:"Array",proto:!0,forced:a},{find:function(e){return o(this,e,arguments.length&gt;1?arguments[1]:void 0)}}),i(s)},"43cd":function(e,t,n){var r=n("ef21"),o=r("iterator"),i=!1;try{var s=0,a={next:function(){return{done:!!s++}},return:function(){i=!0}};a[o]=function(){return this},Array.from(a,(function(){throw 2}))}catch(c){}e.exports=function(e,t){if(!t&amp;&amp;!i)return!1;var n=!1;try{var r={};r[o]=function(){return{next:function(){return{done:n=!0}}}},e(r)}catch(c){}return n}},"45ef":function(e,t){t.f=Object.getOwnPropertySymbols},"4a6d":function(e,t,n){var r=n("3aa2"),o=n("9397"),i=n("dbca"),s=n("25e1"),a=n("b70b"),c=n("c388"),u=n("608b"),p=Object.getOwnPropertyDescriptor;t.f=r?p:function(e,t){if(e=s(e),t=a(t,!0),u)try{return p(e,t)}catch(n){}if(c(e,t))return i(!o.f.call(e,t),e[t])}},"4c94":function(e,t,n){var r=n("da9f"),o=n("ef21"),i=n("02c6"),s=o("species");e.exports=function(e){return i&gt;=51||!r((function(){var t=[],n=t.constructor={};return n[s]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},"4d0b":function(e,t,n){"use strict";var r=n("ad7a"),o=n("9e20").map,i=n("4c94"),s=i("map");r({target:"Array",proto:!0,forced:!s},{map:function(e){return o(this,e,arguments.length&gt;1?arguments[1]:void 0)}})},"4f6f":function(e,t,n){var r=n("3aa2"),o=n("f4db"),i=n("25e1"),s=n("9397").f,a=function(e){return function(t){var n,a=i(t),c=o(a),u=c.length,p=0,f=[];while(u&gt;p)n=c[p++],r&amp;&amp;!s.call(a,n)||f.push(e?[n,a[n]]:a[n]);return f}};e.exports={entries:a(!0),values:a(!1)}},5125:function(e,t,n){"use strict";var r=n("ad7a"),o=n("da9f"),i=n("d360"),s=n("dc54"),a=n("db5b"),c=n("b850"),u=n("2db9"),p=n("b352"),f=n("4c94"),l=n("ef21"),h=n("02c6"),d=l("isConcatSpreadable"),y=9007199254740991,g="Maximum allowed index exceeded",x=h&gt;=51||!o((function(){var e=[];return e[d]=!1,e.concat()[0]!==e})),m=f("concat"),w=function(e){if(!s(e))return!1;var t=e[d];return void 0!==t?!!t:i(e)},_=!x||!m;r({target:"Array",proto:!0,forced:_},{concat:function(e){var t,n,r,o,i,s=a(this),f=p(s,0),l=0;for(t=-1,r=arguments.length;t&lt;r;t++)if(i=-1===t?s:arguments[t],w(i)){if(o=c(i.length),l+o&gt;y)throw TypeError(g);for(n=0;n&lt;o;n++,l++)n in i&amp;&amp;u(f,l,i[n])}else{if(l&gt;=y)throw TypeError(g);u(f,l++,i)}return f.length=l,f}})},5149:function(e,t,n){"use strict";if(n.r(t),n.d(t,"Icon",(function(){return m})),n.d(t,"Parser",(function(){return L})),n.d(t,"install",(function(){return G})),n.d(t,"decode",(function(){return C})),n.d(t,"split",(function(){return q})),n.d(t,"EmojiData",(function(){return f["EmojiData"]})),n.d(t,"EmojiDataMap",(function(){return f["EmojiDataMap"]})),n.d(t,"EmojiPanelData",(function(){return f["EmojiPanelData"]})),n.d(t,"Panel",(function(){return H})),"undefined"!==typeof window){var r=window.document.currentScript;var i=r&amp;&amp;r.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);i&amp;&amp;(n.p=i[1])}n("b193"),n("53d5"),n("b2c4"),n("2a74"),n("960a"),n("b33c");function s(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&amp;&amp;(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t&lt;arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){s(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}n("38ea"),n("1ab8");var u=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("img",{staticClass:"we-emoji",class:e.className,attrs:{src:e.picBlank,alt:e.alt}})},p=[],f=(n("a690"),n("097a"),n("6115"),n("430b"),n("f601")),l=n("5e96"),h={name:"EmojiIcon",props:{name:{type:String},text:{type:String}},data:function(){return{picBlank:l["a"]}},beforeCreate:function(){var e=this.$options.propsData,t=e.name,n=e.text;t||n||console.error("emoji-icon error: Prop name or text required. Props receive:",JSON.stringify(this.$options.propsData))},computed:{emojiObj:function(){var e=this.text,t=this.name;if(e&amp;&amp;f["EmojiDataMap"][e]&amp;&amp;f["EmojiData"][f["EmojiDataMap"][e].index])return f["EmojiData"][f["EmojiDataMap"][e].index];if(t){var n=t.toLowerCase(),r=function(e){return e&amp;&amp;e.toLowerCase().replace(/\W+/g," ").trim().replace(/\s/g,"-")},o=f["EmojiData"].find((function(e){return r(e.en)===n}));if(o)return o}return(t||e)&amp;&amp;console.error("emoji-icon error: Illegal prop name or text. Props receive:",JSON.stringify(this.$options.propsData)),{}},className:function(){return this.emojiObj.style},alt:function(){return this.text}}},d=h;function y(e,t,n,r,o,i,s,a){var c,u="function"===typeof e?e.options:e;if(t&amp;&amp;(u.render=t,u.staticRenderFns=n,u._compiled=!0),r&amp;&amp;(u.functional=!0),i&amp;&amp;(u._scopeId="data-v-"+i),s?(c=function(e){e=e||this.$vnode&amp;&amp;this.$vnode.ssrContext||this.parent&amp;&amp;this.parent.$vnode&amp;&amp;this.parent.$vnode.ssrContext,e||"undefined"===typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&amp;&amp;o.call(this,e),e&amp;&amp;e._registeredComponents&amp;&amp;e._registeredComponents.add(s)},u._ssrRegister=c):o&amp;&amp;(c=a?function(){o.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:o),c)if(u.functional){u._injectStyles=c;var p=u.render;u.render=function(e,t){return c.call(t),p(e,t)}}else{var f=u.beforeCreate;u.beforeCreate=f?[].concat(f,c):[c]}return{exports:e,options:u}}var g=y(d,u,p,!1,null,null,null),x=g.exports;x.install=function(e){e.component(x.name,x)};var m=x;function w(e,t){(null==t||t&gt;e.length)&amp;&amp;(t=e.length);for(var n=0,r=new Array(t);n&lt;t;n++)r[n]=e[n];return r}function _(e){if(Array.isArray(e))return w(e)}n("d939"),n("7559"),n("a67f"),n("6a19"),n("9904"),n("fe46"),n("3306");function v(e){if("undefined"!==typeof Symbol&amp;&amp;Symbol.iterator in Object(e))return Array.from(e)}n("0d66");function b(e,t){if(e){if("string"===typeof e)return w(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&amp;&amp;e.constructor&amp;&amp;(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?w(e,t):void 0}}function E(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function j(e){return _(e)||v(e)||b(e)||E()}n("4d0b"),n("565a"),n("5125"),n("3ed7"),n("98d0"),n("f2e0"),n("2193"),n("5e03");var k=function(e){var t=e.className,n=e.text,r=e.src;return'&lt;img src="'.concat(l["a"],'" class="we-emoji ').concat(t,'" alt="').concat(n,'" data-src="').concat(r,'" /&gt;')};function S(e){return!(!f["EmojiDataMap"][e]||!f["EmojiData"][f["EmojiDataMap"][e].index])}function O(e,t,n){var r,o=new RegExp(t,"g");while(r=o.exec(e))for(var i=r,s=i[0],a=i.index,c=n.length;c&lt;=s.length;++c){var u=s.slice(0,c);if(S(u))return{0:u,index:a}}return null}function P(e){var t,n=new RegExp(/\[[^[\]]+\]/,"g");while(t=n.exec(e))if(S(t[0]))return t;return null}function A(e){var t=/(\ud83c[\udf00-\udfff])|(\ud83d[\udc00-\ude4f\ude80-\udeff])|[\u2600-\u2B55]/;return P(e)||O(e,/\/([\u4e00-\u9fa5\w]{1,4})/,"/")||O(e,/\/(:[^/]{1,8})/,"/:")||O(e,t,"")}function T(e){return e}function D(e){if(!e)return[];var t=A(e);if(t){var n=t[0],r=t.index,o=e.slice(0,r),i=e.slice(r+n.length),s=S(n)?{text:n,data:f["EmojiData"][f["EmojiDataMap"][n].index]}:n,a=[].concat(j(D(o)),[s],j(D(i)));return a.some((function(e){return e.text}))?a:[a.join("")]}return[e]}var q=function(e,t){var n=T(e,t);return D(n).map((function(e){if("string"===typeof e)return e;var t=Object.assign({},e.data),n=e.data.path;return t.url="".concat("//res.wx.qq.com/t/wx_fed/we-emoji/res/").concat(n.startsWith("./")?n.slice(2):n),delete t.path,c(c({},e),{},{data:t})}))},C=function(e,t){return e?q(e,t).map((function(e){return e.text?k({text:e.text,className:e.data.style,src:e.data.url}):e})).join(""):e},R={name:"EmojiParser",props:{tag:{type:String,default:"span"}},methods:{replace:function(e){var t=this,n=this.$createElement;return e&amp;&amp;e.length?e.map((function(e){var r=e.text;if(!r){var o=function(e){return e&amp;&amp;e.reduce((function(e,t){return Array.isArray(t)?[].concat(j(e),j(t)):[].concat(j(e),[t])}),[])};return c(c({},e),{},{children:o(t.replace(e.children))})}return q(r).map((function(e){return e.text?n(m,{attrs:{text:e.text}}):t._v(e)}))})):e}},render:function(e){return e(this.tag,this.replace(this.$slots.default))},install:function(e){e.component(R.name,R)}},L=R,I=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"emotion_panel"},[n("ul",{staticClass:"emotions",attrs:{slot:"content"},slot:"content"},e._l(e.edata,(function(t,r){return n("li",{key:t.key,staticClass:"emotions_item",on:{click:function(t){return e.select(r)}}},[n("emoji-icon",{attrs:{text:t.cn}})],1)})),0)])},M=[],N=(n("0988"),{name:"EmojiPanel",props:{emojiPanelWidth:{type:Number,default:300},emojiPanelHeight:{type:Number,default:300}},data:function(){return{edata:f["EmojiPanelData"]}},methods:{select:function(e){this.$emit("select",this.edata[e])}}}),B=N,F=y(B,I,M,!1,null,null,null),$=F.exports;$.install=function(e){e.component($.name,$)};var H=$,W=(n("f84d"),{Icon:m,Parser:L,Panel:H}),G=function e(t){e.installed||(e.installed=!0,Object.values(W).forEach((function(e){t.component(e.name,e)})))},U=c(c({},W),{},{install:G,decode:C,split:q,EmojiData:f["EmojiData"],EmojiDataMap:f["EmojiDataMap"],EmojiPanelData:f["EmojiPanelData"]});"undefined"!==typeof window&amp;&amp;window.Vue&amp;&amp;G(window.Vue);var K=U;t["default"]=K},5350:function(e,t,n){var r=n("dc54"),o=n("9a36");e.exports=function(e,t,n){var i,s;return o&amp;&amp;"function"==typeof(i=t.constructor)&amp;&amp;i!==n&amp;&amp;r(s=i.prototype)&amp;&amp;s!==n.prototype&amp;&amp;o(e,s),e}},"53d5":function(e,t,n){"use strict";var r=n("ad7a"),o=n("2673"),i=n("3d32"),s=n("fe45"),a=n("3aa2"),c=n("6736"),u=n("a79f"),p=n("da9f"),f=n("c388"),l=n("d360"),h=n("dc54"),d=n("8325"),y=n("db5b"),g=n("25e1"),x=n("b70b"),m=n("dbca"),w=n("c3b1"),_=n("f4db"),v=n("6dc1"),b=n("0452"),E=n("45ef"),j=n("4a6d"),k=n("cb59"),S=n("9397"),O=n("8fdb"),P=n("13f0"),A=n("2b64"),T=n("9cf3"),D=n("b027"),q=n("a707"),C=n("ef21"),R=n("952b"),L=n("6ad5"),I=n("5ce8"),M=n("ee23"),N=n("9e20").forEach,B=T("hidden"),F="Symbol",$="prototype",H=C("toPrimitive"),W=M.set,G=M.getterFor(F),U=Object[$],K=o.Symbol,Y=i("JSON","stringify"),V=j.f,J=k.f,X=b.f,z=S.f,Q=A("symbols"),Z=A("op-symbols"),ee=A("string-to-symbol-registry"),te=A("symbol-to-string-registry"),ne=A("wks"),re=o.QObject,oe=!re||!re[$]||!re[$].findChild,ie=a&amp;&amp;p((function(){return 7!=w(J({},"a",{get:function(){return J(this,"a",{value:7}).a}})).a}))?function(e,t,n){var r=V(U,t);r&amp;&amp;delete U[t],J(e,t,n),r&amp;&amp;e!==U&amp;&amp;J(U,t,r)}:J,se=function(e,t){var n=Q[e]=w(K[$]);return W(n,{type:F,tag:e,description:t}),a||(n.description=t),n},ae=u?function(e){return"symbol"==typeof e}:function(e){return Object(e)instanceof K},ce=function(e,t,n){e===U&amp;&amp;ce(Z,t,n),d(e);var r=x(t,!0);return d(n),f(Q,r)?(n.enumerable?(f(e,B)&amp;&amp;e[B][r]&amp;&amp;(e[B][r]=!1),n=w(n,{enumerable:m(0,!1)})):(f(e,B)||J(e,B,m(1,{})),e[B][r]=!0),ie(e,r,n)):J(e,r,n)},ue=function(e,t){d(e);var n=g(t),r=_(n).concat(de(n));return N(r,(function(t){a&amp;&amp;!fe.call(n,t)||ce(e,t,n[t])})),e},pe=function(e,t){return void 0===t?w(e):ue(w(e),t)},fe=function(e){var t=x(e,!0),n=z.call(this,t);return!(this===U&amp;&amp;f(Q,t)&amp;&amp;!f(Z,t))&amp;&amp;(!(n||!f(this,t)||!f(Q,t)||f(this,B)&amp;&amp;this[B][t])||n)},le=function(e,t){var n=g(e),r=x(t,!0);if(n!==U||!f(Q,r)||f(Z,r)){var o=V(n,r);return!o||!f(Q,r)||f(n,B)&amp;&amp;n[B][r]||(o.enumerable=!0),o}},he=function(e){var t=X(g(e)),n=[];return N(t,(function(e){f(Q,e)||f(D,e)||n.push(e)})),n},de=function(e){var t=e===U,n=X(t?Z:g(e)),r=[];return N(n,(function(e){!f(Q,e)||t&amp;&amp;!f(U,e)||r.push(Q[e])})),r};if(c||(K=function(){if(this instanceof K)throw TypeError("Symbol is not a constructor");var e=arguments.length&amp;&amp;void 0!==arguments[0]?String(arguments[0]):void 0,t=q(e),n=function(e){this===U&amp;&amp;n.call(Z,e),f(this,B)&amp;&amp;f(this[B],t)&amp;&amp;(this[B][t]=!1),ie(this,t,m(1,e))};return a&amp;&amp;oe&amp;&amp;ie(U,t,{configurable:!0,set:n}),se(t,e)},P(K[$],"toString",(function(){return G(this).tag})),P(K,"withoutSetter",(function(e){return se(q(e),e)})),S.f=fe,k.f=ce,j.f=le,v.f=b.f=he,E.f=de,R.f=function(e){return se(C(e),e)},a&amp;&amp;(J(K[$],"description",{configurable:!0,get:function(){return G(this).description}}),s||P(U,"propertyIsEnumerable",fe,{unsafe:!0}))),r({global:!0,wrap:!0,forced:!c,sham:!c},{Symbol:K}),N(_(ne),(function(e){L(e)})),r({target:F,stat:!0,forced:!c},{for:function(e){var t=String(e);if(f(ee,t))return ee[t];var n=K(t);return ee[t]=n,te[n]=t,n},keyFor:function(e){if(!ae(e))throw TypeError(e+" is not a symbol");if(f(te,e))return te[e]},useSetter:function(){oe=!0},useSimple:function(){oe=!1}}),r({target:"Object",stat:!0,forced:!c,sham:!a},{create:pe,defineProperty:ce,defineProperties:ue,getOwnPropertyDescriptor:le}),r({target:"Object",stat:!0,forced:!c},{getOwnPropertyNames:he,getOwnPropertySymbols:de}),r({target:"Object",stat:!0,forced:p((function(){E.f(1)}))},{getOwnPropertySymbols:function(e){return E.f(y(e))}}),Y){var ye=!c||p((function(){var e=K();return"[null]"!=Y([e])||"{}"!=Y({a:e})||"{}"!=Y(Object(e))}));r({target:"JSON",stat:!0,forced:ye},{stringify:function(e,t,n){var r,o=[e],i=1;while(arguments.length&gt;i)o.push(arguments[i++]);if(r=t,(h(t)||void 0!==e)&amp;&amp;!ae(e))return l(t)||(t=function(e,t){if("function"==typeof r&amp;&amp;(t=r.call(this,e,t)),!ae(t))return t}),o[1]=t,Y.apply(null,o)}})}K[$][H]||O(K[$],H,K[$].valueOf),I(K,F),D[B]=!0},5445:function(e,t){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},"558c":function(e,t,n){var r=n("dc54");e.exports=function(e){if(!r(e)&amp;&amp;null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},"565a":function(e,t,n){"use strict";var r=n("ad7a"),o=n("780e").left,i=n("1425"),s=n("02c6"),a=n("fb71"),c=i("reduce"),u=!a&amp;&amp;s&gt;79&amp;&amp;s&lt;83;r({target:"Array",proto:!0,forced:!c||u},{reduce:function(e){return o(this,e,arguments.length,arguments.length&gt;1?arguments[1]:void 0)}})},"5a20":function(e,t){e.exports={}},"5ce8":function(e,t,n){var r=n("cb59").f,o=n("c388"),i=n("ef21"),s=i("toStringTag");e.exports=function(e,t,n){e&amp;&amp;!o(e=n?e:e.prototype,s)&amp;&amp;r(e,s,{configurable:!0,value:t})}},"5e03":function(e,t,n){"use strict";var r=n("ad7a"),o=n("4a6d").f,i=n("b850"),s=n("a1e0"),a=n("3e0d"),c=n("67ba"),u=n("fe45"),p="".startsWith,f=Math.min,l=c("startsWith"),h=!u&amp;&amp;!l&amp;&amp;!!function(){var e=o(String.prototype,"startsWith");return e&amp;&amp;!e.writable}();r({target:"String",proto:!0,forced:!h&amp;&amp;!l},{startsWith:function(e){var t=String(a(this));s(e);var n=i(f(arguments.length&gt;1?arguments[1]:void 0,t.length)),r=String(e);return p?p.call(t,r,n):t.slice(n,n+r.length)===r}})},"5e96":function(e){e.exports=JSON.parse('{"a":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="}')},"608b":function(e,t,n){var r=n("3aa2"),o=n("da9f"),i=n("ef87");e.exports=!r&amp;&amp;!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},6115:function(e,t,n){"use strict";var r=n("ad7a"),o=n("2d5c").trim,i=n("164c");r({target:"String",proto:!0,forced:i("trim")},{trim:function(){return o(this)}})},"61e6":function(e,t,n){"use strict";var r=n("ad7a"),o=n("e055"),i=n("ae5b"),s=n("9a36"),a=n("5ce8"),c=n("8fdb"),u=n("13f0"),p=n("ef21"),f=n("fe45"),l=n("5a20"),h=n("3f05"),d=h.IteratorPrototype,y=h.BUGGY_SAFARI_ITERATORS,g=p("iterator"),x="keys",m="values",w="entries",_=function(){return this};e.exports=function(e,t,n,p,h,v,b){o(n,t,p);var E,j,k,S=function(e){if(e===h&amp;&amp;D)return D;if(!y&amp;&amp;e in A)return A[e];switch(e){case x:return function(){return new n(this,e)};case m:return function(){return new n(this,e)};case w:return function(){return new n(this,e)}}return function(){return new n(this)}},O=t+" Iterator",P=!1,A=e.prototype,T=A[g]||A["@@iterator"]||h&amp;&amp;A[h],D=!y&amp;&amp;T||S(h),q="Array"==t&amp;&amp;A.entries||T;if(q&amp;&amp;(E=i(q.call(new e)),d!==Object.prototype&amp;&amp;E.next&amp;&amp;(f||i(E)===d||(s?s(E,d):"function"!=typeof E[g]&amp;&amp;c(E,g,_)),a(E,O,!0,!0),f&amp;&amp;(l[O]=_))),h==m&amp;&amp;T&amp;&amp;T.name!==m&amp;&amp;(P=!0,D=function(){return T.call(this)}),f&amp;&amp;!b||A[g]===D||c(A,g,D),l[t]=D,h)if(j={values:S(m),keys:v?D:S(x),entries:S(w)},b)for(k in j)(y||P||!(k in A))&amp;&amp;u(A,k,j[k]);else r({target:t,proto:!0,forced:y||P},j);return j}},6736:function(e,t,n){var r=n("fb71"),o=n("02c6"),i=n("da9f");e.exports=!!Object.getOwnPropertySymbols&amp;&amp;!i((function(){return!Symbol.sham&amp;&amp;(r?38===o:o&gt;37&amp;&amp;o&lt;41)}))},"67ba":function(e,t,n){var r=n("ef21"),o=r("match");e.exports=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[o]=!1,"/./"[e](t)}catch(r){}}return!1}},"6a19":function(e,t,n){"use strict";var r=n("15f7").charAt,o=n("ee23"),i=n("61e6"),s="String Iterator",a=o.set,c=o.getterFor(s);i(String,"String",(function(e){a(this,{type:s,string:String(e),index:0})}),(function(){var e,t=c(this),n=t.string,o=t.index;return o&gt;=n.length?{value:void 0,done:!0}:(e=r(n,o),t.index+=e.length,{value:e,done:!1})}))},"6ad5":function(e,t,n){var r=n("e63e"),o=n("c388"),i=n("952b"),s=n("cb59").f;e.exports=function(e){var t=r.Symbol||(r.Symbol={});o(t,e)||s(t,e,{value:i.f(e)})}},"6baa":function(e,t,n){"use strict";var r=n("3d32"),o=n("cb59"),i=n("ef21"),s=n("3aa2"),a=i("species");e.exports=function(e){var t=r(e),n=o.f;s&amp;&amp;t&amp;&amp;!t[a]&amp;&amp;n(t,a,{configurable:!0,get:function(){return this}})}},"6dc1":function(e,t,n){var r=n("7a92"),o=n("5445"),i=o.concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},"720c":function(e,t,n){"use strict";var r=n("c6b1"),o=n("ff86"),i=RegExp.prototype.exec,s=String.prototype.replace,a=i,c=function(){var e=/a/,t=/b*/g;return i.call(e,"a"),i.call(t,"a"),0!==e.lastIndex||0!==t.lastIndex}(),u=o.UNSUPPORTED_Y||o.BROKEN_CARET,p=void 0!==/()??/.exec("")[1],f=c||p||u;f&amp;&amp;(a=function(e){var t,n,o,a,f=this,l=u&amp;&amp;f.sticky,h=r.call(f),d=f.source,y=0,g=e;return l&amp;&amp;(h=h.replace("y",""),-1===h.indexOf("g")&amp;&amp;(h+="g"),g=String(e).slice(f.lastIndex),f.lastIndex&gt;0&amp;&amp;(!f.multiline||f.multiline&amp;&amp;"\n"!==e[f.lastIndex-1])&amp;&amp;(d="(?: "+d+")",g=" "+g,y++),n=new RegExp("^(?:"+d+")",h)),p&amp;&amp;(n=new RegExp("^"+d+"$(?!\\s)",h)),c&amp;&amp;(t=f.lastIndex),o=i.call(l?n:f,g),l?o?(o.input=o.input.slice(y),o[0]=o[0].slice(y),o.index=f.lastIndex,f.lastIndex+=o[0].length):f.lastIndex=0:c&amp;&amp;o&amp;&amp;(f.lastIndex=f.global?o.index+o[0].length:t),p&amp;&amp;o&amp;&amp;o.length&gt;1&amp;&amp;s.call(o[0],n,(function(){for(a=1;a&lt;arguments.length-2;a++)void 0===arguments[a]&amp;&amp;(o[a]=void 0)})),o}),e.exports=a},"745e":function(e,t,n){var r=n("ef21"),o=r("toStringTag"),i={};i[o]="z",e.exports="[object z]"===String(i)},7559:function(e,t,n){var r=n("745e"),o=n("13f0"),i=n("7c61");r||o(Object.prototype,"toString",i,{unsafe:!0})},"76d3":function(e,t,n){"use strict";var r=n("15f7").charAt;e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},"780e":function(e,t,n){var r=n("7d38"),o=n("db5b"),i=n("3604"),s=n("b850"),a=function(e){return function(t,n,a,c){r(n);var u=o(t),p=i(u),f=s(u.length),l=e?f-1:0,h=e?-1:1;if(a&lt;2)while(1){if(l in p){c=p[l],l+=h;break}if(l+=h,e?l&lt;0:f&lt;=l)throw TypeError("Reduce of empty array with no initial value")}for(;e?l&gt;=0:f&gt;l;l+=h)l in p&amp;&amp;(c=n(c,p[l],l,u));return c}};e.exports={left:a(!1),right:a(!0)}},"79ec":function(e,t,n){var r=n("2673"),o=n("8fdb");e.exports=function(e,t){try{o(r,e,t)}catch(n){r[e]=t}return t}},"7a92":function(e,t,n){var r=n("c388"),o=n("25e1"),i=n("b4c7").indexOf,s=n("b027");e.exports=function(e,t){var n,a=o(e),c=0,u=[];for(n in a)!r(s,n)&amp;&amp;r(a,n)&amp;&amp;u.push(n);while(t.length&gt;c)r(a,n=t[c++])&amp;&amp;(~i(u,n)||u.push(n));return u}},"7c61":function(e,t,n){"use strict";var r=n("745e"),o=n("28a9");e.exports=r?{}.toString:function(){return"[object "+o(this)+"]"}},"7d38":function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},8325:function(e,t,n){var r=n("dc54");e.exports=function(e){if(!r(e))throw TypeError(String(e)+" is not an object");return e}},8871:function(e,t,n){var r=n("da9f");e.exports=!r((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},"8ae9":function(e,t,n){var r=n("3aa2"),o=n("cb59"),i=n("8325"),s=n("f4db");e.exports=r?Object.defineProperties:function(e,t){i(e);var n,r=s(t),a=r.length,c=0;while(a&gt;c)o.f(e,n=r[c++],t[n]);return e}},"8c94":function(e){e.exports=JSON.parse('[{"key":"/::)","old":"/微笑","cn":"[微笑]","tw":"[微笑]","en":"[Smile]","th":"[ยิ้ม]","path":"./assets/Expression/Expression_1@2x.png","style":"we-emoji__Smile"},{"key":"/::~","old":"/撇嘴","cn":"[撇嘴]","tw":"[撇嘴]","en":"[Grimace]","th":"[หน้าบูด]","path":"./assets/Expression/Expression_2@2x.png","style":"we-emoji__Grimace"},{"key":"/::B","old":"/色","cn":"[色]","tw":"[色]","en":"[Drool]","th":"[น้ำลายไหล]","path":"./assets/Expression/Expression_3@2x.png","style":"we-emoji__Drool"},{"key":"/::|","old":"/发呆","cn":"[发呆]","tw":"[發呆]","en":"[Scowl]","th":"[หน้าบึ้ง]","path":"./assets/Expression/Expression_4@2x.png","style":"we-emoji__Scowl"},{"key":"/:8-)","old":"/得意","cn":"[得意]","tw":"[得意]","en":"[CoolGuy]","th":"[สบาย]","path":"./assets/Expression/Expression_5@2x.png","style":"we-emoji__CoolGuy"},{"key":"/::&lt;","old":"/流泪","cn":"[流泪]","tw":"[流淚]","en":"[Sob]","th":"[ร้องไห้โฮ]","path":"./assets/Expression/Expression_6@2x.png","style":"we-emoji__Sob"},{"key":"/::$","old":"/害羞","cn":"[害羞]","tw":"[害羞]","en":"[Shy]","th":"[อาย]","path":"./assets/Expression/Expression_7@2x.png","style":"we-emoji__Shy"},{"key":"/::X","old":"/闭嘴","cn":"[闭嘴]","tw":"[閉嘴]","en":"[Silent]","th":"[ห้ามพูด]","path":"./assets/Expression/Expression_8@2x.png","style":"we-emoji__Silent"},{"key":"/::Z","old":"/睡","cn":"[睡]","tw":"[睡]","en":"[Sleep]","th":"[หลับ]","path":"./assets/Expression/Expression_9@2x.png","style":"we-emoji__Sleep"},{"key":"/::\'(","old":"/大哭","cn":"[大哭]","tw":"[大哭]","en":"[Cry]","th":"[ร้องไห้]","path":"./assets/Expression/Expression_10@2x.png","style":"we-emoji__Cry"},{"key":"/::-|","old":"/尴尬","cn":"[尴尬]","tw":"[尷尬]","en":"[Awkward]","th":"[ลำบากใจ]","path":"./assets/Expression/Expression_11@2x.png","style":"we-emoji__Awkward"},{"key":"/::@","old":"/发怒","cn":"[发怒]","tw":"[發怒]","en":"[Angry]","th":"[โกรธสุด]","path":"./assets/Expression/Expression_12@2x.png","style":"we-emoji__Angry"},{"key":"/::P","old":"/调皮","qq":"[吐舌]","cn":"[调皮]","tw":"[調皮]","en":"[Tongue]","th":"[ขยิบตา]","emoji":"😝","path":"./assets/Expression/Expression_13@2x.png","style":"we-emoji__Tongue"},{"key":"/::D","old":"/呲牙","cn":"[呲牙]","tw":"[呲牙]","en":"[Grin]","th":"[ยิ้มกว้าง]","path":"./assets/Expression/Expression_14@2x.png","style":"we-emoji__Grin"},{"key":"/::O","old":"/惊讶","cn":"[惊讶]","tw":"[驚訝]","en":"[Surprise]","th":"[ประหลาดใจ]","path":"./assets/Expression/Expression_15@2x.png","style":"we-emoji__Surprise"},{"key":"/::(","old":"/难过","cn":"[难过]","tw":"[難過]","en":"[Frown]","th":"[เสียใจ]","path":"./assets/Expression/Expression_16@2x.png","style":"we-emoji__Frown"},{"key":"/::+","old":"/酷","cn":"[酷]","tw":"[酷]","en":"[Ruthless]","th":"[เจ๋ง]","path":"./assets/Expression/Expression_17@2x.png","style":"we-emoji__Ruthless"},{"key":"/:--b","old":"/冷汗","cn":"[囧]","tw":"[囧]","en":"[Blush]","th":"[Blush]","path":"./assets/Expression/Expression_18@2x.png","style":"we-emoji__Blush"},{"key":"/::Q","old":"/抓狂","cn":"[抓狂]","tw":"[抓狂]","en":"[Scream]","th":"[กรีดร้อง]","path":"./assets/Expression/Expression_19@2x.png","style":"we-emoji__Scream"},{"key":"/::T","old":"/吐","cn":"[吐]","tw":"[吐]","en":"[Puke]","th":"[อาเจียน]","path":"./assets/Expression/Expression_20@2x.png","style":"we-emoji__Puke"},{"key":"/:,@P","old":"/偷笑","cn":"[偷笑]","tw":"[偷笑]","en":"[Chuckle]","th":"[หัวเราะหึๆ]","path":"./assets/Expression/Expression_21@2x.png","style":"we-emoji__Chuckle"},{"key":"/:,@-D","old":"/可爱","cn":"[愉快]","tw":"[愉快]","en":"[Joyful]","th":"[พอใจ]","path":"./assets/Expression/Expression_22@2x.png","style":"we-emoji__Joyful"},{"key":"/::d","old":"/白眼","cn":"[白眼]","tw":"[白眼]","en":"[Slight]","th":"[สงสัย]","path":"./assets/Expression/Expression_23@2x.png","style":"we-emoji__Slight"},{"key":"/:,@o","old":"/傲慢","cn":"[傲慢]","tw":"[傲慢]","en":"[Smug]","th":"[หยิ่ง]","path":"./assets/Expression/Expression_24@2x.png","style":"we-emoji__Smug"},{"key":"/::g","old":"/饥饿","cn":"[饥饿]","tw":"[饑餓]","en":"[Hungry]","th":"[หิว]","path":"./assets/Expression/Expression_25@2x.png","style":"we-emoji__Hungry"},{"key":"/:|-)","old":"/困","cn":"[困]","tw":"[累]","en":"[Drowsy]","th":"[ง่วงนอน]","path":"./assets/Expression/Expression_26@2x.png","style":"we-emoji__Drowsy"},{"key":"/::!","old":"/惊恐","cn":"[惊恐]","tw":"[驚恐]","en":"[Panic]","th":"[ตกใจกลัว]","path":"./assets/Expression/Expression_27@2x.png","style":"we-emoji__Panic"},{"key":"/::L","old":"/流汗","cn":"[流汗]","tw":"[流汗]","en":"[Sweat]","th":"[เหงื่อตก]","path":"./assets/Expression/Expression_28@2x.png","style":"we-emoji__Sweat"},{"key":"/::&gt;","old":"/憨笑","cn":"[憨笑]","tw":"[大笑]","en":"[Laugh]","th":"[หัวเราะ]","path":"./assets/Expression/Expression_29@2x.png","style":"we-emoji__Laugh"},{"key":"/::,@","old":"/大兵","cn":"[悠闲]","tw":"[悠閑]","en":"[Commando]","th":"[ทหาร]","path":"./assets/Expression/Expression_30@2x.png","style":"we-emoji__Commando"},{"key":"/:,@f","old":"/奋斗","cn":"[奋斗]","tw":"[奮鬥]","en":"[Determined]","th":"[มุ่งมั่น]","path":"./assets/Expression/Expression_31@2x.png","style":"we-emoji__Determined"},{"key":"/::-S","old":"/咒骂","cn":"[咒骂]","tw":"[咒罵]","en":"[Scold]","th":"[ด่าว่าา]","path":"./assets/Expression/Expression_32@2x.png","style":"we-emoji__Scold"},{"key":"/:?","old":"/疑问","cn":"[疑问]","tw":"[疑問]","en":"[Shocked]","th":"[สับสน]","path":"./assets/Expression/Expression_33@2x.png","style":"we-emoji__Shocked"},{"key":"/:,@x","old":"/嘘","cn":"[嘘]","tw":"[噓]","en":"[Shhh]","th":"[จุ๊ๆ]","path":"./assets/Expression/Expression_34@2x.png","style":"we-emoji__Shhh"},{"key":"/:,@@","old":"/晕","cn":"[晕]","tw":"[暈]","en":"[Dizzy]","th":"[เวียนหัว]","path":"./assets/Expression/Expression_35@2x.png","style":"we-emoji__Dizzy"},{"key":"/::8","old":"/折磨","cn":"[疯了]","tw":"[瘋了]","en":"[Tormented]","th":"[ท้อแท้]","path":"./assets/Expression/Expression_36@2x.png","style":"we-emoji__Tormented"},{"key":"/:,@!","old":"/衰","cn":"[衰]","tw":"[衰]","en":"[Toasted]","th":"[ชั่วร้าย]","path":"./assets/Expression/Expression_37@2x.png","style":"we-emoji__Toasted"},{"key":"/:!!!","old":"/骷髅","cn":"[骷髅]","tw":"[骷髏頭]","en":"[Skull]","th":"[หัวกะโหลก]","path":"./assets/Expression/Expression_38@2x.png","style":"we-emoji__Skull"},{"key":"/:xx","old":"/敲打","cn":"[敲打]","tw":"[敲打]","en":"[Hammer]","th":"[ค้อนทุบ]","path":"./assets/Expression/Expression_39@2x.png","style":"we-emoji__Hammer"},{"key":"/:bye","old":"/再见","cn":"[再见]","tw":"[再見]","en":"[Wave]","th":"[บายๆ]","path":"./assets/Expression/Expression_40@2x.png","style":"we-emoji__Wave"},{"key":"/:wipe","old":"/擦汗","cn":"[擦汗]","tw":"[擦汗]","en":"[Speechless]","th":"[เช็ดเหงื่อ]","path":"./assets/Expression/Expression_41@2x.png","style":"we-emoji__Speechless"},{"key":"/:dig","old":"/抠鼻","cn":"[抠鼻]","tw":"[摳鼻]","en":"[NosePick]","th":"[แคะจมูก]","path":"./assets/Expression/Expression_42@2x.png","style":"we-emoji__NosePick"},{"key":"/:handclap","old":"/鼓掌","cn":"[鼓掌]","tw":"[鼓掌]","en":"[Clap]","th":"[ตบมือ]","path":"./assets/Expression/Expression_43@2x.png","style":"we-emoji__Clap"},{"key":"/:&amp;-(","old":"/糗大了","cn":"[糗大了]","tw":"[羞辱]","en":"[Shame]","th":"[อับอาย]","path":"./assets/Expression/Expression_44@2x.png","style":"we-emoji__Shame"},{"key":"/:B-)","old":"/坏笑","cn":"[坏笑]","tw":"[壞笑]","en":"[Trick]","th":"[กลโกง]","path":"./assets/Expression/Expression_45@2x.png","style":"we-emoji__Trick"},{"key":"/:&lt;@","old":"/左哼哼","cn":"[左哼哼]","tw":"[左哼哼]","en":"[Bah！L]","th":"[เชิดซ้าย]","path":"./assets/Expression/Expression_46@2x.png","style":"we-emoji__BahL"},{"key":"/:@&gt;","old":"/右哼哼","cn":"[右哼哼]","tw":"[右哼哼]","en":"[Bah！R]","th":"[เชิดขวา]","path":"./assets/Expression/Expression_47@2x.png","style":"we-emoji__BahR"},{"key":"/::-O","old":"/哈欠","cn":"[哈欠]","tw":"[哈欠]","en":"[Yawn]","th":"[หาว]","path":"./assets/Expression/Expression_48@2x.png","style":"we-emoji__Yawn"},{"key":"/:&gt;-|","old":"/鄙视","cn":"[鄙视]","tw":"[鄙視]","en":"[Pooh-pooh]","th":"[ดูถูก]","path":"./assets/Expression/Expression_49@2x.png","style":"we-emoji__Pooh-pooh"},{"key":"/:P-(","old":"/委屈","cn":"[委屈]","tw":"[委屈]","en":"[Shrunken]","th":"[ข้องใจ]","path":"./assets/Expression/Expression_50@2x.png","style":"we-emoji__Shrunken"},{"key":"/::\'|","old":"/快哭了","cn":"[快哭了]","tw":"[快哭了]","en":"[TearingUp]","th":"[เกือบร้องไห้]","path":"./assets/Expression/Expression_51@2x.png","style":"we-emoji__TearingUp"},{"key":"/:X-)","old":"/阴险","cn":"[阴险]","tw":"[陰險]","en":"[Sly]","th":"[ขี้โกง]","path":"./assets/Expression/Expression_52@2x.png","style":"we-emoji__Sly"},{"key":"/::*","old":"/亲亲","cn":"[亲亲]","tw":"[親親]","en":"[Kiss]","th":"[จุ๊บ]","path":"./assets/Expression/Expression_53@2x.png","style":"we-emoji__Kiss"},{"key":"/:@x","old":"/吓","cn":"[吓]","tw":"[嚇]","en":"[Wrath]","th":"[ห๊า]","path":"./assets/Expression/Expression_54@2x.png","style":"we-emoji__Wrath"},{"key":"/:8*","old":"/可怜","cn":"[可怜]","tw":"[可憐]","en":"[Whimper]","th":"[น่าสงสาร]","path":"./assets/Expression/Expression_55@2x.png","style":"we-emoji__Whimper"},{"key":"/:pd","old":"/菜刀","cn":"[菜刀]","tw":"[菜刀]","en":"[Cleaver]","th":"[มีด]","path":"./assets/Expression/Expression_56@2x.png","style":"we-emoji__Cleaver"},{"key":"/:&lt;W&gt;","old":"/西瓜","cn":"[西瓜]","tw":"[西瓜]","en":"[Watermelon]","th":"[แตงโม]","path":"./assets/Expression/Expression_57@2x.png","style":"we-emoji__Watermelon"},{"key":"/:beer","old":"/啤酒","cn":"[啤酒]","tw":"[啤酒]","en":"[Beer]","th":"[เบียร์]","path":"./assets/Expression/Expression_58@2x.png","style":"we-emoji__Beer"},{"key":"/:basketb","old":"/篮球","cn":"[篮球]","tw":"[籃球]","en":"[Basketball]","th":"[บาสเกตบอล]","path":"./assets/Expression/Expression_59@2x.png","style":"we-emoji__Basketball"},{"key":"/:oo","old":"/乒乓","cn":"[乒乓]","tw":"[乒乓]","en":"[PingPong]","th":"[ปิงปอง]","path":"./assets/Expression/Expression_60@2x.png","style":"we-emoji__PingPong"},{"key":"/:coffee","old":"/咖啡","cn":"[咖啡]","tw":"[咖啡]","en":"[Coffee]","th":"[กาแฟ]","path":"./assets/Expression/Expression_61@2x.png","style":"we-emoji__Coffee"},{"key":"/:eat","old":"/饭","cn":"[饭]","tw":"[飯]","en":"[Rice]","th":"[ข้าว]","path":"./assets/Expression/Expression_62@2x.png","style":"we-emoji__Rice"},{"key":"/:pig","old":"/猪头","cn":"[猪头]","tw":"[豬頭]","en":"[Pig]","th":"[หมู]","path":"./assets/Expression/Expression_63@2x.png","style":"we-emoji__Pig"},{"key":"/:rose","old":"/玫瑰","cn":"[玫瑰]","tw":"[玫瑰]","en":"[Rose]","th":"[กุหลาบ]","path":"./assets/Expression/Expression_64@2x.png","style":"we-emoji__Rose"},{"key":"/:fade","old":"/凋谢","cn":"[凋谢]","tw":"[枯萎]","en":"[Wilt]","th":"[ร่วงโรย]","path":"./assets/Expression/Expression_65@2x.png","style":"we-emoji__Wilt"},{"key":"/:showlove","old":"/示爱","cn":"[嘴唇]","tw":"[嘴唇]","en":"[Lips]","th":"[ริมฝีปาก]","path":"./assets/Expression/Expression_66@2x.png","style":"we-emoji__Lips"},{"key":"/:heart","old":"/爱心","cn":"[爱心]","tw":"[愛心]","en":"[Heart]","th":"[หัวใจ]","path":"./assets/Expression/Expression_67@2x.png","style":"we-emoji__Heart"},{"key":"/:break","old":"/心碎","cn":"[心碎]","tw":"[心碎]","en":"[BrokenHeart]","th":"[ใจสลาย]","path":"./assets/Expression/Expression_68@2x.png","style":"we-emoji__BrokenHeart"},{"key":"/:cake","old":"/蛋糕","cn":"[蛋糕]","tw":"[蛋糕]","en":"[Cake]","th":"[เค้ก]","path":"./assets/Expression/Expression_69@2x.png","style":"we-emoji__Cake"},{"key":"/:li","old":"/闪电","cn":"[闪电]","tw":"[閃電]","en":"[Lightning]","th":"[ฟ้าผ่า]","path":"./assets/Expression/Expression_70@2x.png","style":"we-emoji__Lightning"},{"key":"/:bome","old":"/炸弹","cn":"[炸弹]","tw":"[炸彈]","en":"[Bomb]","th":"[ระเบิด]","path":"./assets/Expression/Expression_71@2x.png","style":"we-emoji__Bomb"},{"key":"/:kn","old":"/刀","cn":"[刀]","tw":"[刀]","en":"[Dagger]","th":"[ดาบ]","path":"./assets/Expression/Expression_72@2x.png","style":"we-emoji__Dagger"},{"key":"/:footb","old":"/足球","cn":"[足球]","tw":"[足球]","en":"[Soccer]","th":"[ฟุตบอล]","path":"./assets/Expression/Expression_73@2x.png","style":"we-emoji__Soccer"},{"key":"/:ladybug","old":"/瓢虫","cn":"[瓢虫]","tw":"[甲蟲]","en":"[Ladybug]","th":"[เต่าทอง]","path":"./assets/Expression/Expression_74@2x.png","style":"we-emoji__Ladybug"},{"key":"/:shit","old":"/便便","cn":"[便便]","tw":"[便便]","en":"[Poop]","th":"[อุจจาระ]","path":"./assets/Expression/Expression_75@2x.png","style":"we-emoji__Poop"},{"key":"/:moon","old":"/月亮","cn":"[月亮]","tw":"[月亮]","en":"[Moon]","th":"[พระจันทร์]","path":"./assets/Expression/Expression_76@2x.png","style":"we-emoji__Moon"},{"key":"/:sun","old":"/太阳","cn":"[太阳]","tw":"[太陽]","en":"[Sun]","th":"[พระอาทิตย์]","path":"./assets/Expression/Expression_77@2x.png","style":"we-emoji__Sun"},{"key":"/:gift","old":"/礼物","cn":"[礼物]","tw":"[禮物]","en":"[礼物]","th":"[Gift]","emoji":"🎁","path":"./assets/Expression/Expression_78@2x.png","style":"we-emoji__Gift"},{"key":"/:hug","old":"/拥抱","cn":"[拥抱]","tw":"[擁抱]","en":"[Hug]","th":"[กอด]","path":"./assets/Expression/Expression_79@2x.png","style":"we-emoji__Hug"},{"key":"/:strong","old":"/强","cn":"[强]","tw":"[強]","en":"[ThumbsUp]","th":"[ยอดเยี่ยม]","path":"./assets/Expression/Expression_80@2x.png","style":"we-emoji__ThumbsUp"},{"key":"/:weak","old":"/弱","cn":"[弱]","tw":"[弱]","en":"[ThumbsDown]","th":"[ยอดแย่]","path":"./assets/Expression/Expression_81@2x.png","style":"we-emoji__ThumbsDown"},{"key":"/:share","old":"/握手","cn":"[握手]","tw":"[握手]","en":"[Shake]","th":"[จับมือ]","path":"./assets/Expression/Expression_82@2x.png","style":"we-emoji__Shake"},{"key":"/:v","old":"/胜利","cn":"[胜利]","tw":"[勝利]","en":"[Peace]","th":"[สู้ตาย]","path":"./assets/Expression/Expression_83@2x.png","style":"we-emoji__Peace"},{"key":"/:@)","old":"/抱拳","cn":"[抱拳]","tw":"[抱拳]","en":"[Fight]","th":"[คารวะ]","path":"./assets/Expression/Expression_84@2x.png","style":"we-emoji__Fight"},{"key":"/:jj","old":"/勾引","cn":"[勾引]","tw":"[勾引]","en":"[Beckon]","th":"[เข้ามา]","path":"./assets/Expression/Expression_85@2x.png","style":"we-emoji__Beckon"},{"key":"/:@@","old":"/拳头","cn":"[拳头]","tw":"[拳頭]","en":"[Fist]","th":"[กำหมัด]","path":"./assets/Expression/Expression_86@2x.png","style":"we-emoji__Fist"},{"key":"/:bad","old":"/差劲","cn":"[差劲]","tw":"[差勁]","en":"[Pinky]","th":"[ดีกัน]","path":"./assets/Expression/Expression_87@2x.png","style":"we-emoji__Pinky"},{"key":"/:lvu","old":"/爱你","cn":"[爱你]","tw":"[愛你]","en":"[RockOn]","th":"[ฉันรักคุณ]","path":"./assets/Expression/Expression_88@2x.png","style":"we-emoji__RockOn"},{"key":"/:no","old":"/NO","cn":"[NO]","tw":"[NO]","en":"[Nuh-uh]","th":"[ไม่]","path":"./assets/Expression/Expression_89@2x.png","style":"we-emoji__Nuh-uh"},{"key":"/:ok","old":"/OK","cn":"[OK]","tw":"[OK]","en":"[OK]","th":"[ตกลง]","path":"./assets/Expression/Expression_90@2x.png","style":"we-emoji__OK"},{"key":"/:love","old":"/爱情","cn":"[爱情]","tw":"[愛情]","en":"[InLove]","th":"[รักกัน]","path":"./assets/Expression/Expression_91@2x.png","style":"we-emoji__InLove"},{"key":"/:&lt;L&gt;","old":"/飞吻","cn":"[飞吻]","tw":"[飛吻]","en":"[Blowkiss]","th":"[มีรัก]","path":"./assets/Expression/Expression_92@2x.png","style":"we-emoji__Blowkiss"},{"key":"/:jump","old":"/跳跳","cn":"[跳跳]","tw":"[跳跳]","en":"[Waddle]","th":"[กระโดด]","path":"./assets/Expression/Expression_93@2x.png","style":"we-emoji__Waddle"},{"key":"/:shake","old":"/发抖","cn":"[发抖]","tw":"[發抖]","en":"[Tremble]","th":"[เขย่า]","path":"./assets/Expression/Expression_94@2x.png","style":"we-emoji__Tremble"},{"key":"/:&lt;O&gt;","old":"/怄火","cn":"[怄火]","tw":"[噴火]","en":"[Aaagh!]","th":"[อ้ากส์!]","path":"./assets/Expression/Expression_95@2x.png","style":"we-emoji__Aaagh"},{"key":"/:circle","old":"/转圈","cn":"[转圈]","tw":"[轉圈]","en":"[Twirl]","th":"[หมุนตัว]","path":"./assets/Expression/Expression_96@2x.png","style":"we-emoji__Twirl"},{"key":"/:kotow","old":"/磕头","cn":"[磕头]","tw":"[磕頭]","en":"[Kotow]","th":"[คำนับ]","path":"./assets/Expression/Expression_97@2x.png","style":"we-emoji__Kotow"},{"key":"/:turn","old":"/回头","cn":"[回头]","tw":"[回頭]","en":"[Dramatic]","th":"[เหลียวหลัง]","path":"./assets/Expression/Expression_98@2x.png","style":"we-emoji__Dramatic"},{"key":"/:skip","old":"/跳绳","cn":"[跳绳]","tw":"[跳繩]","en":"[JumpRope]","th":"[กระโดด]","path":"./assets/Expression/Expression_99@2x.png","style":"we-emoji__JumpRope"},{"key":"/:oY","old":"/挥手","cn":"[投降]","tw":"[投降]","en":"[Surrender]","th":"[ยอมแพ้]","path":"./assets/Expression/Expression_100@2x.png","style":"we-emoji__Surrender"},{"key":"/:#-0","old":"/激动","cn":"[激动]","tw":"[激動]","en":"[Hooray]","th":"[ไชโย]","path":"./assets/Expression/Expression_101@2x.png","style":"we-emoji__Hooray"},{"key":"/:hiphot","old":"/街舞","cn":"[乱舞]","tw":"[亂舞]","en":"[Meditate]","th":"[เย้เย้]","path":"./assets/Expression/Expression_102@2x.png","style":"we-emoji__Meditate"},{"key":"/:kiss","old":"/献吻","cn":"[献吻]","tw":"[獻吻]","en":"[Smooch]","th":"[จูบ]","path":"./assets/Expression/Expression_103@2x.png","style":"we-emoji__Smooch"},{"key":"/:&lt;&amp;","old":"/左太极","cn":"[左太极]","tw":"[左太極]","en":"[TaiChi L]","th":"[หญิงต่อสู้]","path":"./assets/Expression/Expression_104@2x.png","style":"we-emoji__TaiChiL"},{"key":"/:&amp;\\"","old":"/右太极","cn":"[右太极]","tw":"[右太極]","en":"[TaiChi R]","th":"[ชายต่อสู้]","path":"./assets/Expression/Expression_105@2x.png","style":"we-emoji__TaiChiR"},{"key":"[Smirk]","cn":"[奸笑]","qq":"[奸笑]","en":"[Smirk]","tw":"[奸笑]","th":"[Smirk]","path":"./assets/newemoji/2_02.png","style":"we-emoji__Smirk"},{"key":"[Hey]","cn":"[嘿哈]","qq":"[嘿哈]","en":"[Hey]","tw":"[吼嘿]","th":"[Hey]","path":"./assets/newemoji/2_04.png","style":"we-emoji__Hey"},{"key":"[Facepalm]","cn":"[捂脸]","qq":"[捂脸]","en":"[Facepalm]","tw":"[掩面]","th":"[Facepalm]","path":"./assets/newemoji/2_05.png","style":"we-emoji__Facepalm"},{"key":"[Smart]","cn":"[机智]","qq":"[机智]","en":"[Smart]","tw":"[機智]","th":"[Smart]","path":"./assets/newemoji/2_06.png","style":"we-emoji__Smart"},{"key":"[Tea]","cn":"[茶]","qq":"[茶]","en":"[Tea]","tw":"[茶]","th":"[Tea]","path":"./assets/newemoji/2_07.png","style":"we-emoji__Tea"},{"key":"[Packet]","cn":"[红包]","qq":"[红包]","en":"[Packet]","tw":"[Packet]","th":"[Packet]","path":"./assets/newemoji/2_09.png","style":"we-emoji__Packet"},{"key":"[Candle]","cn":"[蜡烛]","qq":"[蜡烛]","en":"[Candle]","tw":"[蠟燭]","th":"[Candle]","path":"./assets/newemoji/2_10.png","style":"we-emoji__Candle"},{"key":"[Yeah!]","cn":"[耶]","qq":"[耶]","en":"[Yeah!]","tw":"[歐耶]","th":"[Yeah!]","path":"./assets/newemoji/2_11.png","style":"we-emoji__Yeah"},{"key":"[Concerned]","cn":"[皱眉]","qq":"[皱眉]","en":"[Concerned]","tw":"[皺眉]","th":"[Concerned]","path":"./assets/newemoji/2_12.png","style":"we-emoji__Concerned"},{"key":"[Salute]","cn":"[抱拳]","qq":"[抱拳]","en":"[Salute]","tw":"[抱拳]","th":"[Salute]","path":"./assets/newemoji/smiley_83b.png","style":"we-emoji__Salute"},{"key":"[Chick]","cn":"[鸡]","qq":"[鸡]","en":"[Chick]","tw":"[小雞]","th":"[Chick]","path":"./assets/newemoji/2_14.png","style":"we-emoji__Chick"},{"key":"[Blessing]","cn":"[福]","qq":"[福]","en":"[Blessing]","tw":"[福]","th":"[Blessing]","path":"./assets/newemoji/2_15.png","style":"we-emoji__Blessing"},{"key":"[Bye]","cn":"[再见]","qq":"[再见]","en":"[Bye]","tw":"[再見]","th":"[Bye]","path":"./assets/newemoji/smiley_39b.png","style":"we-emoji__Bye"},{"key":"[Rich]","cn":"[發]","qq":"[發]","en":"[Rich]","tw":"[發]","th":"[Rich]","path":"./assets/newemoji/2_16.png","style":"we-emoji__Rich"},{"key":"[Pup]","cn":"[小狗]","qq":"[小狗]","en":"[Pup]","tw":"[小狗]","th":"[Pup]","path":"./assets/newemoji/2_17.png","style":"we-emoji__Pup"},{"key":"[Onlooker]","cn":"[吃瓜]","qq":"[吃瓜]","en":"[Onlooker]","tw":"[吃西瓜]","th":"[Onlooker]","path":"./assets/newemoji/Watermelon.png","style":"we-emoji__Onlooker"},{"key":"[GoForIt]","cn":"[加油]","qq":"[加油]","en":"[GoForIt]","tw":"[加油]","th":"[GoForIt]","path":"./assets/newemoji/Addoil.png","style":"we-emoji__GoForIt"},{"key":"[Sweats]","cn":"[汗]","qq":"[汗]","en":"[Sweats]","tw":"[汗]","th":"[Sweats]","path":"./assets/newemoji/Sweat.png","style":"we-emoji__Sweats"},{"key":"[OMG]","cn":"[天啊]","qq":"[天啊]","en":"[OMG]","tw":"[天啊]","th":"[OMG]","path":"./assets/newemoji/Shocked.png","style":"we-emoji__OMG"},{"key":"[Emm]","cn":"[Emm]","qq":"[Emm]","en":"[Emm]","tw":"[一言難盡]","th":"[Emm]","path":"./assets/newemoji/Cold.png","style":"we-emoji__Emm"},{"key":"[Respect]","cn":"[社会社会]","qq":"[社会社会]","en":"[Respect]","tw":"[失敬失敬]","th":"[Respect]","path":"./assets/newemoji/Social.png","style":"we-emoji__Respect"},{"key":"[Doge]","cn":"[旺柴]","qq":"[旺柴]","en":"[Doge]","tw":"[旺柴]","th":"[Doge]","path":"./assets/newemoji/Yellowdog.png","style":"we-emoji__Doge"},{"key":"[NoProb]","cn":"[好的]","qq":"[好的]","en":"[NoProb]","tw":"[好的]","th":"[NoProb]","path":"./assets/newemoji/NoProb.png","style":"we-emoji__NoProb"},{"key":"[MyBad]","cn":"[打脸]","qq":"[打脸]","en":"[MyBad]","tw":"[打臉]","th":"[MyBad]","path":"./assets/newemoji/Slap.png","style":"we-emoji__MyBad"},{"key":"[Wow]","cn":"[哇]","qq":"[哇]","en":"[Wow]","tw":"[哇]","th":"[Wow]","path":"./assets/newemoji/Wow.png","style":"we-emoji__Wow"},{"key":"[KeepFighting]","cn":"[加油加油]","qq":"[加油加油]","en":"[KeepFighting]","tw":"[加油！]","th":"[KeepFighting]","path":"./assets/newemoji/KeepFighting.png","style":"we-emoji__KeepFighting"},{"key":"[Boring]","cn":"[翻白眼]","qq":"[翻白眼]","en":"[Boring]","tw":"[翻白眼]","th":"[Boring]","path":"./assets/newemoji/Boring.png","style":"we-emoji__Boring"},{"key":"[666]","cn":"[666]","qq":"[666]","en":"[Awesome]","tw":"[666]","th":"[Awesome]","path":"./assets/newemoji/666.png","style":"we-emoji__Awesome"},{"key":"[LetMeSee]","cn":"[让我看看]","qq":"[让我看看]","en":"[LetMeSee]","tw":"[讓我看看]","th":"[LetMeSee]","path":"./assets/newemoji/LetMeSee.png","style":"we-emoji__LetMeSee"},{"key":"[Sigh]","cn":"[叹气]","qq":"[叹气]","en":"[Sigh]","tw":"[嘆息]","th":"[Sigh]","path":"./assets/newemoji/Sigh.png","style":"we-emoji__Sigh"},{"key":"[Hurt]","cn":"[苦涩]","qq":"[苦涩]","en":"[Hurt]","tw":"[難受]","th":"[Hurt]","path":"./assets/newemoji/Hurt.png","style":"we-emoji__Hurt"},{"key":"[Broken]","cn":"[裂开]","qq":"[裂开]","en":"[Broken]","tw":"[崩潰]","th":"[Broken]","path":"./assets/newemoji/Broken.png","style":"we-emoji__Broken"},{"key":"[Flushed]","cn":"[脸红]","qq":"[脸红]","en":"[Flushed]","tw":"[臉紅]","th":"[Flushed]","emoji":"😳","path":"./assets/newemoji/Flushed.png","style":"we-emoji__Flushed"},{"key":"[Happy]","cn":"[笑脸]","qq":"[笑脸]","en":"[Happy]","tw":"[笑臉]","th":"[Happy]","emoji":"😄","path":"./assets/newemoji/Happy.png","style":"we-emoji__Happy"},{"key":"[Lol]","cn":"[破涕为笑]","qq":"[破涕为笑]","en":"[Lol]","tw":"[破涕為笑]","th":"[Lol]","emoji":"😂","path":"./assets/newemoji/Lol.png","style":"we-emoji__Lol"},{"key":"[Fireworks]","cn":"[烟花]","qq":"[烟花]","en":"[Fireworks]","tw":"[煙花]","th":"[Fireworks]","path":"./assets/newemoji/Fireworks.png","style":"we-emoji__Fireworks"},{"key":"[Firecracker]","cn":"[爆竹]","qq":"[爆竹]","en":"[Firecracker]","tw":"[爆竹]","th":"[Firecracker]","path":"./assets/newemoji/Firecracker.png","style":"we-emoji__Firecracker"},{"key":"[Party]","cn":"[庆祝]","qq":"[庆祝]","en":"[Party]","tw":"[慶祝]","th":"[Party]","emoji":"🎉","path":"./assets/newemoji/Party.png","style":"we-emoji__Party"},{"key":"[Terror]","cn":"[恐惧]","qq":"[恐惧]","en":"[Terror]","tw":"[恐懼]","th":"[Terror]","emoji":"😱","path":"./assets/newemoji/Terror.png","style":"we-emoji__Terror"},{"key":"[Duh]","cn":"[无语]","qq":"[无语]","en":"[Duh]","tw":"[無語]","th":"[Duh]","emoji":"😒","path":"./assets/newemoji/Duh.png","style":"we-emoji__Duh"},{"key":"[LetDown]","cn":"[失望]","qq":"[失望]","en":"[Let Down]","tw":"[失望]","th":"[Let Down]","emoji":"😔","path":"./assets/newemoji/LetDown.png","style":"we-emoji__LetDown"},{"key":"[Sick]","cn":"[生病]","qq":"[生病]","en":"[Sick]","tw":"[生病]","th":"[Sick]","emoji":"😷","path":"./assets/newemoji/Sick.png","style":"we-emoji__Sick"},{"key":"[Worship]","cn":"[合十]","qq":"[合十]","en":"[Worship]","tw":"[合十]","th":"[Worship]","emoji":"🙏","path":"./assets/newemoji/Worship.png","style":"we-emoji__Worship"}]')},"8fce":function(e,t,n){var r=n("3eeb"),o=n("720c");e.exports=function(e,t){var n=e.exec;if("function"===typeof n){var i=n.call(e,t);if("object"!==typeof i)throw TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==r(e))throw TypeError("RegExp#exec called on incompatible receiver");return o.call(e,t)}},"8fdb":function(e,t,n){var r=n("3aa2"),o=n("cb59"),i=n("dbca");e.exports=r?function(e,t,n){return o.f(e,t,i(1,n))}:function(e,t,n){return e[t]=n,e}},"90d9":function(e,t,n){n("b193"),n("53d5"),n("b2c4"),n("2a74"),n("960a"),n("b33c");var r=n("c942");function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&amp;&amp;(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t&lt;arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}e.exports=i,e.exports["default"]=e.exports,e.exports.__esModule=!0},"91e8":function(e,t,n){"use strict";var r=n("4266"),o=n("db5b"),i=n("a682"),s=n("f3d1"),a=n("b850"),c=n("2db9"),u=n("b2dc");e.exports=function(e){var t,n,p,f,l,h,d=o(e),y="function"==typeof this?this:Array,g=arguments.length,x=g&gt;1?arguments[1]:void 0,m=void 0!==x,w=u(d),_=0;if(m&amp;&amp;(x=r(x,g&gt;2?arguments[2]:void 0,2)),void 0==w||y==Array&amp;&amp;s(w))for(t=a(d.length),n=new y(t);t&gt;_;_++)h=m?x(d[_],_):d[_],c(n,_,h);else for(f=w.call(d),l=f.next,n=new y;!(p=l.call(f)).done;_++)h=m?i(f,x,[p.value,_],!0):p.value,c(n,_,h);return n.length=_,n}},9397:function(e,t,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&amp;&amp;!r.call({1:2},1);t.f=i?function(e){var t=o(this,e);return!!t&amp;&amp;t.enumerable}:r},"952b":function(e,t,n){var r=n("ef21");t.f=r},"960a":function(e,t,n){var r=n("2673"),o=n("cfd8"),i=n("1adc"),s=n("8fdb");for(var a in o){var c=r[a],u=c&amp;&amp;c.prototype;if(u&amp;&amp;u.forEach!==i)try{s(u,"forEach",i)}catch(p){u.forEach=i}}},"98d0":function(e,t,n){"use strict";var r=n("13f0"),o=n("8325"),i=n("da9f"),s=n("c6b1"),a="toString",c=RegExp.prototype,u=c[a],p=i((function(){return"/a/b"!=u.call({source:"a",flags:"b"})})),f=u.name!=a;(p||f)&amp;&amp;r(RegExp.prototype,a,(function(){var e=o(this),t=String(e.source),n=e.flags,r=String(void 0===n&amp;&amp;e instanceof RegExp&amp;&amp;!("flags"in c)?s.call(e):n);return"/"+t+"/"+r}),{unsafe:!0})},9904:function(e,t,n){"use strict";var r=n("25e1"),o=n("120a"),i=n("5a20"),s=n("ee23"),a=n("61e6"),c="Array Iterator",u=s.set,p=s.getterFor(c);e.exports=a(Array,"Array",(function(e,t){u(this,{type:c,target:r(e),index:0,kind:t})}),(function(){var e=p(this),t=e.target,n=e.kind,r=e.index++;return!t||r&gt;=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}}),"values"),i.Arguments=i.Array,o("keys"),o("values"),o("entries")},"9a36":function(e,t,n){var r=n("8325"),o=n("558c");e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,e.call(n,[]),t=n instanceof Array}catch(i){}return function(n,i){return r(n),o(i),t?e.call(n,i):n.__proto__=i,n}}():void 0)},"9cf3":function(e,t,n){var r=n("2b64"),o=n("a707"),i=r("keys");e.exports=function(e){return i[e]||(i[e]=o(e))}},"9e20":function(e,t,n){var r=n("4266"),o=n("3604"),i=n("db5b"),s=n("b850"),a=n("b352"),c=[].push,u=function(e){var t=1==e,n=2==e,u=3==e,p=4==e,f=6==e,l=7==e,h=5==e||f;return function(d,y,g,x){for(var m,w,_=i(d),v=o(_),b=r(y,g,3),E=s(v.length),j=0,k=x||a,S=t?k(d,E):n||l?k(d,0):void 0;E&gt;j;j++)if((h||j in v)&amp;&amp;(m=v[j],w=b(m,j,_),e))if(t)S[j]=w;else if(w)switch(e){case 3:return!0;case 5:return m;case 6:return j;case 2:c.call(S,m)}else switch(e){case 4:return!1;case 7:c.call(S,m)}return f?-1:u||p?p:S}};e.exports={forEach:u(0),map:u(1),filter:u(2),some:u(3),every:u(4),find:u(5),findIndex:u(6),filterOut:u(7)}},a1e0:function(e,t,n){var r=n("3e7f");e.exports=function(e){if(r(e))throw TypeError("The method doesn't accept regular expressions");return e}},a356:function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e&gt;0?r:n)(e)}},a42d:function(e,t,n){var r=n("db5b"),o=Math.floor,i="".replace,s=/\$([$&amp;'`]|\d{1,2}|&lt;[^&gt;]*&gt;)/g,a=/\$([$&amp;'`]|\d{1,2})/g;e.exports=function(e,t,n,c,u,p){var f=n+e.length,l=c.length,h=a;return void 0!==u&amp;&amp;(u=r(u),h=s),i.call(p,h,(function(r,i){var s;switch(i.charAt(0)){case"$":return"$";case"&amp;":return e;case"`":return t.slice(0,n);case"'":return t.slice(f);case"&lt;":s=u[i.slice(1,-1)];break;default:var a=+i;if(0===a)return r;if(a&gt;l){var p=o(a/10);return 0===p?r:p&lt;=l?void 0===c[p-1]?i.charAt(1):c[p-1]+i.charAt(1):r}s=c[a-1]}return void 0===s?"":s}))}},a67f:function(e,t,n){var r=n("6ad5");r("iterator")},a682:function(e,t,n){var r=n("8325"),o=n("e425");e.exports=function(e,t,n,i){try{return i?t(r(n)[0],n[1]):t(n)}catch(s){throw o(e),s}}},a690:function(e,t,n){"use strict";var r=n("2c28"),o=n("8325"),i=n("b850"),s=n("a356"),a=n("3e0d"),c=n("76d3"),u=n("a42d"),p=n("8fce"),f=Math.max,l=Math.min,h=function(e){return void 0===e?e:String(e)};r("replace",2,(function(e,t,n,r){var d=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,y=r.REPLACE_KEEPS_$0,g=d?"$":"$0";return[function(n,r){var o=a(this),i=void 0==n?void 0:n[e];return void 0!==i?i.call(n,o,r):t.call(String(o),n,r)},function(e,r){if(!d&amp;&amp;y||"string"===typeof r&amp;&amp;-1===r.indexOf(g)){var a=n(t,e,this,r);if(a.done)return a.value}var x=o(e),m=String(this),w="function"===typeof r;w||(r=String(r));var _=x.global;if(_){var v=x.unicode;x.lastIndex=0}var b=[];while(1){var E=p(x,m);if(null===E)break;if(b.push(E),!_)break;var j=String(E[0]);""===j&amp;&amp;(x.lastIndex=c(m,i(x.lastIndex),v))}for(var k="",S=0,O=0;O&lt;b.length;O++){E=b[O];for(var P=String(E[0]),A=f(l(s(E.index),m.length),0),T=[],D=1;D&lt;E.length;D++)T.push(h(E[D]));var q=E.groups;if(w){var C=[P].concat(T,A,m);void 0!==q&amp;&amp;C.push(q);var R=String(r.apply(void 0,C))}else R=u(P,m,A,T,q,r);A&gt;=S&amp;&amp;(k+=m.slice(S,A)+R,S=A+P.length)}return k+m.slice(S)}]}))},a707:function(e,t){var n=0,r=Math.random();e.exports=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++n+r).toString(36)}},a79f:function(e,t,n){var r=n("6736");e.exports=r&amp;&amp;!Symbol.sham&amp;&amp;"symbol"==typeof Symbol.iterator},ad7a:function(e,t,n){var r=n("2673"),o=n("4a6d").f,i=n("8fdb"),s=n("13f0"),a=n("79ec"),c=n("08a5"),u=n("34bc");e.exports=function(e,t){var n,p,f,l,h,d,y=e.target,g=e.global,x=e.stat;if(p=g?r:x?r[y]||a(y,{}):(r[y]||{}).prototype,p)for(f in t){if(h=t[f],e.noTargetGet?(d=o(p,f),l=d&amp;&amp;d.value):l=p[f],n=u(g?f:y+(x?".":"#")+f,e.forced),!n&amp;&amp;void 0!==l){if(typeof h===typeof l)continue;c(h,l)}(e.sham||l&amp;&amp;l.sham)&amp;&amp;i(h,"sham",!0),s(p,f,h,e)}}},ae5b:function(e,t,n){var r=n("c388"),o=n("db5b"),i=n("9cf3"),s=n("8871"),a=i("IE_PROTO"),c=Object.prototype;e.exports=s?Object.getPrototypeOf:function(e){return e=o(e),r(e,a)?e[a]:"function"==typeof e.constructor&amp;&amp;e instanceof e.constructor?e.constructor.prototype:e instanceof Object?c:null}},b027:function(e,t){e.exports={}},b193:function(e,t,n){var r=n("ad7a"),o=n("db5b"),i=n("f4db"),s=n("da9f"),a=s((function(){i(1)}));r({target:"Object",stat:!0,forced:a},{keys:function(e){return i(o(e))}})},b2c4:function(e,t,n){"use strict";var r=n("ad7a"),o=n("9e20").filter,i=n("4c94"),s=i("filter");r({target:"Array",proto:!0,forced:!s},{filter:function(e){return o(this,e,arguments.length&gt;1?arguments[1]:void 0)}})},b2dc:function(e,t,n){var r=n("28a9"),o=n("5a20"),i=n("ef21"),s=i("iterator");e.exports=function(e){if(void 0!=e)return e[s]||e["@@iterator"]||o[r(e)]}},b33c:function(e,t,n){var r=n("ad7a"),o=n("3aa2"),i=n("18e7"),s=n("25e1"),a=n("4a6d"),c=n("2db9");r({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(e){var t,n,r=s(e),o=a.f,u=i(r),p={},f=0;while(u.length&gt;f)n=o(r,t=u[f++]),void 0!==n&amp;&amp;c(p,t,n);return p}})},b352:function(e,t,n){var r=n("dc54"),o=n("d360"),i=n("ef21"),s=i("species");e.exports=function(e,t){var n;return o(e)&amp;&amp;(n=e.constructor,"function"!=typeof n||n!==Array&amp;&amp;!o(n.prototype)?r(n)&amp;&amp;(n=n[s],null===n&amp;&amp;(n=void 0)):n=void 0),new(void 0===n?Array:n)(0===t?0:t)}},b4c7:function(e,t,n){var r=n("25e1"),o=n("b850"),i=n("3823"),s=function(e){return function(t,n,s){var a,c=r(t),u=o(c.length),p=i(s,u);if(e&amp;&amp;n!=n){while(u&gt;p)if(a=c[p++],a!=a)return!0}else for(;u&gt;p;p++)if((e||p in c)&amp;&amp;c[p]===n)return e||p||0;return!e&amp;&amp;-1}};e.exports={includes:s(!0),indexOf:s(!1)}},b70b:function(e,t,n){var r=n("dc54");e.exports=function(e,t){if(!r(e))return e;var n,o;if(t&amp;&amp;"function"==typeof(n=e.toString)&amp;&amp;!r(o=n.call(e)))return o;if("function"==typeof(n=e.valueOf)&amp;&amp;!r(o=n.call(e)))return o;if(!t&amp;&amp;"function"==typeof(n=e.toString)&amp;&amp;!r(o=n.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},b850:function(e,t,n){var r=n("a356"),o=Math.min;e.exports=function(e){return e&gt;0?o(r(e),9007199254740991):0}},bade:function(e,t,n){var r=n("e452"),o=Function.toString;"function"!=typeof r.inspectSource&amp;&amp;(r.inspectSource=function(e){return o.call(e)}),e.exports=r.inspectSource},c1fd:function(e){e.exports=JSON.parse('["/::)","/::~","/::B","/::|","/:8-)","/::&lt;","/::$","/::X","/::Z","/::\'(","/::-|","/::@","/::P","/::D","/::O","/::(","[Blush]","/::Q","/::T","/:,@P","/:,@-D","/::d","/:,@o","/:|-)","/::!","/::&gt;","/::,@","/::-S","/:?","/:,@x","/:,@@","/:,@!","/:!!!","/:xx","[Bye]","/:wipe","/:dig","/:handclap","/:B-)","/:@&gt;","/:&gt;-|","/:P-(","/::\'|","/:X-)","/::*","/:8*","[Happy]","[Sick]","[Flushed]","[Lol]","[Terror]","[LetDown]","[Duh]","[Hey]","[Facepalm]","[Smirk]","[Smart]","[Concerned]","[Yeah!]","[Onlooker]","[GoForIt]","[Sweats]","[OMG]","[Emm]","[Respect]","[Doge]","[NoProb]","[MyBad]","[Wow]","[Boring]","[666]","[LetMeSee]","[Sigh]","[Hurt]","[Broken]","/:showlove","/:heart","/:break","/:hug","/:strong","/:weak","/:share","/:v","[Salute]","/:jj","/:@@","/:ok","[Worship]","/:beer","/:coffee","/:cake","/:rose","/:fade","/:pd","/:bome","/:shit","/:moon","/:sun","[Party]","[Gift]","[Packet]","[Rich]","[Blessing]","[Fireworks]","[Firecracker]","/:pig","/:jump","/:shake","/:circle"]')},c388:function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},c3b1:function(e,t,n){var r,o=n("8325"),i=n("8ae9"),s=n("5445"),a=n("b027"),c=n("1283"),u=n("ef87"),p=n("9cf3"),f="&gt;",l="&lt;",h="prototype",d="script",y=p("IE_PROTO"),g=function(){},x=function(e){return l+d+f+e+l+"/"+d+f},m=function(e){e.write(x("")),e.close();var t=e.parentWindow.Object;return e=null,t},w=function(){var e,t=u("iframe"),n="java"+d+":";return t.style.display="none",c.appendChild(t),t.src=String(n),e=t.contentWindow.document,e.open(),e.write(x("document.F=Object")),e.close(),e.F},_=function(){try{r=document.domain&amp;&amp;new ActiveXObject("htmlfile")}catch(t){}_=r?m(r):w();var e=s.length;while(e--)delete _[h][s[e]];return _()};a[y]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(g[h]=o(e),n=new g,g[h]=null,n[y]=e):n=_(),void 0===t?n:i(n,t)}},c6b1:function(e,t,n){"use strict";var r=n("8325");e.exports=function(){var e=r(this),t="";return e.global&amp;&amp;(t+="g"),e.ignoreCase&amp;&amp;(t+="i"),e.multiline&amp;&amp;(t+="m"),e.dotAll&amp;&amp;(t+="s"),e.unicode&amp;&amp;(t+="u"),e.sticky&amp;&amp;(t+="y"),t}},c724:function(e,t,n){var r=n("2673"),o=n("bade"),i=r.WeakMap;e.exports="function"===typeof i&amp;&amp;/native code/.test(o(i))},c942:function(e,t){function n(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}e.exports=n,e.exports["default"]=e.exports,e.exports.__esModule=!0},cb59:function(e,t,n){var r=n("3aa2"),o=n("608b"),i=n("8325"),s=n("b70b"),a=Object.defineProperty;t.f=r?a:function(e,t,n){if(i(e),t=s(t,!0),i(n),o)try{return a(e,t,n)}catch(r){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&amp;&amp;(e[t]=n.value),e}},cfd8:function(e,t){e.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},d360:function(e,t,n){var r=n("3eeb");e.exports=Array.isArray||function(e){return"Array"==r(e)}},d939:function(e,t,n){"use strict";var r=n("ad7a"),o=n("3aa2"),i=n("2673"),s=n("c388"),a=n("dc54"),c=n("cb59").f,u=n("08a5"),p=i.Symbol;if(o&amp;&amp;"function"==typeof p&amp;&amp;(!("description"in p.prototype)||void 0!==p().description)){var f={},l=function(){var e=arguments.length&lt;1||void 0===arguments[0]?void 0:String(arguments[0]),t=this instanceof l?new p(e):void 0===e?p():p(e);return""===e&amp;&amp;(f[t]=!0),t};u(l,p);var h=l.prototype=p.prototype;h.constructor=l;var d=h.toString,y="Symbol(test)"==String(p("test")),g=/^Symbol\((.*)\)[^)]+$/;c(h,"description",{configurable:!0,get:function(){var e=a(this)?this.valueOf():this,t=d.call(e);if(s(f,e))return"";var n=y?t.slice(7,-1):t.replace(g,"$1");return""===n?void 0:n}}),r({global:!0,forced:!0},{Symbol:l})}},da9f:function(e,t){e.exports=function(e){try{return!!e()}catch(t){return!0}}},db5b:function(e,t,n){var r=n("3e0d");e.exports=function(e){return Object(r(e))}},dbca:function(e,t){e.exports=function(e,t){return{enumerable:!(1&amp;e),configurable:!(2&amp;e),writable:!(4&amp;e),value:t}}},dc54:function(e,t){e.exports=function(e){return"object"===typeof e?null!==e:"function"===typeof e}},e055:function(e,t,n){"use strict";var r=n("3f05").IteratorPrototype,o=n("c3b1"),i=n("dbca"),s=n("5ce8"),a=n("5a20"),c=function(){return this};e.exports=function(e,t,n){var u=t+" Iterator";return e.prototype=o(r,{next:i(1,n)}),s(e,u,!1,!0),a[u]=c,e}},e425:function(e,t,n){var r=n("8325");e.exports=function(e){var t=e["return"];if(void 0!==t)return r(t.call(e)).value}},e452:function(e,t,n){var r=n("2673"),o=n("79ec"),i="__core-js_shared__",s=r[i]||o(i,{});e.exports=s},e63e:function(e,t,n){var r=n("2673");e.exports=r},ee23:function(e,t,n){var r,o,i,s=n("c724"),a=n("2673"),c=n("dc54"),u=n("8fdb"),p=n("c388"),f=n("e452"),l=n("9cf3"),h=n("b027"),d=a.WeakMap,y=function(e){return i(e)?o(e):r(e,{})},g=function(e){return function(t){var n;if(!c(t)||(n=o(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}};if(s){var x=f.state||(f.state=new d),m=x.get,w=x.has,_=x.set;r=function(e,t){return t.facade=e,_.call(x,e,t),t},o=function(e){return m.call(x,e)||{}},i=function(e){return w.call(x,e)}}else{var v=l("state");h[v]=!0,r=function(e,t){return t.facade=e,u(e,v,t),t},o=function(e){return p(e,v)?e[v]:{}},i=function(e){return p(e,v)}}e.exports={set:r,get:o,has:i,enforce:y,getterFor:g}},ef21:function(e,t,n){var r=n("2673"),o=n("2b64"),i=n("c388"),s=n("a707"),a=n("6736"),c=n("a79f"),u=o("wks"),p=r.Symbol,f=c?p:p&amp;&amp;p.withoutSetter||s;e.exports=function(e){return i(u,e)&amp;&amp;(a||"string"==typeof u[e])||(a&amp;&amp;i(p,e)?u[e]=p[e]:u[e]=f("Symbol."+e)),u[e]}},ef87:function(e,t,n){var r=n("2673"),o=n("dc54"),i=r.document,s=o(i)&amp;&amp;o(i.createElement);e.exports=function(e){return s?i.createElement(e):{}}},f2e0:function(e,t,n){"use strict";var r=n("ad7a"),o=n("3604"),i=n("25e1"),s=n("1425"),a=[].join,c=o!=Object,u=s("join",",");r({target:"Array",proto:!0,forced:c||!u},{join:function(e){return a.call(i(this),void 0===e?",":e)}})},f3d1:function(e,t,n){var r=n("ef21"),o=n("5a20"),i=r("iterator"),s=Array.prototype;e.exports=function(e){return void 0!==e&amp;&amp;(o.Array===e||s[i]===e)}},f4db:function(e,t,n){var r=n("7a92"),o=n("5445");e.exports=Object.keys||function(e){return r(e,o)}},f601:function(e,t,n){var r=n("90d9").default;n("4d0b"),n("565a");var o=n("8c94"),i=n("c1fd"),s=["key","old","cn","qq","en","tw","th","emoji"],a=o.map((function(e){return r({},e)})),c=a.reduce((function(e,t,n){var o=r({},e);return s.forEach((function(e){t[e]&amp;&amp;!o[t[e]]&amp;&amp;(o[t[e]]={index:n})})),o}),{}),u=i.map((function(e){return a[c[e].index]}));t.EmojiData=a,t.EmojiPanelData=u,t.EmojiDataMap=c,e.exports={EmojiData:a,EmojiPanelData:u,EmojiDataMap:c}},f84d:function(e,t,n){},f8b5:function(e,t,n){var r=n("3d32");e.exports=r("navigator","userAgent")||""},fb71:function(e,t,n){var r=n("3eeb"),o=n("2673");e.exports="process"==r(o.process)},fe45:function(e,t){e.exports=!1},fe46:function(e,t,n){var r=n("2673"),o=n("cfd8"),i=n("9904"),s=n("8fdb"),a=n("ef21"),c=a("iterator"),u=a("toStringTag"),p=i.values;for(var f in o){var l=r[f],h=l&amp;&amp;l.prototype;if(h){if(h[c]!==p)try{s(h,c,p)}catch(y){h[c]=p}if(h[u]||s(h,u,f),o[f])for(var d in i)if(h[d]!==i[d])try{s(h,d,i[d])}catch(y){h[d]=i[d]}}}},ff86:function(e,t,n){"use strict";var r=n("da9f");function o(e,t){return RegExp(e,t)}t.UNSUPPORTED_Y=r((function(){var e=o("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),t.BROKEN_CARET=r((function(){var e=o("^r","gy");return e.lastIndex=2,null!=e.exec("str")}))}})["default"]}));
             &lt;/script&gt;
             &lt;script h5only="" nonce="579543733" reportloaderror="" type="text/javascript"&gt;
              !function(t,e){"object"==typeof exports&amp;&amp;"object"==typeof module?module.exports=e():"function"==typeof define&amp;&amp;define.amd?define("Darkmode",[],e):"object"==typeof exports?exports.Darkmode=e():t.Darkmode=e()}(self,()=&gt;(()=&gt;{var t={31(t){"use strict";t.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},40(t,e,r){var n=r(31),o={};for(var a in n)n.hasOwnProperty(a)&amp;&amp;(o[n[a]]=a);var i=t.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var l in i)if(i.hasOwnProperty(l)){if(!("channels"in i[l]))throw new Error("missing channels property: "+l);if(!("labels"in i[l]))throw new Error("missing channel labels property: "+l);if(i[l].labels.length!==i[l].channels)throw new Error("channel and label counts mismatch: "+l);var u=i[l].channels,s=i[l].labels;delete i[l].channels,delete i[l].labels,Object.defineProperty(i[l],"channels",{value:u}),Object.defineProperty(i[l],"labels",{value:s})}function c(t,e){return Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2)+Math.pow(t[2]-e[2],2)}i.rgb.hsl=function(t){var e,r,n=t[0]/255,o=t[1]/255,a=t[2]/255,i=Math.min(n,o,a),l=Math.max(n,o,a),u=l-i;return l===i?e=0:n===l?e=(o-a)/u:o===l?e=2+(a-n)/u:a===l&amp;&amp;(e=4+(n-o)/u),(e=Math.min(60*e,360))&lt;0&amp;&amp;(e+=360),r=(i+l)/2,[e,100*(l===i?0:r&lt;=.5?u/(l+i):u/(2-l-i)),100*r]},i.rgb.hsv=function(t){var e,r,n,o,a,i=t[0]/255,l=t[1]/255,u=t[2]/255,s=Math.max(i,l,u),c=s-Math.min(i,l,u),h=function(t){return(s-t)/6/c+.5};return 0===c?o=a=0:(a=c/s,e=h(i),r=h(l),n=h(u),i===s?o=n-r:l===s?o=1/3+e-n:u===s&amp;&amp;(o=2/3+r-e),o&lt;0?o+=1:o&gt;1&amp;&amp;(o-=1)),[360*o,100*a,100*s]},i.rgb.hwb=function(t){var e=t[0],r=t[1],n=t[2];return[i.rgb.hsl(t)[0],1/255*Math.min(e,Math.min(r,n))*100,100*(n=1-1/255*Math.max(e,Math.max(r,n)))]},i.rgb.cmyk=function(t){var e,r=t[0]/255,n=t[1]/255,o=t[2]/255;return[100*((1-r-(e=Math.min(1-r,1-n,1-o)))/(1-e)||0),100*((1-n-e)/(1-e)||0),100*((1-o-e)/(1-e)||0),100*e]},i.rgb.keyword=function(t){var e=o[t];if(e)return e;var r,a=1/0;for(var i in n)if(n.hasOwnProperty(i)){var l=c(t,n[i]);l&lt;a&amp;&amp;(a=l,r=i)}return r},i.keyword.rgb=function(t){return n[t]},i.rgb.xyz=function(t){var e=t[0]/255,r=t[1]/255,n=t[2]/255;return[100*(.4124*(e=e&gt;.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(r=r&gt;.04045?Math.pow((r+.055)/1.055,2.4):r/12.92)+.1805*(n=n&gt;.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)),100*(.2126*e+.7152*r+.0722*n),100*(.0193*e+.1192*r+.9505*n)]},i.rgb.lab=function(t){var e=i.rgb.xyz(t),r=e[0],n=e[1],o=e[2];return n/=100,o/=108.883,r=(r/=95.047)&gt;.008856?Math.pow(r,1/3):7.787*r+16/116,[116*(n=n&gt;.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(r-n),200*(n-(o=o&gt;.008856?Math.pow(o,1/3):7.787*o+16/116))]},i.hsl.rgb=function(t){var e,r,n,o,a,i=t[0]/360,l=t[1]/100,u=t[2]/100;if(0===l)return[a=255*u,a,a];e=2*u-(r=u&lt;.5?u*(1+l):u+l-u*l),o=[0,0,0];for(var s=0;s&lt;3;s++)(n=i+1/3*-(s-1))&lt;0&amp;&amp;n++,n&gt;1&amp;&amp;n--,a=6*n&lt;1?e+6*(r-e)*n:2*n&lt;1?r:3*n&lt;2?e+(r-e)*(2/3-n)*6:e,o[s]=255*a;return o},i.hsl.hsv=function(t){var e=t[0],r=t[1]/100,n=t[2]/100,o=r,a=Math.max(n,.01);return r*=(n*=2)&lt;=1?n:2-n,o*=a&lt;=1?a:2-a,[e,100*(0===n?2*o/(a+o):2*r/(n+r)),(n+r)/2*100]},i.hsv.rgb=function(t){var e=t[0]/60,r=t[1]/100,n=t[2]/100,o=Math.floor(e)%6,a=e-Math.floor(e),i=255*n*(1-r),l=255*n*(1-r*a),u=255*n*(1-r*(1-a));switch(n*=255,o){case 0:return[n,u,i];case 1:return[l,n,i];case 2:return[i,n,u];case 3:return[i,l,n];case 4:return[u,i,n];case 5:return[n,i,l]}},i.hsv.hsl=function(t){var e,r,n,o=t[0],a=t[1]/100,i=t[2]/100,l=Math.max(i,.01);return n=(2-a)*i,r=a*l,[o,100*(r=(r/=(e=(2-a)*l)&lt;=1?e:2-e)||0),100*(n/=2)]},i.hwb.rgb=function(t){var e,r,n,o,a,i,l,u=t[0]/360,s=t[1]/100,c=t[2]/100,h=s+c;switch(h&gt;1&amp;&amp;(s/=h,c/=h),n=6*u-(e=Math.floor(6*u)),1&amp;e&amp;&amp;(n=1-n),o=s+n*((r=1-c)-s),e){default:case 6:case 0:a=r,i=o,l=s;break;case 1:a=o,i=r,l=s;break;case 2:a=s,i=r,l=o;break;case 3:a=s,i=o,l=r;break;case 4:a=o,i=s,l=r;break;case 5:a=r,i=s,l=o}return[255*a,255*i,255*l]},i.cmyk.rgb=function(t){var e=t[0]/100,r=t[1]/100,n=t[2]/100,o=t[3]/100;return[255*(1-Math.min(1,e*(1-o)+o)),255*(1-Math.min(1,r*(1-o)+o)),255*(1-Math.min(1,n*(1-o)+o))]},i.xyz.rgb=function(t){var e,r,n,o=t[0]/100,a=t[1]/100,i=t[2]/100;return r=-.9689*o+1.8758*a+.0415*i,n=.0557*o+-.204*a+1.057*i,e=(e=3.2406*o+-1.5372*a+-.4986*i)&gt;.0031308?1.055*Math.pow(e,1/2.4)-.055:12.92*e,r=r&gt;.0031308?1.055*Math.pow(r,1/2.4)-.055:12.92*r,n=n&gt;.0031308?1.055*Math.pow(n,1/2.4)-.055:12.92*n,[255*(e=Math.min(Math.max(0,e),1)),255*(r=Math.min(Math.max(0,r),1)),255*(n=Math.min(Math.max(0,n),1))]},i.xyz.lab=function(t){var e=t[0],r=t[1],n=t[2];return r/=100,n/=108.883,e=(e/=95.047)&gt;.008856?Math.pow(e,1/3):7.787*e+16/116,[116*(r=r&gt;.008856?Math.pow(r,1/3):7.787*r+16/116)-16,500*(e-r),200*(r-(n=n&gt;.008856?Math.pow(n,1/3):7.787*n+16/116))]},i.lab.xyz=function(t){var e,r,n,o=t[0];e=t[1]/500+(r=(o+16)/116),n=r-t[2]/200;var a=Math.pow(r,3),i=Math.pow(e,3),l=Math.pow(n,3);return r=a&gt;.008856?a:(r-16/116)/7.787,e=i&gt;.008856?i:(e-16/116)/7.787,n=l&gt;.008856?l:(n-16/116)/7.787,[e*=95.047,r*=100,n*=108.883]},i.lab.lch=function(t){var e,r=t[0],n=t[1],o=t[2];return(e=360*Math.atan2(o,n)/2/Math.PI)&lt;0&amp;&amp;(e+=360),[r,Math.sqrt(n*n+o*o),e]},i.lch.lab=function(t){var e,r=t[0],n=t[1];return e=t[2]/360*2*Math.PI,[r,n*Math.cos(e),n*Math.sin(e)]},i.rgb.ansi16=function(t){var e=t[0],r=t[1],n=t[2],o=1 in arguments?arguments[1]:i.rgb.hsv(t)[2];if(0===(o=Math.round(o/50)))return 30;var a=30+(Math.round(n/255)&lt;&lt;2|Math.round(r/255)&lt;&lt;1|Math.round(e/255));return 2===o&amp;&amp;(a+=60),a},i.hsv.ansi16=function(t){return i.rgb.ansi16(i.hsv.rgb(t),t[2])},i.rgb.ansi256=function(t){var e=t[0],r=t[1],n=t[2];return e===r&amp;&amp;r===n?e&lt;8?16:e&gt;248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(n/255*5)},i.ansi16.rgb=function(t){var e=t%10;if(0===e||7===e)return t&gt;50&amp;&amp;(e+=3.5),[e=e/10.5*255,e,e];var r=.5*(1+~~(t&gt;50));return[(1&amp;e)*r*255,(e&gt;&gt;1&amp;1)*r*255,(e&gt;&gt;2&amp;1)*r*255]},i.ansi256.rgb=function(t){if(t&gt;=232){var e=10*(t-232)+8;return[e,e,e]}var r;return t-=16,[Math.floor(t/36)/5*255,Math.floor((r=t%36)/6)/5*255,r%6/5*255]},i.rgb.hex=function(t){var e=(((255&amp;Math.round(t[0]))&lt;&lt;16)+((255&amp;Math.round(t[1]))&lt;&lt;8)+(255&amp;Math.round(t[2]))).toString(16).toUpperCase();return"000000".substring(e.length)+e},i.hex.rgb=function(t){var e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];var r=e[0];3===e[0].length&amp;&amp;(r=r.split("").map(function(t){return t+t}).join(""));var n=parseInt(r,16);return[n&gt;&gt;16&amp;255,n&gt;&gt;8&amp;255,255&amp;n]},i.rgb.hcg=function(t){var e,r=t[0]/255,n=t[1]/255,o=t[2]/255,a=Math.max(Math.max(r,n),o),i=Math.min(Math.min(r,n),o),l=a-i;return e=l&lt;=0?0:a===r?(n-o)/l%6:a===n?2+(o-r)/l:4+(r-n)/l+4,e/=6,[360*(e%=1),100*l,100*(l&lt;1?i/(1-l):0)]},i.hsl.hcg=function(t){var e,r=t[1]/100,n=t[2]/100,o=0;return(e=n&lt;.5?2*r*n:2*r*(1-n))&lt;1&amp;&amp;(o=(n-.5*e)/(1-e)),[t[0],100*e,100*o]},i.hsv.hcg=function(t){var e=t[1]/100,r=t[2]/100,n=e*r,o=0;return n&lt;1&amp;&amp;(o=(r-n)/(1-n)),[t[0],100*n,100*o]},i.hcg.rgb=function(t){var e=t[0]/360,r=t[1]/100,n=t[2]/100;if(0===r)return[255*n,255*n,255*n];var o,a=[0,0,0],i=e%1*6,l=i%1,u=1-l;switch(Math.floor(i)){case 0:a[0]=1,a[1]=l,a[2]=0;break;case 1:a[0]=u,a[1]=1,a[2]=0;break;case 2:a[0]=0,a[1]=1,a[2]=l;break;case 3:a[0]=0,a[1]=u,a[2]=1;break;case 4:a[0]=l,a[1]=0,a[2]=1;break;default:a[0]=1,a[1]=0,a[2]=u}return o=(1-r)*n,[255*(r*a[0]+o),255*(r*a[1]+o),255*(r*a[2]+o)]},i.hcg.hsv=function(t){var e=t[1]/100,r=e+t[2]/100*(1-e),n=0;return r&gt;0&amp;&amp;(n=e/r),[t[0],100*n,100*r]},i.hcg.hsl=function(t){var e=t[1]/100,r=t[2]/100*(1-e)+.5*e,n=0;return r&gt;0&amp;&amp;r&lt;.5?n=e/(2*r):r&gt;=.5&amp;&amp;r&lt;1&amp;&amp;(n=e/(2*(1-r))),[t[0],100*n,100*r]},i.hcg.hwb=function(t){var e=t[1]/100,r=e+t[2]/100*(1-e);return[t[0],100*(r-e),100*(1-r)]},i.hwb.hcg=function(t){var e=t[1]/100,r=1-t[2]/100,n=r-e,o=0;return n&lt;1&amp;&amp;(o=(r-n)/(1-n)),[t[0],100*n,100*o]},i.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]},i.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]},i.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]},i.gray.hsl=i.gray.hsv=function(t){return[0,0,t[0]]},i.gray.hwb=function(t){return[0,100,t[0]]},i.gray.cmyk=function(t){return[0,0,0,t[0]]},i.gray.lab=function(t){return[t[0],0,0]},i.gray.hex=function(t){var e=255&amp;Math.round(t[0]/100*255),r=((e&lt;&lt;16)+(e&lt;&lt;8)+e).toString(16).toUpperCase();return"000000".substring(r.length)+r},i.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}},156(t){"use strict";t.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},195(t){t.exports=function(t){return!(!t||"string"==typeof t)&amp;&amp;(t instanceof Array||Array.isArray(t)||t.length&gt;=0&amp;&amp;(t.splice instanceof Function||Object.getOwnPropertyDescriptor(t,t.length-1)&amp;&amp;"String"!==t.constructor.name))}},507(t,e,r){var n=r(40);function o(t,e){return function(r){return e(t(r))}}function a(t,e){for(var r=[e[t].parent,t],a=n[e[t].parent][t],i=e[t].parent;e[i].parent;)r.unshift(e[i].parent),a=o(n[e[i].parent][i],a),i=e[i].parent;return a.conversion=r,a}t.exports=function(t){for(var e=function(t){var e=function(){for(var t={},e=Object.keys(n),r=e.length,o=0;o&lt;r;o++)t[e[o]]={distance:-1,parent:null};return t}(),r=[t];for(e[t].distance=0;r.length;)for(var o=r.pop(),a=Object.keys(n[o]),i=a.length,l=0;l&lt;i;l++){var u=a[l],s=e[u];-1===s.distance&amp;&amp;(s.distance=e[o].distance+1,s.parent=o,r.unshift(u))}return e}(t),r={},o=Object.keys(e),i=o.length,l=0;l&lt;i;l++){var u=o[l];null!==e[u].parent&amp;&amp;(r[u]=a(u,e))}return r}},520(t,e,r){"use strict";var n=r(854),o=r(734),a=[].slice,i=["keyword","gray","hex"],l={};Object.keys(o).forEach(function(t){l[a.call(o[t].labels).sort().join("")]=t});var u={};function s(t,e){if(!(this instanceof s))return new s(t,e);if(e&amp;&amp;e in i&amp;&amp;(e=null),e&amp;&amp;!(e in o))throw new Error("Unknown model: "+e);var r,c;if(null==t)this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(t instanceof s)this.model=t.model,this.color=t.color.slice(),this.valpha=t.valpha;else if("string"==typeof t){var h=n.get(t);if(null===h)throw new Error("Unable to parse color from string: "+t);this.model=h.model,c=o[this.model].channels,this.color=h.value.slice(0,c),this.valpha="number"==typeof h.value[c]?h.value[c]:1}else if(t.length){this.model=e||"rgb",c=o[this.model].channels;var g=a.call(t,0,c);this.color=f(g,c),this.valpha="number"==typeof t[c]?t[c]:1}else if("number"==typeof t)t&amp;=16777215,this.model="rgb",this.color=[t&gt;&gt;16&amp;255,t&gt;&gt;8&amp;255,255&amp;t],this.valpha=1;else{this.valpha=1;var d=Object.keys(t);"alpha"in t&amp;&amp;(d.splice(d.indexOf("alpha"),1),this.valpha="number"==typeof t.alpha?t.alpha:0);var b=d.sort().join("");if(!(b in l))throw new Error("Unable to parse color from object: "+JSON.stringify(t));this.model=l[b];var y=o[this.model].labels,p=[];for(r=0;r&lt;y.length;r++)p.push(t[y[r]]);this.color=f(p)}if(u[this.model])for(c=o[this.model].channels,r=0;r&lt;c;r++){var m=u[this.model][r];m&amp;&amp;(this.color[r]=m(this.color[r]))}this.valpha=Math.max(0,Math.min(1,this.valpha)),Object.freeze&amp;&amp;Object.freeze(this)}function c(t,e,r){return(t=Array.isArray(t)?t:[t]).forEach(function(t){(u[t]||(u[t]=[]))[e]=r}),t=t[0],function(n){var o;return arguments.length?(r&amp;&amp;(n=r(n)),(o=this[t]()).color[e]=n,o):(o=this[t]().color[e],r&amp;&amp;(o=r(o)),o)}}function h(t){return function(e){return Math.max(0,Math.min(t,e))}}function f(t,e){for(var r=0;r&lt;e;r++)"number"!=typeof t[r]&amp;&amp;(t[r]=0);return t}s.prototype={toString:function(){return this.string()},toJSON:function(){return this[this.model]()},string:function(t){var e=this.model in n.to?this:this.rgb(),r=1===(e=e.round("number"==typeof t?t:1)).valpha?e.color:e.color.concat(this.valpha);return n.to[e.model](r)},percentString:function(t){var e=this.rgb().round("number"==typeof t?t:1),r=1===e.valpha?e.color:e.color.concat(this.valpha);return n.to.rgb.percent(r)},array:function(){return 1===this.valpha?this.color.slice():this.color.concat(this.valpha)},object:function(){for(var t={},e=o[this.model].channels,r=o[this.model].labels,n=0;n&lt;e;n++)t[r[n]]=this.color[n];return 1!==this.valpha&amp;&amp;(t.alpha=this.valpha),t},unitArray:function(){var t=this.rgb().color;return t[0]/=255,t[1]/=255,t[2]/=255,1!==this.valpha&amp;&amp;t.push(this.valpha),t},unitObject:function(){var t=this.rgb().object();return t.r/=255,t.g/=255,t.b/=255,1!==this.valpha&amp;&amp;(t.alpha=this.valpha),t},round:function(t){return t=Math.max(t||0,0),new s(this.color.map(function(t){return function(e){return function(t,e){return Number(t.toFixed(e))}(e,t)}}(t)).concat(this.valpha),this.model)},alpha:function(t){return arguments.length?new s(this.color.concat(Math.max(0,Math.min(1,t))),this.model):this.valpha},red:c("rgb",0,h(255)),green:c("rgb",1,h(255)),blue:c("rgb",2,h(255)),hue:c(["hsl","hsv","hsl","hwb","hcg"],0,function(t){return(t%360+360)%360}),saturationl:c("hsl",1,h(100)),lightness:c("hsl",2,h(100)),saturationv:c("hsv",1,h(100)),value:c("hsv",2,h(100)),chroma:c("hcg",1,h(100)),gray:c("hcg",2,h(100)),white:c("hwb",1,h(100)),wblack:c("hwb",2,h(100)),cyan:c("cmyk",0,h(100)),magenta:c("cmyk",1,h(100)),yellow:c("cmyk",2,h(100)),black:c("cmyk",3,h(100)),x:c("xyz",0,h(100)),y:c("xyz",1,h(100)),z:c("xyz",2,h(100)),l:c("lab",0,h(100)),a:c("lab",1),b:c("lab",2),keyword:function(t){return arguments.length?new s(t):o[this.model].keyword(this.color)},hex:function(t){return arguments.length?new s(t):n.to.hex(this.rgb().round().color)},rgbNumber:function(){var t=this.rgb().color;return(255&amp;t[0])&lt;&lt;16|(255&amp;t[1])&lt;&lt;8|255&amp;t[2]},luminosity:function(){for(var t=this.rgb().color,e=[],r=0;r&lt;t.length;r++){var n=t[r]/255;e[r]=n&lt;=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4)}return.2126*e[0]+.7152*e[1]+.0722*e[2]},contrast:function(t){var e=this.luminosity(),r=t.luminosity();return e&gt;r?(e+.05)/(r+.05):(r+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e&gt;=7.1?"AAA":e&gt;=4.5?"AA":""},isDark:function(){var t=this.rgb().color;return(299*t[0]+587*t[1]+114*t[2])/1e3&lt;128},isLight:function(){return!this.isDark()},negate:function(){for(var t=this.rgb(),e=0;e&lt;3;e++)t.color[e]=255-t.color[e];return t},lighten:function(t){var e=this.hsl();return e.color[2]+=e.color[2]*t,e},darken:function(t){var e=this.hsl();return e.color[2]-=e.color[2]*t,e},saturate:function(t){var e=this.hsl();return e.color[1]+=e.color[1]*t,e},desaturate:function(t){var e=this.hsl();return e.color[1]-=e.color[1]*t,e},whiten:function(t){var e=this.hwb();return e.color[1]+=e.color[1]*t,e},blacken:function(t){var e=this.hwb();return e.color[2]+=e.color[2]*t,e},grayscale:function(){var t=this.rgb().color,e=.3*t[0]+.59*t[1]+.11*t[2];return s.rgb(e,e,e)},fade:function(t){return this.alpha(this.valpha-this.valpha*t)},opaquer:function(t){return this.alpha(this.valpha+this.valpha*t)},rotate:function(t){var e=this.hsl(),r=e.color[0];return r=(r=(r+t)%360)&lt;0?360+r:r,e.color[0]=r,e},mix:function(t,e){if(!t||!t.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof t);var r=t.rgb(),n=this.rgb(),o=void 0===e?.5:e,a=2*o-1,i=r.alpha()-n.alpha(),l=((a*i===-1?a:(a+i)/(1+a*i))+1)/2,u=1-l;return s.rgb(l*r.red()+u*n.red(),l*r.green()+u*n.green(),l*r.blue()+u*n.blue(),r.alpha()*o+n.alpha()*(1-o))}},Object.keys(o).forEach(function(t){if(-1===i.indexOf(t)){var e=o[t].channels;s.prototype[t]=function(){if(this.model===t)return new s(this);if(arguments.length)return new s(arguments,t);var r,n="number"==typeof arguments[e]?e:this.valpha;return new s((r=o[this.model][t].raw(this.color),Array.isArray(r)?r:[r]).concat(n),t)},s[t]=function(r){return"number"==typeof r&amp;&amp;(r=f(a.call(arguments),e)),new s(r,t)}}}),t.exports=s},734(t,e,r){var n=r(40),o=r(507),a={};Object.keys(n).forEach(function(t){a[t]={},Object.defineProperty(a[t],"channels",{value:n[t].channels}),Object.defineProperty(a[t],"labels",{value:n[t].labels});var e=o(t);Object.keys(e).forEach(function(r){var n=e[r];a[t][r]=function(t){var e=function(e){if(null==e)return e;arguments.length&gt;1&amp;&amp;(e=Array.prototype.slice.call(arguments));var r=t(e);if("object"==typeof r)for(var n=r.length,o=0;o&lt;n;o++)r[o]=Math.round(r[o]);return r};return"conversion"in t&amp;&amp;(e.conversion=t.conversion),e}(n),a[t][r].raw=function(t){var e=function(e){return null==e?e:(arguments.length&gt;1&amp;&amp;(e=Array.prototype.slice.call(arguments)),t(e))};return"conversion"in t&amp;&amp;(e.conversion=t.conversion),e}(n)})}),t.exports=a},854(t,e,r){var n=r(156),o=r(872),a=Object.hasOwnProperty,i=Object.create(null);for(var l in n)a.call(n,l)&amp;&amp;(i[n[l]]=l);var u=t.exports={to:{},get:{}};function s(t,e,r){return Math.min(Math.max(e,t),r)}function c(t){var e=Math.round(t).toString(16).toUpperCase();return e.length&lt;2?"0"+e:e}u.get=function(t){var e,r;switch(t.substring(0,3).toLowerCase()){case"hsl":e=u.get.hsl(t),r="hsl";break;case"hwb":e=u.get.hwb(t),r="hwb";break;default:e=u.get.rgb(t),r="rgb"}return e?{model:r,value:e}:null},u.get.rgb=function(t){if(!t)return null;var e,r,o,i=[0,0,0,1];if(e=t.match(/^#([a-f0-9]{6})([a-f0-9]{2})?$/i)){for(o=e[2],e=e[1],r=0;r&lt;3;r++){var l=2*r;i[r]=parseInt(e.slice(l,l+2),16)}o&amp;&amp;(i[3]=parseInt(o,16)/255)}else if(e=t.match(/^#([a-f0-9]{3,4})$/i)){for(o=(e=e[1])[3],r=0;r&lt;3;r++)i[r]=parseInt(e[r]+e[r],16);o&amp;&amp;(i[3]=parseInt(o+o,16)/255)}else if(e=t.match(/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)){for(r=0;r&lt;3;r++)i[r]=parseInt(e[r+1],0);e[4]&amp;&amp;(e[5]?i[3]=.01*parseFloat(e[4]):i[3]=parseFloat(e[4]))}else{if(!(e=t.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)))return(e=t.match(/^(\w+)$/))?"transparent"===e[1]?[0,0,0,0]:a.call(n,e[1])?((i=n[e[1]])[3]=1,i):null:null;for(r=0;r&lt;3;r++)i[r]=Math.round(2.55*parseFloat(e[r+1]));e[4]&amp;&amp;(e[5]?i[3]=.01*parseFloat(e[4]):i[3]=parseFloat(e[4]))}for(r=0;r&lt;3;r++)i[r]=s(i[r],0,255);return i[3]=s(i[3],0,1),i},u.get.hsl=function(t){if(!t)return null;var e=t.match(/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(e){var r=parseFloat(e[4]);return[(parseFloat(e[1])%360+360)%360,s(parseFloat(e[2]),0,100),s(parseFloat(e[3]),0,100),s(isNaN(r)?1:r,0,1)]}return null},u.get.hwb=function(t){if(!t)return null;var e=t.match(/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(e){var r=parseFloat(e[4]);return[(parseFloat(e[1])%360+360)%360,s(parseFloat(e[2]),0,100),s(parseFloat(e[3]),0,100),s(isNaN(r)?1:r,0,1)]}return null},u.to.hex=function(){var t=o(arguments);return"#"+c(t[0])+c(t[1])+c(t[2])+(t[3]&lt;1?c(Math.round(255*t[3])):"")},u.to.rgb=function(){var t=o(arguments);return t.length&lt;4||1===t[3]?"rgb("+Math.round(t[0])+", "+Math.round(t[1])+", "+Math.round(t[2])+")":"rgba("+Math.round(t[0])+", "+Math.round(t[1])+", "+Math.round(t[2])+", "+t[3]+")"},u.to.rgb.percent=function(){var t=o(arguments),e=Math.round(t[0]/255*100),r=Math.round(t[1]/255*100),n=Math.round(t[2]/255*100);return t.length&lt;4||1===t[3]?"rgb("+e+"%, "+r+"%, "+n+"%)":"rgba("+e+"%, "+r+"%, "+n+"%, "+t[3]+")"},u.to.hsl=function(){var t=o(arguments);return t.length&lt;4||1===t[3]?"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)":"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+t[3]+")"},u.to.hwb=function(){var t=o(arguments),e="";return t.length&gt;=4&amp;&amp;1!==t[3]&amp;&amp;(e=", "+t[3]),"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+e+")"},u.to.keyword=function(t){return i[t.slice(0,3)]}},872(t,e,r){"use strict";var n=r(195),o=Array.prototype.concat,a=Array.prototype.slice,i=t.exports=function(t){for(var e=[],r=0,i=t.length;r&lt;i;r++){var l=t[r];n(l)?e=o.call(e,a.call(l)):e.push(l)}return e};i.wrap=function(t){return function(){return t(i(arguments))}}}},e={};function r(n){var o=e[n];if(void 0!==o)return o.exports;var a=e[n]={exports:{}};return t[n](a,a.exports,r),a.exports}r.n=t=&gt;{var e=t&amp;&amp;t.__esModule?()=&gt;t.default:()=&gt;t;return r.d(e,{a:e}),e},r.d=(t,e)=&gt;{for(var n in e)r.o(e,n)&amp;&amp;!r.o(t,n)&amp;&amp;Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=&gt;Object.prototype.hasOwnProperty.call(t,e),r.r=t=&gt;{"undefined"!=typeof Symbol&amp;&amp;Symbol.toStringTag&amp;&amp;Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};return(()=&gt;{"use strict";r.r(n),r.d(n,{convertBg:()=&gt;Be,extend:()=&gt;De,getContrast:()=&gt;Ae,init:()=&gt;Ee,run:()=&gt;Pe,updateStyle:()=&gt;Te});var t={};r.r(t),r.d(t,{color:()=&gt;Yt,colorBurn:()=&gt;Ht,colorDodge:()=&gt;zt,darken:()=&gt;Vt,difference:()=&gt;Qt,exclusion:()=&gt;Gt,hardLight:()=&gt;Jt,hue:()=&gt;Wt,lighten:()=&gt;Kt,luminosity:()=&gt;Zt,multiply:()=&gt;qt,normal:()=&gt;It,overlay:()=&gt;$t,saturation:()=&gt;Xt,screen:()=&gt;Rt,softLight:()=&gt;Ut});var e="(prefers-color-scheme: dark)",o="js_darkmode__",a=new RegExp("".concat(o,"\\d+")),i="data_color_scheme_dark",l="".concat(1*new Date).concat(Math.round(10*Math.random())),u="data-darkmode-color-".concat(l),s="data-darkmode-bgcolor-".concat(l),c="data-darkmode-original-color-".concat(l),h="data-darkmode-original-bgcolor-".concat(l),f="data-darkmode-bgimage-".concat(l),g="data-darkmode-complementary-bgimagecolor-".concat(l),d="|",b=.05,y=window.getInnerHeight&amp;&amp;window.getInnerHeight()||window.innerHeight||document.documentElement.clientHeight,p={BG_COLOR:["background-color","background-image","background"],TEXT_SHADOW:["text-shadow"],TEXT_COLOR:["-webkit-text-stroke","-webkit-text-stroke-color","text-decoration","text-decoration-color","text-emphasis-color","color","-webkit-text-fill-color"],BORDER_COLOR:["border-image","-webkit-border-image","border","border-top","border-right","border-bottom","border-left","border-color","border-top-color","border-right-color","border-bottom-color","border-left-color","border-block-color","border-block-start-color","border-block-end-color","border-inline-color","border-inline-start-color","border-inline-end-color","outline","outline-color","box-shadow","column-rule","column-rule-color"]},m=Object.keys(p).map(function(t){return p[t].join("|")}).join("|").split("|"),v=["TABLE","TR","TD","TH"],w=/ !important$/,k=/&lt;\$#_SEMICOLON_#\$&gt;/g,x=/\brgba?\([^)]+\)/i,M=/\brgba?\([^)]+\)/gi;const C={hasInit:!1,begin:null,showFirstPage:null,error:null,mode:"",whitelist:{tagName:["MPCPS","IFRAME"],attribute:[]},needJudgeFirstPage:!0,delayBgJudge:!1,container:null,cssSelectorsPrefix:"",defaultLightTextColor:"#191919",defaultLightBgColor:"#fff",defaultDarkTextColor:"#a3a3a3",defaultDarkBgColor:"#191919",set:function(t,e,r){var n=e[r];switch(t){case"boolean":"boolean"==typeof n&amp;&amp;(this[r]=n);break;case"string":"string"==typeof n&amp;&amp;""!==n&amp;&amp;(this[r]=n);break;case"function":"function"==typeof n&amp;&amp;(this[r]=n);break;case"dom":n instanceof HTMLElement&amp;&amp;(this[r]=n)}}};function S(t,e,r){return(e=E(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function _(t){return _="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&amp;&amp;"function"==typeof Symbol&amp;&amp;t.constructor===Symbol&amp;&amp;t!==Symbol.prototype?"symbol":typeof t},_(t)}function O(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function j(t,e){for(var r=0;r&lt;e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&amp;&amp;(n.writable=!0),Object.defineProperty(t,E(n.key),n)}}function P(t,e,r){return e&amp;&amp;j(t.prototype,e),r&amp;&amp;j(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t}function E(t){var e=function(t){if("object"!=_(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=_(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==_(e)?e:e+""}var B=[],T=[],A=function(){return P(function t(){O(this,t)},[{key:"loopTimes",get:function(){return ve.loopTimes}},{key:"isDarkmode",get:function(){return Ce.isDarkmode}},{key:"addCss",value:function(t,e){(arguments.length&gt;2&amp;&amp;void 0!==arguments[2]&amp;&amp;!arguments[2]?T:B).push(xe.genCss(t,e.map(function(t){var e=t.key,r=t.value;return xe.genCssKV(e,r)}).join("")))}}])}(),D=function(){return P(function t(){O(this,t),S(this,"_plugins",[]),S(this,"length",0),S(this,"loopTimes",0),S(this,"firstPageStyle",""),S(this,"otherPageStyle",""),S(this,"firstPageStyleNoMQ",""),S(this,"otherPageStyleNoMQ","")},[{key:"extend",value:function(t){this._plugins.push(new(t(A))),this.length++}},{key:"emit",value:function(t){for(var e=arguments.length,r=new Array(e&gt;1?e-1:0),n=1;n&lt;e;n++)r[n-1]=arguments[n];this._plugins.forEach(function(e){"function"==typeof e[t]&amp;&amp;e[t].apply(e,r)})}},{key:"addCss",value:function(t){t?(this.firstPageStyle+=B.join(""),this.firstPageStyleNoMQ+=T.join("")):(this.otherPageStyle+=B.join(""),this.otherPageStyleNoMQ+=T.join(""))}},{key:"resetCss",value:function(){B=[],T=[]}}])}();function F(t){return F="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&amp;&amp;"function"==typeof Symbol&amp;&amp;t.constructor===Symbol&amp;&amp;t!==Symbol.prototype?"symbol":typeof t},F(t)}function N(t,e){for(var r=0;r&lt;e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&amp;&amp;(n.writable=!0),Object.defineProperty(t,I(n.key),n)}}function L(t,e,r){return(e=I(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function I(t){var e=function(t){if("object"!=F(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=F(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==F(e)?e:e+""}var q=function(){return function(t,e){return e&amp;&amp;N(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}(function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),L(this,"_queue",[]),L(this,"_idx",0),this._prefix=e},[{key:"length",get:function(){return this._queue.length}},{key:"push",value:function(t){var e="".concat(this._prefix).concat(this._idx++);t.classList.add(e),this._queue.push({el:t,className:e,updated:!C.delayBgJudge})}},{key:"forEach",value:function(t){var e=[];for(this._queue.forEach(function(r,n){r.updated&amp;&amp;(e.unshift(n),F(t)&amp;&amp;t(r.el))});e.length;)this._queue.splice(e.shift(),1)}},{key:"update",value:function(t){this._queue.forEach(function(e){e.updated||Array.prototype.some.call(t,function(t){return!(1!==t.nodeType||!t.classList.contains(e.className)||(e.el=t,e.updated=!0,0))})})}}])}();function R(t){return R="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&amp;&amp;"function"==typeof Symbol&amp;&amp;t.constructor===Symbol&amp;&amp;t!==Symbol.prototype?"symbol":typeof t},R(t)}function $(t,e){for(var r=0;r&lt;e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&amp;&amp;(n.writable=!0),Object.defineProperty(t,K(n.key),n)}}function V(t,e,r){return(e=K(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function K(t){var e=function(t){if("object"!=R(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=R(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==R(e)?e:e+""}var z=function(){return function(t,e){return e&amp;&amp;$(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}(function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),V(this,"_stack",[]),V(this,"_idx",0),this._prefix=e,this.classNameReg=new RegExp("".concat(this._prefix,"\\d+"))},[{key:"push",value:function(t,e,r){var n="".concat(this._prefix).concat(this._idx++);t.classList.add(n),this._stack.unshift({elOld:t,el:t,className:n,cssKV:e,updated:!C.delayBgJudge,cb:r})}},{key:"contains",value:function(t,e){var r=t.getBoundingClientRect(),n=[];for(this._stack.forEach(function(t,e){if(t.updated){t.rect||(t.rect=t.el.getBoundingClientRect());var o=t.rect;r.top&gt;=o.bottom||r.bottom&lt;=o.top||r.left&gt;=o.right||r.right&lt;=o.left||n.unshift(e)}});n.length;){var o=n.shift(),a=this._stack.splice(o,1)[0];"function"==typeof e&amp;&amp;e(a)}}},{key:"update",value:function(t){this._stack.forEach(function(e){e.updated||Array.prototype.some.call(t,function(t){return!(1!==t.nodeType||!t.classList.contains(e.className)||(e.el=t,e.updated=!0,0))})})}}])}();function H(t){return H="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&amp;&amp;"function"==typeof Symbol&amp;&amp;t.constructor===Symbol&amp;&amp;t!==Symbol.prototype?"symbol":typeof t},H(t)}function J(t,e){(null==e||e&gt;t.length)&amp;&amp;(e=t.length);for(var r=0,n=Array(e);r&lt;e;r++)n[r]=t[r];return n}function U(t,e){for(var r=0;r&lt;e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&amp;&amp;(n.writable=!0),Object.defineProperty(t,G(n.key),n)}}function Q(t,e,r){return(e=G(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function G(t){var e=function(t){if("object"!=H(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=H(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==H(e)?e:e+""}var W=function(){return function(t,e){return e&amp;&amp;U(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}(function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),Q(this,"_firstPageStyle",""),Q(this,"_otherPageStyle",""),Q(this,"_watcher",{}),Q(this,"isFinish",!1)},[{key:"genCssKV",value:function(t,e){var r,n;return null===(r=(n=this._watcher)[t])||void 0===r||r.call(n),"".concat(t,": ").concat(e," !important;")}},{key:"genCss",value:function(t,e){return"".concat("dark"===C.mode?"html.".concat(i," "):"").concat(C.cssSelectorsPrefix&amp;&amp;"".concat(C.cssSelectorsPrefix," "),".").concat(t,"{").concat(e,"}")}},{key:"addCss",value:function(t){var e=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]&amp;&amp;arguments[1];this[e?"_firstPageStyle":"_otherPageStyle"]+=t,ve.addCss(e)}},{key:"writeStyle",value:function(){var t=arguments.length&gt;0&amp;&amp;void 0!==arguments[0]&amp;&amp;arguments[0];!t&amp;&amp;Ce.isDarkmode&amp;&amp;(this.isFinish=!0);var r=(Ce.isDarkmode?[{target:this,key:["_firstPageStyle","_otherPageStyle"],needMediaQuery:!0}]:[]).concat([{target:ve,key:["firstPageStyle","otherPageStyle"],needMediaQuery:!0},{target:ve,key:["firstPageStyleNoMQ","otherPageStyleNoMQ"],needMediaQuery:!1}]).map(function(r){var n=r.target,o=function(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&amp;&amp;t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a,i,l=[],u=!0,s=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&amp;&amp;(l.push(n.value),l.length!==e);u=!0);}catch(t){s=!0,o=t}finally{try{if(!u&amp;&amp;null!=r.return&amp;&amp;(i=r.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(t,e)||function(t,e){if(t){if("string"==typeof t)return J(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&amp;&amp;t.constructor&amp;&amp;(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?J(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(r.key,2),a=o[0],i=o[1],l=r.needMediaQuery,u="";t?u=a:(n[i]=n[a]+n[i],n[a]="",u=i);var s=n[u];return s?(n[u]="","dark"!==C.mode&amp;&amp;l?"@media ".concat(e," {").concat(s,"}"):s):""}).join("");r&amp;&amp;document.head.insertAdjacentHTML("beforeend",'&lt;style type="text/css"&gt;'.concat(r,"&lt;/style&gt;"))}},{key:"watch",value:function(t,e){this._watcher[t]=e}},{key:"unwatch",value:function(t){delete this._watcher[t]}}])}();function X(t){return X="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&amp;&amp;"function"==typeof Symbol&amp;&amp;t.constructor===Symbol&amp;&amp;t!==Symbol.prototype?"symbol":typeof t},X(t)}function Y(t,e){for(var r=0;r&lt;e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&amp;&amp;(n.writable=!0),Object.defineProperty(t,tt(n.key),n)}}function Z(t,e,r){return(e=tt(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function tt(t){var e=function(t){if("object"!=X(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=X(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==X(e)?e:e+""}function et(t,e){(null==e||e&gt;t.length)&amp;&amp;(e=t.length);for(var r=0,n=Array(e);r&lt;e;r++)n[r]=t[r];return n}function rt(t){var e;return(e=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]&amp;&amp;arguments[1]?[]:[t]).concat.apply(e,function(t){return function(t){if(Array.isArray(t))return et(t)}(t)||function(t){if("undefined"!=typeof Symbol&amp;&amp;null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return et(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&amp;&amp;t.constructor&amp;&amp;(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?et(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(t.querySelectorAll("*")))}var nt={"ue-table-interlace-color-single":"#fcfcfc","ue-table-interlace-color-double":"#f7faff"},ot=function(){return function(t,e){return e&amp;&amp;Y(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}(function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),Z(this,"_els",[]),Z(this,"_firstPageEls",[]),Z(this,"_delayEls",[]),Z(this,"showFirstPage",!1)},[{key:"length",get:function(){return this._els.length}},{key:"set",value:function(){var t=arguments.length&gt;0&amp;&amp;void 0!==arguments[0]?arguments[0]:[];this._els=t}},{key:"get",value:function(){var t=[];return this._els.length?(t=this._els,Ce.isDarkmode&amp;&amp;(this._els=[])):this._delayEls.length?(t=this._delayEls,this._delayEls=[]):C.container&amp;&amp;(t=C.container.querySelectorAll("*")),t}},{key:"delay",value:function(){var t=this;Array.prototype.forEach.call(this._els,function(e){return t._delayEls.push(e)}),this._els=[]}},{key:"hasDelay",value:function(){return!this._els.length&amp;&amp;(this._delayEls.length&gt;0||null!==C.container)}},{key:"addFirstPageNode",value:function(t){this._firstPageEls.push(t)}},{key:"showFirstPageNodes",value:function(){this._firstPageEls.forEach(function(t){return!t.style.visibility&amp;&amp;(t.style.visibility="visible")}),this.showFirstPage=!0}},{key:"emptyFirstPageNodes",value:function(){this._firstPageEls=[]}}])}(),at=r(520),it=r.n(at),lt=r(156),ut=r.n(lt);function st(t,e,r){return{r:255*r(t.r/255,e.r/255),g:255*r(t.g/255,e.g/255),b:255*r(t.b/255,e.b/255)}}function ct(t,e){return e}function ht(t,e){return t*e}function ft(t,e){return t+e-t*e}function gt(t,e){return mt(e,t)}function dt(t,e){return Math.min(t,e)}function bt(t,e){return Math.min(Math.max(t,e),1)}function yt(t,e){return 0===t?0:1===e?1:Math.min(1,t/(1-e))}function pt(t,e){return 1===t?1:0===e?0:1-Math.min(1,(1-t)/e)}function mt(t,e){return e&lt;=.5?ht(t,2*e):ft(t,2*e-1)}function vt(t,e){return e&lt;=.5?t-(1-2*e)*t*(1-t):t+(2*e-1)*((t&lt;=.25?((16*t-12)*t+4)*t:Math.sqrt(t))-t)}function wt(t,e){return Math.abs(t-e)}function kt(t,e){return t+e-2*t*e}function xt(t,e,r){return Math.min(Math.max(t||0,e),r)}function Mt(t){return{r:xt(t.r,0,255),g:xt(t.g,0,255),b:xt(t.b,0,255),a:xt(t.a,0,1)}}function Ct(t){return{r:255*t.r,g:255*t.g,b:255*t.b,a:t.a}}function St(t){return{r:t.r/255,g:t.g/255,b:t.b/255,a:t.a}}function _t(t,e){void 0===e&amp;&amp;(e=0);var r=Math.pow(10,e);return{r:Math.round(t.r*r)/r,g:Math.round(t.g*r)/r,b:Math.round(t.b*r)/r,a:t.a}}function Ot(t,e,r,n,o,a){return(1-e/r)*n+e/r*Math.round((1-t)*o+t*a)}function jt(t,e,r,n,o){void 0===o&amp;&amp;(o={unitInput:!1,unitOutput:!1,roundOutput:!0}),o.unitInput&amp;&amp;(t=Ct(t),e=Ct(e)),t=Mt(t);var a=(e=Mt(e)).a+t.a-e.a*t.a,i=r(t,e,n),l=Mt({r:Ot(t.a,e.a,a,t.r,e.r,i.r),g:Ot(t.a,e.a,a,t.g,e.g,i.g),b:Ot(t.a,e.a,a,t.b,e.b,i.b),a});return l=o.unitOutput?St(l):o.roundOutput?_t(l):function(t){return _t(t,9)}(l),l}function Pt(t,e,r){return Ct(r(St(t),St(e)))}function Et(t){return.3*t.r+.59*t.g+.11*t.b}function Bt(t,e){var r=e-Et(t);return function(t){var e=Et(t),r=t.r,n=t.g,o=t.b,a=Math.min(r,n,o),i=Math.max(r,n,o);function l(t){return e+(t-e)*e/(e-a)}function u(t){return e+(t-e)*(1-e)/(i-e)}return a&lt;0&amp;&amp;(r=l(r),n=l(n),o=l(o)),i&gt;1&amp;&amp;(r=u(r),n=u(n),o=u(o)),{r,g:n,b:o}}({r:t.r+r,g:t.g+r,b:t.b+r})}function Tt(t){return Math.max(t.r,t.g,t.b)-Math.min(t.r,t.g,t.b)}function At(t,e){var r=["r","g","b"].sort(function(e,r){return t[e]-t[r]}),n=r[0],o=r[1],a=r[2],i={r:t.r,g:t.g,b:t.b};return i[a]&gt;i[n]?(i[o]=(i[o]-i[n])*e/(i[a]-i[n]),i[a]=e):i[o]=i[a]=0,i[n]=0,i}function Dt(t,e){return Bt(At(e,Tt(t)),Et(t))}function Ft(t,e){return Bt(At(t,Tt(e)),Et(t))}function Nt(t,e){return Bt(e,Et(t))}function Lt(t,e){return Bt(t,Et(e))}function It(t,e){return jt(t,e,st,ct)}function qt(t,e){return jt(t,e,st,ht)}function Rt(t,e){return jt(t,e,st,ft)}function $t(t,e){return jt(t,e,st,gt)}function Vt(t,e){return jt(t,e,st,dt)}function Kt(t,e){return jt(t,e,st,bt)}function zt(t,e){return jt(t,e,st,yt)}function Ht(t,e){return jt(t,e,st,pt)}function Jt(t,e){return jt(t,e,st,mt)}function Ut(t,e){return jt(t,e,st,vt)}function Qt(t,e){return jt(t,e,st,wt)}function Gt(t,e){return jt(t,e,st,kt)}function Wt(t,e){return jt(t,e,Pt,Dt)}function Xt(t,e){return jt(t,e,Pt,Ft)}function Yt(t,e){return jt(t,e,Pt,Nt)}function Zt(t,e){return jt(t,e,Pt,Lt)}ut().windowtext=[0,0,0],ut().transparent=[255,255,255,0];var te=new RegExp(Object.keys(ut()).map(function(t){return"\\b".concat(t,"\\b")}).join("|"),"ig"),ee=function(t){var e=t.object();return e.a=e.alpha||1,delete e.alpha,e},re=function(t){return t.alpha=t.a,delete t.a,ne(t)},ne=function(t){var e=null;try{e=t instanceof it()?t:it()(t)}catch(e){console.log("ignore the invalid color: `".concat(t,"`"))}return e},oe=function(t,e){return t.replace(w,"").replace(te,function(t){if(!e&amp;&amp;"transparent"===t)return t;var r=ut()[t.toLowerCase()];return"".concat(r.length&gt;3?"rgba":"rgb","(").concat(r.toString(),")")})},ae=function(t){var e=oe(t);return x.test(e)?e:""},ie=function(e){var r=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]?arguments[1]:"mix";if("[object Array]"!==Object.prototype.toString.call(e)||e.length&lt;1)return null;if(1===e.length)return e[0];for(var n=ne(e.shift()),o=ne(e.shift());o;){if(!n&amp;&amp;o)n=o;else if(n||o)n&amp;&amp;o&amp;&amp;(n="mix"===r?n.mix(o,o.alpha()):re(t[r](ee(n),ee(o))));else{if(0===e.length)break;n=ne(e.shift())}if(0===e.length)break;o=ne(e.shift())}return n||null},le=function(t){return(299*t[0]+587*t[1]+114*t[2])/1e3},ue=function(t,e){var r=t/le(e),n=Math.min(255,e[0]*r),o=Math.min(255,e[1]*r),a=Math.min(255,e[2]*r);return 0===o||255===n||255===a?o=(1e3*t-299*n-114*a)/587:0===n?n=(1e3*t-587*o-114*a)/299:0!==a&amp;&amp;255!==o||(a=(1e3*t-299*n-587*o)/114),it().rgb(n,o,a)};function se(t){return se="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&amp;&amp;"function"==typeof Symbol&amp;&amp;t.constructor===Symbol&amp;&amp;t!==Symbol.prototype?"symbol":typeof t},se(t)}function ce(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&amp;&amp;t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a,i,l=[],u=!0,s=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&amp;&amp;(l.push(n.value),l.length!==e);u=!0);}catch(t){s=!0,o=t}finally{try{if(!u&amp;&amp;null!=r.return&amp;&amp;(i=r.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(t,e)||fe(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function he(t){return function(t){if(Array.isArray(t))return ge(t)}(t)||function(t){if("undefined"!=typeof Symbol&amp;&amp;null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||fe(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function fe(t,e){if(t){if("string"==typeof t)return ge(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&amp;&amp;t.constructor&amp;&amp;(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?ge(t,e):void 0}}function ge(t,e){(null==e||e&gt;t.length)&amp;&amp;(e=t.length);for(var r=0,n=Array(e);r&lt;e;r++)n[r]=t[r];return n}function de(t,e){for(var r=0;r&lt;e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&amp;&amp;(n.writable=!0),Object.defineProperty(t,ye(n.key),n)}}function be(t,e,r){return(e=ye(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function ye(t){var e=function(t){if("object"!=se(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=se(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==se(e)?e:e+""}var pe=function(t,e){var r=/^background/.test(t),n=/^(-webkit-)?border-image/.test(t);return(r||n)&amp;&amp;/url\([^)]*\)/i.test(e)},me=function(){return function(t,e){return e&amp;&amp;de(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}(function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),be(this,"_idx",0),be(this,"_defaultDarkTextColorRgb",null),be(this,"_defaultDarkBgColorRgb",null),be(this,"_defaultDarkBgColorHSL",null),be(this,"_defaultDarkTextColorBrightness",null),be(this,"_defaultDarkBgColorBrightness",null),be(this,"_defaultDarkBgColorHslBrightness",null),be(this,"_maxLimitOffsetBrightness",null),be(this,"isDarkmode",!1)},[{key:"_adjustBrightness",value:function(t,e,r,n,o){var a,i=t.alpha(),l="";if(r.isBgColor){if(i&gt;=b&amp;&amp;(e[f]&amp;&amp;delete e[f],e[g])){if(e[g]===t.toString()||this.getContrast(e[g],t.toString())&lt;1.1)return{newColor:o?t.toString():"",extStyle:l};rt(e).forEach(function(t){delete t[g]})}if(a=this._adjustBackgroundBrightness(t),!r.hasInlineColor){var h=e[c]||C.defaultLightTextColor,d=ne(h);if(d){var y=this._adjustBrightness(d,e,{isTextColor:!0,parentElementBgColorStr:a||t},n,o);l+=xe.genCssKV("color",y.newColor||d),rt(e).forEach(function(t){t[u]=y.newColor||d,t[c]=d})}}}else if(r.isTextColor||r.isBorderColor){var p=r.parentElementBgColorStr||r.isTextColor&amp;&amp;e[s]||C.defaultDarkBgColor,m=ne(p);if(m&amp;&amp;!e[f]){a=this._adjustTextBrightness(t,m);var v="";n?v="ByUpdateStyle":o&amp;&amp;(v="ByReset"),ve.emit("afterConvertTextColor".concat(v),e,{fontColor:a,bgColor:m})}}else r.isTextShadow&amp;&amp;(e[f]||(a=this._adjustBackgroundBrightness(t)));return{newColor:a&amp;&amp;t.toString()!==a.toString()&amp;&amp;a.alpha(i).rgb(),extStyle:l}}},{key:"_adjustTextBrightness",value:function(t,e){var r=e.rgb().array(),n=e.alpha(),o=le(r)*n+this._defaultDarkBgColorBrightness*(1-n),a=t.rgb().array(),i=t.hsl().array(),l=t.alpha(),u=le(a),s=Math.abs(o-u);if(u&gt;=250)return t;if(s&gt;this._maxLimitOffsetBrightness&amp;&amp;o&lt;=this._defaultDarkBgColorBrightness+2)return ue(this._maxLimitOffsetBrightness+o,a).alpha(l);if(s&gt;=65)return t;if(o&gt;=100){if(i[2]&gt;50){i[2]=90-i[2];var c=it().hsl.apply(it(),he(i)).alpha(l);return this._adjustTextBrightness(c,e)}return ue(Math.min(this._maxLimitOffsetBrightness,o-65),a).alpha(l)}if(i[2]&lt;=40){i[2]=90-i[2];var h=it().hsl.apply(it(),he(i)).alpha(l);return this._adjustTextBrightness(h,e)}return ue(Math.min(this._maxLimitOffsetBrightness,o+65),a).alpha(l)}},{key:"_adjustBackgroundBrightness",value:function(t){var e=t.rgb().array(),r=t.hsl().array(),n=t.alpha(),o=le(e),a=t;return 0===r[1]&amp;&amp;r[2]&gt;40||o&gt;250?a=it().hsl(0,0,Math.min(100,100+this._defaultDarkBgColorHslBrightness-r[2])):o&gt;190?a=ue(190,e).alpha(n):r[2]&lt;22&amp;&amp;(r[2]=22,a=it().hsl.apply(it(),he(r))),a.alpha(n).rgb()}},{key:"_updateBgWithGradient",value:function(t,e,r,n,o,a,i){var l=ie([e[s]||C.defaultDarkBgColor,t],"normal"),u=(e[h]||C.defaultLightBgColor).split(d).concat(t.toString()).join(d);rt(e).forEach(function(t){t[s]=l,t[h]=u});var c=n.slice(-1)[0];if("color"===c[0]){var f=this._adjustBrightness(ne(oe(c[1])),e,{isBgColor:!1,isTextShadow:!1,isTextColor:!0,isBorderColor:!1,hasInlineColor:o},a,i);if(f.newColor)return xe.genCss(r,xe.genCssKV("color",f.newColor))}return""}},{key:"_try",value:function(t){try{return t()}catch(t){console.log("An error occurred when running the dark mode conversion algorithm\n",t),"function"==typeof C.error&amp;&amp;C.error(t)}}},{key:"init",value:function(){this._defaultDarkTextColorRgb=ne(C.defaultDarkTextColor).rgb().array(),this._defaultDarkBgColorRgb=ne(C.defaultDarkBgColor).rgb().array(),this._defaultDarkBgColorHSL=ne(C.defaultDarkBgColor).hsl().array(),this._defaultDarkTextColorBrightness=le(this._defaultDarkTextColorRgb),this._defaultDarkBgColorBrightness=le(this._defaultDarkBgColorRgb),this._defaultDarkBgColorHslBrightness=this._defaultDarkBgColorHSL[2],this._maxLimitOffsetBrightness=this._defaultDarkTextColorBrightness-this._defaultDarkBgColorBrightness}},{key:"convert",value:function(t,e,r,n){var i=this;ve.resetCss();var l="";r?l="ByUpdateStyle":n&amp;&amp;(l="ByReset"),ve.emit("beforeConvertNode".concat(l),t);var y="",S="";if(this.isDarkmode||r||n){var _=t.nodeName;if(C.whitelist.tagName.indexOf(_)&gt;-1)return"";if(C.whitelist.attribute.some(function(e){return t.hasAttribute(e)}))return"";var O=t.style;e||(e=(O.cssText&amp;&amp;O.cssText.replace(/("[^;]*);([^;]*")|('[^;]*);([^;]*')/g,"$1$3".concat("&lt;$#_SEMICOLON_#$&gt;","$2$4")).split(";")||[]).map(function(t){var e=t.indexOf(":");return[t.slice(0,e).toLowerCase(),t.slice(e+1).replace(k,";")].map(function(t){return(t||"").replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")})}));var j=!1,P=!1,E=!1,B=null,T=null;e=e.filter(function(t){var e=ce(t,2),r=e[0],n=e[1];return"color"===r?j=!0:/background/i.test(r)&amp;&amp;(P=!0,"background-position"===r?B=n:"background-size"===r&amp;&amp;(T=n)),(/background/i.test(r)||/^(-webkit-)?border-image/.test(r))&amp;&amp;/url\([^)]*\)/i.test(n)&amp;&amp;(E=!0),m.indexOf(r)&gt;-1}).sort(function(t,e){var r=ce(t,1)[0],n=ce(e,1)[0];return"color"===r||"background-image"===r&amp;&amp;"background-color"===n||0===n.indexOf("-webkit-text")?1:-1}),v.indexOf(_)&gt;-1&amp;&amp;!P&amp;&amp;this._try(function(){var r=function(t){var e=null;return Array.prototype.some.call(t.classList,function(t){return!!nt[t]&amp;&amp;(e=nt[t],!0)}),e}(t);if(r||(r=t.getAttribute("bgcolor")),r){var n=ne(r);n&amp;&amp;(e.unshift(["background-color",n.toString()]),P=!0)}}),"FONT"!==_||j||this._try(function(){var r=t.getAttribute("color");if(r){var n=ne(r);n&amp;&amp;(e.push(["color",n.toString()]),j=!0)}});var A="",D="",F=0;e.some(function(t,e){var r=ce(t,2),n=r[0],o=r[1];return i._try(function(){if(0!==n.indexOf("-webkit-text"))return F=e,!0;switch(n){case"-webkit-text-fill-color":A=ae(o);break;case"-webkit-text-stroke":var t=o.split(" ");2===t.length&amp;&amp;(D=ae(t[1]));break;case"-webkit-text-stroke-color":D=ae(o)}return!1})}),A&amp;&amp;(j?e[e.length-1]=["-webkit-text-fill-color",A]:(e.push(["-webkit-text-fill-color",A]),j=!0)),F&amp;&amp;(e.splice(0,F),D&amp;&amp;e.unshift(["-webkit-text-stroke-color",D]));var N="",L="";if((r||n)&amp;&amp;t.className&amp;&amp;"string"==typeof t.className){var I=t.className.match(a);I&amp;&amp;(N=I[0]),(I=t.className.match(ke.classNameReg))&amp;&amp;(L=I[0])}var q="",R=n;R&amp;&amp;xe.watch("color",function(){R=!1,xe.unwatch("color")}),e.forEach(function(o){var a=ce(o,2),l=a[0],m=a[1];return i._try(function(){var o,a=m,v=!1,k=p.BG_COLOR.indexOf(l)&gt;-1,_=p.TEXT_SHADOW.indexOf(l)&gt;-1,A=p.TEXT_COLOR.indexOf(l),D=p.BORDER_COLOR.indexOf(l)&gt;-1,F=/gradient/.test(m),N=[],I="";if(m=oe(m,F),x.test(m)){if(F){for(var $=M.exec(m);$;)N.push($[0]),$=M.exec(m);o=ie(N)}var V=0;m=m.replace(M,function(e){F&amp;&amp;(e=o,v=!0);var a=ne(e);if((null==a?void 0:a.alpha())&gt;=b){var l=i._adjustBrightness(a,t,{isBgColor:k,isTextShadow:_,isTextColor:A&gt;-1,isBorderColor:D,hasInlineColor:j},r,n),g=!E&amp;&amp;l.newColor;if(I+=l.extStyle,k||A&gt;=5){var y=g?g.toString():e;0===V&amp;&amp;rt(t).forEach(function(t){k?(t[s]=y,t[h]=(t[h]||C.defaultLightBgColor).split(d).concat(e).join(d)):(t[u]=y,t[c]=e);var r=ne(y);k&amp;&amp;(null==r?void 0:r.alpha())&gt;=b&amp;&amp;t[f]&amp;&amp;delete t[f]})}return g&amp;&amp;(v=!0),V++,g||e}return e}).replace(/\s?!\s?important/gi,"")}if(I&amp;&amp;(q+=I),!(t instanceof SVGElement)&amp;&amp;pe(l,m)){v=!0;var K=ie((t[h]||C.defaultLightBgColor).split(d),"normal").toString();if(m=m.replace(/^(.*?)url\(([^)]*)\)(.*)$/i,function(e){var r=e,o="";return t[f]||rt(t).forEach(function(t){t[f]=!0}),/^background/.test(l)?(o=xe.genCssKV(l,K?"".concat(r,",linear-gradient(").concat(K,", ").concat(K,")"):r),B&amp;&amp;(q+=xe.genCssKV("background-position",B),o+=xe.genCssKV("background-position",K?"".concat(B,",top left"):B)),T&amp;&amp;(q+=xe.genCssKV("background-size",T),o+=xe.genCssKV("background-size",K?"".concat(T,",100%"):T)),n||(L?(S+=xe.genCss(L,o),rt(t).forEach(function(t){t[g]=K||r})):ke.push(t,o,function(t){var e=[t.elOld];t.el!==t.elOld&amp;&amp;e.push(t.el),e.forEach(function(t){rt(t).forEach(function(t){t[g]=K||r})})}))):!K||P||n||(o=xe.genCssKV("background-image","linear-gradient(".concat(K,", ").concat(K,")")),L?S+=xe.genCss(L,o):ke.push(t,o)),r}),!j){var z=t[c]||C.defaultLightTextColor;q+=xe.genCssKV("color",z),rt(t).forEach(function(t){t[u]=z})}}(v||n)&amp;&amp;(!r&amp;&amp;!n&amp;&amp;w.test(a)&amp;&amp;(O[l]=a.replace(w,"")),F?n||(L?(S+=xe.genCss(L,xe.genCssKV(l,m)),/^background/.test(l)&amp;&amp;!/url\([^)]*\)/i.test(m)&amp;&amp;(y+=i._updateBgWithGradient(o,t,L,e,j,r,n))):ke.push(t,xe.genCssKV(l,m),function(a){/^background/.test(l)&amp;&amp;!/url\([^)]*\)/i.test(m)&amp;&amp;(y+=i._updateBgWithGradient(o,t,a.className,e,j,r,n))})):("color"===l&amp;&amp;(R=!1,xe.unwatch("color")),v?q+=xe.genCssKV(l,m):t instanceof SVGElement&amp;&amp;pe(l,m)||(q+=xe.genCssKV(l,t.style[l]))))})}),R&amp;&amp;(q+=xe.genCssKV("color",t.style.color||t[u]||C.defaultDarkTextColor),xe.unwatch("color")),q&amp;&amp;(N||(N="".concat(o).concat(this._idx++),t.classList.add(N)),y+=q?xe.genCss(N,q):""),y+=S,r||!function(t){return t.textContent.replace(/\s/g,"").length&gt;0}(t)||n||(C.delayBgJudge?we.push(t):ke.contains(t,function(t){y+=xe.genCss(t.className,t.cssKV),"function"==typeof t.cb&amp;&amp;t.cb(t)}))}return ve.emit("afterConvertNode".concat(l),t),y}},{key:"getContrast",value:function(t,e){var r=ne(t),n=ne(e);return r&amp;&amp;n?r.contrast(n):0}}])}(),ve=new D,we=new q("".concat(o,"text__")),ke=new z("".concat(o,"bg__")),xe=new W,Me=new ot,Ce=new me;function Se(t,e){(null==e||e&gt;t.length)&amp;&amp;(e=t.length);for(var r=0,n=Array(e);r&lt;e;r++)n[r]=t[r];return n}var _e=new RegExp("".concat(o,"[^ ]+"),"g"),Oe=null,je=function(t){var e=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]?arguments[1]:{type:"dom"};if(e.force&amp;&amp;(xe.isFinish=!1),!xe.isFinish)try{Ce.isDarkmode=C.mode?"dark"===C.mode:t.matches,"dom"===e.type?(Ce.isDarkmode&amp;&amp;"function"==typeof C.begin&amp;&amp;C.begin(Me.hasDelay()),Array.prototype.forEach.call(Me.get(),function(t){if(Ce.isDarkmode&amp;&amp;t.className&amp;&amp;"string"==typeof t.className&amp;&amp;(t.className=t.className.replace(_e,"")),Ce.isDarkmode||ve.length)if(C.needJudgeFirstPage){var e=t.getBoundingClientRect(),r=e.top,n=e.bottom;r&lt;=0&amp;&amp;n&lt;=0?xe.addCss(Ce.convert(t)):r&gt;0&amp;&amp;r&lt;y||n&gt;0&amp;&amp;n&lt;y?(Me.addFirstPageNode(t),xe.addCss(Ce.convert(t),!0)):(C.needJudgeFirstPage=!1,xe.writeStyle(!0),Me.showFirstPageNodes(),"function"==typeof C.showFirstPage&amp;&amp;C.showFirstPage(),xe.addCss(Ce.convert(t)))}else xe.addCss(Ce.convert(t))}),ve.loopTimes++):"bg"===e.type&amp;&amp;Ce.isDarkmode&amp;&amp;we.forEach(function(t){return ke.contains(t,function(t){xe.addCss(xe.genCss(t.className,t.cssKV)),"function"==typeof t.cb&amp;&amp;t.cb(t);var e=[t.elOld];t.elOld!==t.el&amp;&amp;e.push(t.el),e.forEach(function(t){var e,r,n,o,a,i,l=[[u,null!==(e=t[u])&amp;&amp;void 0!==e?e:null],[s,null!==(r=t[s])&amp;&amp;void 0!==r?r:null],[c,null!==(n=t[c])&amp;&amp;void 0!==n?n:null],[h,null!==(o=t[h])&amp;&amp;void 0!==o?o:null],[f,null!==(a=t[f])&amp;&amp;void 0!==a?a:null],[g,null!==(i=t[g])&amp;&amp;void 0!==i?i:null]],d=rt(t,!0);d.forEach(function(t){l.forEach(function(e){var r=function(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&amp;&amp;t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a,i,l=[],u=!0,s=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&amp;&amp;(l.push(n.value),l.length!==e);u=!0);}catch(t){s=!0,o=t}finally{try{if(!u&amp;&amp;null!=r.return&amp;&amp;(i=r.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(t,e)||function(t,e){if(t){if("string"==typeof t)return Se(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&amp;&amp;t.constructor&amp;&amp;(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Se(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(e,2),n=r[0],o=r[1];null===o?delete t[n]:t[n]=o})}),d.forEach(function(t){xe.addCss(Ce.convert(t,void 0,!1,!0))})})})}),(C.needJudgeFirstPage||!C.needJudgeFirstPage&amp;&amp;!Me.showFirstPage)&amp;&amp;"function"==typeof C.showFirstPage&amp;&amp;C.showFirstPage(),xe.writeStyle(),Me.emptyFirstPageNodes(),Ce.isDarkmode||(C.needJudgeFirstPage=!1,C.delayBgJudge=!1,null===C.container&amp;&amp;"dom"===e.type&amp;&amp;Me.length&amp;&amp;Me.delay())}catch(t){console.log("An error occurred when running the dark mode conversion algorithm\n",t),"function"==typeof C.error&amp;&amp;C.error(t)}};function Pe(t,e){Ee(e),Me.set(t),je(Oe,{force:!0,type:"dom"})}function Ee(){var t=arguments.length&gt;0&amp;&amp;void 0!==arguments[0]?arguments[0]:{};if(!C.hasInit){C.hasInit=!0;var r=C.whitelist.tagName,n=C.whitelist.attribute;t.whitelist&amp;&amp;(t.whitelist.tagName instanceof Array&amp;&amp;t.whitelist.tagName.forEach(function(t){t=t.toUpperCase(),-1===r.indexOf(t)&amp;&amp;r.push(t)}),t.whitelist.attribute instanceof Array&amp;&amp;t.whitelist.attribute.forEach(function(t){-1===n.indexOf(t)&amp;&amp;n.push(t)})),["dark","light"].indexOf(t.mode)&gt;-1&amp;&amp;(C.set("string",t,"mode"),"dark"===t.mode&amp;&amp;document.getElementsByTagName("html")[0].classList.add(i)),C.set("function",t,"begin"),C.set("function",t,"showFirstPage"),C.set("function",t,"error"),C.set("boolean",t,"needJudgeFirstPage"),C.set("boolean",t,"delayBgJudge"),C.set("dom",t,"container"),C.set("string",t,"cssSelectorsPrefix"),C.set("string",t,"defaultLightTextColor"),C.set("string",t,"defaultLightBgColor"),C.set("string",t,"defaultDarkTextColor"),C.set("string",t,"defaultDarkBgColor"),Ce.init(),!C.mode&amp;&amp;null===Oe&amp;&amp;window.matchMedia&amp;&amp;(Oe=window.matchMedia(e)).addListener(je)}}function Be(t){Me.set(t),null!==C.container&amp;&amp;(ke.update(t),we.update(t)),je(Oe,{force:!0,type:"bg"})}function Te(t,e){xe.isFinish&amp;&amp;(xe.addCss(Ce.convert(t,e?Object.keys(e).map(function(t){return[t,e[t]]}):void 0,!0),!1),xe.writeStyle())}function Ae(t,e){return Ce.getContrast(t,e)}function De(t){t.forEach(function(t){return ve.extend(t)})}})(),n})());
             &lt;/script&gt;
             &lt;script h5only="" nonce="579543733" reportloaderror="" type="text/javascript"&gt;
              !function(t,e){"object"==typeof exports&amp;&amp;"undefined"!=typeof module?module.exports=e():"function"==typeof define&amp;&amp;define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Vue=e()}(this,(function(){"use strict";var t=Object.freeze({}),e=Array.isArray;function n(t){return null==t}function r(t){return null!=t}function o(t){return!0===t}function i(t){return"string"==typeof t||"number"==typeof t||"symbol"==typeof t||"boolean"==typeof t}function a(t){return"function"==typeof t}function s(t){return null!==t&amp;&amp;"object"==typeof t}var c=Object.prototype.toString;function u(t){return"[object Object]"===c.call(t)}function f(t){var e=parseFloat(String(t));return e&gt;=0&amp;&amp;Math.floor(e)===e&amp;&amp;isFinite(t)}function l(t){return r(t)&amp;&amp;"function"==typeof t.then&amp;&amp;"function"==typeof t.catch}function d(t){return null==t?"":Array.isArray(t)||u(t)&amp;&amp;t.toString===c?JSON.stringify(t,p,2):String(t)}function p(t,e){return e&amp;&amp;e.__v_isRef?e.value:e}function v(t){var e=parseFloat(t);return isNaN(e)?t:e}function h(t,e){for(var n=Object.create(null),r=t.split(","),o=0;o&lt;r.length;o++)n[r[o]]=!0;return e?function(t){return n[t.toLowerCase()]}:function(t){return n[t]}}var m=h("key,ref,slot,slot-scope,is");function _(t,e){var n=t.length;if(n){if(e===t[n-1])return void(t.length=n-1);var r=t.indexOf(e);if(r&gt;-1)return t.splice(r,1)}}var y=Object.prototype.hasOwnProperty;function g(t,e){return y.call(t,e)}function b(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var w=/-(\w)/g,$=b((function(t){return t.replace(w,(function(t,e){return e?e.toUpperCase():""}))})),C=b((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),x=/\B([A-Z])/g,O=b((function(t){return t.replace(x,"-$1").toLowerCase()}));var k=Function.prototype.bind?function(t,e){return t.bind(e)}:function(t,e){function n(n){var r=arguments.length;return r?r&gt;1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n};function S(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function j(t,e){for(var n in e)t[n]=e[n];return t}function T(t){for(var e={},n=0;n&lt;t.length;n++)t[n]&amp;&amp;j(e,t[n]);return e}function A(t,e,n){}var E=function(t,e,n){return!1},P=function(t){return t};function I(t,e){if(t===e)return!0;var n=s(t),r=s(e);if(!n||!r)return!n&amp;&amp;!r&amp;&amp;String(t)===String(e);try{var o=Array.isArray(t),i=Array.isArray(e);if(o&amp;&amp;i)return t.length===e.length&amp;&amp;t.every((function(t,n){return I(t,e[n])}));if(t instanceof Date&amp;&amp;e instanceof Date)return t.getTime()===e.getTime();if(o||i)return!1;var a=Object.keys(t),c=Object.keys(e);return a.length===c.length&amp;&amp;a.every((function(n){return I(t[n],e[n])}))}catch(t){return!1}}function D(t,e){for(var n=0;n&lt;t.length;n++)if(I(t[n],e))return n;return-1}function N(t){var e=!1;return function(){e||(e=!0,t.apply(this,arguments))}}function M(t,e){return t===e?0===t&amp;&amp;1/t!=1/e:t==t||e==e}var L="data-server-rendered",R=["component","directive","filter"],F=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeDestroy","destroyed","activated","deactivated","errorCaptured","serverPrefetch","renderTracked","renderTriggered"],U={optionMergeStrategies:Object.create(null),silent:!1,productionTip:!1,devtools:!1,performance:!1,errorHandler:null,warnHandler:null,ignoredElements:[],keyCodes:Object.create(null),isReservedTag:E,isReservedAttr:E,isUnknownElement:E,getTagNamespace:A,parsePlatformTagName:P,mustUseProp:E,async:!0,_lifecycleHooks:F};function V(t){var e=(t+"").charCodeAt(0);return 36===e||95===e}function B(t,e,n,r){Object.defineProperty(t,e,{value:n,enumerable:!!r,writable:!0,configurable:!0})}var z=new RegExp("[^".concat(/a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD/.source,".$_\\d]"));var H="__proto__"in{},W="undefined"!=typeof window,K=W&amp;&amp;window.navigator.userAgent.toLowerCase(),q=K&amp;&amp;/msie|trident/.test(K),G=K&amp;&amp;K.indexOf("msie 9.0")&gt;0,Z=K&amp;&amp;K.indexOf("edge/")&gt;0;K&amp;&amp;K.indexOf("android");var J=K&amp;&amp;/iphone|ipad|ipod|ios/.test(K);K&amp;&amp;/chrome\/\d+/.test(K),K&amp;&amp;/phantomjs/.test(K);var X,Q=K&amp;&amp;K.match(/firefox\/(\d+)/),Y={}.watch,tt=!1;if(W)try{var et={};Object.defineProperty(et,"passive",{get:function(){tt=!0}}),window.addEventListener("test-passive",null,et)}catch(t){}var nt=function(){return void 0===X&amp;&amp;(X=!W&amp;&amp;"undefined"!=typeof global&amp;&amp;(global.process&amp;&amp;"server"===global.process.env.VUE_ENV)),X},rt=W&amp;&amp;window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function ot(t){return"function"==typeof t&amp;&amp;/native code/.test(t.toString())}var it,at="undefined"!=typeof Symbol&amp;&amp;ot(Symbol)&amp;&amp;"undefined"!=typeof Reflect&amp;&amp;ot(Reflect.ownKeys);it="undefined"!=typeof Set&amp;&amp;ot(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var st=null;function ct(t){void 0===t&amp;&amp;(t=null),t||st&amp;&amp;st._scope.off(),st=t,t&amp;&amp;t._scope.on()}var ut=function(){function t(t,e,n,r,o,i,a,s){this.tag=t,this.data=e,this.children=n,this.text=r,this.elm=o,this.ns=void 0,this.context=i,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=e&amp;&amp;e.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1}return Object.defineProperty(t.prototype,"child",{get:function(){return this.componentInstance},enumerable:!1,configurable:!0}),t}(),ft=function(t){void 0===t&amp;&amp;(t="");var e=new ut;return e.text=t,e.isComment=!0,e};function lt(t){return new ut(void 0,void 0,void 0,String(t))}function dt(t){var e=new ut(t.tag,t.data,t.children&amp;&amp;t.children.slice(),t.text,t.elm,t.context,t.componentOptions,t.asyncFactory);return e.ns=t.ns,e.isStatic=t.isStatic,e.key=t.key,e.isComment=t.isComment,e.fnContext=t.fnContext,e.fnOptions=t.fnOptions,e.fnScopeId=t.fnScopeId,e.asyncMeta=t.asyncMeta,e.isCloned=!0,e}"function"==typeof SuppressedError&amp;&amp;SuppressedError;var pt=0,vt=[],ht=function(){for(var t=0;t&lt;vt.length;t++){var e=vt[t];e.subs=e.subs.filter((function(t){return t})),e._pending=!1}vt.length=0},mt=function(){function t(){this._pending=!1,this.id=pt++,this.subs=[]}return t.prototype.addSub=function(t){this.subs.push(t)},t.prototype.removeSub=function(t){this.subs[this.subs.indexOf(t)]=null,this._pending||(this._pending=!0,vt.push(this))},t.prototype.depend=function(e){t.target&amp;&amp;t.target.addDep(this)},t.prototype.notify=function(t){for(var e=this.subs.filter((function(t){return t})),n=0,r=e.length;n&lt;r;n++){e[n].update()}},t}();mt.target=null;var _t=[];function yt(t){_t.push(t),mt.target=t}function gt(){_t.pop(),mt.target=_t[_t.length-1]}var bt=Array.prototype,wt=Object.create(bt);["push","pop","shift","unshift","splice","sort","reverse"].forEach((function(t){var e=bt[t];B(wt,t,(function(){for(var n=[],r=0;r&lt;arguments.length;r++)n[r]=arguments[r];var o,i=e.apply(this,n),a=this.__ob__;switch(t){case"push":case"unshift":o=n;break;case"splice":o=n.slice(2)}return o&amp;&amp;a.observeArray(o),a.dep.notify(),i}))}));var $t=Object.getOwnPropertyNames(wt),Ct={},xt=!0;function Ot(t){xt=t}var kt={notify:A,depend:A,addSub:A,removeSub:A},St=function(){function t(t,n,r){if(void 0===n&amp;&amp;(n=!1),void 0===r&amp;&amp;(r=!1),this.value=t,this.shallow=n,this.mock=r,this.dep=r?kt:new mt,this.vmCount=0,B(t,"__ob__",this),e(t)){if(!r)if(H)t.__proto__=wt;else for(var o=0,i=$t.length;o&lt;i;o++){B(t,s=$t[o],wt[s])}n||this.observeArray(t)}else{var a=Object.keys(t);for(o=0;o&lt;a.length;o++){var s;Tt(t,s=a[o],Ct,void 0,n,r)}}}return t.prototype.observeArray=function(t){for(var e=0,n=t.length;e&lt;n;e++)jt(t[e],!1,this.mock)},t}();function jt(t,n,r){return t&amp;&amp;g(t,"__ob__")&amp;&amp;t.__ob__ instanceof St?t.__ob__:!xt||!r&amp;&amp;nt()||!e(t)&amp;&amp;!u(t)||!Object.isExtensible(t)||t.__v_skip||Ft(t)||t instanceof ut?void 0:new St(t,n,r)}function Tt(t,n,r,o,i,a,s){void 0===s&amp;&amp;(s=!1);var c=new mt,u=Object.getOwnPropertyDescriptor(t,n);if(!u||!1!==u.configurable){var f=u&amp;&amp;u.get,l=u&amp;&amp;u.set;f&amp;&amp;!l||r!==Ct&amp;&amp;2!==arguments.length||(r=t[n]);var d=i?r&amp;&amp;r.__ob__:jt(r,!1,a);return Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:function(){var n=f?f.call(t):r;return mt.target&amp;&amp;(c.depend(),d&amp;&amp;(d.dep.depend(),e(n)&amp;&amp;Pt(n))),Ft(n)&amp;&amp;!i?n.value:n},set:function(e){var n=f?f.call(t):r;if(M(n,e)){if(l)l.call(t,e);else{if(f)return;if(!i&amp;&amp;Ft(n)&amp;&amp;!Ft(e))return void(n.value=e);r=e}d=i?e&amp;&amp;e.__ob__:jt(e,!1,a),c.notify()}}}),c}}function At(t,n,r){if(!Lt(t)){var o=t.__ob__;return e(t)&amp;&amp;f(n)?(t.length=Math.max(t.length,n),t.splice(n,1,r),o&amp;&amp;!o.shallow&amp;&amp;o.mock&amp;&amp;jt(r,!1,!0),r):n in t&amp;&amp;!(n in Object.prototype)?(t[n]=r,r):t._isVue||o&amp;&amp;o.vmCount?r:o?(Tt(o.value,n,r,void 0,o.shallow,o.mock),o.dep.notify(),r):(t[n]=r,r)}}function Et(t,n){if(e(t)&amp;&amp;f(n))t.splice(n,1);else{var r=t.__ob__;t._isVue||r&amp;&amp;r.vmCount||Lt(t)||g(t,n)&amp;&amp;(delete t[n],r&amp;&amp;r.dep.notify())}}function Pt(t){for(var n=void 0,r=0,o=t.length;r&lt;o;r++)(n=t[r])&amp;&amp;n.__ob__&amp;&amp;n.__ob__.dep.depend(),e(n)&amp;&amp;Pt(n)}function It(t){return Dt(t,!0),B(t,"__v_isShallow",!0),t}function Dt(t,e){Lt(t)||jt(t,e,nt())}function Nt(t){return Lt(t)?Nt(t.__v_raw):!(!t||!t.__ob__)}function Mt(t){return!(!t||!t.__v_isShallow)}function Lt(t){return!(!t||!t.__v_isReadonly)}var Rt="__v_isRef";function Ft(t){return!(!t||!0!==t.__v_isRef)}function Ut(t,e){if(Ft(t))return t;var n={};return B(n,Rt,!0),B(n,"__v_isShallow",e),B(n,"dep",Tt(n,"value",t,null,e,nt())),n}function Vt(t,e,n){Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:function(){var t=e[n];if(Ft(t))return t.value;var r=t&amp;&amp;t.__ob__;return r&amp;&amp;r.dep.depend(),t},set:function(t){var r=e[n];Ft(r)&amp;&amp;!Ft(t)?r.value=t:e[n]=t}})}function Bt(t,e,n){var r=t[e];if(Ft(r))return r;var o={get value(){var r=t[e];return void 0===r?n:r},set value(n){t[e]=n}};return B(o,Rt,!0),o}var zt="__v_rawToReadonly",Ht="__v_rawToShallowReadonly";function Wt(t){return Kt(t,!1)}function Kt(t,e){if(!u(t))return t;if(Lt(t))return t;var n=e?Ht:zt,r=t[n];if(r)return r;var o=Object.create(Object.getPrototypeOf(t));B(t,n,o),B(o,"__v_isReadonly",!0),B(o,"__v_raw",t),Ft(t)&amp;&amp;B(o,Rt,!0),(e||Mt(t))&amp;&amp;B(o,"__v_isShallow",!0);for(var i=Object.keys(t),a=0;a&lt;i.length;a++)qt(o,t,i[a],e);return o}function qt(t,e,n,r){Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:function(){var t=e[n];return r||!u(t)?t:Wt(t)},set:function(){}})}var Gt="watcher",Zt="".concat(Gt," callback"),Jt="".concat(Gt," getter"),Xt="".concat(Gt," cleanup");function Qt(t,e){return ee(t,null,{flush:"post"})}var Yt,te={};function ee(n,r,o){var i=void 0===o?t:o,s=i.immediate,c=i.deep,u=i.flush,f=void 0===u?"pre":u;i.onTrack,i.onTrigger;var l,d,p=st,v=function(t,e,n){void 0===n&amp;&amp;(n=null);var r=qe(t,null,n,p,e);return c&amp;&amp;r&amp;&amp;r.__ob__&amp;&amp;r.__ob__.dep.depend(),r},h=!1,m=!1;if(Ft(n)?(l=function(){return n.value},h=Mt(n)):Nt(n)?(l=function(){return n.__ob__.dep.depend(),n},c=!0):e(n)?(m=!0,h=n.some((function(t){return Nt(t)||Mt(t)})),l=function(){return n.map((function(t){return Ft(t)?t.value:Nt(t)?(t.__ob__.dep.depend(),Cn(t)):a(t)?v(t,Jt):void 0}))}):l=a(n)?r?function(){return v(n,Jt)}:function(){if(!p||!p._isDestroyed)return d&amp;&amp;d(),v(n,Gt,[y])}:A,r&amp;&amp;c){var _=l;l=function(){return Cn(_())}}var y=function(t){d=g.onStop=function(){v(t,Xt)}};if(nt())return y=A,r?s&amp;&amp;v(r,Zt,[l(),m?[]:void 0,y]):l(),A;var g=new Sn(st,l,A,{lazy:!0});g.noRecurse=!r;var b=m?[]:te;return g.run=function(){if(g.active)if(r){var t=g.get();(c||h||(m?t.some((function(t,e){return M(t,b[e])})):M(t,b)))&amp;&amp;(d&amp;&amp;d(),v(r,Zt,[t,b===te?void 0:b,y]),b=t)}else g.get()},"sync"===f?g.update=g.run:"post"===f?(g.post=!0,g.update=function(){return Zn(g)}):g.update=function(){if(p&amp;&amp;p===st&amp;&amp;!p._isMounted){var t=p._preWatchers||(p._preWatchers=[]);t.indexOf(g)&lt;0&amp;&amp;t.push(g)}else Zn(g)},r?s?g.run():b=g.get():"post"===f&amp;&amp;p?p.$once("hook:mounted",(function(){return g.get()})):g.get(),function(){g.teardown()}}var ne=function(){function t(t){void 0===t&amp;&amp;(t=!1),this.detached=t,this.active=!0,this.effects=[],this.cleanups=[],this.parent=Yt,!t&amp;&amp;Yt&amp;&amp;(this.index=(Yt.scopes||(Yt.scopes=[])).push(this)-1)}return t.prototype.run=function(t){if(this.active){var e=Yt;try{return Yt=this,t()}finally{Yt=e}}},t.prototype.on=function(){Yt=this},t.prototype.off=function(){Yt=this.parent},t.prototype.stop=function(t){if(this.active){var e=void 0,n=void 0;for(e=0,n=this.effects.length;e&lt;n;e++)this.effects[e].teardown();for(e=0,n=this.cleanups.length;e&lt;n;e++)this.cleanups[e]();if(this.scopes)for(e=0,n=this.scopes.length;e&lt;n;e++)this.scopes[e].stop(!0);if(!this.detached&amp;&amp;this.parent&amp;&amp;!t){var r=this.parent.scopes.pop();r&amp;&amp;r!==this&amp;&amp;(this.parent.scopes[this.index]=r,r.index=this.index)}this.parent=void 0,this.active=!1}},t}();function re(){return Yt}function oe(t){var e=t._provided,n=t.$parent&amp;&amp;t.$parent._provided;return n===e?t._provided=Object.create(n):e}var ie=b((function(t){var e="&amp;"===t.charAt(0),n="~"===(t=e?t.slice(1):t).charAt(0),r="!"===(t=n?t.slice(1):t).charAt(0);return{name:t=r?t.slice(1):t,once:n,capture:r,passive:e}}));function ae(t,n){function r(){var t=r.fns;if(!e(t))return qe(t,null,arguments,n,"v-on handler");for(var o=t.slice(),i=0;i&lt;o.length;i++)qe(o[i],null,arguments,n,"v-on handler")}return r.fns=t,r}function se(t,e,r,i,a,s){var c,u,f,l;for(c in t)u=t[c],f=e[c],l=ie(c),n(u)||(n(f)?(n(u.fns)&amp;&amp;(u=t[c]=ae(u,s)),o(l.once)&amp;&amp;(u=t[c]=a(l.name,u,l.capture)),r(l.name,u,l.capture,l.passive,l.params)):u!==f&amp;&amp;(f.fns=u,t[c]=f));for(c in e)n(t[c])&amp;&amp;i((l=ie(c)).name,e[c],l.capture)}function ce(t,e,i){var a;t instanceof ut&amp;&amp;(t=t.data.hook||(t.data.hook={}));var s=t[e];function c(){i.apply(this,arguments),_(a.fns,c)}n(s)?a=ae([c]):r(s.fns)&amp;&amp;o(s.merged)?(a=s).fns.push(c):a=ae([s,c]),a.merged=!0,t[e]=a}function ue(t,e,n,o,i){if(r(e)){if(g(e,n))return t[n]=e[n],i||delete e[n],!0;if(g(e,o))return t[n]=e[o],i||delete e[o],!0}return!1}function fe(t){return i(t)?[lt(t)]:e(t)?de(t):void 0}function le(t){return r(t)&amp;&amp;r(t.text)&amp;&amp;!1===t.isComment}function de(t,a){var s,c,u,f,l=[];for(s=0;s&lt;t.length;s++)n(c=t[s])||"boolean"==typeof c||(f=l[u=l.length-1],e(c)?c.length&gt;0&amp;&amp;(le((c=de(c,"".concat(a||"","_").concat(s)))[0])&amp;&amp;le(f)&amp;&amp;(l[u]=lt(f.text+c[0].text),c.shift()),l.push.apply(l,c)):i(c)?le(f)?l[u]=lt(f.text+c):""!==c&amp;&amp;l.push(lt(c)):le(c)&amp;&amp;le(f)?l[u]=lt(f.text+c.text):(o(t._isVList)&amp;&amp;r(c.tag)&amp;&amp;n(c.key)&amp;&amp;r(a)&amp;&amp;(c.key="__vlist".concat(a,"_").concat(s,"__")),l.push(c)));return l}function pe(t,n){var o,i,a,c,u=null;if(e(t)||"string"==typeof t)for(u=new Array(t.length),o=0,i=t.length;o&lt;i;o++)u[o]=n(t[o],o);else if("number"==typeof t)for(u=new Array(t),o=0;o&lt;t;o++)u[o]=n(o+1,o);else if(s(t))if(at&amp;&amp;t[Symbol.iterator]){u=[];for(var f=t[Symbol.iterator](),l=f.next();!l.done;)u.push(n(l.value,u.length)),l=f.next()}else for(a=Object.keys(t),u=new Array(a.length),o=0,i=a.length;o&lt;i;o++)c=a[o],u[o]=n(t[c],c,o);return r(u)||(u=[]),u._isVList=!0,u}function ve(t,e,n,r){var o,i=this.$scopedSlots[t];i?(n=n||{},r&amp;&amp;(n=j(j({},r),n)),o=i(n)||(a(e)?e():e)):o=this.$slots[t]||(a(e)?e():e);var s=n&amp;&amp;n.slot;return s?this.$createElement("template",{slot:s},o):o}function he(t){return pr(this.$options,"filters",t)||P}function me(t,n){return e(t)?-1===t.indexOf(n):t!==n}function _e(t,e,n,r,o){var i=U.keyCodes[e]||n;return o&amp;&amp;r&amp;&amp;!U.keyCodes[e]?me(o,r):i?me(i,t):r?O(r)!==e:void 0===t}function ye(t,n,r,o,i){if(r)if(s(r)){e(r)&amp;&amp;(r=T(r));var a=void 0,c=function(e){if("class"===e||"style"===e||m(e))a=t;else{var s=t.attrs&amp;&amp;t.attrs.type;a=o||U.mustUseProp(n,s,e)?t.domProps||(t.domProps={}):t.attrs||(t.attrs={})}var c=$(e),u=O(e);c in a||u in a||(a[e]=r[e],i&amp;&amp;((t.on||(t.on={}))["update:".concat(e)]=function(t){r[e]=t}))};for(var u in r)c(u)}else;return t}function ge(t,e){var n=this._staticTrees||(this._staticTrees=[]),r=n[t];return r&amp;&amp;!e||we(r=n[t]=this.$options.staticRenderFns[t].call(this._renderProxy,this._c,this),"__static__".concat(t),!1),r}function be(t,e,n){return we(t,"__once__".concat(e).concat(n?"_".concat(n):""),!0),t}function we(t,n,r){if(e(t))for(var o=0;o&lt;t.length;o++)t[o]&amp;&amp;"string"!=typeof t[o]&amp;&amp;$e(t[o],"".concat(n,"_").concat(o),r);else $e(t,n,r)}function $e(t,e,n){t.isStatic=!0,t.key=e,t.isOnce=n}function Ce(t,e){if(e)if(u(e)){var n=t.on=t.on?j({},t.on):{};for(var r in e){var o=n[r],i=e[r];n[r]=o?[].concat(o,i):i}}else;return t}function xe(t,n,r,o){n=n||{$stable:!r};for(var i=0;i&lt;t.length;i++){var a=t[i];e(a)?xe(a,n,r):a&amp;&amp;(a.proxy&amp;&amp;(a.fn.proxy=!0),n[a.key]=a.fn)}return o&amp;&amp;(n.$key=o),n}function Oe(t,e){for(var n=0;n&lt;e.length;n+=2){var r=e[n];"string"==typeof r&amp;&amp;r&amp;&amp;(t[e[n]]=e[n+1])}return t}function ke(t,e){return"string"==typeof t?e+t:t}function Se(t){t._o=be,t._n=v,t._s=d,t._l=pe,t._t=ve,t._q=I,t._i=D,t._m=ge,t._f=he,t._k=_e,t._b=ye,t._v=lt,t._e=ft,t._u=xe,t._g=Ce,t._d=Oe,t._p=ke}function je(t,e){if(!t||!t.length)return{};for(var n={},r=0,o=t.length;r&lt;o;r++){var i=t[r],a=i.data;if(a&amp;&amp;a.attrs&amp;&amp;a.attrs.slot&amp;&amp;delete a.attrs.slot,i.context!==e&amp;&amp;i.fnContext!==e||!a||null==a.slot)(n.default||(n.default=[])).push(i);else{var s=a.slot,c=n[s]||(n[s]=[]);"template"===i.tag?c.push.apply(c,i.children||[]):c.push(i)}}for(var u in n)n[u].every(Te)&amp;&amp;delete n[u];return n}function Te(t){return t.isComment&amp;&amp;!t.asyncFactory||" "===t.text}function Ae(t){return t.isComment&amp;&amp;t.asyncFactory}function Ee(e,n,r,o){var i,a=Object.keys(r).length&gt;0,s=n?!!n.$stable:!a,c=n&amp;&amp;n.$key;if(n){if(n._normalized)return n._normalized;if(s&amp;&amp;o&amp;&amp;o!==t&amp;&amp;c===o.$key&amp;&amp;!a&amp;&amp;!o.$hasNormal)return o;for(var u in i={},n)n[u]&amp;&amp;"$"!==u[0]&amp;&amp;(i[u]=Pe(e,r,u,n[u]))}else i={};for(var f in r)f in i||(i[f]=Ie(r,f));return n&amp;&amp;Object.isExtensible(n)&amp;&amp;(n._normalized=i),B(i,"$stable",s),B(i,"$key",c),B(i,"$hasNormal",a),i}function Pe(t,n,r,o){var i=function(){var n=st;ct(t);var r=arguments.length?o.apply(null,arguments):o({}),i=(r=r&amp;&amp;"object"==typeof r&amp;&amp;!e(r)?[r]:fe(r))&amp;&amp;r[0];return ct(n),r&amp;&amp;(!i||1===r.length&amp;&amp;i.isComment&amp;&amp;!Ae(i))?void 0:r};return o.proxy&amp;&amp;Object.defineProperty(n,r,{get:i,enumerable:!0,configurable:!0}),i}function Ie(t,e){return function(){return t[e]}}function De(e){return{get attrs(){if(!e._attrsProxy){var n=e._attrsProxy={};B(n,"_v_attr_proxy",!0),Ne(n,e.$attrs,t,e,"$attrs")}return e._attrsProxy},get listeners(){e._listenersProxy||Ne(e._listenersProxy={},e.$listeners,t,e,"$listeners");return e._listenersProxy},get slots(){return function(t){t._slotsProxy||Le(t._slotsProxy={},t.$scopedSlots);return t._slotsProxy}(e)},emit:k(e.$emit,e),expose:function(t){t&amp;&amp;Object.keys(t).forEach((function(n){return Vt(e,t,n)}))}}}function Ne(t,e,n,r,o){var i=!1;for(var a in e)a in t?e[a]!==n[a]&amp;&amp;(i=!0):(i=!0,Me(t,a,r,o));for(var a in t)a in e||(i=!0,delete t[a]);return i}function Me(t,e,n,r){Object.defineProperty(t,e,{enumerable:!0,configurable:!0,get:function(){return n[r][e]}})}function Le(t,e){for(var n in e)t[n]=e[n];for(var n in t)n in e||delete t[n]}function Re(){var t=st;return t._setupContext||(t._setupContext=De(t))}var Fe=null;function Ue(t,e){return(t.__esModule||at&amp;&amp;"Module"===t[Symbol.toStringTag])&amp;&amp;(t=t.default),s(t)?e.extend(t):t}function Ve(t){if(e(t))for(var n=0;n&lt;t.length;n++){var o=t[n];if(r(o)&amp;&amp;(r(o.componentOptions)||Ae(o)))return o}}var Be=1,ze=2;function He(t,n,c,u,f,l){return(e(c)||i(c))&amp;&amp;(f=u,u=c,c=void 0),o(l)&amp;&amp;(f=ze),function(t,n,o,i,c){if(r(o)&amp;&amp;r(o.__ob__))return ft();r(o)&amp;&amp;r(o.is)&amp;&amp;(n=o.is);if(!n)return ft();e(i)&amp;&amp;a(i[0])&amp;&amp;((o=o||{}).scopedSlots={default:i[0]},i.length=0);c===ze?i=fe(i):c===Be&amp;&amp;(i=function(t){for(var n=0;n&lt;t.length;n++)if(e(t[n]))return Array.prototype.concat.apply([],t);return t}(i));var u,f;if("string"==typeof n){var l=void 0;f=t.$vnode&amp;&amp;t.$vnode.ns||U.getTagNamespace(n),u=U.isReservedTag(n)?new ut(U.parsePlatformTagName(n),o,i,void 0,void 0,t):o&amp;&amp;o.pre||!r(l=pr(t.$options,"components",n))?new ut(n,o,i,void 0,void 0,t):rr(l,o,t,i,n)}else u=rr(n,o,t,i);return e(u)?u:r(u)?(r(f)&amp;&amp;We(u,f),r(o)&amp;&amp;function(t){s(t.style)&amp;&amp;Cn(t.style);s(t.class)&amp;&amp;Cn(t.class)}(o),u):ft()}(t,n,c,u,f)}function We(t,e,i){if(t.ns=e,"foreignObject"===t.tag&amp;&amp;(e=void 0,i=!0),r(t.children))for(var a=0,s=t.children.length;a&lt;s;a++){var c=t.children[a];r(c.tag)&amp;&amp;(n(c.ns)||o(i)&amp;&amp;"svg"!==c.tag)&amp;&amp;We(c,e,i)}}function Ke(t,e,n){yt();try{if(e)for(var r=e;r=r.$parent;){var o=r.$options.errorCaptured;if(o)for(var i=0;i&lt;o.length;i++)try{if(!1===o[i].call(r,t,e,n))return}catch(t){Ge(t,r,"errorCaptured hook")}}Ge(t,e,n)}finally{gt()}}function qe(t,e,n,r,o){var i;try{(i=n?t.apply(e,n):t.call(e))&amp;&amp;!i._isVue&amp;&amp;l(i)&amp;&amp;!i._handled&amp;&amp;(i.catch((function(t){return Ke(t,r,o+" (Promise/async)")})),i._handled=!0)}catch(t){Ke(t,r,o)}return i}function Ge(t,e,n){if(U.errorHandler)try{return U.errorHandler.call(null,t,e,n)}catch(e){e!==t&amp;&amp;Ze(e)}Ze(t)}function Ze(t,e,n){if(!W||"undefined"==typeof console)throw t;console.error(t)}var Je,Xe=!1,Qe=[],Ye=!1;function tn(){Ye=!1;var t=Qe.slice(0);Qe.length=0;for(var e=0;e&lt;t.length;e++)t[e]()}if("undefined"!=typeof Promise&amp;&amp;ot(Promise)){var en=Promise.resolve();Je=function(){en.then(tn),J&amp;&amp;setTimeout(A)},Xe=!0}else if(q||"undefined"==typeof MutationObserver||!ot(MutationObserver)&amp;&amp;"[object MutationObserverConstructor]"!==MutationObserver.toString())Je="undefined"!=typeof setImmediate&amp;&amp;ot(setImmediate)?function(){setImmediate(tn)}:function(){setTimeout(tn,0)};else{var nn=1,rn=new MutationObserver(tn),on=document.createTextNode(String(nn));rn.observe(on,{characterData:!0}),Je=function(){nn=(nn+1)%2,on.data=String(nn)},Xe=!0}function an(t,e){var n;if(Qe.push((function(){if(t)try{t.call(e)}catch(t){Ke(t,e,"nextTick")}else n&amp;&amp;n(e)})),Ye||(Ye=!0,Je()),!t&amp;&amp;"undefined"!=typeof Promise)return new Promise((function(t){n=t}))}function sn(t){return function(e,n){if(void 0===n&amp;&amp;(n=st),n)return function(t,e,n){var r=t.$options;r[e]=ur(r[e],n)}(n,t,e)}}var cn=sn("beforeMount"),un=sn("mounted"),fn=sn("beforeUpdate"),ln=sn("updated"),dn=sn("beforeDestroy"),pn=sn("destroyed"),vn=sn("activated"),hn=sn("deactivated"),mn=sn("serverPrefetch"),_n=sn("renderTracked"),yn=sn("renderTriggered"),gn=sn("errorCaptured");var bn="2.7.16";var wn=Object.freeze({__proto__:null,version:bn,defineComponent:function(t){return t},ref:function(t){return Ut(t,!1)},shallowRef:function(t){return Ut(t,!0)},isRef:Ft,toRef:Bt,toRefs:function(t){var n=e(t)?new Array(t.length):{};for(var r in t)n[r]=Bt(t,r);return n},unref:function(t){return Ft(t)?t.value:t},proxyRefs:function(t){if(Nt(t))return t;for(var e={},n=Object.keys(t),r=0;r&lt;n.length;r++)Vt(e,t,n[r]);return e},customRef:function(t){var e=new mt,n=t((function(){e.depend()}),(function(){e.notify()})),r=n.get,o=n.set,i={get value(){return r()},set value(t){o(t)}};return B(i,Rt,!0),i},triggerRef:function(t){t.dep&amp;&amp;t.dep.notify()},reactive:function(t){return Dt(t,!1),t},isReactive:Nt,isReadonly:Lt,isShallow:Mt,isProxy:function(t){return Nt(t)||Lt(t)},shallowReactive:It,markRaw:function(t){return Object.isExtensible(t)&amp;&amp;B(t,"__v_skip",!0),t},toRaw:function t(e){var n=e&amp;&amp;e.__v_raw;return n?t(n):e},readonly:Wt,shallowReadonly:function(t){return Kt(t,!0)},computed:function(t,e){var n,r,o=a(t);o?(n=t,r=A):(n=t.get,r=t.set);var i=nt()?null:new Sn(st,n,A,{lazy:!0}),s={effect:i,get value(){return i?(i.dirty&amp;&amp;i.evaluate(),mt.target&amp;&amp;i.depend(),i.value):n()},set value(t){r(t)}};return B(s,Rt,!0),B(s,"__v_isReadonly",o),s},watch:function(t,e,n){return ee(t,e,n)},watchEffect:function(t,e){return ee(t,null,e)},watchPostEffect:Qt,watchSyncEffect:function(t,e){return ee(t,null,{flush:"sync"})},EffectScope:ne,effectScope:function(t){return new ne(t)},onScopeDispose:function(t){Yt&amp;&amp;Yt.cleanups.push(t)},getCurrentScope:re,provide:function(t,e){st&amp;&amp;(oe(st)[t]=e)},inject:function(t,e,n){void 0===n&amp;&amp;(n=!1);var r=st;if(r){var o=r.$parent&amp;&amp;r.$parent._provided;if(o&amp;&amp;t in o)return o[t];if(arguments.length&gt;1)return n&amp;&amp;a(e)?e.call(r):e}},h:function(t,e,n){return He(st,t,e,n,2,!0)},getCurrentInstance:function(){return st&amp;&amp;{proxy:st}},useSlots:function(){return Re().slots},useAttrs:function(){return Re().attrs},useListeners:function(){return Re().listeners},mergeDefaults:function(t,n){var r=e(t)?t.reduce((function(t,e){return t[e]={},t}),{}):t;for(var o in n){var i=r[o];i?e(i)||a(i)?r[o]={type:i,default:n[o]}:i.default=n[o]:null===i&amp;&amp;(r[o]={default:n[o]})}return r},nextTick:an,set:At,del:Et,useCssModule:function(e){return t},useCssVars:function(t){if(W){var e=st;e&amp;&amp;Qt((function(){var n=e.$el,r=t(e,e._setupProxy);if(n&amp;&amp;1===n.nodeType){var o=n.style;for(var i in r)o.setProperty("--".concat(i),r[i])}}))}},defineAsyncComponent:function(t){a(t)&amp;&amp;(t={loader:t});var e=t.loader,n=t.loadingComponent,r=t.errorComponent,o=t.delay,i=void 0===o?200:o,s=t.timeout;t.suspensible;var c=t.onError,u=null,f=0,l=function(){var t;return u||(t=u=e().catch((function(t){if(t=t instanceof Error?t:new Error(String(t)),c)return new Promise((function(e,n){c(t,(function(){return e((f++,u=null,l()))}),(function(){return n(t)}),f+1)}));throw t})).then((function(e){return t!==u&amp;&amp;u?u:(e&amp;&amp;(e.__esModule||"Module"===e[Symbol.toStringTag])&amp;&amp;(e=e.default),e)})))};return function(){return{component:l(),delay:i,timeout:s,error:r,loading:n}}},onBeforeMount:cn,onMounted:un,onBeforeUpdate:fn,onUpdated:ln,onBeforeUnmount:dn,onUnmounted:pn,onActivated:vn,onDeactivated:hn,onServerPrefetch:mn,onRenderTracked:_n,onRenderTriggered:yn,onErrorCaptured:function(t,e){void 0===e&amp;&amp;(e=st),gn(t,e)}}),$n=new it;function Cn(t){return xn(t,$n),$n.clear(),t}function xn(t,n){var r,o,i=e(t);if(!(!i&amp;&amp;!s(t)||t.__v_skip||Object.isFrozen(t)||t instanceof ut)){if(t.__ob__){var a=t.__ob__.dep.id;if(n.has(a))return;n.add(a)}if(i)for(r=t.length;r--;)xn(t[r],n);else if(Ft(t))xn(t.value,n);else for(r=(o=Object.keys(t)).length;r--;)xn(t[o[r]],n)}}var On,kn=0,Sn=function(){function t(t,e,n,r,o){var i,s;i=this,void 0===(s=Yt&amp;&amp;!Yt._vm?Yt:t?t._scope:void 0)&amp;&amp;(s=Yt),s&amp;&amp;s.active&amp;&amp;s.effects.push(i),(this.vm=t)&amp;&amp;o&amp;&amp;(t._watcher=this),r?(this.deep=!!r.deep,this.user=!!r.user,this.lazy=!!r.lazy,this.sync=!!r.sync,this.before=r.before):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++kn,this.active=!0,this.post=!1,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new it,this.newDepIds=new it,this.expression="",a(e)?this.getter=e:(this.getter=function(t){if(!z.test(t)){var e=t.split(".");return function(t){for(var n=0;n&lt;e.length;n++){if(!t)return;t=t[e[n]]}return t}}}(e),this.getter||(this.getter=A)),this.value=this.lazy?void 0:this.get()}return t.prototype.get=function(){var t;yt(this);var e=this.vm;try{t=this.getter.call(e,e)}catch(t){if(!this.user)throw t;Ke(t,e,'getter for watcher "'.concat(this.expression,'"'))}finally{this.deep&amp;&amp;Cn(t),gt(),this.cleanupDeps()}return t},t.prototype.addDep=function(t){var e=t.id;this.newDepIds.has(e)||(this.newDepIds.add(e),this.newDeps.push(t),this.depIds.has(e)||t.addSub(this))},t.prototype.cleanupDeps=function(){for(var t=this.deps.length;t--;){var e=this.deps[t];this.newDepIds.has(e.id)||e.removeSub(this)}var n=this.depIds;this.depIds=this.newDepIds,this.newDepIds=n,this.newDepIds.clear(),n=this.deps,this.deps=this.newDeps,this.newDeps=n,this.newDeps.length=0},t.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():Zn(this)},t.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||s(t)||this.deep){var e=this.value;if(this.value=t,this.user){var n='callback for watcher "'.concat(this.expression,'"');qe(this.cb,this.vm,[t,e],this.vm,n)}else this.cb.call(this.vm,t,e)}}},t.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},t.prototype.depend=function(){for(var t=this.deps.length;t--;)this.deps[t].depend()},t.prototype.teardown=function(){if(this.vm&amp;&amp;!this.vm._isBeingDestroyed&amp;&amp;_(this.vm._scope.effects,this),this.active){for(var t=this.deps.length;t--;)this.deps[t].removeSub(this);this.active=!1,this.onStop&amp;&amp;this.onStop()}},t}();function jn(t,e){On.$on(t,e)}function Tn(t,e){On.$off(t,e)}function An(t,e){var n=On;return function r(){null!==e.apply(null,arguments)&amp;&amp;n.$off(t,r)}}function En(t,e,n){On=t,se(e,n||{},jn,Tn,An,t),On=void 0}var Pn=null;function In(t){var e=Pn;return Pn=t,function(){Pn=e}}function Dn(t){for(;t&amp;&amp;(t=t.$parent);)if(t._inactive)return!0;return!1}function Nn(t,e){if(e){if(t._directInactive=!1,Dn(t))return}else if(t._directInactive)return;if(t._inactive||null===t._inactive){t._inactive=!1;for(var n=0;n&lt;t.$children.length;n++)Nn(t.$children[n]);Ln(t,"activated")}}function Mn(t,e){if(!(e&amp;&amp;(t._directInactive=!0,Dn(t))||t._inactive)){t._inactive=!0;for(var n=0;n&lt;t.$children.length;n++)Mn(t.$children[n]);Ln(t,"deactivated")}}function Ln(t,e,n,r){void 0===r&amp;&amp;(r=!0),yt();var o=st,i=re();r&amp;&amp;ct(t);var a=t.$options[e],s="".concat(e," hook");if(a)for(var c=0,u=a.length;c&lt;u;c++)qe(a[c],t,n||null,t,s);t._hasHookEvent&amp;&amp;t.$emit("hook:"+e),r&amp;&amp;(ct(o),i&amp;&amp;i.on()),gt()}var Rn=[],Fn=[],Un={},Vn=!1,Bn=!1,zn=0;var Hn=0,Wn=Date.now;if(W&amp;&amp;!q){var Kn=window.performance;Kn&amp;&amp;"function"==typeof Kn.now&amp;&amp;Wn()&gt;document.createEvent("Event").timeStamp&amp;&amp;(Wn=function(){return Kn.now()})}var qn=function(t,e){if(t.post){if(!e.post)return 1}else if(e.post)return-1;return t.id-e.id};function Gn(){var t,e;for(Hn=Wn(),Bn=!0,Rn.sort(qn),zn=0;zn&lt;Rn.length;zn++)(t=Rn[zn]).before&amp;&amp;t.before(),e=t.id,Un[e]=null,t.run();var n=Fn.slice(),r=Rn.slice();zn=Rn.length=Fn.length=0,Un={},Vn=Bn=!1,function(t){for(var e=0;e&lt;t.length;e++)t[e]._inactive=!0,Nn(t[e],!0)}(n),function(t){var e=t.length;for(;e--;){var n=t[e],r=n.vm;r&amp;&amp;r._watcher===n&amp;&amp;r._isMounted&amp;&amp;!r._isDestroyed&amp;&amp;Ln(r,"updated")}}(r),ht(),rt&amp;&amp;U.devtools&amp;&amp;rt.emit("flush")}function Zn(t){var e=t.id;if(null==Un[e]&amp;&amp;(t!==mt.target||!t.noRecurse)){if(Un[e]=!0,Bn){for(var n=Rn.length-1;n&gt;zn&amp;&amp;Rn[n].id&gt;t.id;)n--;Rn.splice(n+1,0,t)}else Rn.push(t);Vn||(Vn=!0,an(Gn))}}function Jn(t,e){if(t){for(var n=Object.create(null),r=at?Reflect.ownKeys(t):Object.keys(t),o=0;o&lt;r.length;o++){var i=r[o];if("__ob__"!==i){var s=t[i].from;if(s in e._provided)n[i]=e._provided[s];else if("default"in t[i]){var c=t[i].default;n[i]=a(c)?c.call(e):c}}}return n}}function Xn(n,r,i,a,s){var c,u=this,f=s.options;g(a,"_uid")?(c=Object.create(a))._original=a:(c=a,a=a._original);var l=o(f._compiled),d=!l;this.data=n,this.props=r,this.children=i,this.parent=a,this.listeners=n.on||t,this.injections=Jn(f.inject,a),this.slots=function(){return u.$slots||Ee(a,n.scopedSlots,u.$slots=je(i,a)),u.$slots},Object.defineProperty(this,"scopedSlots",{enumerable:!0,get:function(){return Ee(a,n.scopedSlots,this.slots())}}),l&amp;&amp;(this.$options=f,this.$slots=this.slots(),this.$scopedSlots=Ee(a,n.scopedSlots,this.$slots)),f._scopeId?this._c=function(t,n,r,o){var i=He(c,t,n,r,o,d);return i&amp;&amp;!e(i)&amp;&amp;(i.fnScopeId=f._scopeId,i.fnContext=a),i}:this._c=function(t,e,n,r){return He(c,t,e,n,r,d)}}function Qn(t,e,n,r,o){var i=dt(t);return i.fnContext=n,i.fnOptions=r,e.slot&amp;&amp;((i.data||(i.data={})).slot=e.slot),i}function Yn(t,e){for(var n in e)t[$(n)]=e[n]}function tr(t){return t.name||t.__name||t._componentTag}Se(Xn.prototype);var er={init:function(t,e){if(t.componentInstance&amp;&amp;!t.componentInstance._isDestroyed&amp;&amp;t.data.keepAlive){var n=t;er.prepatch(n,n)}else{(t.componentInstance=function(t,e){var n={_isComponent:!0,_parentVnode:t,parent:e},o=t.data.inlineTemplate;r(o)&amp;&amp;(n.render=o.render,n.staticRenderFns=o.staticRenderFns);return new t.componentOptions.Ctor(n)}(t,Pn)).$mount(e?t.elm:void 0,e)}},prepatch:function(e,n){var r=n.componentOptions;!function(e,n,r,o,i){var a=o.data.scopedSlots,s=e.$scopedSlots,c=!!(a&amp;&amp;!a.$stable||s!==t&amp;&amp;!s.$stable||a&amp;&amp;e.$scopedSlots.$key!==a.$key||!a&amp;&amp;e.$scopedSlots.$key),u=!!(i||e.$options._renderChildren||c),f=e.$vnode;e.$options._parentVnode=o,e.$vnode=o,e._vnode&amp;&amp;(e._vnode.parent=o),e.$options._renderChildren=i;var l=o.data.attrs||t;e._attrsProxy&amp;&amp;Ne(e._attrsProxy,l,f.data&amp;&amp;f.data.attrs||t,e,"$attrs")&amp;&amp;(u=!0),e.$attrs=l,r=r||t;var d=e.$options._parentListeners;if(e._listenersProxy&amp;&amp;Ne(e._listenersProxy,r,d||t,e,"$listeners"),e.$listeners=e.$options._parentListeners=r,En(e,r,d),n&amp;&amp;e.$options.props){Ot(!1);for(var p=e._props,v=e.$options._propKeys||[],h=0;h&lt;v.length;h++){var m=v[h],_=e.$options.props;p[m]=vr(m,_,n,e)}Ot(!0),e.$options.propsData=n}u&amp;&amp;(e.$slots=je(i,o.context),e.$forceUpdate())}(n.componentInstance=e.componentInstance,r.propsData,r.listeners,n,r.children)},insert:function(t){var e,n=t.context,r=t.componentInstance;r._isMounted||(r._isMounted=!0,Ln(r,"mounted")),t.data.keepAlive&amp;&amp;(n._isMounted?((e=r)._inactive=!1,Fn.push(e)):Nn(r,!0))},destroy:function(t){var e=t.componentInstance;e._isDestroyed||(t.data.keepAlive?Mn(e,!0):e.$destroy())}},nr=Object.keys(er);function rr(i,a,c,u,f){if(!n(i)){var d=c.$options._base;if(s(i)&amp;&amp;(i=d.extend(i)),"function"==typeof i){var p;if(n(i.cid)&amp;&amp;(i=function(t,e){if(o(t.error)&amp;&amp;r(t.errorComp))return t.errorComp;if(r(t.resolved))return t.resolved;var i=Fe;if(i&amp;&amp;r(t.owners)&amp;&amp;-1===t.owners.indexOf(i)&amp;&amp;t.owners.push(i),o(t.loading)&amp;&amp;r(t.loadingComp))return t.loadingComp;if(i&amp;&amp;!r(t.owners)){var a=t.owners=[i],c=!0,u=null,f=null;i.$on("hook:destroyed",(function(){return _(a,i)}));var d=function(t){for(var e=0,n=a.length;e&lt;n;e++)a[e].$forceUpdate();t&amp;&amp;(a.length=0,null!==u&amp;&amp;(clearTimeout(u),u=null),null!==f&amp;&amp;(clearTimeout(f),f=null))},p=N((function(n){t.resolved=Ue(n,e),c?a.length=0:d(!0)})),v=N((function(e){r(t.errorComp)&amp;&amp;(t.error=!0,d(!0))})),h=t(p,v);return s(h)&amp;&amp;(l(h)?n(t.resolved)&amp;&amp;h.then(p,v):l(h.component)&amp;&amp;(h.component.then(p,v),r(h.error)&amp;&amp;(t.errorComp=Ue(h.error,e)),r(h.loading)&amp;&amp;(t.loadingComp=Ue(h.loading,e),0===h.delay?t.loading=!0:u=setTimeout((function(){u=null,n(t.resolved)&amp;&amp;n(t.error)&amp;&amp;(t.loading=!0,d(!1))}),h.delay||200)),r(h.timeout)&amp;&amp;(f=setTimeout((function(){f=null,n(t.resolved)&amp;&amp;v(null)}),h.timeout)))),c=!1,t.loading?t.loadingComp:t.resolved}}(p=i,d),void 0===i))return function(t,e,n,r,o){var i=ft();return i.asyncFactory=t,i.asyncMeta={data:e,context:n,children:r,tag:o},i}(p,a,c,u,f);a=a||{},jr(i),r(a.model)&amp;&amp;function(t,n){var o=t.model&amp;&amp;t.model.prop||"value",i=t.model&amp;&amp;t.model.event||"input";(n.attrs||(n.attrs={}))[o]=n.model.value;var a=n.on||(n.on={}),s=a[i],c=n.model.callback;r(s)?(e(s)?-1===s.indexOf(c):s!==c)&amp;&amp;(a[i]=[c].concat(s)):a[i]=c}(i.options,a);var v=function(t,e,o){var i=e.options.props;if(!n(i)){var a={},s=t.attrs,c=t.props;if(r(s)||r(c))for(var u in i){var f=O(u);ue(a,c,u,f,!0)||ue(a,s,u,f,!1)}return a}}(a,i);if(o(i.options.functional))return function(n,o,i,a,s){var c=n.options,u={},f=c.props;if(r(f))for(var l in f)u[l]=vr(l,f,o||t);else r(i.attrs)&amp;&amp;Yn(u,i.attrs),r(i.props)&amp;&amp;Yn(u,i.props);var d=new Xn(i,u,s,a,n),p=c.render.call(null,d._c,d);if(p instanceof ut)return Qn(p,i,d.parent,c);if(e(p)){for(var v=fe(p)||[],h=new Array(v.length),m=0;m&lt;v.length;m++)h[m]=Qn(v[m],i,d.parent,c);return h}}(i,v,a,c,u);var h=a.on;if(a.on=a.nativeOn,o(i.options.abstract)){var m=a.slot;a={},m&amp;&amp;(a.slot=m)}!function(t){for(var e=t.hook||(t.hook={}),n=0;n&lt;nr.length;n++){var r=nr[n],o=e[r],i=er[r];o===i||o&amp;&amp;o._merged||(e[r]=o?or(i,o):i)}}(a);var y=tr(i.options)||f;return new ut("vue-component-".concat(i.cid).concat(y?"-".concat(y):""),a,void 0,void 0,void 0,c,{Ctor:i,propsData:v,listeners:h,tag:f,children:u},p)}}}function or(t,e){var n=function(n,r){t(n,r),e(n,r)};return n._merged=!0,n}var ir=A,ar=U.optionMergeStrategies;function sr(t,e,n){if(void 0===n&amp;&amp;(n=!0),!e)return t;for(var r,o,i,a=at?Reflect.ownKeys(e):Object.keys(e),s=0;s&lt;a.length;s++)"__ob__"!==(r=a[s])&amp;&amp;(o=t[r],i=e[r],n&amp;&amp;g(t,r)?o!==i&amp;&amp;u(o)&amp;&amp;u(i)&amp;&amp;sr(o,i):At(t,r,i));return t}function cr(t,e,n){return n?function(){var r=a(e)?e.call(n,n):e,o=a(t)?t.call(n,n):t;return r?sr(r,o):o}:e?t?function(){return sr(a(e)?e.call(this,this):e,a(t)?t.call(this,this):t)}:e:t}function ur(t,n){var r=n?t?t.concat(n):e(n)?n:[n]:t;return r?function(t){for(var e=[],n=0;n&lt;t.length;n++)-1===e.indexOf(t[n])&amp;&amp;e.push(t[n]);return e}(r):r}function fr(t,e,n,r){var o=Object.create(t||null);return e?j(o,e):o}ar.data=function(t,e,n){return n?cr(t,e,n):e&amp;&amp;"function"!=typeof e?t:cr(t,e)},F.forEach((function(t){ar[t]=ur})),R.forEach((function(t){ar[t+"s"]=fr})),ar.watch=function(t,n,r,o){if(t===Y&amp;&amp;(t=void 0),n===Y&amp;&amp;(n=void 0),!n)return Object.create(t||null);if(!t)return n;var i={};for(var a in j(i,t),n){var s=i[a],c=n[a];s&amp;&amp;!e(s)&amp;&amp;(s=[s]),i[a]=s?s.concat(c):e(c)?c:[c]}return i},ar.props=ar.methods=ar.inject=ar.computed=function(t,e,n,r){if(!t)return e;var o=Object.create(null);return j(o,t),e&amp;&amp;j(o,e),o},ar.provide=function(t,e){return t?function(){var n=Object.create(null);return sr(n,a(t)?t.call(this):t),e&amp;&amp;sr(n,a(e)?e.call(this):e,!1),n}:e};var lr=function(t,e){return void 0===e?t:e};function dr(t,n,r){if(a(n)&amp;&amp;(n=n.options),function(t,n){var r=t.props;if(r){var o,i,a={};if(e(r))for(o=r.length;o--;)"string"==typeof(i=r[o])&amp;&amp;(a[$(i)]={type:null});else if(u(r))for(var s in r)i=r[s],a[$(s)]=u(i)?i:{type:i};t.props=a}}(n),function(t,n){var r=t.inject;if(r){var o=t.inject={};if(e(r))for(var i=0;i&lt;r.length;i++)o[r[i]]={from:r[i]};else if(u(r))for(var a in r){var s=r[a];o[a]=u(s)?j({from:a},s):{from:s}}}}(n),function(t){var e=t.directives;if(e)for(var n in e){var r=e[n];a(r)&amp;&amp;(e[n]={bind:r,update:r})}}(n),!n._base&amp;&amp;(n.extends&amp;&amp;(t=dr(t,n.extends,r)),n.mixins))for(var o=0,i=n.mixins.length;o&lt;i;o++)t=dr(t,n.mixins[o],r);var s,c={};for(s in t)f(s);for(s in n)g(t,s)||f(s);function f(e){var o=ar[e]||lr;c[e]=o(t[e],n[e],r,e)}return c}function pr(t,e,n,r){if("string"==typeof n){var o=t[e];if(g(o,n))return o[n];var i=$(n);if(g(o,i))return o[i];var a=C(i);return g(o,a)?o[a]:o[n]||o[i]||o[a]}}function vr(t,e,n,r){var o=e[t],i=!g(n,t),s=n[t],c=yr(Boolean,o.type);if(c&gt;-1)if(i&amp;&amp;!g(o,"default"))s=!1;else if(""===s||s===O(t)){var u=yr(String,o.type);(u&lt;0||c&lt;u)&amp;&amp;(s=!0)}if(void 0===s){s=function(t,e,n){if(!g(e,"default"))return;var r=e.default;if(t&amp;&amp;t.$options.propsData&amp;&amp;void 0===t.$options.propsData[n]&amp;&amp;void 0!==t._props[n])return t._props[n];return a(r)&amp;&amp;"Function"!==mr(e.type)?r.call(t):r}(r,o,t);var f=xt;Ot(!0),jt(s),Ot(f)}return s}var hr=/^\s*function (\w+)/;function mr(t){var e=t&amp;&amp;t.toString().match(hr);return e?e[1]:""}function _r(t,e){return mr(t)===mr(e)}function yr(t,n){if(!e(n))return _r(n,t)?0:-1;for(var r=0,o=n.length;r&lt;o;r++)if(_r(n[r],t))return r;return-1}var gr={enumerable:!0,configurable:!0,get:A,set:A};function br(t,e,n){gr.get=function(){return this[e][n]},gr.set=function(t){this[e][n]=t},Object.defineProperty(t,n,gr)}function wr(t){var n=t.$options;if(n.props&amp;&amp;function(t,e){var n=t.$options.propsData||{},r=t._props=It({}),o=t.$options._propKeys=[],i=!t.$parent;i||Ot(!1);var a=function(i){o.push(i);var a=vr(i,e,n,t);Tt(r,i,a,void 0,!0),i in t||br(t,"_props",i)};for(var s in e)a(s);Ot(!0)}(t,n.props),function(t){var e=t.$options,n=e.setup;if(n){var r=t._setupContext=De(t);ct(t),yt();var o=qe(n,null,[t._props||It({}),r],t,"setup");if(gt(),ct(),a(o))e.render=o;else if(s(o))if(t._setupState=o,o.__sfc){var i=t._setupProxy={};for(var c in o)"__sfc"!==c&amp;&amp;Vt(i,o,c)}else for(var c in o)V(c)||Vt(t,o,c)}}(t),n.methods&amp;&amp;function(t,e){for(var n in t.$options.props,e)t[n]="function"!=typeof e[n]?A:k(e[n],t)}(t,n.methods),n.data)!function(t){var e=t.$options.data;e=t._data=a(e)?function(t,e){yt();try{return t.call(e,e)}catch(t){return Ke(t,e,"data()"),{}}finally{gt()}}(e,t):e||{},u(e)||(e={});var n=Object.keys(e),r=t.$options.props;t.$options.methods;var o=n.length;for(;o--;){var i=n[o];r&amp;&amp;g(r,i)||V(i)||br(t,"_data",i)}var s=jt(e);s&amp;&amp;s.vmCount++}(t);else{var r=jt(t._data={});r&amp;&amp;r.vmCount++}n.computed&amp;&amp;function(t,e){var n=t._computedWatchers=Object.create(null),r=nt();for(var o in e){var i=e[o],s=a(i)?i:i.get;r||(n[o]=new Sn(t,s||A,A,$r)),o in t||Cr(t,o,i)}}(t,n.computed),n.watch&amp;&amp;n.watch!==Y&amp;&amp;function(t,n){for(var r in n){var o=n[r];if(e(o))for(var i=0;i&lt;o.length;i++)kr(t,r,o[i]);else kr(t,r,o)}}(t,n.watch)}var $r={lazy:!0};function Cr(t,e,n){var r=!nt();a(n)?(gr.get=r?xr(e):Or(n),gr.set=A):(gr.get=n.get?r&amp;&amp;!1!==n.cache?xr(e):Or(n.get):A,gr.set=n.set||A),Object.defineProperty(t,e,gr)}function xr(t){return function(){var e=this._computedWatchers&amp;&amp;this._computedWatchers[t];if(e)return e.dirty&amp;&amp;e.evaluate(),mt.target&amp;&amp;e.depend(),e.value}}function Or(t){return function(){return t.call(this,this)}}function kr(t,e,n,r){return u(n)&amp;&amp;(r=n,n=n.handler),"string"==typeof n&amp;&amp;(n=t[n]),t.$watch(e,n,r)}var Sr=0;function jr(t){var e=t.options;if(t.super){var n=jr(t.super);if(n!==t.superOptions){t.superOptions=n;var r=function(t){var e,n=t.options,r=t.sealedOptions;for(var o in n)n[o]!==r[o]&amp;&amp;(e||(e={}),e[o]=n[o]);return e}(t);r&amp;&amp;j(t.extendOptions,r),(e=t.options=dr(n,t.extendOptions)).name&amp;&amp;(e.components[e.name]=t)}}return e}function Tr(t){this._init(t)}function Ar(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var n=this,r=n.cid,o=t._Ctor||(t._Ctor={});if(o[r])return o[r];var i=tr(t)||tr(n.options),a=function(t){this._init(t)};return(a.prototype=Object.create(n.prototype)).constructor=a,a.cid=e++,a.options=dr(n.options,t),a.super=n,a.options.props&amp;&amp;function(t){var e=t.options.props;for(var n in e)br(t.prototype,"_props",n)}(a),a.options.computed&amp;&amp;function(t){var e=t.options.computed;for(var n in e)Cr(t.prototype,n,e[n])}(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,R.forEach((function(t){a[t]=n[t]})),i&amp;&amp;(a.options.components[i]=a),a.superOptions=n.options,a.extendOptions=t,a.sealedOptions=j({},a.options),o[r]=a,a}}function Er(t){return t&amp;&amp;(tr(t.Ctor.options)||t.tag)}function Pr(t,n){return e(t)?t.indexOf(n)&gt;-1:"string"==typeof t?t.split(",").indexOf(n)&gt;-1:(r=t,"[object RegExp]"===c.call(r)&amp;&amp;t.test(n));var r}function Ir(t,e){var n=t.cache,r=t.keys,o=t._vnode,i=t.$vnode;for(var a in n){var s=n[a];if(s){var c=s.name;c&amp;&amp;!e(c)&amp;&amp;Dr(n,a,r,o)}}i.componentOptions.children=void 0}function Dr(t,e,n,r){var o=t[e];!o||r&amp;&amp;o.tag===r.tag||o.componentInstance.$destroy(),t[e]=null,_(n,e)}!function(e){e.prototype._init=function(e){var n=this;n._uid=Sr++,n._isVue=!0,n.__v_skip=!0,n._scope=new ne(!0),n._scope.parent=void 0,n._scope._vm=!0,e&amp;&amp;e._isComponent?function(t,e){var n=t.$options=Object.create(t.constructor.options),r=e._parentVnode;n.parent=e.parent,n._parentVnode=r;var o=r.componentOptions;n.propsData=o.propsData,n._parentListeners=o.listeners,n._renderChildren=o.children,n._componentTag=o.tag,e.render&amp;&amp;(n.render=e.render,n.staticRenderFns=e.staticRenderFns)}(n,e):n.$options=dr(jr(n.constructor),e||{},n),n._renderProxy=n,n._self=n,function(t){var e=t.$options,n=e.parent;if(n&amp;&amp;!e.abstract){for(;n.$options.abstract&amp;&amp;n.$parent;)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._provided=n?n._provided:Object.create(null),t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}(n),function(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&amp;&amp;En(t,e)}(n),function(e){e._vnode=null,e._staticTrees=null;var n=e.$options,r=e.$vnode=n._parentVnode,o=r&amp;&amp;r.context;e.$slots=je(n._renderChildren,o),e.$scopedSlots=r?Ee(e.$parent,r.data.scopedSlots,e.$slots):t,e._c=function(t,n,r,o){return He(e,t,n,r,o,!1)},e.$createElement=function(t,n,r,o){return He(e,t,n,r,o,!0)};var i=r&amp;&amp;r.data;Tt(e,"$attrs",i&amp;&amp;i.attrs||t,null,!0),Tt(e,"$listeners",n._parentListeners||t,null,!0)}(n),Ln(n,"beforeCreate",void 0,!1),function(t){var e=Jn(t.$options.inject,t);e&amp;&amp;(Ot(!1),Object.keys(e).forEach((function(n){Tt(t,n,e[n])})),Ot(!0))}(n),wr(n),function(t){var e=t.$options.provide;if(e){var n=a(e)?e.call(t):e;if(!s(n))return;for(var r=oe(t),o=at?Reflect.ownKeys(n):Object.keys(n),i=0;i&lt;o.length;i++){var c=o[i];Object.defineProperty(r,c,Object.getOwnPropertyDescriptor(n,c))}}}(n),Ln(n,"created"),n.$options.el&amp;&amp;n.$mount(n.$options.el)}}(Tr),function(t){var e={get:function(){return this._data}},n={get:function(){return this._props}};Object.defineProperty(t.prototype,"$data",e),Object.defineProperty(t.prototype,"$props",n),t.prototype.$set=At,t.prototype.$delete=Et,t.prototype.$watch=function(t,e,n){var r=this;if(u(e))return kr(r,t,e,n);(n=n||{}).user=!0;var o=new Sn(r,t,e,n);if(n.immediate){var i='callback for immediate watcher "'.concat(o.expression,'"');yt(),qe(e,r,[o.value],r,i),gt()}return function(){o.teardown()}}}(Tr),function(t){var n=/^hook:/;t.prototype.$on=function(t,r){var o=this;if(e(t))for(var i=0,a=t.length;i&lt;a;i++)o.$on(t[i],r);else(o._events[t]||(o._events[t]=[])).push(r),n.test(t)&amp;&amp;(o._hasHookEvent=!0);return o},t.prototype.$once=function(t,e){var n=this;function r(){n.$off(t,r),e.apply(n,arguments)}return r.fn=e,n.$on(t,r),n},t.prototype.$off=function(t,n){var r=this;if(!arguments.length)return r._events=Object.create(null),r;if(e(t)){for(var o=0,i=t.length;o&lt;i;o++)r.$off(t[o],n);return r}var a,s=r._events[t];if(!s)return r;if(!n)return r._events[t]=null,r;for(var c=s.length;c--;)if((a=s[c])===n||a.fn===n){s.splice(c,1);break}return r},t.prototype.$emit=function(t){var e=this,n=e._events[t];if(n){n=n.length&gt;1?S(n):n;for(var r=S(arguments,1),o='event handler for "'.concat(t,'"'),i=0,a=n.length;i&lt;a;i++)qe(n[i],e,r,e,o)}return e}}(Tr),function(t){t.prototype._update=function(t,e){var n=this,r=n.$el,o=n._vnode,i=In(n);n._vnode=t,n.$el=o?n.__patch__(o,t):n.__patch__(n.$el,t,e,!1),i(),r&amp;&amp;(r.__vue__=null),n.$el&amp;&amp;(n.$el.__vue__=n);for(var a=n;a&amp;&amp;a.$vnode&amp;&amp;a.$parent&amp;&amp;a.$vnode===a.$parent._vnode;)a.$parent.$el=a.$el,a=a.$parent},t.prototype.$forceUpdate=function(){this._watcher&amp;&amp;this._watcher.update()},t.prototype.$destroy=function(){var t=this;if(!t._isBeingDestroyed){Ln(t,"beforeDestroy"),t._isBeingDestroyed=!0;var e=t.$parent;!e||e._isBeingDestroyed||t.$options.abstract||_(e.$children,t),t._scope.stop(),t._data.__ob__&amp;&amp;t._data.__ob__.vmCount--,t._isDestroyed=!0,t.__patch__(t._vnode,null),Ln(t,"destroyed"),t.$off(),t.$el&amp;&amp;(t.$el.__vue__=null),t.$vnode&amp;&amp;(t.$vnode.parent=null)}}}(Tr),function(t){Se(t.prototype),t.prototype.$nextTick=function(t){return an(t,this)},t.prototype._render=function(){var t=this,n=t.$options,r=n.render,o=n._parentVnode;o&amp;&amp;t._isMounted&amp;&amp;(t.$scopedSlots=Ee(t.$parent,o.data.scopedSlots,t.$slots,t.$scopedSlots),t._slotsProxy&amp;&amp;Le(t._slotsProxy,t.$scopedSlots)),t.$vnode=o;var i,a=st,s=Fe;try{ct(t),Fe=t,i=r.call(t._renderProxy,t.$createElement)}catch(e){Ke(e,t,"render"),i=t._vnode}finally{Fe=s,ct(a)}return e(i)&amp;&amp;1===i.length&amp;&amp;(i=i[0]),i instanceof ut||(i=ft()),i.parent=o,i}}(Tr);var Nr=[String,RegExp,Array],Mr={KeepAlive:{name:"keep-alive",abstract:!0,props:{include:Nr,exclude:Nr,max:[String,Number]},methods:{cacheVNode:function(){var t=this,e=t.cache,n=t.keys,r=t.vnodeToCache,o=t.keyToCache;if(r){var i=r.tag,a=r.componentInstance,s=r.componentOptions;e[o]={name:Er(s),tag:i,componentInstance:a},n.push(o),this.max&amp;&amp;n.length&gt;parseInt(this.max)&amp;&amp;Dr(e,n[0],n,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var t in this.cache)Dr(this.cache,t,this.keys)},mounted:function(){var t=this;this.cacheVNode(),this.$watch("include",(function(e){Ir(t,(function(t){return Pr(e,t)}))})),this.$watch("exclude",(function(e){Ir(t,(function(t){return!Pr(e,t)}))}))},updated:function(){this.cacheVNode()},render:function(){var t=this.$slots.default,e=Ve(t),n=e&amp;&amp;e.componentOptions;if(n){var r=Er(n),o=this.include,i=this.exclude;if(o&amp;&amp;(!r||!Pr(o,r))||i&amp;&amp;r&amp;&amp;Pr(i,r))return e;var a=this.cache,s=this.keys,c=null==e.key?n.Ctor.cid+(n.tag?"::".concat(n.tag):""):e.key;a[c]?(e.componentInstance=a[c].componentInstance,_(s,c),s.push(c)):(this.vnodeToCache=e,this.keyToCache=c),e.data.keepAlive=!0}return e||t&amp;&amp;t[0]}}};!function(t){var e={get:function(){return U}};Object.defineProperty(t,"config",e),t.util={warn:ir,extend:j,mergeOptions:dr,defineReactive:Tt},t.set=At,t.delete=Et,t.nextTick=an,t.observable=function(t){return jt(t),t},t.options=Object.create(null),R.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,j(t.options.components,Mr),function(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)&gt;-1)return this;var n=S(arguments,1);return n.unshift(this),a(t.install)?t.install.apply(t,n):a(t)&amp;&amp;t.apply(null,n),e.push(t),this}}(t),function(t){t.mixin=function(t){return this.options=dr(this.options,t),this}}(t),Ar(t),function(t){R.forEach((function(e){t[e]=function(t,n){return n?("component"===e&amp;&amp;u(n)&amp;&amp;(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&amp;&amp;a(n)&amp;&amp;(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}}))}(t)}(Tr),Object.defineProperty(Tr.prototype,"$isServer",{get:nt}),Object.defineProperty(Tr.prototype,"$ssrContext",{get:function(){return this.$vnode&amp;&amp;this.$vnode.ssrContext}}),Object.defineProperty(Tr,"FunctionalRenderContext",{value:Xn}),Tr.version=bn;var Lr=h("style,class"),Rr=h("input,textarea,option,select,progress"),Fr=h("contenteditable,draggable,spellcheck"),Ur=h("events,caret,typing,plaintext-only"),Vr=function(t,e){return Kr(e)||"false"===e?"false":"contenteditable"===t&amp;&amp;Ur(e)?e:"true"},Br=h("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),zr="http://www.w3.org/1999/xlink",Hr=function(t){return":"===t.charAt(5)&amp;&amp;"xlink"===t.slice(0,5)},Wr=function(t){return Hr(t)?t.slice(6,t.length):""},Kr=function(t){return null==t||!1===t};function qr(t){for(var e=t.data,n=t,o=t;r(o.componentInstance);)(o=o.componentInstance._vnode)&amp;&amp;o.data&amp;&amp;(e=Gr(o.data,e));for(;r(n=n.parent);)n&amp;&amp;n.data&amp;&amp;(e=Gr(e,n.data));return function(t,e){if(r(t)||r(e))return Zr(t,Jr(e));return""}(e.staticClass,e.class)}function Gr(t,e){return{staticClass:Zr(t.staticClass,e.staticClass),class:r(t.class)?[t.class,e.class]:e.class}}function Zr(t,e){return t?e?t+" "+e:t:e||""}function Jr(t){return Array.isArray(t)?function(t){for(var e,n="",o=0,i=t.length;o&lt;i;o++)r(e=Jr(t[o]))&amp;&amp;""!==e&amp;&amp;(n&amp;&amp;(n+=" "),n+=e);return n}(t):s(t)?function(t){var e="";for(var n in t)t[n]&amp;&amp;(e&amp;&amp;(e+=" "),e+=n);return e}(t):"string"==typeof t?t:""}var Xr={svg:"http://www.w3.org/2000/svg",math:"http://www.w3.org/1998/Math/MathML"},Qr=h("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,menuitem,summary,content,element,shadow,template,blockquote,iframe,tfoot"),Yr=h("svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,foreignobject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view",!0),to=function(t){return Qr(t)||Yr(t)};var eo=Object.create(null);var no=h("text,number,password,search,email,tel,url");var ro=Object.freeze({__proto__:null,createElement:function(t,e){var n=document.createElement(t);return"select"!==t||e.data&amp;&amp;e.data.attrs&amp;&amp;void 0!==e.data.attrs.multiple&amp;&amp;n.setAttribute("multiple","multiple"),n},createElementNS:function(t,e){return document.createElementNS(Xr[t],e)},createTextNode:function(t){return document.createTextNode(t)},createComment:function(t){return document.createComment(t)},insertBefore:function(t,e,n){t.insertBefore(e,n)},removeChild:function(t,e){t.removeChild(e)},appendChild:function(t,e){t.appendChild(e)},parentNode:function(t){return t.parentNode},nextSibling:function(t){return t.nextSibling},tagName:function(t){return t.tagName},setTextContent:function(t,e){t.textContent=e},setStyleScope:function(t,e){t.setAttribute(e,"")}}),oo={create:function(t,e){io(e)},update:function(t,e){t.data.ref!==e.data.ref&amp;&amp;(io(t,!0),io(e))},destroy:function(t){io(t,!0)}};function io(t,n){var o=t.data.ref;if(r(o)){var i=t.context,s=t.componentInstance||t.elm,c=n?null:s,u=n?void 0:s;if(a(o))qe(o,i,[c],i,"template ref function");else{var f=t.data.refInFor,l="string"==typeof o||"number"==typeof o,d=Ft(o),p=i.$refs;if(l||d)if(f){var v=l?p[o]:o.value;n?e(v)&amp;&amp;_(v,s):e(v)?v.includes(s)||v.push(s):l?(p[o]=[s],ao(i,o,p[o])):o.value=[s]}else if(l){if(n&amp;&amp;p[o]!==s)return;p[o]=u,ao(i,o,c)}else if(d){if(n&amp;&amp;o.value!==s)return;o.value=c}}}}function ao(t,e,n){var r=t._setupState;r&amp;&amp;g(r,e)&amp;&amp;(Ft(r[e])?r[e].value=n:r[e]=n)}var so=new ut("",{},[]),co=["create","activate","update","remove","destroy"];function uo(t,e){return t.key===e.key&amp;&amp;t.asyncFactory===e.asyncFactory&amp;&amp;(t.tag===e.tag&amp;&amp;t.isComment===e.isComment&amp;&amp;r(t.data)===r(e.data)&amp;&amp;function(t,e){if("input"!==t.tag)return!0;var n,o=r(n=t.data)&amp;&amp;r(n=n.attrs)&amp;&amp;n.type,i=r(n=e.data)&amp;&amp;r(n=n.attrs)&amp;&amp;n.type;return o===i||no(o)&amp;&amp;no(i)}(t,e)||o(t.isAsyncPlaceholder)&amp;&amp;n(e.asyncFactory.error))}function fo(t,e,n){var o,i,a={};for(o=e;o&lt;=n;++o)r(i=t[o].key)&amp;&amp;(a[i]=o);return a}var lo={create:po,update:po,destroy:function(t){po(t,so)}};function po(t,e){(t.data.directives||e.data.directives)&amp;&amp;function(t,e){var n,r,o,i=t===so,a=e===so,s=ho(t.data.directives,t.context),c=ho(e.data.directives,e.context),u=[],f=[];for(n in c)r=s[n],o=c[n],r?(o.oldValue=r.value,o.oldArg=r.arg,_o(o,"update",e,t),o.def&amp;&amp;o.def.componentUpdated&amp;&amp;f.push(o)):(_o(o,"bind",e,t),o.def&amp;&amp;o.def.inserted&amp;&amp;u.push(o));if(u.length){var l=function(){for(var n=0;n&lt;u.length;n++)_o(u[n],"inserted",e,t)};i?ce(e,"insert",l):l()}f.length&amp;&amp;ce(e,"postpatch",(function(){for(var n=0;n&lt;f.length;n++)_o(f[n],"componentUpdated",e,t)}));if(!i)for(n in s)c[n]||_o(s[n],"unbind",t,t,a)}(t,e)}var vo=Object.create(null);function ho(t,e){var n,r,o=Object.create(null);if(!t)return o;for(n=0;n&lt;t.length;n++){if((r=t[n]).modifiers||(r.modifiers=vo),o[mo(r)]=r,e._setupState&amp;&amp;e._setupState.__sfc){var i=r.def||pr(e,"_setupState","v-"+r.name);r.def="function"==typeof i?{bind:i,update:i}:i}r.def=r.def||pr(e.$options,"directives",r.name)}return o}function mo(t){return t.rawName||"".concat(t.name,".").concat(Object.keys(t.modifiers||{}).join("."))}function _o(t,e,n,r,o){var i=t.def&amp;&amp;t.def[e];if(i)try{i(n.elm,t,n,r,o)}catch(r){Ke(r,n.context,"directive ".concat(t.name," ").concat(e," hook"))}}var yo=[oo,lo];function go(t,e){var i=e.componentOptions;if(!(r(i)&amp;&amp;!1===i.Ctor.options.inheritAttrs||n(t.data.attrs)&amp;&amp;n(e.data.attrs))){var a,s,c=e.elm,u=t.data.attrs||{},f=e.data.attrs||{};for(a in(r(f.__ob__)||o(f._v_attr_proxy))&amp;&amp;(f=e.data.attrs=j({},f)),f)s=f[a],u[a]!==s&amp;&amp;bo(c,a,s,e.data.pre);for(a in(q||Z)&amp;&amp;f.value!==u.value&amp;&amp;bo(c,"value",f.value),u)n(f[a])&amp;&amp;(Hr(a)?c.removeAttributeNS(zr,Wr(a)):Fr(a)||c.removeAttribute(a))}}function bo(t,e,n,r){r||t.tagName.indexOf("-")&gt;-1?wo(t,e,n):Br(e)?Kr(n)?t.removeAttribute(e):(n="allowfullscreen"===e&amp;&amp;"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):Fr(e)?t.setAttribute(e,Vr(e,n)):Hr(e)?Kr(n)?t.removeAttributeNS(zr,Wr(e)):t.setAttributeNS(zr,e,n):wo(t,e,n)}function wo(t,e,n){if(Kr(n))t.removeAttribute(e);else{if(q&amp;&amp;!G&amp;&amp;"TEXTAREA"===t.tagName&amp;&amp;"placeholder"===e&amp;&amp;""!==n&amp;&amp;!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var $o={create:go,update:go};function Co(t,e){var o=e.elm,i=e.data,a=t.data;if(!(n(i.staticClass)&amp;&amp;n(i.class)&amp;&amp;(n(a)||n(a.staticClass)&amp;&amp;n(a.class)))){var s=qr(e),c=o._transitionClasses;r(c)&amp;&amp;(s=Zr(s,Jr(c))),s!==o._prevClass&amp;&amp;(o.setAttribute("class",s),o._prevClass=s)}}var xo,Oo={create:Co,update:Co},ko="__r",So="__c";function jo(t,e,n){var r=xo;return function o(){null!==e.apply(null,arguments)&amp;&amp;Eo(t,o,n,r)}}var To=Xe&amp;&amp;!(Q&amp;&amp;Number(Q[1])&lt;=53);function Ao(t,e,n,r){if(To){var o=Hn,i=e;e=i._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp&gt;=o||t.timeStamp&lt;=0||t.target.ownerDocument!==document)return i.apply(this,arguments)}}xo.addEventListener(t,e,tt?{capture:n,passive:r}:n)}function Eo(t,e,n,r){(r||xo).removeEventListener(t,e._wrapper||e,n)}function Po(t,e){if(!n(t.data.on)||!n(e.data.on)){var o=e.data.on||{},i=t.data.on||{};xo=e.elm||t.elm,function(t){if(r(t[ko])){var e=q?"change":"input";t[e]=[].concat(t[ko],t[e]||[]),delete t[ko]}r(t[So])&amp;&amp;(t.change=[].concat(t[So],t.change||[]),delete t[So])}(o),se(o,i,Ao,Eo,jo,e.context),xo=void 0}}var Io,Do={create:Po,update:Po,destroy:function(t){return Po(t,so)}};function No(t,e){if(!n(t.data.domProps)||!n(e.data.domProps)){var i,a,s=e.elm,c=t.data.domProps||{},u=e.data.domProps||{};for(i in(r(u.__ob__)||o(u._v_attr_proxy))&amp;&amp;(u=e.data.domProps=j({},u)),c)i in u||(s[i]="");for(i in u){if(a=u[i],"textContent"===i||"innerHTML"===i){if(e.children&amp;&amp;(e.children.length=0),a===c[i])continue;1===s.childNodes.length&amp;&amp;s.removeChild(s.childNodes[0])}if("value"===i&amp;&amp;"PROGRESS"!==s.tagName){s._value=a;var f=n(a)?"":String(a);Mo(s,f)&amp;&amp;(s.value=f)}else if("innerHTML"===i&amp;&amp;Yr(s.tagName)&amp;&amp;n(s.innerHTML)){(Io=Io||document.createElement("div")).innerHTML="&lt;svg&gt;".concat(a,"&lt;/svg&gt;");for(var l=Io.firstChild;s.firstChild;)s.removeChild(s.firstChild);for(;l.firstChild;)s.appendChild(l.firstChild)}else if(a!==c[i])try{s[i]=a}catch(t){}}}}function Mo(t,e){return!t.composing&amp;&amp;("OPTION"===t.tagName||function(t,e){var n=!0;try{n=document.activeElement!==t}catch(t){}return n&amp;&amp;t.value!==e}(t,e)||function(t,e){var n=t.value,o=t._vModifiers;if(r(o)){if(o.number)return v(n)!==v(e);if(o.trim)return n.trim()!==e.trim()}return n!==e}(t,e))}var Lo={create:No,update:No},Ro=b((function(t){var e={},n=/:(.+)/;return t.split(/;(?![^(]*\))/g).forEach((function(t){if(t){var r=t.split(n);r.length&gt;1&amp;&amp;(e[r[0].trim()]=r[1].trim())}})),e}));function Fo(t){var e=Uo(t.style);return t.staticStyle?j(t.staticStyle,e):e}function Uo(t){return Array.isArray(t)?T(t):"string"==typeof t?Ro(t):t}var Vo,Bo=/^--/,zo=/\s*!important$/,Ho=function(t,e,n){if(Bo.test(e))t.style.setProperty(e,n);else if(zo.test(n))t.style.setProperty(O(e),n.replace(zo,""),"important");else{var r=Ko(e);if(Array.isArray(n))for(var o=0,i=n.length;o&lt;i;o++)t.style[r]=n[o];else t.style[r]=n}},Wo=["Webkit","Moz","ms"],Ko=b((function(t){if(Vo=Vo||document.createElement("div").style,"filter"!==(t=$(t))&amp;&amp;t in Vo)return t;for(var e=t.charAt(0).toUpperCase()+t.slice(1),n=0;n&lt;Wo.length;n++){var r=Wo[n]+e;if(r in Vo)return r}}));function qo(t,e){var o=e.data,i=t.data;if(!(n(o.staticStyle)&amp;&amp;n(o.style)&amp;&amp;n(i.staticStyle)&amp;&amp;n(i.style))){var a,s,c=e.elm,u=i.staticStyle,f=i.normalizedStyle||i.style||{},l=u||f,d=Uo(e.data.style)||{};e.data.normalizedStyle=r(d.__ob__)?j({},d):d;var p=function(t,e){var n,r={};if(e)for(var o=t;o.componentInstance;)(o=o.componentInstance._vnode)&amp;&amp;o.data&amp;&amp;(n=Fo(o.data))&amp;&amp;j(r,n);(n=Fo(t.data))&amp;&amp;j(r,n);for(var i=t;i=i.parent;)i.data&amp;&amp;(n=Fo(i.data))&amp;&amp;j(r,n);return r}(e,!0);for(s in l)n(p[s])&amp;&amp;Ho(c,s,"");for(s in p)a=p[s],Ho(c,s,null==a?"":a)}}var Go={create:qo,update:qo},Zo=/\s+/;function Jo(t,e){if(e&amp;&amp;(e=e.trim()))if(t.classList)e.indexOf(" ")&gt;-1?e.split(Zo).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var n=" ".concat(t.getAttribute("class")||""," ");n.indexOf(" "+e+" ")&lt;0&amp;&amp;t.setAttribute("class",(n+e).trim())}}function Xo(t,e){if(e&amp;&amp;(e=e.trim()))if(t.classList)e.indexOf(" ")&gt;-1?e.split(Zo).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var n=" ".concat(t.getAttribute("class")||""," "),r=" "+e+" ";n.indexOf(r)&gt;=0;)n=n.replace(r," ");(n=n.trim())?t.setAttribute("class",n):t.removeAttribute("class")}}function Qo(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&amp;&amp;j(e,Yo(t.name||"v")),j(e,t),e}return"string"==typeof t?Yo(t):void 0}}var Yo=b((function(t){return{enterClass:"".concat(t,"-enter"),enterToClass:"".concat(t,"-enter-to"),enterActiveClass:"".concat(t,"-enter-active"),leaveClass:"".concat(t,"-leave"),leaveToClass:"".concat(t,"-leave-to"),leaveActiveClass:"".concat(t,"-leave-active")}})),ti=W&amp;&amp;!G,ei="transition",ni="animation",ri="transition",oi="transitionend",ii="animation",ai="animationend";ti&amp;&amp;(void 0===window.ontransitionend&amp;&amp;void 0!==window.onwebkittransitionend&amp;&amp;(ri="WebkitTransition",oi="webkitTransitionEnd"),void 0===window.onanimationend&amp;&amp;void 0!==window.onwebkitanimationend&amp;&amp;(ii="WebkitAnimation",ai="webkitAnimationEnd"));var si=W?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function ci(t){si((function(){si(t)}))}function ui(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)&lt;0&amp;&amp;(n.push(e),Jo(t,e))}function fi(t,e){t._transitionClasses&amp;&amp;_(t._transitionClasses,e),Xo(t,e)}function li(t,e,n){var r=pi(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var s=o===ei?oi:ai,c=0,u=function(){t.removeEventListener(s,f),n()},f=function(e){e.target===t&amp;&amp;++c&gt;=a&amp;&amp;u()};setTimeout((function(){c&lt;a&amp;&amp;u()}),i+1),t.addEventListener(s,f)}var di=/\b(transform|all)(,|$)/;function pi(t,e){var n,r=window.getComputedStyle(t),o=(r[ri+"Delay"]||"").split(", "),i=(r[ri+"Duration"]||"").split(", "),a=vi(o,i),s=(r[ii+"Delay"]||"").split(", "),c=(r[ii+"Duration"]||"").split(", "),u=vi(s,c),f=0,l=0;return e===ei?a&gt;0&amp;&amp;(n=ei,f=a,l=i.length):e===ni?u&gt;0&amp;&amp;(n=ni,f=u,l=c.length):l=(n=(f=Math.max(a,u))&gt;0?a&gt;u?ei:ni:null)?n===ei?i.length:c.length:0,{type:n,timeout:f,propCount:l,hasTransform:n===ei&amp;&amp;di.test(r[ri+"Property"])}}function vi(t,e){for(;t.length&lt;e.length;)t=t.concat(t);return Math.max.apply(null,e.map((function(e,n){return hi(e)+hi(t[n])})))}function hi(t){return 1e3*Number(t.slice(0,-1).replace(",","."))}function mi(t,e){var o=t.elm;r(o._leaveCb)&amp;&amp;(o._leaveCb.cancelled=!0,o._leaveCb());var i=Qo(t.data.transition);if(!n(i)&amp;&amp;!r(o._enterCb)&amp;&amp;1===o.nodeType){for(var c=i.css,u=i.type,f=i.enterClass,l=i.enterToClass,d=i.enterActiveClass,p=i.appearClass,h=i.appearToClass,m=i.appearActiveClass,_=i.beforeEnter,y=i.enter,g=i.afterEnter,b=i.enterCancelled,w=i.beforeAppear,$=i.appear,C=i.afterAppear,x=i.appearCancelled,O=i.duration,k=Pn,S=Pn.$vnode;S&amp;&amp;S.parent;)k=S.context,S=S.parent;var j=!k._isMounted||!t.isRootInsert;if(!j||$||""===$){var T=j&amp;&amp;p?p:f,A=j&amp;&amp;m?m:d,E=j&amp;&amp;h?h:l,P=j&amp;&amp;w||_,I=j&amp;&amp;a($)?$:y,D=j&amp;&amp;C||g,M=j&amp;&amp;x||b,L=v(s(O)?O.enter:O),R=!1!==c&amp;&amp;!G,F=gi(I),U=o._enterCb=N((function(){R&amp;&amp;(fi(o,E),fi(o,A)),U.cancelled?(R&amp;&amp;fi(o,T),M&amp;&amp;M(o)):D&amp;&amp;D(o),o._enterCb=null}));t.data.show||ce(t,"insert",(function(){var e=o.parentNode,n=e&amp;&amp;e._pending&amp;&amp;e._pending[t.key];n&amp;&amp;n.tag===t.tag&amp;&amp;n.elm._leaveCb&amp;&amp;n.elm._leaveCb(),I&amp;&amp;I(o,U)})),P&amp;&amp;P(o),R&amp;&amp;(ui(o,T),ui(o,A),ci((function(){fi(o,T),U.cancelled||(ui(o,E),F||(yi(L)?setTimeout(U,L):li(o,u,U)))}))),t.data.show&amp;&amp;(e&amp;&amp;e(),I&amp;&amp;I(o,U)),R||F||U()}}}function _i(t,e){var o=t.elm;r(o._enterCb)&amp;&amp;(o._enterCb.cancelled=!0,o._enterCb());var i=Qo(t.data.transition);if(n(i)||1!==o.nodeType)return e();if(!r(o._leaveCb)){var a=i.css,c=i.type,u=i.leaveClass,f=i.leaveToClass,l=i.leaveActiveClass,d=i.beforeLeave,p=i.leave,h=i.afterLeave,m=i.leaveCancelled,_=i.delayLeave,y=i.duration,g=!1!==a&amp;&amp;!G,b=gi(p),w=v(s(y)?y.leave:y),$=o._leaveCb=N((function(){o.parentNode&amp;&amp;o.parentNode._pending&amp;&amp;(o.parentNode._pending[t.key]=null),g&amp;&amp;(fi(o,f),fi(o,l)),$.cancelled?(g&amp;&amp;fi(o,u),m&amp;&amp;m(o)):(e(),h&amp;&amp;h(o)),o._leaveCb=null}));_?_(C):C()}function C(){$.cancelled||(!t.data.show&amp;&amp;o.parentNode&amp;&amp;((o.parentNode._pending||(o.parentNode._pending={}))[t.key]=t),d&amp;&amp;d(o),g&amp;&amp;(ui(o,u),ui(o,l),ci((function(){fi(o,u),$.cancelled||(ui(o,f),b||(yi(w)?setTimeout($,w):li(o,c,$)))}))),p&amp;&amp;p(o,$),g||b||$())}}function yi(t){return"number"==typeof t&amp;&amp;!isNaN(t)}function gi(t){if(n(t))return!1;var e=t.fns;return r(e)?gi(Array.isArray(e)?e[0]:e):(t._length||t.length)&gt;1}function bi(t,e){!0!==e.data.show&amp;&amp;mi(e)}var wi=function(t){var a,s,c={},u=t.modules,f=t.nodeOps;for(a=0;a&lt;co.length;++a)for(c[co[a]]=[],s=0;s&lt;u.length;++s)r(u[s][co[a]])&amp;&amp;c[co[a]].push(u[s][co[a]]);function l(t){var e=f.parentNode(t);r(e)&amp;&amp;f.removeChild(e,t)}function d(t,e,n,i,a,s,u){if(r(t.elm)&amp;&amp;r(s)&amp;&amp;(t=s[u]=dt(t)),t.isRootInsert=!a,!function(t,e,n,i){var a=t.data;if(r(a)){var s=r(t.componentInstance)&amp;&amp;a.keepAlive;if(r(a=a.hook)&amp;&amp;r(a=a.init)&amp;&amp;a(t,!1),r(t.componentInstance))return p(t,e),v(n,t.elm,i),o(s)&amp;&amp;function(t,e,n,o){var i,a=t;for(;a.componentInstance;)if(r(i=(a=a.componentInstance._vnode).data)&amp;&amp;r(i=i.transition)){for(i=0;i&lt;c.activate.length;++i)c.activate[i](so,a);e.push(a);break}v(n,t.elm,o)}(t,e,n,i),!0}}(t,e,n,i)){var l=t.data,d=t.children,h=t.tag;r(h)?(t.elm=t.ns?f.createElementNS(t.ns,h):f.createElement(h,t),g(t),m(t,d,e),r(l)&amp;&amp;y(t,e),v(n,t.elm,i)):o(t.isComment)?(t.elm=f.createComment(t.text),v(n,t.elm,i)):(t.elm=f.createTextNode(t.text),v(n,t.elm,i))}}function p(t,e){r(t.data.pendingInsert)&amp;&amp;(e.push.apply(e,t.data.pendingInsert),t.data.pendingInsert=null),t.elm=t.componentInstance.$el,_(t)?(y(t,e),g(t)):(io(t),e.push(t))}function v(t,e,n){r(t)&amp;&amp;(r(n)?f.parentNode(n)===t&amp;&amp;f.insertBefore(t,e,n):f.appendChild(t,e))}function m(t,n,r){if(e(n))for(var o=0;o&lt;n.length;++o)d(n[o],r,t.elm,null,!0,n,o);else i(t.text)&amp;&amp;f.appendChild(t.elm,f.createTextNode(String(t.text)))}function _(t){for(;t.componentInstance;)t=t.componentInstance._vnode;return r(t.tag)}function y(t,e){for(var n=0;n&lt;c.create.length;++n)c.create[n](so,t);r(a=t.data.hook)&amp;&amp;(r(a.create)&amp;&amp;a.create(so,t),r(a.insert)&amp;&amp;e.push(t))}function g(t){var e;if(r(e=t.fnScopeId))f.setStyleScope(t.elm,e);else for(var n=t;n;)r(e=n.context)&amp;&amp;r(e=e.$options._scopeId)&amp;&amp;f.setStyleScope(t.elm,e),n=n.parent;r(e=Pn)&amp;&amp;e!==t.context&amp;&amp;e!==t.fnContext&amp;&amp;r(e=e.$options._scopeId)&amp;&amp;f.setStyleScope(t.elm,e)}function b(t,e,n,r,o,i){for(;r&lt;=o;++r)d(n[r],i,t,e,!1,n,r)}function w(t){var e,n,o=t.data;if(r(o))for(r(e=o.hook)&amp;&amp;r(e=e.destroy)&amp;&amp;e(t),e=0;e&lt;c.destroy.length;++e)c.destroy[e](t);if(r(e=t.children))for(n=0;n&lt;t.children.length;++n)w(t.children[n])}function $(t,e,n){for(;e&lt;=n;++e){var o=t[e];r(o)&amp;&amp;(r(o.tag)?(C(o),w(o)):l(o.elm))}}function C(t,e){if(r(e)||r(t.data)){var n,o=c.remove.length+1;for(r(e)?e.listeners+=o:e=function(t,e){function n(){0==--n.listeners&amp;&amp;l(t)}return n.listeners=e,n}(t.elm,o),r(n=t.componentInstance)&amp;&amp;r(n=n._vnode)&amp;&amp;r(n.data)&amp;&amp;C(n,e),n=0;n&lt;c.remove.length;++n)c.remove[n](t,e);r(n=t.data.hook)&amp;&amp;r(n=n.remove)?n(t,e):e()}else l(t.elm)}function x(t,e,n,o){for(var i=n;i&lt;o;i++){var a=e[i];if(r(a)&amp;&amp;uo(t,a))return i}}function O(t,e,i,a,s,u){if(t!==e){r(e.elm)&amp;&amp;r(a)&amp;&amp;(e=a[s]=dt(e));var l=e.elm=t.elm;if(o(t.isAsyncPlaceholder))r(e.asyncFactory.resolved)?j(t.elm,e,i):e.isAsyncPlaceholder=!0;else if(o(e.isStatic)&amp;&amp;o(t.isStatic)&amp;&amp;e.key===t.key&amp;&amp;(o(e.isCloned)||o(e.isOnce)))e.componentInstance=t.componentInstance;else{var p,v=e.data;r(v)&amp;&amp;r(p=v.hook)&amp;&amp;r(p=p.prepatch)&amp;&amp;p(t,e);var h=t.children,m=e.children;if(r(v)&amp;&amp;_(e)){for(p=0;p&lt;c.update.length;++p)c.update[p](t,e);r(p=v.hook)&amp;&amp;r(p=p.update)&amp;&amp;p(t,e)}n(e.text)?r(h)&amp;&amp;r(m)?h!==m&amp;&amp;function(t,e,o,i,a){for(var s,c,u,l=0,p=0,v=e.length-1,h=e[0],m=e[v],_=o.length-1,y=o[0],g=o[_],w=!a;l&lt;=v&amp;&amp;p&lt;=_;)n(h)?h=e[++l]:n(m)?m=e[--v]:uo(h,y)?(O(h,y,i,o,p),h=e[++l],y=o[++p]):uo(m,g)?(O(m,g,i,o,_),m=e[--v],g=o[--_]):uo(h,g)?(O(h,g,i,o,_),w&amp;&amp;f.insertBefore(t,h.elm,f.nextSibling(m.elm)),h=e[++l],g=o[--_]):uo(m,y)?(O(m,y,i,o,p),w&amp;&amp;f.insertBefore(t,m.elm,h.elm),m=e[--v],y=o[++p]):(n(s)&amp;&amp;(s=fo(e,l,v)),n(c=r(y.key)?s[y.key]:x(y,e,l,v))?d(y,i,t,h.elm,!1,o,p):uo(u=e[c],y)?(O(u,y,i,o,p),e[c]=void 0,w&amp;&amp;f.insertBefore(t,u.elm,h.elm)):d(y,i,t,h.elm,!1,o,p),y=o[++p]);l&gt;v?b(t,n(o[_+1])?null:o[_+1].elm,o,p,_,i):p&gt;_&amp;&amp;$(e,l,v)}(l,h,m,i,u):r(m)?(r(t.text)&amp;&amp;f.setTextContent(l,""),b(l,null,m,0,m.length-1,i)):r(h)?$(h,0,h.length-1):r(t.text)&amp;&amp;f.setTextContent(l,""):t.text!==e.text&amp;&amp;f.setTextContent(l,e.text),r(v)&amp;&amp;r(p=v.hook)&amp;&amp;r(p=p.postpatch)&amp;&amp;p(t,e)}}}function k(t,e,n){if(o(n)&amp;&amp;r(t.parent))t.parent.data.pendingInsert=e;else for(var i=0;i&lt;e.length;++i)e[i].data.hook.insert(e[i])}var S=h("attrs,class,staticClass,staticStyle,key");function j(t,e,n,i){var a,s=e.tag,c=e.data,u=e.children;if(i=i||c&amp;&amp;c.pre,e.elm=t,o(e.isComment)&amp;&amp;r(e.asyncFactory))return e.isAsyncPlaceholder=!0,!0;if(r(c)&amp;&amp;(r(a=c.hook)&amp;&amp;r(a=a.init)&amp;&amp;a(e,!0),r(a=e.componentInstance)))return p(e,n),!0;if(r(s)){if(r(u))if(t.hasChildNodes())if(r(a=c)&amp;&amp;r(a=a.domProps)&amp;&amp;r(a=a.innerHTML)){if(a!==t.innerHTML)return!1}else{for(var f=!0,l=t.firstChild,d=0;d&lt;u.length;d++){if(!l||!j(l,u[d],n,i)){f=!1;break}l=l.nextSibling}if(!f||l)return!1}else m(e,u,n);if(r(c)){var v=!1;for(var h in c)if(!S(h)){v=!0,y(e,n);break}!v&amp;&amp;c.class&amp;&amp;Cn(c.class)}}else t.data!==e.text&amp;&amp;(t.data=e.text);return!0}return function(t,e,i,a){if(!n(e)){var s,u=!1,l=[];if(n(t))u=!0,d(e,l);else{var p=r(t.nodeType);if(!p&amp;&amp;uo(t,e))O(t,e,l,null,null,a);else{if(p){if(1===t.nodeType&amp;&amp;t.hasAttribute(L)&amp;&amp;(t.removeAttribute(L),i=!0),o(i)&amp;&amp;j(t,e,l))return k(e,l,!0),t;s=t,t=new ut(f.tagName(s).toLowerCase(),{},[],void 0,s)}var v=t.elm,h=f.parentNode(v);if(d(e,l,v._leaveCb?null:h,f.nextSibling(v)),r(e.parent))for(var m=e.parent,y=_(e);m;){for(var g=0;g&lt;c.destroy.length;++g)c.destroy[g](m);if(m.elm=e.elm,y){for(var b=0;b&lt;c.create.length;++b)c.create[b](so,m);var C=m.data.hook.insert;if(C.merged)for(var x=C.fns.slice(1),S=0;S&lt;x.length;S++)x[S]()}else io(m);m=m.parent}r(h)?$([t],0,0):r(t.tag)&amp;&amp;w(t)}}return k(e,l,u),e.elm}r(t)&amp;&amp;w(t)}}({nodeOps:ro,modules:[$o,Oo,Do,Lo,Go,W?{create:bi,activate:bi,remove:function(t,e){!0!==t.data.show?_i(t,e):e()}}:{}].concat(yo)});G&amp;&amp;document.addEventListener("selectionchange",(function(){var t=document.activeElement;t&amp;&amp;t.vmodel&amp;&amp;Ti(t,"input")}));var $i={inserted:function(t,e,n,r){"select"===n.tag?(r.elm&amp;&amp;!r.elm._vOptions?ce(n,"postpatch",(function(){$i.componentUpdated(t,e,n)})):Ci(t,e,n.context),t._vOptions=[].map.call(t.options,ki)):("textarea"===n.tag||no(t.type))&amp;&amp;(t._vModifiers=e.modifiers,e.modifiers.lazy||(t.addEventListener("compositionstart",Si),t.addEventListener("compositionend",ji),t.addEventListener("change",ji),G&amp;&amp;(t.vmodel=!0)))},componentUpdated:function(t,e,n){if("select"===n.tag){Ci(t,e,n.context);var r=t._vOptions,o=t._vOptions=[].map.call(t.options,ki);if(o.some((function(t,e){return!I(t,r[e])})))(t.multiple?e.value.some((function(t){return Oi(t,o)})):e.value!==e.oldValue&amp;&amp;Oi(e.value,o))&amp;&amp;Ti(t,"change")}}};function Ci(t,e,n){xi(t,e),(q||Z)&amp;&amp;setTimeout((function(){xi(t,e)}),0)}function xi(t,e,n){var r=e.value,o=t.multiple;if(!o||Array.isArray(r)){for(var i,a,s=0,c=t.options.length;s&lt;c;s++)if(a=t.options[s],o)i=D(r,ki(a))&gt;-1,a.selected!==i&amp;&amp;(a.selected=i);else if(I(ki(a),r))return void(t.selectedIndex!==s&amp;&amp;(t.selectedIndex=s));o||(t.selectedIndex=-1)}}function Oi(t,e){return e.every((function(e){return!I(e,t)}))}function ki(t){return"_value"in t?t._value:t.value}function Si(t){t.target.composing=!0}function ji(t){t.target.composing&amp;&amp;(t.target.composing=!1,Ti(t.target,"input"))}function Ti(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function Ai(t){return!t.componentInstance||t.data&amp;&amp;t.data.transition?t:Ai(t.componentInstance._vnode)}var Ei={bind:function(t,e,n){var r=e.value,o=(n=Ai(n)).data&amp;&amp;n.data.transition,i=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&amp;&amp;o?(n.data.show=!0,mi(n,(function(){t.style.display=i}))):t.style.display=r?i:"none"},update:function(t,e,n){var r=e.value;!r!=!e.oldValue&amp;&amp;((n=Ai(n)).data&amp;&amp;n.data.transition?(n.data.show=!0,r?mi(n,(function(){t.style.display=t.__vOriginalDisplay})):_i(n,(function(){t.style.display="none"}))):t.style.display=r?t.__vOriginalDisplay:"none")},unbind:function(t,e,n,r,o){o||(t.style.display=t.__vOriginalDisplay)}},Pi={model:$i,show:Ei},Ii={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Di(t){var e=t&amp;&amp;t.componentOptions;return e&amp;&amp;e.Ctor.options.abstract?Di(Ve(e.children)):t}function Ni(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var o=n._parentListeners;for(var r in o)e[$(r)]=o[r];return e}function Mi(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}var Li=function(t){return t.tag||Ae(t)},Ri=function(t){return"show"===t.name},Fi={name:"transition",props:Ii,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&amp;&amp;(n=n.filter(Li)).length){var r=this.mode,o=n[0];if(function(t){for(;t=t.parent;)if(t.data.transition)return!0}(this.$vnode))return o;var a=Di(o);if(!a)return o;if(this._leaving)return Mi(t,o);var s="__transition-".concat(this._uid,"-");a.key=null==a.key?a.isComment?s+"comment":s+a.tag:i(a.key)?0===String(a.key).indexOf(s)?a.key:s+a.key:a.key;var c=(a.data||(a.data={})).transition=Ni(this),u=this._vnode,f=Di(u);if(a.data.directives&amp;&amp;a.data.directives.some(Ri)&amp;&amp;(a.data.show=!0),f&amp;&amp;f.data&amp;&amp;!function(t,e){return e.key===t.key&amp;&amp;e.tag===t.tag}(a,f)&amp;&amp;!Ae(f)&amp;&amp;(!f.componentInstance||!f.componentInstance._vnode.isComment)){var l=f.data.transition=j({},c);if("out-in"===r)return this._leaving=!0,ce(l,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),Mi(t,o);if("in-out"===r){if(Ae(a))return u;var d,p=function(){d()};ce(c,"afterEnter",p),ce(c,"enterCancelled",p),ce(l,"delayLeave",(function(t){d=t}))}}return o}}},Ui=j({tag:String,moveClass:String},Ii);delete Ui.mode;var Vi={props:Ui,beforeMount:function(){var t=this,e=this._update;this._update=function(n,r){var o=In(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,o(),e.call(t,n,r)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=Ni(this),s=0;s&lt;o.length;s++){(f=o[s]).tag&amp;&amp;null!=f.key&amp;&amp;0!==String(f.key).indexOf("__vlist")&amp;&amp;(i.push(f),n[f.key]=f,(f.data||(f.data={})).transition=a)}if(r){var c=[],u=[];for(s=0;s&lt;r.length;s++){var f;(f=r[s]).data.transition=a,f.data.pos=f.elm.getBoundingClientRect(),n[f.key]?c.push(f):u.push(f)}this.kept=t(e,null,c),this.removed=u}return t(e,null,i)},updated:function(){var t=this.prevChildren,e=this.moveClass||(this.name||"v")+"-move";t.length&amp;&amp;this.hasMove(t[0].elm,e)&amp;&amp;(t.forEach(Bi),t.forEach(zi),t.forEach(Hi),this._reflow=document.body.offsetHeight,t.forEach((function(t){if(t.data.moved){var n=t.elm,r=n.style;ui(n,e),r.transform=r.WebkitTransform=r.transitionDuration="",n.addEventListener(oi,n._moveCb=function t(r){r&amp;&amp;r.target!==n||r&amp;&amp;!/transform$/.test(r.propertyName)||(n.removeEventListener(oi,t),n._moveCb=null,fi(n,e))})}})))},methods:{hasMove:function(t,e){if(!ti)return!1;if(this._hasMove)return this._hasMove;var n=t.cloneNode();t._transitionClasses&amp;&amp;t._transitionClasses.forEach((function(t){Xo(n,t)})),Jo(n,e),n.style.display="none",this.$el.appendChild(n);var r=pi(n);return this.$el.removeChild(n),this._hasMove=r.hasTransform}}};function Bi(t){t.elm._moveCb&amp;&amp;t.elm._moveCb(),t.elm._enterCb&amp;&amp;t.elm._enterCb()}function zi(t){t.data.newPos=t.elm.getBoundingClientRect()}function Hi(t){var e=t.data.pos,n=t.data.newPos,r=e.left-n.left,o=e.top-n.top;if(r||o){t.data.moved=!0;var i=t.elm.style;i.transform=i.WebkitTransform="translate(".concat(r,"px,").concat(o,"px)"),i.transitionDuration="0s"}}var Wi={Transition:Fi,TransitionGroup:Vi};return Tr.config.mustUseProp=function(t,e,n){return"value"===n&amp;&amp;Rr(t)&amp;&amp;"button"!==e||"selected"===n&amp;&amp;"option"===t||"checked"===n&amp;&amp;"input"===t||"muted"===n&amp;&amp;"video"===t},Tr.config.isReservedTag=to,Tr.config.isReservedAttr=Lr,Tr.config.getTagNamespace=function(t){return Yr(t)?"svg":"math"===t?"math":void 0},Tr.config.isUnknownElement=function(t){if(!W)return!0;if(to(t))return!1;if(t=t.toLowerCase(),null!=eo[t])return eo[t];var e=document.createElement(t);return t.indexOf("-")&gt;-1?eo[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:eo[t]=/HTMLUnknownElement/.test(e.toString())},j(Tr.options.directives,Pi),j(Tr.options.components,Wi),Tr.prototype.__patch__=W?wi:A,Tr.prototype.$mount=function(t,e){return function(t,e,n){var r;t.$el=e,t.$options.render||(t.$options.render=ft),Ln(t,"beforeMount"),r=function(){t._update(t._render(),n)},new Sn(t,r,A,{before:function(){t._isMounted&amp;&amp;!t._isDestroyed&amp;&amp;Ln(t,"beforeUpdate")}},!0),n=!1;var o=t._preWatchers;if(o)for(var i=0;i&lt;o.length;i++)o[i].run();return null==t.$vnode&amp;&amp;(t._isMounted=!0,Ln(t,"mounted")),t}(this,t=t&amp;&amp;W?function(t){if("string"==typeof t){return document.querySelector(t)||document.createElement("div")}return t}(t):void 0,e)},W&amp;&amp;setTimeout((function(){U.devtools&amp;&amp;rt&amp;&amp;rt.emit("init",Tr)}),0),j(Tr,wn),Tr}));
             &lt;/script&gt;
             &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
              (function () {
  'use strict';

  var MutationObserver = window.WebKitMutationObserver || window.MutationObserver || window.MozMutationObserver;
  var isHttp = location.href.indexOf('http://') === 0;
  var isDangerSrc = function isDangerSrc(src) {
    if (src) {
      var host = src.match(/http(?:s)?:\/\/([^\/]+?)(\/|$)/);
      if (host &amp;&amp; !/qq\.com(\:8080)?$/.test(host[1]) &amp;&amp; !/weishi\.com$/.test(host[1])) {
        return true;
      }
    }
    return false;
  };
  if (location.href.indexOf('safe=0') === -1 &amp;&amp; isHttp &amp;&amp; typeof MutationObserver === 'function' &amp;&amp; location.host === 'mp.weixin.qq.com') {
    window.__observer_data = {
      count: 0,
      exec_time: 0,
      list: []
    };
    window.__observer = new MutationObserver(function (mutations) {
      window.__observer_data.count++;
      var begin = new Date(),
        deleteNodes = [];
      mutations.forEach(function (mutation) {
        var nodes = mutation.addedNodes;
        for (var i = 0; i &lt; nodes.length; i++) {
          var node = nodes[i];
          if (node.tagName === 'SCRIPT') {
            var scriptSrc = node.src;
            if (isDangerSrc(scriptSrc)) {
              window.__observer_data.list.push(scriptSrc);
              deleteNodes.push(node);
            }
            if (!scriptSrc &amp;&amp; window.__nonce_str &amp;&amp; node.getAttribute('nonce') != window.__nonce_str) {
              window.__observer_data.list.push('inlinescript_without_nonce');
              deleteNodes.push(node);
            }
          }
        }
      });
      for (var i = 0; i &lt; deleteNodes.length; i++) {
        var node = deleteNodes[i];
        node.parentNode &amp;&amp; node.parentNode.removeChild(node);
      }
      window.__observer_data.exec_time += new Date() - begin;
    });
    window.__observer.observe(document, {
      subtree: true,
      childList: true
    });
  }
  function init() {
    if (location.href.indexOf('safe=0') === -1 &amp;&amp; Math.random() &lt; 0.01 &amp;&amp; isHttp &amp;&amp; HTMLScriptElement.prototype.__lookupSetter__ &amp;&amp; typeof Object.defineProperty !== 'undefined') {
      window.__danger_src = {
        xmlhttprequest: [],
        script_src: [],
        script_setAttribute: []
      };
      var t = '$' + Math.random();
      var s = 'Setter__';
      HTMLScriptElement.prototype.__old_method_script_src = HTMLScriptElement.prototype['__lookup' + s]('src');
      HTMLScriptElement.prototype['__define' + s]('src', function (url) {
        if (url &amp;&amp; isDangerSrc(url)) {
          window.__danger_src.script_src.push(url);
        }
        this.__old_method_script_src(url);
      });
      var nativeSetAttribute = '__setAttribute' + t;
      Object.defineProperty(Element.prototype, nativeSetAttribute, {
        value: Element.prototype.setAttribute,
        enumerable: false
      });
      Element.prototype.setAttribute = function (name, url) {
        if (this.tagName === 'SCRIPT' &amp;&amp; name === 'src' &amp;&amp; isDangerSrc(url)) {
          window.__danger_src.script_setAttribute.push(url);
        }
        this[nativeSetAttribute](name, url);
      };
    }
  }

  
  init();

})();
             &lt;/script&gt;
             &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
              var __INLINE_SCRIPT__ = (function () {
  'use strict';

  function _typeof(obj) {
    "@babel/helpers - typeof";

    return _typeof = "function" == typeof Symbol &amp;&amp; "symbol" == typeof Symbol.iterator ? function (obj) {
      return typeof obj;
    } : function (obj) {
      return obj &amp;&amp; "function" == typeof Symbol &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj;
    }, _typeof(obj);
  }

  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
    try {
      var info = gen[key](arg);
      var value = info.value;
    } catch (error) {
      reject(error);
      return;
    }
    if (info.done) {
      resolve(value);
    } else {
      Promise.resolve(value).then(_next, _throw);
    }
  }
  function _asyncToGenerator(fn) {
    return function () {
      var self = this,
        args = arguments;
      return new Promise(function (resolve, reject) {
        var gen = fn.apply(self, args);
        function _next(value) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
        }
        function _throw(err) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
        }
        _next(undefined);
      });
    };
  }

  function _createForOfIteratorHelper$1(o, allowArrayLike) { var it = typeof Symbol !== "undefined" &amp;&amp; o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$1(o)) || allowArrayLike &amp;&amp; o &amp;&amp; typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i &gt;= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion &amp;&amp; it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
  function _unsupportedIterableToArray$1(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$1(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen); }
  function _arrayLikeToArray$1(arr, len) { if (len == null || len &gt; arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i]; return arr2; }
  
  
  var ua = navigator.userAgent;
  var is_ios = /(iPhone|iPad|iPod|iOS)/i.test(ua);
  var is_wp = /Windows\sPhone/i.test(ua);
  var is_android = /(Android)/i.test(ua);
  var is_wechat = /MicroMessenger\/([\d\.]+)/i.test(ua);
  var is_mac = /mac\sos/i.test(ua) &amp;&amp; !is_ios;
  var is_windows = /windows\snt/i.test(ua) &amp;&amp; !is_wp;
  var is_mpapp = /MPAPP\/([\d\.]+)/i.test(ua);
  var is_ipad = /iPad/i.test(ua);
  var is_windows_wechat = /WindowsWechat/i.test(ua);
  var is_mac_wechat = /MacWechat/i.test(ua) || /wechat.*mac os/i.test(ua);
  var is_prefetch = is_wechat &amp;&amp; window.WeixinPrefecherJSBridge;
  var is_donut_app = /SAAASDK/i.test(ua);
  var is_harmony = /OpenHarmony|ArkWeb/i.test(ua);
  var is_linux = /Linux\s/i.test(ua);
  var xweb_match = ua.match(/XWEB\/([\d.]+)/i);
  var xweb_version = xweb_match &amp;&amp; xweb_match[1] ? parseInt(xweb_match[1], 10) : 0;
  var is_unified_pc_wechat = /UnifiedPC\w+Wechat/i.test(ua);
  var is_in_miniProgram = is_android &amp;&amp; /miniprogram/.test(ua.toLowerCase()) || window.__wxjs_environment == 'miniprogram';
  var is_wx_work = /wxwork/i.test(ua);
  function getUrlParams() {
    var vars = location.search.substring(1).split('&amp;');
    var params = {};
    var _iterator = _createForOfIteratorHelper$1(vars),
      _step;
    try {
      for (_iterator.s(); !(_step = _iterator.n()).done;) {
        var ele = _step.value;
        var pair = ele.split('=');
        var key = decodeURIComponent(pair[0]);
        if (typeof params[key] === 'undefined') {
          params[key] = decodeURIComponent(pair[1]);
        }
      }
    } catch (err) {
      _iterator.e(err);
    } finally {
      _iterator.f();
    }
    return params;
  }
  function get() {
    var reg = /MicroMessenger\/([\d\.]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMac() {
    var reg = /MacWechat\/([\d\.]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMacOS() {
    var reg = /Mac OS X ([\d_]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1].replace(/_/g, '.');
    }
    return false;
  }
  function getWindows() {
    var reg = /WindowsWechat\(0x(.+?)\)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getWxWork() {
    var reg = /wxwork\/([\d\.]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMpApp() {
    var appVersion = [2, 4, 5];
    var match = navigator.userAgent.match(/MPAPP\/(\d+(\.\d+)*)/);
    if (match) {
      appVersion = match[1].split('.').map(function (v) {
        return Number(v);
      });
    }
    return appVersion.join('.');
  }
  function getUnifiedPcVer() {
    var versionInfo = navigator.userAgent.match(/UnifiedPC\w+Wechat\(0xf\w{2}(\w+?)\w{2}\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(0, 1));
      var subVersion = getVersionNumber(version.slice(1, 2));
      var subVersion2 = getVersionNumber(version.slice(2, 3));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
  }
  function getVersionNumber(hexStr) {
    return Number(Number("0x".concat(hexStr)).toString(10));
  }
  function getWindowsVersionFormat() {
    var versionInfo = navigator.userAgent.match(/WindowsWechat\(0x(\w+?)\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(1, 2));
      var subVersion = getVersionNumber(version.slice(2, 4));
      var subVersion2 = getVersionNumber(version.slice(4, 6));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
    return false;
  }
  function getInner() {
    var reg = /MicroMessenger\/[\d\.]+\(0x(.+?)\)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1] &amp;&amp; ret[1] != null) {
      return ret[1];
    }
    if (!ret &amp;&amp; /MicroMessenger\/[\d\.]+/i.test(ua)) {
      var urlParams = getUrlParams();
      if (urlParams.version) {
        return urlParams.version;
      }
    }
    return false;
  }
  var opfunc = {
    'cp-1': function cp1(a, b) {
      return a &lt; b;
    },
    cp0: function cp0(a, b) {
      return a === b;
    },
    cp1: function cp1(a, b) {
      return a &gt; b;
    }
  };
  function cpVersion(ver, op, canEq, type) {
    var mmver = false;
    switch (type) {
      case 'mac':
        mmver = getMac();
        break;
      case 'windows':
        mmver = getWindowsVersionFormat();
        break;
      case 'wxwork':
        mmver = getWxWork();
        break;
      case 'mpapp':
        mmver = getMpApp();
        break;
      case 'unifiedpc':
        mmver = getUnifiedPcVer();
        break;
      default:
        mmver = get();
        break;
    }
    if (!mmver) {
      return;
    }
    var mmversion = mmver.split('.');
    var version = ver.split('.');
    if (!/\d+/g.test(mmversion[mmversion.length - 1])) {
      mmversion.pop();
    }
    for (var i = 0, len = Math.max(mmversion.length, version.length); i &lt; len; ++i) {
      var mmv = mmversion[i] || '';
      var v = version[i] || '';
      var mmvn = parseInt(mmv, 10) || 0;
      var vn = parseInt(v, 10) || 0;
      var eq = opfunc.cp0(mmvn, vn);
      if (eq) {
        continue;
      }
      var cp = opfunc["cp".concat(op)];
      return cp(mmvn, vn);
    }
    return canEq || op === 0;
  }
  function eqVersion(version) {
    return cpVersion(version, 0);
  }
  function gtVersion(version, canEq) {
    return cpVersion(version, 1, canEq);
  }
  function ltVersion(version, canEq) {
    return cpVersion(version, -1, canEq);
  }
  function getPlatform() {
    if (is_ios) {
      return 'ios';
    }
    if (is_android) {
      return 'android';
    }
    if (is_mac) {
      return 'mac_os';
    }
    if (is_windows) {
      return 'windows';
    }
    return 'unknown';
  }
  var is_google_play = false;
  var inner_ver_for_google_play_check = getInner();
  if (is_android &amp;&amp; inner_ver_for_google_play_check) {
    var v = "0x".concat(inner_ver_for_google_play_check.substr(-2));
    if (parseInt(v) &gt;= 64 &amp;&amp; parseInt(v) &lt;= 79) {
      is_google_play = true;
    }
  }
  function compareHexVersion(hexNum) {
    var innerVersion = getInner();
    if (innerVersion &amp;&amp; hexNum) {
      if (typeof hexNum === 'string') {
        hexNum = parseInt(hexNum, 16);
      }
      var version = parseInt(innerVersion, 16);
      return version &gt;= hexNum;
    }
    return false;
  }
  ({
    get: get,
    getMac: getMac,
    getMacOS: getMacOS,
    getWindows: getWindows,
    getInner: getInner,
    getWxWork: getWxWork,
    getMpApp: getMpApp,
    cpVersion: cpVersion,
    eqVersion: eqVersion,
    gtVersion: gtVersion,
    ltVersion: ltVersion,
    getPlatform: getPlatform,
    getVersionNumber: getVersionNumber,
    isWp: is_wp,
    isIOS: is_ios,
    isAndroid: is_android,
    isHarmony: is_harmony,
    isHarmonyWechat: is_harmony &amp;&amp; is_wechat &amp;&amp; cpVersion('1.0.0', 1, true),
    isInMiniProgram: is_in_miniProgram,
    isWechat: is_wechat,
    isMac: is_mac,
    isWindows: is_windows,
    isLinux: is_linux,
    isMacWechat: is_mac_wechat,
    isWindowsWechat: is_windows_wechat,
    isWxWork: is_wx_work,
    isOnlyWechat: is_wechat &amp;&amp; !is_wx_work,
    isMpapp: is_mpapp,
    isNewMpApp: false,
    isIPad: is_ipad,
    isGooglePlay: is_google_play,
    isPrefetch: is_prefetch,
    isDonutAPP: is_donut_app,
    compareHexVersion: compareHexVersion,
    isPcWechat: is_windows_wechat || is_mac_wechat,
    xwebVersion: xweb_version,
    isUnifiedPcWechat: is_unified_pc_wechat
  });

  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }

  function _regeneratorRuntime() {  _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  var doc = {};
  var isAcrossOrigin = false;
  var notFoundedMPPageAction = [];
  var __moon_report = window.__moon_report || function () {};
  var MOON_JSAPI_KEY_OFFSET = 8;
  try {
    doc = top.window.document;
  } catch (e) {
    isAcrossOrigin = true;
  }
  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }
  function ready(onBridgeReady) {
    var bridgeReady = function bridgeReady() {
      try {
        if (onBridgeReady) {
          window.onBridgeReadyTime = window.onBridgeReadyTime || Date.now();
          onBridgeReady();
        }
      } catch (e) {
        __moon_report([{
          offset: MOON_JSAPI_KEY_OFFSET,
          log: 'ready',
          e: e
        }]);
        throw e;
      }
      window.jsapiReadyTime = Date.now();
    };
    if (!isAcrossOrigin &amp;&amp; (typeof top.window.WeixinJSBridge === 'undefined' || !top.window.WeixinJSBridge.invoke)) {
      if (doc.addEventListener) {
        doc.addEventListener('WeixinJSBridgeReady', bridgeReady, false);
      } else if (doc.attachEvent) {
        doc.attachEvent('WeixinJSBridgeReady', bridgeReady);
        doc.attachEvent('onWeixinJSBridgeReady', bridgeReady);
      }
    } else {
      bridgeReady();
    }
  }
  var invokeNotWaitA8key = ['notifyPageInfo', 'updatePageAuth'
  ];
  var checkNotFoundedInvoke = function checkNotFoundedInvoke(methodName, args) {
    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; notFoundedMPPageAction.includes(args === null || args === void 0 ? void 0 : args.action)) {
      return true;
    }
    return false;
  };
  function invoke(_x, _x2, _x3) {
    return _invoke.apply(this, arguments);
  }
  function _invoke() {
    _invoke = _asyncToGenerator( _regeneratorRuntime().mark(function _callee(methodName, args, callback) {
      return _regeneratorRuntime().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__ &amp;&amp; !invokeNotWaitA8key.includes(methodName))) {
              _context.next = 3;
              break;
            }
            _context.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                alert('请在微信中打开此链接');
                return false;
              }
              if (checkNotFoundedInvoke(methodName, args)) {
                setTimeout(function () {
                  if (callback) {
                    callback.apply(window, [{
                      err_msg: "".concat(methodName, ":fail"),
                      err_desc: 'action isn\'t supported'
                    }]);
                  }
                }, 0);
              } else {
                top.window.WeixinJSBridge.invoke(methodName, args, function () {
                  try {
                    for (var _len2 = arguments.length, rets = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
                      rets[_key2] = arguments[_key2];
                    }
                    var ret = rets[0];
                    var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
                    if (['handleMPPageAction', 'handleVideoAction', 'handleHaokanAction'].indexOf(methodName) !== -1) {
                      var action = (args === null || args === void 0 ? void 0 : args.action) || '';
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName, ", action-&gt;").concat(action).concat(errMsg));
                    } else {
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName).concat(errMsg));
                    }
                    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; ((ret === null || ret === void 0 ? void 0 : ret.err_desc) === 'action isn\'t supported' || (ret === null || ret === void 0 ? void 0 : ret.err_msg) === 'handleMPPageAction:fail action is not supported')) {
                      notFoundedMPPageAction.push(args === null || args === void 0 ? void 0 : args.action);
                    }
                    if (callback) {
                      callback.apply(window, rets);
                    }
                  } catch (e) {
                    __moon_report([{
                      offset: MOON_JSAPI_KEY_OFFSET,
                      log: "invoke;methodName:".concat(methodName),
                      e: e
                    }]);
                    throw e;
                  }
                });
              }
            });
          case 4:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return _invoke.apply(this, arguments);
  }
  function call(_x4) {
    return _call.apply(this, arguments);
  }
  function _call() {
    _call = _asyncToGenerator( _regeneratorRuntime().mark(function _callee2(methodName) {
      return _regeneratorRuntime().wrap(function _callee2$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__)) {
              _context2.next = 3;
              break;
            }
            _context2.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                return false;
              }
              try {
                top.window.WeixinJSBridge.call(methodName);
              } catch (e) {
                __moon_report([{
                  offset: MOON_JSAPI_KEY_OFFSET,
                  log: "call;methodName:".concat(methodName),
                  e: e
                }]);
                throw e;
              }
            });
          case 4:
          case "end":
            return _context2.stop();
        }
      }, _callee2);
    }));
    return _call.apply(this, arguments);
  }
  function on(eventName, callback) {
    ready(function () {
      if (isAcrossOrigin) return false;
      if (_typeof(top.window.WeixinJSBridge) !== 'object' || !top.window.WeixinJSBridge.on) {
        return false;
      }
      if (!window.JSAPIEventCallbackMap[eventName]) {
        window.JSAPIEventCallbackMap[eventName] = [];
      }
      window.JSAPIEventCallbackMap[eventName].push(callback);
      if (window.JSAPIEventCallbackMap[eventName].length &gt; 1) {
        return false;
      }
      top.window.WeixinJSBridge.on(eventName, function () {
        try {
          for (var _len = arguments.length, rets = new Array(_len), _key = 0; _key &lt; _len; _key++) {
            rets[_key] = arguments[_key];
          }
          var ret = rets[0];
          var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
          console.info('[system]', "[jsapi] event-&gt;".concat(eventName).concat(errMsg));
          if (window.JSAPIEventCallbackMap[eventName] &amp;&amp; window.JSAPIEventCallbackMap[eventName].length) {
            var result;
            for (var i = 0; i &lt; window.JSAPIEventCallbackMap[eventName].length; i++) {
              result = window.JSAPIEventCallbackMap[eventName][i].apply(window, rets);
            }
            return result;
          }
        } catch (e) {
          __moon_report([{
            offset: MOON_JSAPI_KEY_OFFSET,
            log: "on;eventName:".concat(eventName),
            e: e
          }]);
          throw e;
        }
      });
    });
  }
  function remove(eventName, callback) {
    ready(function () {
      if (!window.JSAPIEventCallbackMap[eventName]) {
        return false;
      }
      var result = false;
      for (var i = window.JSAPIEventCallbackMap[eventName].length - 1; i &gt;= 0; i--) {
        if (window.JSAPIEventCallbackMap[eventName][i] === callback) {
          window.JSAPIEventCallbackMap[eventName].splice(i, 1);
          result = true;
        }
      }
      return result;
    });
  }
  var JSAPI = {
    ready: ready,
    invoke: invoke,
    call: call,
    on: on,
    remove: remove
  };

  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" &amp;&amp; o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike &amp;&amp; o &amp;&amp; typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i &gt;= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion &amp;&amp; it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
  function _arrayLikeToArray(arr, len) { if (len == null || len &gt; arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i]; return arr2; }
  function reportFCP(renderTime, fastLoad) {
    setTimeout(function () {
      var searchParams = new URLSearchParams(window.location.search);
      var search_click_id = searchParams.get('search_click_id');
      if (!search_click_id) return;
      var searchId = search_click_id ? search_click_id.split('-')[0] : '';
      var clickTime = search_click_id ? search_click_id.split('-')[1] : renderTime;
      var logData = {
        actionType: 35,
        scene: 0,
        sessionId: '',
        subSessionId: '',
        searchId: searchId,
        offset: 0,
        isHomePage: 0,
        requestId: '',
        timeStampsInMs: 0,
        netType: '',
        isSuccess: 0,
        query: '',
        tabId: '',
        bizType: 0,
        h5Version: 0,
        isPreload: 0,
        isHttp: 0,
        url: '',
        userAgent: '',
        isPrefetch: 0,
        isRealShow: 1,
        extInfo: encodeURIComponent(JSON.stringify({
          render_time: renderTime,
          cost_time: renderTime - clickTime,
          search_click_id: search_click_id,
          fast_load: fastLoad
        }))
      };
      JSAPI.invoke('kvReport', {
        id: 14904,
        value: Object.values(logData).join(',')
      }, function (res) {
        console.log("111111 kv report res", res, logData);
      });
    }, 1000);
  }
  if (!window.__second_open__) {
    var observer = new PerformanceObserver(function (entryList) {
      var _iterator = _createForOfIteratorHelper(entryList.getEntries()),
        _step;
      try {
        for (_iterator.s(); !(_step = _iterator.n()).done;) {
          var entry = _step.value;
          if (entry.name === 'first-contentful-paint') {
            reportFCP(Date.now(), false);
          }
        }
      } catch (err) {
        _iterator.e(err);
      } finally {
        _iterator.f();
      }
    });
    observer.observe({
      entryTypes: ['paint']
    });
  }

  return reportFCP;

})();
             &lt;/script&gt;
             &lt;script nonce="579543733" reportloaderror="" type="module"&gt;
              import.meta.url;import("_").catch(()=&gt;1);async function* g(){};window.__vite_is_modern_browser=true;
             &lt;/script&gt;
             &lt;script nonce="579543733" reportloaderror="" type="module"&gt;
              !function(){if(window.__vite_is_modern_browser)return;console.warn("vite: loading legacy chunks, syntax error above and the same error below should be ignored");var e=document.getElementById("vite-legacy-polyfill"),n=document.createElement("script");n.src=e.src,n.onload=function(){System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))},document.body.appendChild(n)}();
             &lt;/script&gt;
             &lt;script crossorigin="" nonce="579543733" reportloaderror="" src="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/appmsg.mpw20sb794773662.js" type="module"&gt;
             &lt;/script&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/modulepreload-polyfill.mpw20sb74abee2a4.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/log.mpw20sb7f818c3e3.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/private_share.mpw20sb7c9ff0ad6.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/event_bus.mpw20sb752ad61d1.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/event.mpw20sb790256d59.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/comm_utils.mpw20sb7db787ac7.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/page_utils.mpw20sb7d316ceb5.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/render_utils.mpw20sb72375d61f.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/appmsgext.mpw20sb774510587.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/pay_report_utils.mpw20sb72b3e2e98.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/_plugin-vue2_normalizer-9c6b8b3d.mpw20sb7f46dd4c3.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/rec_report_key.mpw20sb75ee2ba98.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/i18n.mpw20sb7cc49bfd6.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/page_utils.mpw20sb7bfeb2de6.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/mobile_click.mpw20sb7d9b48bc2.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/_plugin-vue2_normalizer.mpw20sb7fc2fb13f.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/reward_ls.mpw20sb7da26055f.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/a_config.mpw20sb7b21abd27.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/wapsdk.mpw20sb791686de4.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/localstorage.mpw20sb70dd77549.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/class.mpw20sb7d1a660bd.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/tap_highlight.mpw20sb7dbdf97d0.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/handle_change_inter_identity.mpw20sb74897e034.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/page_cls_ctrl.mpw20sb7754df1bc.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/a.mpw20sb78348bb8b.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/detect_cover_state.mpw20sb792b3fe5f.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/lib.mpw20sb7c7d79997.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/body_first_observer.mpw20sb7a7d0eac4.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/get_page_read_pos.mpw20sb7fcdea874.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/global_setting.mpw20sb7453c39ef.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/page_pos.mpw20sb73099ca8d.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/base64.mpw20sb718dbe4cd.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/_commonjsHelpers.mpw20sb726303f2a.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/indexdb.mpw20sb71cbe5095.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/Popover.mpw20sb7e67a3fa0.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/weapp_common.mpw20sb772deb70c.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/Identity.mpw20sb7b9b20fd5.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/pag.mpw20sb78d2636ce.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/ThanksBtn.mpw20sb7d7a51d68.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/StreamFriendsList.mpw20sb7630ae7ce.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/event.mpw20sb774ab9e62.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/popup_report.mpw20sb7e6cff1a8.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/advance.mpw20sb7628ebc8c.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/Loading.mpw20sb79ac5a3c0.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/ContextMenu.mpw20sb7dc8437a0.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/keyboard.mpw20sb747aa4ffa.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/img_base64.mpw20sb7c0459f85.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/tmpl.mpw20sb71af565c1.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/createClass-b41bf598.mpw20sb75b9567d9.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/index.umd.min-fbb4886a.mpw20sb7d13896fa.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/LazyImage.mpw20sb78046bd21.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/CommentList.mpw20sb7df733112.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/safe_area_insets.mpw20sb74907c618.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/underline_action.mpw20sb7f1b0ac18.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/play_voice.mpw20sb76ed83561.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/watermark.mpw20sb7af47b011.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/Drawer.mpw20sb7ed76159b.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/CmtImgPreview.mpw20sb7c3e84913.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/StreamFriends.mpw20sb70a096f42.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/teleport.esm.mpw20sb7d60569be.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/textOverflow.mpw20sb79d5cfb76.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/wxwork_hidden.mpw20sb72a683e7e.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/ext_loading.mpw20sb754689742.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/report.mpw20sb78fdda964.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/utils.mpw20sb7805e0f97.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/RelatedInfo-b742e958.mpw20sb72e1a0a4c.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/keep_read.mpw20sb7a21f08d1.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/topic.mpw20sb760267d6c.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/review_image.mpw20sb766437ab7.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/utils.mpw20sb70fc45d30.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/redpacketcover.mpw20sb71e60ff89.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/set_article_read.mpw20sb7783cc670.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/gongyi.mpw20sb7f0bd863b.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/reward_close_tip.mpw20sb73c217e7b.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/moment.mpw20sb707db360f.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/appmsg_comment.mpw20sb770651986.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/lodash.mpw20sb7a9b08970.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/article_bottom_bar.mpw20sb73ad277f8.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/reward_list_dialog.mpw20sb7f337e0a1.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/channel_product_utils.mpw20sb77dfaeafc.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/product_search.mpw20sb73a075d07.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/added_info.mpw20sb759ab525c.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/index.mpw20sb7be1eb6f1.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/vue_plugin.mpw20sb7e8e91cf8.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/cover_next.mpw20sb7d2f3e5fb.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/bottom.mpw20sb762b01f1d.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/CommentComplaint.mpw20sb718ba6090.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/background_color.mpw20sb71b206dea.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/sec_performance.mpw20sb74a6cae30.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/article_bottom_bar.mpw20sb72cd7de44.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/set_star.mpw20sb7ee14d7af.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/report_img.mpw20sb78b8f8779.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/cgi.mpw20sb792894a0f.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/pick_location_item.mpw20sb74acf8447.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/pre_loading.mpw20sb72383a7a7.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/channels.mpw20sb7db86d355.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/vote.mpw20sb785c86303.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/intersection-observer.mpw20sb7e16580c9.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/lottery.mpw20sb78d17149d.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/object-73371513.mpw20sb7af6c26e7.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/_commonjsHelpers-10dfc225.mpw20sb78600c1d6.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/bind_element.mpw20sb74419d3eb.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/bind_element.mpw20sb7b0c086d2.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/bind_element.mpw20sb7a0f73aa9.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/set_custom_ele.mpw20sb72790cfff.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/index.mpw20sb7d02415bc.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/get_query.mpw20sb7bde2d197.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/set_fullscreen_webview.mpw20sb79f3fd825.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/sec_perf_report.mpw20sb778bf6dcb.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link crossorigin="" href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/preview_reload.mpw20sb76fdf3ec0.js" rel="modulepreload" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/tap_highlight.mpw20sb721feed59.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/handle_change_inter_identity.mpw20sb714eec1a5.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/keyboard.mpw20sb7db34422c.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/wxwork_hidden.mpw20sb751f80bad.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/keep_read.mpw20sb79d142f2e.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/gongyi.mpw20sb78c152f31.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/reward_close_tip.mpw20sb72cdd5698.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/appmsg_comment.mpw20sb77357c658.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/article_bottom_bar.mpw20sb768aa6540.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/reward_list_dialog.mpw20sb719e14573.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/channel_product_utils.mpw20sb7199e90e4.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/product_search.mpw20sb7c441ed3f.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/added_info.mpw20sb7d5070eb5.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/index.mpw20sb7779cd8f2.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/cover_next.mpw20sb7a0d030a5.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/sec_performance.mpw20sb7ae94a0fa.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/qqmail_tpl_vite_entry.mpw20sb732083ee8.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;link href="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/tencent_portfolio_light.mpw20sb70a7cff52.css" rel="stylesheet" reportloaderror=""/&gt;
             &lt;style&gt;
              .cooldown_tips {
        margin: 30px auto;
        margin-top: 0;
        display: flex;
        align-items: center;
        padding: 10px;
        font-size: 14px;
        background-color: #f6f7f9;
        border-radius: 6px;
      }
      .cooldown_tips_icon {
        display: block;
        width: 18px;
        height: 18px;
        margin-right: 8px;
      }
             &lt;/style&gt;
            &lt;/meta&gt;
           &lt;/meta&gt;
          &lt;/meta&gt;
         &lt;/meta&gt;
        &lt;/meta&gt;
       &lt;/meta&gt;
      &lt;/meta&gt;
     &lt;/meta&gt;
    &lt;/meta&gt;
   &lt;/meta&gt;
  &lt;/meta&gt;
 &lt;/head&gt;
 &lt;body class="zh_CN wx_wap_page wx_wap_desktop_fontsize_2 mm_appmsg comment_feature discuss_tab appmsg_skin_default appmsg_style_default" id="activity-detail"&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   var biz = "Mzg3NzU0NzIxMA==" || "";
  var sn = "3630fdfb432730a9089817fd428a7b43" || "" || "";
  var mid = "2247512454" || "" || "";
  var idx = "1" || "" || "";
  window.__allowLoadResFromMp = true;
  &lt;/script&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   (() =&gt; {
    try {
      window.__canAsyncImport = window.__pageLoadReady = new Promise(res =&gt; {
        if (window.__second_open__ || document.readyState === 'complete') {
          res();
        } else {
          window.addEventListener('load', res);
          setTimeout(res, 5000);
        }
      });
    } catch(err) {
      console.error(err);
      window.__canAsyncImport = window.__pageLoadReady = Promise.resolve();
    }
  })();
  &lt;/script&gt;
  &lt;script nonce="579543733" reportloaderror=""&gt;
   var page_begintime = (+new Date());
var is_rumor = "";
var norumor = "";
var refutationType = '' * 1;
if (!!(is_rumor * 1) &amp;&amp; !(norumor*1) &amp;&amp; !!biz &amp;&amp; !!mid) {
  if (!document.referrer || document.referrer.indexOf("mp.weixin.qq.com/mp/rumor") == -1){
    if (refutationType === 1) {
      location.href = "http://mp.weixin.qq.com/mp/show_refutation?__biz=" + biz + "&amp;mid=" + mid + "&amp;idx=" + idx + "&amp;sn=" + sn + "#wechat_redirect";
    } else {
      location.href = "http://mp.weixin.qq.com/mp/rumor?action=info&amp;__biz=" + biz + "&amp;mid=" + mid + "&amp;idx=" + idx + "&amp;sn=" + sn + "#wechat_redirect";
    }
  }
}
  &lt;/script&gt;
  &lt;script h5only="" nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   (function() {
    try {
      window.cgiDataNew = {
                  base_resp: {
                           ret: '0' * 1,
                                      errmsg: 'ok',
                                      wxtoken: '777' * 1,
                                      cookie_count: '0' * 1,
                                                              sessionid: 'svr_e693be7652c',
                                                          },
                          user_name: 'gh_b2bc148c1cf8',
                          nick_name: '开源日记',
                          round_head_img: 'http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png',
                          title: '一键做有声书 ，终于找到了本地方案 。',
                          desc: '',
                          content_noencode: '\x3csection\x3e\x3cspan leaf=\x22\x22\x3e\x3cbr  /\x3e\x3c/span\x3e\x3c/section\x3e\x3csection data-tool=\x22MD编辑器\x22 data-website=\x22https://www.tooltt.com\x22 style=\x22font-size: 16px;color: black;line-height: 1.6;word-spacing: 0px;letter-spacing: 0px;word-break: break-word;word-wrap: break-word;text-align: left;margin-top: -10px;font-family: PingFangSC-Light;padding: 0px;\x22 data-pm-slice=\x220 0 []\x22\x3e\x3csection class=\x22mp_profile_iframe_wrp\x22\x3e\x3cmp-common-profile class=\x22custom_select_card mp_profile_iframe mp_common_widget\x22 data-pluginname=\x22mpprofile\x22 data-nickname=\x22开源日记\x22 data-from=\x220\x22 data-headimg=\x22http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png\x22 data-signature=\x22分享优质开源项目 , 探索AI生产力。\x22 data-id=\x22Mzg3NzU0NzIxMA==\x22 data-service_type=\x221\x22 data-verify_status=\x220\x22\x3e\x3c/mp-common-profile\x3e\x3c/section\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e\x3cbr  /\x3e\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e今天来给各位介绍一款相当实用的神器。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3eGitHub 开源不到一年，Star 直接冲到 4600。\x3c/span\x3e\x3c/p\x3e\x3cfigure data-tool=\x22mdnice编辑器\x22 style=\x22margin: 0;margin-top: 10px;margin-bottom: 10px;\x22\x3e\x3cspan leaf=\x22\x22\x3e\x3cimg class=\x22rich_pages wxw-img\x22 data-aistatus=\x221\x22 data-imgfileid=\x22100028794\x22 data-ratio=\x220.6111111111111112\x22 data-type=\x22png\x22 data-w=\x221080\x22 style=\x22max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 20px auto;width: 98%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;\x22 data-src=\x22https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLSs3cbicZle1icfurtWvW8cc5FsYc7tvmwLAicfrjC0QIQNchH2NQJwdeHN4XBe9DSiaJ8Ou06ok5gVW3MBk6Inl2b0wnmLE4k18c/640?wx_fmt=png\x26amp;from=appmsg\x22  /\x3e\x3c/span\x3e\x3c/figure\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e现在市面上的文本转语音工具能找不到不少，不过大多数也只能满足一部分需求。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e语音效果欠佳，字幕与音频不同步。这些都是时常会碰到的毛病。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e假如你还想多种文档的导入，支持本地运行。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e那能找到的工具确实不多。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e最近注意到一个名为 abogen 的项目，恰好把这些能力都打包进了一套完整的解决方案当中。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cstrong style=\x22font-weight: border;color: #0e88eb;\x22\x3e\x3cspan leaf=\x22\x22\x3e它其实就是用来把 EPUB，PDF，文本，Markdown 或者字幕文件转成高质量音频。自动生成同步字幕的工具\x3c/span\x3e\x3c/strong\x3e\x3cspan leaf=\x22\x22\x3e。\x3c/span\x3e\x3c/p\x3e\x3cfigure data-tool=\x22mdnice编辑器\x22 style=\x22margin: 0;margin-top: 10px;margin-bottom: 10px;\x22\x3e\x3cspan leaf=\x22\x22\x3e\x3cimg class=\x22rich_pages wxw-img\x22 data-ratio=\x220.7759259259259259\x22 data-type=\x22png\x22 data-w=\x221080\x22 style=\x22max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 20px auto;width: 98%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;\x22 data-imgfileid=\x22100028793\x22 data-aistatus=\x221\x22 data-src=\x22https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLzibA7Zxvjb84icaGkF9pIM4NyhZYDoHxlSNNpOic2OJjeNjAMav0qvt4zGDvsg9DHxyK0IBc5UiaJWJPftJJY0aBicumInwFA30rI/640?wx_fmt=png\x26amp;from=appmsg\x22  /\x3e\x3c/span\x3e\x3c/figure\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e它并不只是简单地把文字转成语音，要真是只有这个功能的话，那就真的没什么好推荐的了。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e它最有价值的地方在于，把整个有声书的制作流程都给打通了。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e从文档剖析，语音合成，字幕变动，再到章节管理，这一整套操作基本上都不需要手动去干预。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e处理的过程中会显示日志进度。\x3c/span\x3e\x3c/p\x3e\x3ch2 data-tool=\x22mdnice编辑器\x22 style=\x22margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;\x22\x3e\x3cspan style=\x22font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;\x22\x3e\x3cspan leaf=\x22\x22\x3e废话少说，先看东西\x3c/span\x3e\x3c/span\x3e\x3c/h2\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e打开软件，界面整体很干净。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e上面是文本文件的输入的地方，下面就是各种设置，通过点击就可以设置。\x3c/span\x3e\x3c/p\x3e\x3cfigure data-tool=\x22mdnice编辑器\x22 style=\x22margin: 0;margin-top: 10px;margin-bottom: 10px;\x22\x3e\x3cspan leaf=\x22\x22\x3e\x3cimg alt=\x22abogen 主界面\x22 class=\x22rich_pages wxw-img\x22 data-ratio=\x221.664\x22 data-type=\x22png\x22 data-w=\x22500\x22 style=\x22max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 20px auto;width: 98%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;\x22 data-imgfileid=\x22100028791\x22 data-aistatus=\x221\x22 data-src=\x22https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLg3WpgHsRtXibY8lzldk2TfyIibsoFibibic1kyHOFt2vLwlp64V1jUCeHtV8Ae7I2vG1hIbyzYLNOVpZdkrDqbZWw2UgGmCp5cOts/640?wx_fmt=png\x26amp;from=appmsg\x22  /\x3e\x3c/span\x3e\x3cfigcaption style=\x22margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;\x22\x3e\x3cspan leaf=\x22\x22\x3eabogen 主界面\x3c/span\x3e\x3c/figcaption\x3e\x3c/figure\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e用起来也简单，直接拖进去一个 EPUB 或 PDF 文件，选好语音和输出格式，点一下 Start 就开始生成了。\x3c/span\x3e\x3c/p\x3e\x3cfigure data-tool=\x22mdnice编辑器\x22 style=\x22margin: 0;margin-top: 10px;margin-bottom: 10px;\x22\x3e\x3cspan leaf=\x22\x22\x3e\x3cimg class=\x22rich_pages wxw-img\x22 data-ratio=\x221.6626746506986028\x22 data-type=\x22png\x22 data-w=\x22501\x22 style=\x22max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 20px auto;width: 98%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;\x22 data-imgfileid=\x22100028790\x22 data-aistatus=\x221\x22 data-src=\x22https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKduHQq35tj1kH0iaAEWIJIq7vnyklc1ZHWiao4YFLWyLp9eOwdhtYEtib3Nmw044Qn2vMib4d2gV2iauRVC6pHaF6dkdVhasrpPyZc/640?wx_fmt=png\x26amp;from=appmsg\x22  /\x3e\x3c/span\x3e\x3c/figure\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cstrong style=\x22font-weight: border;color: #0e88eb;\x22\x3e\x3cspan leaf=\x22\x22\x3e从网友测出来结果来看，效果不错。\x3c/span\x3e\x3c/strong\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e找资料的时候，我看到一个日本用户在 Qiita 上分享过实测成果：\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e50 页的 PDF 文件，用了大概 5 分钟生成了 21 分钟的音频。\x3c/span\x3e\x3c/p\x3e\x3cfigure data-tool=\x22mdnice编辑器\x22 style=\x22margin: 0;margin-top: 10px;margin-bottom: 10px;\x22\x3e\x3cspan leaf=\x22\x22\x3e\x3cimg alt=\x22abogen 实际运行演示\x22 class=\x22rich_pages wxw-img\x22 data-ratio=\x220.6592592592592592\x22 data-type=\x22gif\x22 data-w=\x221080\x22 style=\x22max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 20px auto;width: 98%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;\x22 data-imgfileid=\x22100028792\x22 data-aistatus=\x221\x22 data-src=\x22https://mmbiz.qpic.cn/mmbiz_gif/VDCUoW3UiblLqknRzLyyiaTukmQEA2YuSRINkzATCDBOudZia9YA5WZP3uOia3PQAoNX1BWzrtCR0OWcjrGC5UfLBX31TZ5GAPaJx8j99iaSZuxs/640?wx_fmt=gif\x26amp;from=appmsg\x22  /\x3e\x3c/span\x3e\x3cfigcaption style=\x22margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;\x22\x3e\x3cspan leaf=\x22\x22\x3eabogen 实际运行演示\x3c/span\x3e\x3c/figcaption\x3e\x3c/figure\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e还有一位用户。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e他用了一块 RTX 2060 Mobile 低端笔记本 GPU，3000 字符的文本 11 秒就处理完了，最后生成 3 分 28 秒的音频。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e从上面两位网友的实测结果来看，效果不错。\x3c/span\x3e\x3c/p\x3e\x3ch2 data-tool=\x22mdnice编辑器\x22 style=\x22margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;\x22\x3e\x3cspan style=\x22font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;\x22\x3e\x3cspan leaf=\x22\x22\x3e再看看它是怎么做到的\x3c/span\x3e\x3c/span\x3e\x3c/h2\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cstrong style=\x22font-weight: border;color: #0e88eb;\x22\x3e\x3cspan leaf=\x22\x22\x3e01 文本转高质量语音这件事做得挺扎实\x3c/span\x3e\x3c/strong\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3eabogen 用了 Kokoro-82M 这个开源 TTS 模型，它的参数规模是 82M。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e自然它支持的语言也很多。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e美式英语，英式英语，中文，法语，西班牙语，日语，葡萄牙语，意大利语，印地语这些全都覆盖到了。\x3c/span\x3e\x3c/p\x3e\x3cfigure data-tool=\x22mdnice编辑器\x22 style=\x22margin: 0;margin-top: 10px;margin-bottom: 10px;\x22\x3e\x3cspan leaf=\x22\x22\x3e\x3cimg class=\x22rich_pages wxw-img\x22 data-ratio=\x220.8916576381365113\x22 data-type=\x22png\x22 data-w=\x22923\x22 style=\x22max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 20px auto;width: 98%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;\x22 data-imgfileid=\x22100028800\x22 data-aistatus=\x221\x22 data-src=\x22https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblK3cPZsmKT9ibCX4m3lAlM0F8iafZ789bu6K2Sp8EYSKI9eu275wNzvHjgyiaVDK7MCr2IiaG6yibW6SPduicX5iaEGbkh5QSRhUw8elg/640?wx_fmt=png\x26amp;from=appmsg\x22  /\x3e\x3c/span\x3e\x3c/figure\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e每种语音模型都有男声和女声可选。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cstrong style=\x22font-weight: border;color: #0e88eb;\x22\x3e\x3cspan leaf=\x22\x22\x3e02 字幕精准同步是它和普通 TTS 工具拉开差距的地方\x3c/span\x3e\x3c/strong\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e它生成的字幕不是那种粗略的句子级时间戳，而是能够做到字级别的精确同步。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e字幕生成模式有好几种：\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e句子级，单词级，Sentence + Comma，Sentence + Highlighting 以及 Line 模式。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e输出格式支持 SRT，ASS wide，ASS narrow，ASS centered。常见字幕需求都可以满足。\x3c/span\x3e\x3c/p\x3e\x3cfigure data-tool=\x22mdnice编辑器\x22 style=\x22margin: 0;margin-top: 10px;margin-bottom: 10px;\x22\x3e\x3cspan leaf=\x22\x22\x3e\x3cimg class=\x22rich_pages wxw-img\x22 data-ratio=\x220.6970837253057385\x22 data-type=\x22png\x22 data-w=\x221063\x22 style=\x22max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 20px auto;width: 98%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;\x22 data-imgfileid=\x22100028799\x22 data-aistatus=\x221\x22 data-src=\x22https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKZ2d8icnPID1xQXibzV6bTlPr8WzPP7aHbrJPf5w7uTRadI2WhDsv9LqXzgxB3M4ic3Gaw0tgk6WzwaVL4oCNbXHvXIcDNYLzGes/640?wx_fmt=png\x26amp;from=appmsg\x22  /\x3e\x3c/span\x3e\x3c/figure\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e不过有一个问题要注意一下，单词级字幕目前只支持英语。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e非英语语言会使用句子级或音频时长计时方式。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cstrong style=\x22font-weight: border;color: #0e88eb;\x22\x3e\x3cspan leaf=\x22\x22\x3e03 多格式文档解析也做得比较完整\x3c/span\x3e\x3c/strong\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3eEPUB，PDF，TXT，Markdown，SRT，ASS，VTT 这些格式全都可以直接拖入界面。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3eEPUB 和 PDF 还会自动检测出章节，你可以选择把某些章节单独保存下来，也可以把所有章节合并成一个音频文件。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cstrong style=\x22font-weight: border;color: #0e88eb;\x22\x3e\x3cspan leaf=\x22\x22\x3e04 章节管理挺省事的。\x3c/span\x3e\x3c/strong\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e在章节之间，你还能去配置一段静默间隙，封面图片，作者，标题这些信息，都会自动嵌入到输出的文件里。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e输出的音频格式包括 WAV，FLAC，MP3，OPUS 以及 M4B，其中 M4B 格式带有章节标记，这样可以直接放到有声书播放器里面使用。\x3c/span\x3e\x3c/p\x3e\x3ch2 data-tool=\x22mdnice编辑器\x22 style=\x22margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;\x22\x3e\x3cspan style=\x22font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;\x22\x3e\x3cspan leaf=\x22\x22\x3e除了核心转换功能，abogen 还有一些好的细节\x3c/span\x3e\x3c/span\x3e\x3c/h2\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cstrong style=\x22font-weight: border;color: #0e88eb;\x22\x3e\x3cspan leaf=\x22\x22\x3e语音混合器功能挺有意思。\x3c/span\x3e\x3c/strong\x3e\x3c/p\x3e\x3cfigure data-tool=\x22mdnice编辑器\x22 style=\x22margin: 0;margin-top: 10px;margin-bottom: 10px;\x22\x3e\x3cspan leaf=\x22\x22\x3e\x3cimg alt=\x22abogen 语音混合器\x22 class=\x22rich_pages wxw-img\x22 data-ratio=\x220.51\x22 data-type=\x22png\x22 data-w=\x221000\x22 style=\x22max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 20px auto;width: 98%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;\x22 data-imgfileid=\x22100028795\x22 data-aistatus=\x221\x22 data-src=\x22https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIUx3TRrYgCVMmXiafJm5hyQW7f0B6rq9sLYeJbl9icj6EZqESDg56u2qjw9stlOvZSGyMjhGL8UtPWOWoG80Hmp8Zfvia1CVuicoo/640?wx_fmt=png\x26amp;from=appmsg\x22  /\x3e\x3c/span\x3e\x3cfigcaption style=\x22margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;\x22\x3e\x3cspan leaf=\x22\x22\x3eabogen 语音混合器\x3c/span\x3e\x3c/figcaption\x3e\x3c/figure\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e你可以把不同的语音模型按照权重混合在一起，创建出独特的自定义声音。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e例如把一个男声和一个女声按照 70:30 的比例混合。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e试听满意之后，还可以保存成 Profile，方便下次直接调用。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cstrong style=\x22font-weight: border;color: #0e88eb;\x22\x3e\x3cspan leaf=\x22\x22\x3e批量处理也做得比较完整。\x3c/span\x3e\x3c/strong\x3e\x3c/p\x3e\x3cfigure data-tool=\x22mdnice编辑器\x22 style=\x22margin: 0;margin-top: 10px;margin-bottom: 10px;\x22\x3e\x3cspan leaf=\x22\x22\x3e\x3cimg alt=\x22abogen 队列模式\x22 class=\x22rich_pages wxw-img\x22 data-ratio=\x220.720881427072403\x22 data-type=\x22png\x22 data-w=\x22953\x22 style=\x22max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 20px auto;width: 98%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;\x22 data-imgfileid=\x22100028796\x22 data-aistatus=\x221\x22 data-src=\x22https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJ8z7qyEqFmhAX2picYsSg0o8krbCb000pA0XgYo7icuHJg0DVuLqviciboeTccqcrb07zadwibFIEbTwKJyOshfErNrxEdATqIOxWo/640?wx_fmt=png\x26amp;from=appmsg\x22  /\x3e\x3c/span\x3e\x3cfigcaption style=\x22margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;\x22\x3e\x3cspan leaf=\x22\x22\x3eabogen 队列模式\x3c/span\x3e\x3c/figcaption\x3e\x3c/figure\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e队列模式允许一次性添加多个文件，每个文件都能维持各自独立的设置，但也可以用全局设置来进行统一覆盖，处理进度会实时，显示，任务可以随时取消或者删除。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e你若需要更高级的功能。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3eWeb UI 版本还提供了 Supertonic TTS 引擎，LLM 文本规范化，Audiobookshelf 和 Calibre OPDS 集成，多角色，EPUB 3 打包管道等能力。\x3c/span\x3e\x3c/p\x3e\x3cfigure data-tool=\x22mdnice编辑器\x22 style=\x22margin: 0;margin-top: 10px;margin-bottom: 10px;\x22\x3e\x3cspan leaf=\x22\x22\x3e\x3cimg class=\x22rich_pages wxw-img\x22 data-ratio=\x220.6\x22 data-type=\x22png\x22 data-w=\x221080\x22 style=\x22max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 20px auto;width: 98%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;\x22 data-imgfileid=\x22100028798\x22 data-aistatus=\x221\x22 data-src=\x22https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblL4MQWZn52xsn1aKZFSNk8S7Z9EPVxBtibuqVicDrEwDClU8FjempibK12kvnmITkIJV5QBnSySu0g4CQNQ4Xav7XcmpYcsc8TiaC0/640?wx_fmt=png\x26amp;from=appmsg\x22  /\x3e\x3c/span\x3e\x3c/figure\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e只是这些功能目前还只存在于 Web UI 当中。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e桌面 GUI 版本的功能相对稳定，但数量要少一些。\x3c/span\x3e\x3c/p\x3e\x3ch2 data-tool=\x22mdnice编辑器\x22 style=\x22margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;\x22\x3e\x3cspan style=\x22font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;\x22\x3e\x3cspan leaf=\x22\x22\x3e看完这些功能，最低门槛的上手方式其实很简单\x3c/span\x3e\x3c/span\x3e\x3c/h2\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3eWindows 用户可以直接下载仓库的 ZIP 包，解压之后运行 WINDOWS_INSTALL.bat，这个脚本会自动把所有依赖都装好，包括 CUDA 和 Python。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e也可用 pip 安装：\x3c/span\x3e\x3c/p\x3e\x3cpre data-tool=\x22mdnice编辑器\x22 style=\x22margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;\x22\x3e\x3ccode style=\x22overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;\x22\x3e\x3cspan leaf=\x22\x22\x3epip install abogen\x3c/span\x3e\x3cspan leaf=\x22\x22\x3e\x3cbr  /\x3e\x3c/span\x3e\x3cspan leaf=\x22\x22\x3eabogen \x26nbsp;\x3c/span\x3e\x3cspan style=\x22color: #5c6370;font-style: italic;line-height: 26px;\x22\x3e\x3cspan leaf=\x22\x22\x3e# 启动桌面 GUI\x3c/span\x3e\x3c/span\x3e\x3cspan leaf=\x22\x22\x3e\x3cbr  /\x3e\x3c/span\x3e\x3cspan leaf=\x22\x22\x3eabogen-web \x26nbsp;\x3c/span\x3e\x3cspan style=\x22color: #5c6370;font-style: italic;line-height: 26px;\x22\x3e\x3cspan leaf=\x22\x22\x3e# 启动 Web UI\x3c/span\x3e\x3c/span\x3e\x3cspan leaf=\x22\x22\x3e\x3cbr  /\x3e\x3c/span\x3e\x3c/code\x3e\x3c/pre\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3eDocker 部署也支持：\x3c/span\x3e\x3c/p\x3e\x3cpre data-tool=\x22mdnice编辑器\x22 style=\x22margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;\x22\x3e\x3ccode style=\x22overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;\x22\x3e\x3cspan leaf=\x22\x22\x3edocker build -t abogen .\x3c/span\x3e\x3cspan leaf=\x22\x22\x3e\x3cbr  /\x3e\x3c/span\x3e\x3cspan leaf=\x22\x22\x3edocker run --rm -p 8808:8808 -v ~/abogen-data:/data abogen\x3c/span\x3e\x3cspan leaf=\x22\x22\x3e\x3cbr  /\x3e\x3c/span\x3e\x3c/code\x3e\x3c/pre\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cstrong style=\x22font-weight: border;color: #0e88eb;\x22\x3e\x3cspan leaf=\x22\x22\x3e整个工具完全本地运行。\x3c/span\x3e\x3c/strong\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e数据不会上传到云端，HuggingFace Hub 的遥测功能默认是禁用的，Kokoro 的网络访问也可以关掉。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e在离线模式下。只要提前下载好模型和语音包，就完全可以断网使用。\x3c/span\x3e\x3c/p\x3e\x3ch2 data-tool=\x22mdnice编辑器\x22 style=\x22margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;\x22\x3e\x3cspan style=\x22font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;\x22\x3e\x3cspan leaf=\x22\x22\x3e到这里缺点也给大家提提\x3c/span\x3e\x3c/span\x3e\x3c/h2\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e社区的讨论中也提到过一些难题：\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e缩写处理（像 Mr. 和 Mrs.）偶尔会出错，长文本的情感一致性还不够稳定，省略号的停顿处理也有优化的空间。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e但说实话，假如你只是想把自己积压的技术书转成有声书，方便消化，或者给 YouTube，TikTok 视频配音，这些其实影响不大。\x3c/span\x3e\x3c/p\x3e\x3ch2 data-tool=\x22mdnice编辑器\x22 style=\x22margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;\x22\x3e\x3cspan style=\x22font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;\x22\x3e\x3cspan leaf=\x22\x22\x3e写在最后\x3c/span\x3e\x3c/span\x3e\x3c/h2\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e找配音要花钱，自己录又要花时间，字幕同步还得手动去调。abogen 把这些成本全都省掉了。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e拖一个文档进去，等上几分钟，音频和字幕就都有了。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e虽说 AI 有声书在市场上还有些争议，但用来消化技术书，做视频配音，这些场景完全够用。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e有文本转音频需求的朋友，推荐试试看。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e项目基于 MIT 协议开放，感兴趣的同学，可以去 GitHub 仓库翻看源码和文档。\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e开源地址：https://github.com/denizsafak/abogen\x3c/span\x3e\x3c/p\x3e\x3cp data-tool=\x22mdnice编辑器\x22 style=\x22padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;\x22\x3e\x3cspan leaf=\x22\x22\x3e既然都看到这儿了，欢迎随手点赞，在看，转发，也可以点个星标⭐，接收最新的文章，我们下期见！\x3c/span\x3e\x3c/p\x3e\x3csection class=\x22mp_profile_iframe_wrp\x22\x3e\x3cmp-common-profile class=\x22custom_select_card mp_profile_iframe mp_common_widget\x22 data-pluginname=\x22mpprofile\x22 data-nickname=\x22开源日记\x22 data-from=\x220\x22 data-headimg=\x22http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png\x22 data-signature=\x22分享优质开源项目 , 探索AI生产力。\x22 data-id=\x22Mzg3NzU0NzIxMA==\x22 data-service_type=\x221\x22 data-verify_status=\x220\x22\x3e\x3c/mp-common-profile\x3e\x3c/section\x3e\x3c/section\x3e\x3cp style=\x22display: none;\x22\x3e\x3cmp-style-type data-value=\x223\x22\x3e\x3c/mp-style-type\x3e\x3c/p\x3e',
                          create_time: '2026-05-30 15:18',
                          cdn_url: 'https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblJFjcx91vib3omibttTB8DdY7iabxzGU8zzwawHEwesPWWmEyIl4xicKb9FzicZF8bocib4BvdLBFblBsPx4c9LCYABzdXKOibflLZuI4/0?wx_fmt=jpeg',
                          link: 'https://mp.weixin.qq.com/s/Ot3Jei2u_-t2vDOF5qxy6A',
                          source_url: '',
                          can_share: '0' * 1,
                          alias: '',
                                  type: '9' * 1,
                          author: '开源日记',
                          is_limit_user: '0' * 1,
                                  show_cover_pic: '0' * 1,
                        advertisement_info: [
                  ],
                                  ori_create_time: '1780125513' * 1,
                          user_uin: '0',
                                  total_item_num: '1' * 1,
                                          is_async: '1' * 1,
                          comment_id: '4538794093002571784',
                                  img_format: 'jpeg',
                          svr_time: '1780398078' * 1,
                          copyright_info: {
                           copyright_stat: '1' * 1,
                                                                                                                                                                          ori_article_type: '',
                                                                                                                                                                                                                                      is_cartoon_copyright: '0' * 1,
                                  },
                          can_reward: '0' * 1,
                          signature: '分享优质开源项目 , 探索AI生产力。',
                                                                                          in_mm: '0' * 1,
                          app_id: 'wx145b5b1fb309352f',
                                                  show_comment: '0' * 1,
                          can_use_page: '0' * 1,
                                                  hd_head_img: 'http://wx.qlogo.cn/mmhead/iahdQicCC5VBTkicysbQccT1ic6swx2OJ6WhlNEPhoZF3pb2NQVDkwJbLT1iadha8M2ZSskQ93NsKYRw/0',
                          del_reason_id: '0' * 1,
                                                          srcid: '',
                          is_wxg_stuff_uin: '0' * 1,
                                          need_report_cost: '0' * 1,
                                  bizuin: 'Mzg3NzU0NzIxMA==',
                          mid: '2247512454' * 1,
                          idx: '1' * 1,
                          sn: '3630fdfb432730a9089817fd428a7b43',
                                          use_tx_video_player: '0' * 1,
                                          is_only_read: '1' * 1,
                                  req_id: '0219vZ4FdL6bEPXZiKZfpNDg',
                                  use_outer_link: '0' * 1,
                          ban_scene: '0' * 1,
                          csp_nonce_str: '579543733' * 1,
                                  msg_daily_idx: '1' * 1,
                          ori_head_img_url: 'http://wx.qlogo.cn/mmhead/iahdQicCC5VBTkicysbQccT1ic6swx2OJ6WhlNEPhoZF3pb2NQVDkwJbLT1iadha8M2ZSskQ93NsKYRw/132',
                                  filter_time: '1780125476' * 1,
                          appmsg_fe_filter: 'contenteditable',
                                                          is_login: '0' * 1,
                                                                          item_show_type: '0' * 1,
                voice_in_appmsg: [
                  ],
                  video_page_info: {
                                                                                                                                                                                                                                                 mp_video_trans_info: [
                          ],
                                                                                                                                                                                      drama_video_info: {
                                                                                                               },
                                      drama_info: {
                                                                                                                                                                                                               },
                                                                                  },
                                  malicious_title_reason_id: '0' * 1,
                                picture_page_info_list: [
                    {
                          cdn_url: 'https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLSs3cbicZle1icfurtWvW8cc5FsYc7tvmwLAicfrjC0QIQNchH2NQJwdeHN4XBe9DSiaJ8Ou06ok5gVW3MBk6Inl2b0wnmLE4k18c/640?wx_fmt=png\x26amp;amp;from=appmsg',
                                      width: '1080' * 1,
                                      height: '660' * 1,
                                                poi_info: [
                          ],
            wxa_info: [
                          ],
                                    bind_ad_info: [
                          ],
            cps_ad_info: [
                          ],
                                      show_watermark: true,
                                      bottom_right_brightness: '0.93512195' * 1,
                                      watermark_info: {
                                   cdn_url: 'http://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLtmdAQICZoGvFf4UQibzZMtynibWy1ibGNLeVj3sx2yjL1JO9zJFicwtYIkWoTIB2H4icZiaV5KXX8FosMlUkXDM77mp6jwlnKphKl8/0?wx_fmt=png',
                                                  is_uploader: true,
                              },
                        spot_product_info: [
                          ],
                                  },
                    {
                          cdn_url: 'https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLzibA7Zxvjb84icaGkF9pIM4NyhZYDoHxlSNNpOic2OJjeNjAMav0qvt4zGDvsg9DHxyK0IBc5UiaJWJPftJJY0aBicumInwFA30rI/640?wx_fmt=png\x26amp;amp;from=appmsg',
                                      width: '1080' * 1,
                                      height: '838' * 1,
                                                poi_info: [
                          ],
            wxa_info: [
                          ],
                                    bind_ad_info: [
                          ],
            cps_ad_info: [
                          ],
                                      show_watermark: true,
                                      bottom_right_brightness: '0.10038553' * 1,
                                      watermark_info: {
                                   cdn_url: 'http://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblI3I5mKHDzbJXZU6wQW3Wdoc3RasT25ibwVSQicDZQYuia32vUK2AbBqfvXUI2rM8woxyGBAakSK5Fmr0occg1BHsbicgrvC20gY44/0?wx_fmt=png',
                                                  is_uploader: true,
                              },
                        spot_product_info: [
                          ],
                                  },
                    {
                          cdn_url: 'https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLg3WpgHsRtXibY8lzldk2TfyIibsoFibibic1kyHOFt2vLwlp64V1jUCeHtV8Ae7I2vG1hIbyzYLNOVpZdkrDqbZWw2UgGmCp5cOts/640?wx_fmt=png\x26amp;amp;from=appmsg',
                                      width: '500' * 1,
                                      height: '832' * 1,
                                                poi_info: [
                          ],
            wxa_info: [
                          ],
                                    bind_ad_info: [
                          ],
            cps_ad_info: [
                          ],
                                      show_watermark: true,
                                      bottom_right_brightness: '0.2014582' * 1,
                                      watermark_info: {
                                   cdn_url: 'http://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKwMiblldWUQBd9kxkxThrWhdgT4icMWn8G8Yia3TutVRp7prXZibvwia4N7qWhx6uAicsvZupcLENUJtNUK8hGoMiaOYELiaIrvOxRfs4/0?wx_fmt=png',
                                                  is_uploader: true,
                              },
                        spot_product_info: [
                          ],
                                  },
                    {
                          cdn_url: 'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKduHQq35tj1kH0iaAEWIJIq7vnyklc1ZHWiao4YFLWyLp9eOwdhtYEtib3Nmw044Qn2vMib4d2gV2iauRVC6pHaF6dkdVhasrpPyZc/640?wx_fmt=png\x26amp;amp;from=appmsg',
                                      width: '501' * 1,
                                      height: '833' * 1,
                                                poi_info: [
                          ],
            wxa_info: [
                          ],
                                    bind_ad_info: [
                          ],
            cps_ad_info: [
                          ],
                                      show_watermark: true,
                                      bottom_right_brightness: '0.19853443' * 1,
                                      watermark_info: {
                                   cdn_url: 'http://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJj2eLibafqrQInr6hwDeyTJJboosYw2qcwBRPGoCeVJWGSviauAYh63M4q1GbJ3pnynvMjVNhdOsbiaRknl29tFDJmWNGDjiblMko/0?wx_fmt=png',
                                                  is_uploader: true,
                              },
                        spot_product_info: [
                          ],
                                  },
                    {
                          cdn_url: 'https://mmbiz.qpic.cn/mmbiz_gif/VDCUoW3UiblLqknRzLyyiaTukmQEA2YuSRINkzATCDBOudZia9YA5WZP3uOia3PQAoNX1BWzrtCR0OWcjrGC5UfLBX31TZ5GAPaJx8j99iaSZuxs/640?wx_fmt=gif\x26amp;amp;from=appmsg',
                                      width: '1080' * 1,
                                      height: '712' * 1,
                                                poi_info: [
                          ],
            wxa_info: [
                          ],
                                    bind_ad_info: [
                          ],
            cps_ad_info: [
                          ],
                                                            spot_product_info: [
                          ],
                                  },
                    {
                          cdn_url: 'https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblK3cPZsmKT9ibCX4m3lAlM0F8iafZ789bu6K2Sp8EYSKI9eu275wNzvHjgyiaVDK7MCr2IiaG6yibW6SPduicX5iaEGbkh5QSRhUw8elg/640?wx_fmt=png\x26amp;amp;from=appmsg',
                                      width: '923' * 1,
                                      height: '823' * 1,
                                                poi_info: [
                          ],
            wxa_info: [
                          ],
                                    bind_ad_info: [
                          ],
            cps_ad_info: [
                          ],
                                      show_watermark: true,
                                      bottom_right_brightness: '0.90625513' * 1,
                                      watermark_info: {
                                   cdn_url: 'http://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJ80q27H2sQI92cBoOQYsk3hicJmyOvY0Y69o8kE73IXXu32Np6DNcgmk6HHKhicz1qOTNbwQlgZ5mE1x40xqQ6XHH4JLf7rjpCo/0?wx_fmt=png',
                                                  is_uploader: true,
                              },
                        spot_product_info: [
                          ],
                                  },
                    {
                          cdn_url: 'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKZ2d8icnPID1xQXibzV6bTlPr8WzPP7aHbrJPf5w7uTRadI2WhDsv9LqXzgxB3M4ic3Gaw0tgk6WzwaVL4oCNbXHvXIcDNYLzGes/640?wx_fmt=png\x26amp;amp;from=appmsg',
                                      width: '1063' * 1,
                                      height: '741' * 1,
                                                poi_info: [
                          ],
            wxa_info: [
                          ],
                                    bind_ad_info: [
                          ],
            cps_ad_info: [
                          ],
                                      show_watermark: true,
                                      bottom_right_brightness: '0.94195288' * 1,
                                      watermark_info: {
                                   cdn_url: 'http://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKHuGyHAze4VGSiaG1jdAmpGgvaibNnciar7N9171OOTE7wW4kIFxPzQn7wiaJqiaUVbdKHN4ItZdfAASXBDVib8WEFz7BgmyK32oERM/0?wx_fmt=png',
                                                  is_uploader: true,
                              },
                        spot_product_info: [
                          ],
                                  },
                    {
                          cdn_url: 'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIUx3TRrYgCVMmXiafJm5hyQW7f0B6rq9sLYeJbl9icj6EZqESDg56u2qjw9stlOvZSGyMjhGL8UtPWOWoG80Hmp8Zfvia1CVuicoo/640?wx_fmt=png\x26amp;amp;from=appmsg',
                                      width: '1000' * 1,
                                      height: '510' * 1,
                                                poi_info: [
                          ],
            wxa_info: [
                          ],
                                    bind_ad_info: [
                          ],
            cps_ad_info: [
                          ],
                                      show_watermark: true,
                                      bottom_right_brightness: '0.18785843' * 1,
                                      watermark_info: {
                                   cdn_url: 'http://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblL6YHqHziczBaHOrasDLAibXqG6hsyZUtTbNdLDJ9CSC2yNsGLicDOk7yCWzfNc38eYcNr8WNicU6BmAXtFUqKgqx8DTHMHsXBnomI/0?wx_fmt=png',
                                                  is_uploader: true,
                              },
                        spot_product_info: [
                          ],
                                  },
                    {
                          cdn_url: 'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJ8z7qyEqFmhAX2picYsSg0o8krbCb000pA0XgYo7icuHJg0DVuLqviciboeTccqcrb07zadwibFIEbTwKJyOshfErNrxEdATqIOxWo/640?wx_fmt=png\x26amp;amp;from=appmsg',
                                      width: '953' * 1,
                                      height: '687' * 1,
                                                poi_info: [
                          ],
            wxa_info: [
                          ],
                                    bind_ad_info: [
                          ],
            cps_ad_info: [
                          ],
                                      show_watermark: true,
                                      bottom_right_brightness: '0.2014109' * 1,
                                      watermark_info: {
                                   cdn_url: 'http://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJUVJ4vU0R5E9Fg88NOs5JtgVBEN5vicf1b52prgu6gDwHNHZ7iceRWoDM9saFHZKJuS5SiaBfCH33Tgh5IhjPvYH1xqGvuEvMEibA/0?wx_fmt=png',
                                                  is_uploader: true,
                              },
                        spot_product_info: [
                          ],
                                  },
                    {
                          cdn_url: 'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblL4MQWZn52xsn1aKZFSNk8S7Z9EPVxBtibuqVicDrEwDClU8FjempibK12kvnmITkIJV5QBnSySu0g4CQNQ4Xav7XcmpYcsc8TiaC0/640?wx_fmt=png\x26amp;amp;from=appmsg',
                                      width: '1080' * 1,
                                      height: '648' * 1,
                                                poi_info: [
                          ],
            wxa_info: [
                          ],
                                    bind_ad_info: [
                          ],
            cps_ad_info: [
                          ],
                                      show_watermark: true,
                                      bottom_right_brightness: '0.13825442' * 1,
                                      watermark_info: {
                                   cdn_url: 'http://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIZkglG8hHPSNVPekwiak3Jq7BgAC7sfFY98xI25icSVfZmFXthBUNLibSAeOLbbEoTTNNXRb04XwvNAqvgiblCCh3ib2KHxC0m6pA0/0?wx_fmt=png',
                                                  is_uploader: true,
                              },
                        spot_product_info: [
                          ],
                                  },
                  ],
                                                  show_msg_voice: '0' * 1,
                                                        locationlist: [
                  ],
        hotspotinfolist: [
                  ],
                                                  isnew: '0' * 1,
                          malicious_content_type: '0' * 1,
                                          fasttmpl_version: '8284508' * 1,
                          is_top_stories: '0' * 1,
                video_ids: [
                  ],
                  isprofileblock: '0' * 1,
                          cdn_url_235_1: 'https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblJFjcx91vib3omibttTB8DdY7iabxzGU8zzwawHEwesPWWmEyIl4xicKb9FzicZF8bocib4BvdLBFblBsPx4c9LCYABzdXKOibflLZuI4/0?wx_fmt=jpeg',
                          cdn_url_1_1: 'https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblJzHjCia1RblcgTgAWOkKyrMoiaicOg8jmmfPosGmqmgDowDKchE1wvPGiagmqowhFpMmhljFC356vn00YvWKntmiczWeiaVlEc9ibOFs/0?wx_fmt=jpeg',
                          more_read_type: '0' * 1,
                          appmsg_like_type: '2' * 1,
                          ori_send_time: '1780125513' * 1,
                                  show_top_bar: '0' * 1,
                related_tag: [
                  ],
                  user_info: {
                                                                                                                                       is_paid: '0' * 1,
                                      clientversion: '',
                                    ckeys: [
                          ],
                                                                                    fasttmpl_infos: [
                            {
                                  type: '0' * 1,
                                                  version: '8284508' * 1,
                                                  lang: 'zh_CN',
                                                  fullversion: '8284508-zh_CN-html',
                                                  versiongroup: 'zh_CN-html',
                                              },
                          ],
                          isoversea: '0' * 1,
                                      search_keyword: {
                 item_list: [
                                    {
                                          keyword: 'abogen',
                                        idx_range_list: [
                                            {
                                                  begin_idx: '10' * 1,
                                                                          end_idx: '15' * 1,
                                                                          section_idx: '10' * 1,
                                                                                              },
                                          ],
                                          s1s_stat_info: '%7B%22bizuin%22%3A3877547210%2C%22msgid%22%3A2247512454%2C%22msgidx%22%3A1%2C%22docid%22%3A%227435081178421197963%22%2C%22keywordItem%22%3A%7B%22keyword%22%3A%22abogen%22%2C%22section_idx%22%3A10%2C%22begin_idx%22%3A10%2C%22end_idx%22%3A15%2C%22type%22%3A1024%2C%22lemma_id%22%3A%22%22%7D%2C%22category%22%3A%22%E7%A7%91%E6%8A%80_%E4%BF%A1%E6%81%AF%E6%8A%80%E6%9C%AF%3A0.675523%22%2C%22reqId%22%3A4786090038455782038%2C%22S1SPageType%22%3A1%2C%22strReqId%22%3A%224786090038455782038%22%2C%22orgReqId%22%3A%223932930843802348251%22%2C%22item_show_type%22%3A0%2C%22common_value_expt%22%3A0%2C%22highlight_preload%22%3A0%7D',
                                                              s1s_context_info: '%7B%22keyword%22%3A%22abogen%22%2C%22isNeedUpdateGPTInfo%22%3Afalse%2C%22S1SPageType%22%3A1%2C%22search_id%22%3A%223932930843802348251%22%2C%22doc_info%22%3A%7B%22triple%22%3A%7B%22bizuin%22%3A3877547210%2C%22msgid%22%3A2247512454%2C%22msgidx%22%3A1%7D%2C%22docid%22%3A7435081178421197824%2C%22publish_time%22%3A1780125480%7D%2C%22idx_range%22%3A%7B%22section_idx%22%3A10%2C%22begin_idx%22%3A10%2C%22end_idx%22%3A15%7D%2C%22expt_value%22%3A4294967295%2C%22source%22%3A1024%2C%22needPreRender%22%3Afalse%7D',
                                                              s1s_jsapi_name: 'openWXSearchHalfPage',
                                                              s1s_jsapi_paras: '{\x22query\x22:\x22abogen\x22,\x22scene\x22:139,\x22hiddenSearchHeader\x22:0,\x22webviewHeightRatio\x22:0.699999988,\x22kvItems\x22:[{\x22key\x22:\x22mpEndHalfPageResultTab\x22,\x22textValue\x22:\x220\x22},{\x22key\x22:\x22firstSearchRequest\x22,\x22uintValue\x22:1},{\x22key\x22:\x22MPHalfSearchAIBox\x22,\x22uintValue\x22:3}],\x22sessionKvItems\x22:[{\x22key\x22:\x22mpEndHalfPageResultTab\x22,\x22textValue\x22:\x220\x22},{\x22key\x22:\x22MPHalfSearchAIBox\x22,\x22uintValue\x22:3}],\x22parentType\x22:135,\x22isAutoShowUnitInHalfScreen\x22:1}',
                                        tags: [
                                          ],
                                      },
                                    {
                                          keyword: 'LLM',
                                        idx_range_list: [
                                            {
                                                  begin_idx: '32' * 1,
                                                                          end_idx: '34' * 1,
                                                                          section_idx: '61' * 1,
                                                                                              },
                                          ],
                                          s1s_stat_info: '%7B%22bizuin%22%3A3877547210%2C%22msgid%22%3A2247512454%2C%22msgidx%22%3A1%2C%22docid%22%3A%227435081178421197963%22%2C%22keywordItem%22%3A%7B%22keyword%22%3A%22LLM%22%2C%22section_idx%22%3A61%2C%22begin_idx%22%3A32%2C%22end_idx%22%3A34%2C%22type%22%3A4%2C%22lemma_id%22%3A%22%22%7D%2C%22category%22%3A%22%E7%A7%91%E6%8A%80_%E4%BF%A1%E6%81%AF%E6%8A%80%E6%9C%AF%3A0.675523%22%2C%22reqId%22%3A4786090038455782038%2C%22S1SPageType%22%3A1%2C%22strReqId%22%3A%224786090038455782038%22%2C%22orgReqId%22%3A%223932930843802348251%22%2C%22item_show_type%22%3A0%2C%22common_value_expt%22%3A0%2C%22highlight_preload%22%3A0%7D',
                                                              s1s_context_info: '%7B%22keyword%22%3A%22llm%22%2C%22isNeedUpdateGPTInfo%22%3Afalse%2C%22S1SPageType%22%3A1%2C%22search_id%22%3A%223932930843802348251%22%2C%22doc_info%22%3A%7B%22triple%22%3A%7B%22bizuin%22%3A3877547210%2C%22msgid%22%3A2247512454%2C%22msgidx%22%3A1%7D%2C%22docid%22%3A7435081178421197824%2C%22publish_time%22%3A1780125480%7D%2C%22idx_range%22%3A%7B%22section_idx%22%3A61%2C%22begin_idx%22%3A32%2C%22end_idx%22%3A34%7D%2C%22expt_value%22%3A4294967295%2C%22source%22%3A4%2C%22needPreRender%22%3Afalse%7D',
                                                              s1s_jsapi_name: 'openWXSearchHalfPage',
                                                              s1s_jsapi_paras: '{\x22query\x22:\x22LLM\x22,\x22scene\x22:139,\x22hiddenSearchHeader\x22:0,\x22webviewHeightRatio\x22:0.699999988,\x22kvItems\x22:[{\x22key\x22:\x22mpEndHalfPageResultTab\x22,\x22textValue\x22:\x220\x22},{\x22key\x22:\x22firstSearchRequest\x22,\x22uintValue\x22:1},{\x22key\x22:\x22MPHalfSearchAIBox\x22,\x22uintValue\x22:3}],\x22sessionKvItems\x22:[{\x22key\x22:\x22mpEndHalfPageResultTab\x22,\x22textValue\x22:\x220\x22},{\x22key\x22:\x22MPHalfSearchAIBox\x22,\x22uintValue\x22:3}],\x22parentType\x22:135,\x22isAutoShowUnitInHalfScreen\x22:1}',
                                        tags: [
                                          ],
                                      },
                                    {
                                          keyword: 'pip',
                                        idx_range_list: [
                                            {
                                                  begin_idx: '4' * 1,
                                                                          end_idx: '6' * 1,
                                                                          section_idx: '67' * 1,
                                                                                              },
                                          ],
                                          s1s_stat_info: '%7B%22bizuin%22%3A3877547210%2C%22msgid%22%3A2247512454%2C%22msgidx%22%3A1%2C%22docid%22%3A%227435081178421197963%22%2C%22keywordItem%22%3A%7B%22keyword%22%3A%22pip%22%2C%22section_idx%22%3A67%2C%22begin_idx%22%3A4%2C%22end_idx%22%3A6%2C%22type%22%3A64%2C%22baike_docid%22%3A%225502328693396915381%22%2C%22lemma_id%22%3A%22%22%7D%2C%22category%22%3A%22%E7%A7%91%E6%8A%80_%E4%BF%A1%E6%81%AF%E6%8A%80%E6%9C%AF%3A0.675523%22%2C%22reqId%22%3A4786090038455782038%2C%22S1SPageType%22%3A1%2C%22strReqId%22%3A%224786090038455782038%22%2C%22orgReqId%22%3A%223932930843802348251%22%2C%22item_show_type%22%3A0%2C%22common_value_expt%22%3A0%2C%22highlight_preload%22%3A0%7D',
                                                              s1s_context_info: '%7B%22keyword%22%3A%22pip%22%2C%22isNeedUpdateGPTInfo%22%3Afalse%2C%22S1SPageType%22%3A1%2C%22search_id%22%3A%223932930843802348251%22%2C%22doc_info%22%3A%7B%22triple%22%3A%7B%22bizuin%22%3A3877547210%2C%22msgid%22%3A2247512454%2C%22msgidx%22%3A1%7D%2C%22docid%22%3A7435081178421197824%2C%22publish_time%22%3A1780125480%7D%2C%22idx_range%22%3A%7B%22section_idx%22%3A67%2C%22begin_idx%22%3A4%2C%22end_idx%22%3A6%7D%2C%22expt_value%22%3A4294967295%2C%22source%22%3A64%2C%22needPreRender%22%3Afalse%7D',
                                                              s1s_jsapi_name: 'openWXSearchHalfPage',
                                                              s1s_jsapi_paras: '{\x22query\x22:\x22pip\x22,\x22scene\x22:139,\x22hiddenSearchHeader\x22:0,\x22webviewHeightRatio\x22:0.699999988,\x22kvItems\x22:[{\x22key\x22:\x22mpEndHalfPageResultTab\x22,\x22textValue\x22:\x220\x22},{\x22key\x22:\x22firstSearchRequest\x22,\x22uintValue\x22:1},{\x22key\x22:\x22MPHalfSearchAIBox\x22,\x22uintValue\x22:3}],\x22sessionKvItems\x22:[{\x22key\x22:\x22mpEndHalfPageResultTab\x22,\x22textValue\x22:\x220\x22},{\x22key\x22:\x22MPHalfSearchAIBox\x22,\x22uintValue\x22:3}],\x22parentType\x22:135,\x22isAutoShowUnitInHalfScreen\x22:1}',
                                        tags: [
                                          ],
                                      },
                                  ],
                                  exp_info: 'CMrZ+rgOEIaj2a8IGAEiEzc0MzUwODExNzg0MjExOTc5NjMo29WQ+Lz4pMo2',
                                                  need_baike_preload: true,
                                                  show_ad_keyword: false,
                                ad_item_list: [
                                  ],
              },
                                                                                                            transfer_config: [
                            {
                                  scope: 'mmbizwap_cgi_appmsgad',
                                cgis: [
                                    'mp/advertisement_report',
                                    'mp/getappmsgad',
                                    'mp/ad_video_report',
                                    'mp/ad_monitor',
                                    'mp/ad_report',
                                    'mp/ad_biz_info',
                                    'mp/ad_complaint',
                                    'mp/ad',
                                    'mp/ad_app_info',
                                  ],
              },
                            {
                                  scope: 'mmbizwap_cgi_appmsgext',
                                cgis: [
                                    'mp/appmsg_comment',
                                    'mp/getappmsgext',
                                    'mp/videoplayer',
                                    'mp/appmsg_video_snap',
                                    'mp/immersive_player',
                                    'mp/appmsg_weapp',
                                    'mp/appmsg_like',
                                    'mp/newappmsgvote',
                                    'mp/reward',
                                    'mp/authorreward',
                                    'mp/qqmusic',
                                    'mp/video',
                                    'mp/qna',
                                    'mp/searchwordbaike',
                                    'mp/appmsgthank',
                                    'mp/creationcenter',
                                  ],
              },
                            {
                                  scope: 'mmbizwap_cgi_misc',
                                cgis: [
                                    'mp/wapcommreport',
                                    'mp/underline',
                                    'mp/relatedarticle',
                                    'mp/homepage',
                                    'mp/waerrpage',
                                    'mp/getverifyinfo',
                                    'mp/getprofilebizrecommend',
                                    'mp/infringement',
                                    'mp/getprofiletransferpage',
                                    'mp/wacomplain',
                                    'mp/appmsgreport',
                                    'mp/getbizbanner',
                                  ],
              },
                          ],
                                                  appmsg_bar_data: {
                                                                                                                                                                                                                                                                                                                                                                                                                                               },
                                      pic_related_rec_info: {
                               },
                                                                                                                                                                                                            quote_list: [
                          ],
                                      red_flower_like_info: {
                                   is_red_flower_like: '0' * 1,
                                                                                                              },
                                                                          get_search_keyword_realtime: '0' * 1,
                                                                                                                                                                                                                                  },
                ainfos: [
                  ],
                          related_article_info: {
                           has_related_article_info: '0' * 1,
                                  },
                          has_red_packet_cover: '0' * 1,
                          is_pay_subscribe: '0' * 1,
                          pay_subscribe_info: {
                           preview_percent: '0' * 1,
                                      desc: '',
                                      fee: '0' * 1,
                                                  gifts_count: '0' * 1,
                                      wecoin_amount: '0' * 1,
                                  },
                video_in_article: [
                  ],
                          is_area_shield: '0' * 1,
                shield_areaids: [
                  ],
                  appmsg_ext_get: {
                           func_flag: '0' * 1,
                      },
                        anchor_tree: [
                  ],
                  voice_in_appmsg_list_json: '{\x22voice_in_appmsg\x22:[]}',
                                                        live_info: [
                  ],
                  lang: 'zh_CN',
                                                  cdn_url_16_9: '',
                                  biz_card: {
             list: [
                            {
                                  fakeid: 'Mzg3NzU0NzIxMA==',
                                                  nickname: '开源日记',
                                                  alias: '',
                                                  round_head_img: 'http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png',
                                                  service_type: '0' * 1,
                                                  signature: '分享优质开源项目 , 探索AI生产力。',
                                                  orignal_num: '1145' * 1,
                                                  is_biz_ban: '0' * 1,
                                                  username: 'gh_b2bc148c1cf8',
                                                  biz_account_status: '0' * 1,
                                                  verify_status: '0' * 1,
                              },
                            {
                                  fakeid: 'Mzg3NzU0NzIxMA==',
                                                  nickname: '开源日记',
                                                  alias: '',
                                                  round_head_img: 'http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png',
                                                  service_type: '0' * 1,
                                                  signature: '分享优质开源项目 , 探索AI生产力。',
                                                  orignal_num: '1145' * 1,
                                                  is_biz_ban: '0' * 1,
                                                  username: 'gh_b2bc148c1cf8',
                                                  biz_account_status: '0' * 1,
                                                  verify_status: '0' * 1,
                              },
                          ],
                          total: '2' * 1,
                      },
                                  real_item_show_type: '0' * 1,
                          url_item_show_type: '0' * 1,
                video_page_infos: [
                  ],
                  can_use_wecoin: '1' * 1,
                          wecoin_tips: '0' * 1,
                                          front_end_additional_fields: {
                           is_auto_type_setting: '3' * 1,
                                                  save_type: '0' * 1,
                                      template_version: '',
                      },
                          open_fansmsg: '0' * 1,
                          is_cooling_appmsg: '0' * 1,
                          ip_wording: {
                           country_name: '中国',
                                      country_id: '156',
                                      province_name: '湖北',
                                                          },
                          show_ip_wording: '1' * 1,
                          is_acct_area_shield: '0' * 1,
                shield_acct_areaids: [
                  ],
                                                  style_type: '3' * 1,
                shield_areas_info: [
                  ],
                                          create_timestamp: '1780125513' * 1,
                                                        picture_list_in_pictext: [
                  ],
                  servicetype: '0' * 1,
                          segment_comment_id: '4538794113353334788',
                                                          ad_mark_status: '0' * 1,
                          hide_ad_mark_on_cps: '0' * 1,
                          finder_audio_card: '{\x22list\x22:[]}',
                                  claim_source: {
                                                                                               },
                                          at_biz_list: {
             list: [
                          ],
                          total: '0' * 1,
                      },
                          extra_comment_id: '4538794112631914496',
                last_text: [
                  ],
                  wash_status: '0' * 1,
                                                  enterid: '1780398078' * 1,
                        zhuge_qa_id_list: [
                  ],
                                  sec_control_info: {
             list: [
                          ],
          },
                          cdn_url_3_4: '',
                        window_product_list: [
                  ],
                          finder_music_card: '{\x22list\x22:[]}',
                          finder_audio_card_list: {
             list: [
                          ],
          },
                          finder_music_card_list: {
             list: [
                          ],
          },
                                  new_service_type: '1' * 1,
                                  product_activity: {
                                                                                                                       },
                          rt_biz_info: {
                       },
                        redpacket_cover_list: [
                  ],
                          footer_gift_activity: {
                                                           },
                          verify_status: '0' * 1,
                          watermark_setting: '2' * 1,
                                          title_gen_type: '0' * 1,
                                  appmsg_listen_id: '150441636227863149',
                          trans_appmsg_info: {
                                   },
                          location: {
                                                                                                                                                                                                           },
                        topic_infos: [
                  ],
                        footer_common_shops: [
                  ],
                  footer_product_card: {
                                   },
                          desc_empty: true,
                                  hashtags: {
             hashtag: [
                          ],
          },
                                aigc_pictures: [
                  ],
                          private_info: {
                                   },
                                          biz_type: '1' * 1,
                          ai_chat_info: {
                           ai_chat_status: '0' * 1,
                                      room_info: '',
                                              },
                          special_biz: false,
                preload_comment_item_list: [
                  ],

      };
    } catch (e) {
      window.cgiError = e;
    }
  })();
  &lt;/script&gt;
  &lt;link href="//res.wx.qq.com" rel="dns-prefetch" reportloaderror=""/&gt;
  &lt;link href="//mmbiz.qpic.cn" rel="dns-prefetch" reportloaderror=""/&gt;
  &lt;link href="//mpcdn.qpic.cn" rel="dns-prefetch" reportloaderror=""/&gt;
  &lt;link href="//mpcdn.weixin.qq.com" rel="dns-prefetch" reportloaderror=""/&gt;
  &lt;link href="//file.daihuo.qq.com" rel="dns-prefetch" reportloaderror=""/&gt;
  &lt;link href="//wxa.wxs.qq.com" rel="dns-prefetch" reportloaderror=""/&gt;
  &lt;link href="//res.wx.qq.com/a/wx_fed/assets/res/NTI4MWU5.ico" rel="shortcut icon" reportloaderror="" type="image/x-icon"/&gt;
  &lt;link color="#4C4C4C" href="//res.wx.qq.com/a/wx_fed/assets/res/MjliNWVm.svg" rel="mask-icon" reportloaderror=""/&gt;
  &lt;link href="//res.wx.qq.com/a/wx_fed/assets/res/OTE0YTAw.png" rel="apple-touch-icon-precomposed" reportloaderror=""/&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   String.prototype.html = function (encode) {
  var replace = ["&amp;#39;", "'", "&amp;quot;", '"', "&amp;nbsp;", " ", "&amp;gt;", "&gt;", "&amp;lt;", "&lt;", "&amp;yen;", "¥", "&amp;amp;", "&amp;"];
 
 
 
 
 
  
  var replaceReverse = ["&amp;", "&amp;amp;", "¥", "&amp;yen;", "&lt;", "&amp;lt;", "&gt;", "&amp;gt;", " ", "&amp;nbsp;", '"', "&amp;quot;", "'", "&amp;#39;"];
  var target;
  if (encode) {
    target = replaceReverse;
  } else {
    target = replace;
  }
  for (var i = 0, str = this; i &lt; target.length; i += 2) {
    str = str.replace(new RegExp(target[i], 'g'), target[i + 1]);
  }
  return str;
};

window.isInWeixinApp = function () {
  return /MicroMessenger/.test(navigator.userAgent);
};

window.getQueryFromURL = function (url) {
  url = url || 'http://qq.com/s?a=b#rd';
  var tmp = url.split('?'),
    query = (tmp[1] || "").split('#')[0].split('&amp;'),
    params = {};
  for (var i = 0; i &lt; query.length; i++) {
    var arg = query[i].split('=');
    params[arg[0]] = arg[1];
  }
  if (params['pass_ticket']) {
    params['pass_ticket'] = encodeURIComponent(params['pass_ticket'].html(false).html(false).replace(/\s/g, "+"));
  }
  return params;
};


(function () {
  var params = getQueryFromURL(location.href);
  window.uin = params['uin'] || "" || '';
  window.key = params['key'] || "" || '';
  window.wxtoken = params['wxtoken'] || '';
  window.pass_ticket = params['pass_ticket'] || '';
  window.appmsg_token = "" || "";

  var ua = navigator.userAgent;
  var isWin = ua.match(/Windows(\s+\w+)?\s+?(\d+\.\d+)/);
  if (
    ua.match(/Mac\sOS\sX\s(\d+[\.|_]\d+)/)
    || isWin
    || ua.match(/Linux\s/)
    || ua.match(/UnifiedPC/)
    || (ua.match(/OpenHarmony/i) &amp;&amp; ua.match(/pc/i))
  ) {
    document.body.classList.add('pages_skin_pc');
    if (isWin) {
      document.body.classList.add('pages_skin_windows');
    }
  }
  if (/MPAPP\/([\d\.]+)/i.test(ua)) {
    document.body.classList.add('pages_skin_mpapp');
  }
  if (params['uninteractive']) {
    document.body.classList.add('pages_skin_browser_underline');
  }
})();
  &lt;/script&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   window.__ajaxTransferConfig = {  'mp/advertisement_report': 'mmbizwap_cgi_appmsgad',  'mp/getappmsgad': 'mmbizwap_cgi_appmsgad',  'mp/ad_video_report': 'mmbizwap_cgi_appmsgad',  'mp/ad_monitor': 'mmbizwap_cgi_appmsgad',  'mp/ad_report': 'mmbizwap_cgi_appmsgad',  'mp/ad_biz_info': 'mmbizwap_cgi_appmsgad',  'mp/ad_complaint': 'mmbizwap_cgi_appmsgad',  'mp/ad': 'mmbizwap_cgi_appmsgad',  'mp/ad_app_info': 'mmbizwap_cgi_appmsgad',  'mp/appmsg_comment': 'mmbizwap_cgi_appmsgext',  'mp/getappmsgext': 'mmbizwap_cgi_appmsgext',  'mp/videoplayer': 'mmbizwap_cgi_appmsgext',  'mp/appmsg_video_snap': 'mmbizwap_cgi_appmsgext',  'mp/immersive_player': 'mmbizwap_cgi_appmsgext',  'mp/appmsg_weapp': 'mmbizwap_cgi_appmsgext',  'mp/appmsg_like': 'mmbizwap_cgi_appmsgext',  'mp/newappmsgvote': 'mmbizwap_cgi_appmsgext',  'mp/reward': 'mmbizwap_cgi_appmsgext',  'mp/authorreward': 'mmbizwap_cgi_appmsgext',  'mp/qqmusic': 'mmbizwap_cgi_appmsgext',  'mp/video': 'mmbizwap_cgi_appmsgext',  'mp/qna': 'mmbizwap_cgi_appmsgext',  'mp/searchwordbaike': 'mmbizwap_cgi_appmsgext',  'mp/appmsgthank': 'mmbizwap_cgi_appmsgext',  'mp/creationcenter': 'mmbizwap_cgi_appmsgext',  'mp/wapcommreport': 'mmbizwap_cgi_misc',  'mp/underline': 'mmbizwap_cgi_misc',  'mp/relatedarticle': 'mmbizwap_cgi_misc',  'mp/homepage': 'mmbizwap_cgi_misc',  'mp/waerrpage': 'mmbizwap_cgi_misc',  'mp/getverifyinfo': 'mmbizwap_cgi_misc',  'mp/getprofilebizrecommend': 'mmbizwap_cgi_misc',  'mp/infringement': 'mmbizwap_cgi_misc',  'mp/getprofiletransferpage': 'mmbizwap_cgi_misc',  'mp/wacomplain': 'mmbizwap_cgi_misc',  'mp/appmsgreport': 'mmbizwap_cgi_misc',  'mp/getbizbanner': 'mmbizwap_cgi_misc'};
  &lt;/script&gt;
  &lt;div class="fullscreen-layout-padding" id="js_fullscreen_layout_padding"&gt;
   &lt;div class="fullscreen-layout-padding__content"&gt;
   &lt;/div&gt;
  &lt;/div&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   var __INLINE_SCRIPT__ = (function (exports) {
  'use strict';

  function _typeof(obj) {
    "@babel/helpers - typeof";

    return _typeof = "function" == typeof Symbol &amp;&amp; "symbol" == typeof Symbol.iterator ? function (obj) {
      return typeof obj;
    } : function (obj) {
      return obj &amp;&amp; "function" == typeof Symbol &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj;
    }, _typeof(obj);
  }

  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
    try {
      var info = gen[key](arg);
      var value = info.value;
    } catch (error) {
      reject(error);
      return;
    }
    if (info.done) {
      resolve(value);
    } else {
      Promise.resolve(value).then(_next, _throw);
    }
  }
  function _asyncToGenerator(fn) {
    return function () {
      var self = this,
        args = arguments;
      return new Promise(function (resolve, reject) {
        var gen = fn.apply(self, args);
        function _next(value) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
        }
        function _throw(err) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
        }
        _next(undefined);
      });
    };
  }

  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" &amp;&amp; o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike &amp;&amp; o &amp;&amp; typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i &gt;= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion &amp;&amp; it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
  function _arrayLikeToArray(arr, len) { if (len == null || len &gt; arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i]; return arr2; }
  
  
  var ua = navigator.userAgent;
  var is_ios = /(iPhone|iPad|iPod|iOS)/i.test(ua);
  var is_wp = /Windows\sPhone/i.test(ua);
  var is_android = /(Android)/i.test(ua);
  var is_wechat = /MicroMessenger\/([\d\.]+)/i.test(ua);
  var is_mac = /mac\sos/i.test(ua) &amp;&amp; !is_ios;
  var is_windows = /windows\snt/i.test(ua) &amp;&amp; !is_wp;
  var is_mpapp = /MPAPP\/([\d\.]+)/i.test(ua);
  var is_ipad = /iPad/i.test(ua);
  var is_windows_wechat = /WindowsWechat/i.test(ua);
  var is_mac_wechat = /MacWechat/i.test(ua) || /wechat.*mac os/i.test(ua);
  var is_prefetch = is_wechat &amp;&amp; window.WeixinPrefecherJSBridge;
  var is_donut_app = /SAAASDK/i.test(ua);
  var is_harmony = /OpenHarmony|ArkWeb/i.test(ua);
  var is_linux = /Linux\s/i.test(ua);
  var xweb_match = ua.match(/XWEB\/([\d.]+)/i);
  var xweb_version = xweb_match &amp;&amp; xweb_match[1] ? parseInt(xweb_match[1], 10) : 0;
  var is_unified_pc_wechat = /UnifiedPC\w+Wechat/i.test(ua);
  var is_in_miniProgram = is_android &amp;&amp; /miniprogram/.test(ua.toLowerCase()) || window.__wxjs_environment == 'miniprogram';
  var is_wx_work = /wxwork/i.test(ua);
  function getUrlParams() {
    var vars = location.search.substring(1).split('&amp;');
    var params = {};
    var _iterator = _createForOfIteratorHelper(vars),
      _step;
    try {
      for (_iterator.s(); !(_step = _iterator.n()).done;) {
        var ele = _step.value;
        var pair = ele.split('=');
        var key = decodeURIComponent(pair[0]);
        if (typeof params[key] === 'undefined') {
          params[key] = decodeURIComponent(pair[1]);
        }
      }
    } catch (err) {
      _iterator.e(err);
    } finally {
      _iterator.f();
    }
    return params;
  }
  function get() {
    var reg = /MicroMessenger\/([\d\.]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMac() {
    var reg = /MacWechat\/([\d\.]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMacOS() {
    var reg = /Mac OS X ([\d_]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1].replace(/_/g, '.');
    }
    return false;
  }
  function getWindows() {
    var reg = /WindowsWechat\(0x(.+?)\)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getWxWork() {
    var reg = /wxwork\/([\d\.]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMpApp() {
    var appVersion = [2, 4, 5];
    var match = navigator.userAgent.match(/MPAPP\/(\d+(\.\d+)*)/);
    if (match) {
      appVersion = match[1].split('.').map(function (v) {
        return Number(v);
      });
    }
    return appVersion.join('.');
  }
  function getUnifiedPcVer() {
    var versionInfo = navigator.userAgent.match(/UnifiedPC\w+Wechat\(0xf\w{2}(\w+?)\w{2}\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(0, 1));
      var subVersion = getVersionNumber(version.slice(1, 2));
      var subVersion2 = getVersionNumber(version.slice(2, 3));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
  }
  function getVersionNumber(hexStr) {
    return Number(Number("0x".concat(hexStr)).toString(10));
  }
  function getWindowsVersionFormat() {
    var versionInfo = navigator.userAgent.match(/WindowsWechat\(0x(\w+?)\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(1, 2));
      var subVersion = getVersionNumber(version.slice(2, 4));
      var subVersion2 = getVersionNumber(version.slice(4, 6));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
    return false;
  }
  function getInner() {
    var reg = /MicroMessenger\/[\d\.]+\(0x(.+?)\)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1] &amp;&amp; ret[1] != null) {
      return ret[1];
    }
    if (!ret &amp;&amp; /MicroMessenger\/[\d\.]+/i.test(ua)) {
      var urlParams = getUrlParams();
      if (urlParams.version) {
        return urlParams.version;
      }
    }
    return false;
  }
  var opfunc = {
    'cp-1': function cp1(a, b) {
      return a &lt; b;
    },
    cp0: function cp0(a, b) {
      return a === b;
    },
    cp1: function cp1(a, b) {
      return a &gt; b;
    }
  };
  function cpVersion(ver, op, canEq, type) {
    var mmver = false;
    switch (type) {
      case 'mac':
        mmver = getMac();
        break;
      case 'windows':
        mmver = getWindowsVersionFormat();
        break;
      case 'wxwork':
        mmver = getWxWork();
        break;
      case 'mpapp':
        mmver = getMpApp();
        break;
      case 'unifiedpc':
        mmver = getUnifiedPcVer();
        break;
      default:
        mmver = get();
        break;
    }
    if (!mmver) {
      return;
    }
    var mmversion = mmver.split('.');
    var version = ver.split('.');
    if (!/\d+/g.test(mmversion[mmversion.length - 1])) {
      mmversion.pop();
    }
    for (var i = 0, len = Math.max(mmversion.length, version.length); i &lt; len; ++i) {
      var mmv = mmversion[i] || '';
      var v = version[i] || '';
      var mmvn = parseInt(mmv, 10) || 0;
      var vn = parseInt(v, 10) || 0;
      var eq = opfunc.cp0(mmvn, vn);
      if (eq) {
        continue;
      }
      var cp = opfunc["cp".concat(op)];
      return cp(mmvn, vn);
    }
    return canEq || op === 0;
  }
  function eqVersion(version) {
    return cpVersion(version, 0);
  }
  function gtVersion(version, canEq) {
    return cpVersion(version, 1, canEq);
  }
  function ltVersion(version, canEq) {
    return cpVersion(version, -1, canEq);
  }
  function getPlatform() {
    if (is_ios) {
      return 'ios';
    }
    if (is_android) {
      return 'android';
    }
    if (is_mac) {
      return 'mac_os';
    }
    if (is_windows) {
      return 'windows';
    }
    return 'unknown';
  }
  var is_google_play = false;
  var inner_ver_for_google_play_check = getInner();
  if (is_android &amp;&amp; inner_ver_for_google_play_check) {
    var v = "0x".concat(inner_ver_for_google_play_check.substr(-2));
    if (parseInt(v) &gt;= 64 &amp;&amp; parseInt(v) &lt;= 79) {
      is_google_play = true;
    }
  }
  function compareHexVersion(hexNum) {
    var innerVersion = getInner();
    if (innerVersion &amp;&amp; hexNum) {
      if (typeof hexNum === 'string') {
        hexNum = parseInt(hexNum, 16);
      }
      var version = parseInt(innerVersion, 16);
      return version &gt;= hexNum;
    }
    return false;
  }
  var mmversion = {
    get: get,
    getMac: getMac,
    getMacOS: getMacOS,
    getWindows: getWindows,
    getInner: getInner,
    getWxWork: getWxWork,
    getMpApp: getMpApp,
    cpVersion: cpVersion,
    eqVersion: eqVersion,
    gtVersion: gtVersion,
    ltVersion: ltVersion,
    getPlatform: getPlatform,
    getVersionNumber: getVersionNumber,
    isWp: is_wp,
    isIOS: is_ios,
    isAndroid: is_android,
    isHarmony: is_harmony,
    isHarmonyWechat: is_harmony &amp;&amp; is_wechat &amp;&amp; cpVersion('1.0.0', 1, true),
    isInMiniProgram: is_in_miniProgram,
    isWechat: is_wechat,
    isMac: is_mac,
    isWindows: is_windows,
    isLinux: is_linux,
    isMacWechat: is_mac_wechat,
    isWindowsWechat: is_windows_wechat,
    isWxWork: is_wx_work,
    isOnlyWechat: is_wechat &amp;&amp; !is_wx_work,
    isMpapp: is_mpapp,
    isNewMpApp: false,
    isIPad: is_ipad,
    isGooglePlay: is_google_play,
    isPrefetch: is_prefetch,
    isDonutAPP: is_donut_app,
    compareHexVersion: compareHexVersion,
    isPcWechat: is_windows_wechat || is_mac_wechat,
    xwebVersion: xweb_version,
    isUnifiedPcWechat: is_unified_pc_wechat
  };

  var initJsBridge = false;
  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }
  function connectWebViewJavascriptBridge(callback) {
    if (window.WebViewMPapp || window.WebViewJavascriptBridge) {
      return callback(window.WebViewMPapp || window.WebViewJavascriptBridge);
    }
    if (window.WVJBCallbacks) {
      return window.WVJBCallbacks.push(callback);
    }
    window.WVJBCallbacks = [callback];
    if (!mmversion.isMpapp) {
      return false;
    }
    if (!initJsBridge) {
      initJsBridge = true;
      var WVJBIframe = document.createElement('iframe');
      WVJBIframe.style.display = 'none';
      WVJBIframe.src = 'https://__bridge_loaded__';
      document.body.appendChild(WVJBIframe);
      setTimeout(function () {
        initJsBridge = false;
        document.body.removeChild(WVJBIframe);
      }, 0);
    }
    return false;
  }
  function invoke$1(jsapiName, opt, callback) {
    connectWebViewJavascriptBridge(function (bridge) {
      try {
        if (typeof opt === 'function') {
          callback = opt;
        }
        if (_typeof(opt) !== 'object' &amp;&amp; typeof opt !== 'string') {
          opt = {};
        }
        bridge.callHandler(jsapiName, opt, function (res) {
          try {
            var ret = _typeof(res) === 'object' ? res : JSON.parse(res);
            var errMsg = ret.err_msg || ret.errMsg;
            console.info("[mpapp jsapi] invoke-&gt;".concat(jsapiName, " ").concat(opt.action || '', " ").concat(errMsg));
            typeof callback === 'function' &amp;&amp; callback(ret);
          } catch (e) {
            window.WX_BJ_REPORT.BadJs.report('invoke', "callback ".concat(jsapiName, " error:"), {
              mid: 'mmbizwebapp:js_brridge',
              _info: e
            });
            console.error("[mpapp jsapi] ".concat(jsapiName, " ").concat(opt.action || ''), e, res);
          }
        });
      } catch (e) {
        window.WX_BJ_REPORT.BadJs.report('invoke', 'callback error:', {
          mid: 'mmbizwebapp:js_brridge',
          _info: e
        });
        console.error('[mpapp jsapi]', e);
      }
    });
  }

  function _regeneratorRuntime() {  _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  var doc = {};
  var isAcrossOrigin = false;
  var notFoundedMPPageAction = [];
  var __moon_report = window.__moon_report || function () {};
  var MOON_JSAPI_KEY_OFFSET = 8;
  try {
    doc = top.window.document;
  } catch (e) {
    isAcrossOrigin = true;
  }
  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }
  function ready(onBridgeReady) {
    var bridgeReady = function bridgeReady() {
      try {
        if (onBridgeReady) {
          window.onBridgeReadyTime = window.onBridgeReadyTime || Date.now();
          onBridgeReady();
        }
      } catch (e) {
        __moon_report([{
          offset: MOON_JSAPI_KEY_OFFSET,
          log: 'ready',
          e: e
        }]);
        throw e;
      }
      window.jsapiReadyTime = Date.now();
    };
    if (!isAcrossOrigin &amp;&amp; (typeof top.window.WeixinJSBridge === 'undefined' || !top.window.WeixinJSBridge.invoke)) {
      if (doc.addEventListener) {
        doc.addEventListener('WeixinJSBridgeReady', bridgeReady, false);
      } else if (doc.attachEvent) {
        doc.attachEvent('WeixinJSBridgeReady', bridgeReady);
        doc.attachEvent('onWeixinJSBridgeReady', bridgeReady);
      }
    } else {
      bridgeReady();
    }
  }
  var invokeNotWaitA8key = ['notifyPageInfo', 'updatePageAuth'
  ];
  var checkNotFoundedInvoke = function checkNotFoundedInvoke(methodName, args) {
    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; notFoundedMPPageAction.includes(args === null || args === void 0 ? void 0 : args.action)) {
      return true;
    }
    return false;
  };
  function invoke(_x, _x2, _x3) {
    return _invoke.apply(this, arguments);
  }
  function _invoke() {
    _invoke = _asyncToGenerator( _regeneratorRuntime().mark(function _callee(methodName, args, callback) {
      return _regeneratorRuntime().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__ &amp;&amp; !invokeNotWaitA8key.includes(methodName))) {
              _context.next = 3;
              break;
            }
            _context.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                alert('请在微信中打开此链接');
                return false;
              }
              if (checkNotFoundedInvoke(methodName, args)) {
                setTimeout(function () {
                  if (callback) {
                    callback.apply(window, [{
                      err_msg: "".concat(methodName, ":fail"),
                      err_desc: 'action isn\'t supported'
                    }]);
                  }
                }, 0);
              } else {
                top.window.WeixinJSBridge.invoke(methodName, args, function () {
                  try {
                    for (var _len2 = arguments.length, rets = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
                      rets[_key2] = arguments[_key2];
                    }
                    var ret = rets[0];
                    var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
                    if (['handleMPPageAction', 'handleVideoAction', 'handleHaokanAction'].indexOf(methodName) !== -1) {
                      var action = (args === null || args === void 0 ? void 0 : args.action) || '';
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName, ", action-&gt;").concat(action).concat(errMsg));
                    } else {
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName).concat(errMsg));
                    }
                    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; ((ret === null || ret === void 0 ? void 0 : ret.err_desc) === 'action isn\'t supported' || (ret === null || ret === void 0 ? void 0 : ret.err_msg) === 'handleMPPageAction:fail action is not supported')) {
                      notFoundedMPPageAction.push(args === null || args === void 0 ? void 0 : args.action);
                    }
                    if (callback) {
                      callback.apply(window, rets);
                    }
                  } catch (e) {
                    __moon_report([{
                      offset: MOON_JSAPI_KEY_OFFSET,
                      log: "invoke;methodName:".concat(methodName),
                      e: e
                    }]);
                    throw e;
                  }
                });
              }
            });
          case 4:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return _invoke.apply(this, arguments);
  }
  function call(_x4) {
    return _call.apply(this, arguments);
  }
  function _call() {
    _call = _asyncToGenerator( _regeneratorRuntime().mark(function _callee2(methodName) {
      return _regeneratorRuntime().wrap(function _callee2$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__)) {
              _context2.next = 3;
              break;
            }
            _context2.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                return false;
              }
              try {
                top.window.WeixinJSBridge.call(methodName);
              } catch (e) {
                __moon_report([{
                  offset: MOON_JSAPI_KEY_OFFSET,
                  log: "call;methodName:".concat(methodName),
                  e: e
                }]);
                throw e;
              }
            });
          case 4:
          case "end":
            return _context2.stop();
        }
      }, _callee2);
    }));
    return _call.apply(this, arguments);
  }
  function on(eventName, callback) {
    ready(function () {
      if (isAcrossOrigin) return false;
      if (_typeof(top.window.WeixinJSBridge) !== 'object' || !top.window.WeixinJSBridge.on) {
        return false;
      }
      if (!window.JSAPIEventCallbackMap[eventName]) {
        window.JSAPIEventCallbackMap[eventName] = [];
      }
      window.JSAPIEventCallbackMap[eventName].push(callback);
      if (window.JSAPIEventCallbackMap[eventName].length &gt; 1) {
        return false;
      }
      top.window.WeixinJSBridge.on(eventName, function () {
        try {
          for (var _len = arguments.length, rets = new Array(_len), _key = 0; _key &lt; _len; _key++) {
            rets[_key] = arguments[_key];
          }
          var ret = rets[0];
          var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
          console.info('[system]', "[jsapi] event-&gt;".concat(eventName).concat(errMsg));
          if (window.JSAPIEventCallbackMap[eventName] &amp;&amp; window.JSAPIEventCallbackMap[eventName].length) {
            var result;
            for (var i = 0; i &lt; window.JSAPIEventCallbackMap[eventName].length; i++) {
              result = window.JSAPIEventCallbackMap[eventName][i].apply(window, rets);
            }
            return result;
          }
        } catch (e) {
          __moon_report([{
            offset: MOON_JSAPI_KEY_OFFSET,
            log: "on;eventName:".concat(eventName),
            e: e
          }]);
          throw e;
        }
      });
    });
  }
  function remove(eventName, callback) {
    ready(function () {
      if (!window.JSAPIEventCallbackMap[eventName]) {
        return false;
      }
      var result = false;
      for (var i = window.JSAPIEventCallbackMap[eventName].length - 1; i &gt;= 0; i--) {
        if (window.JSAPIEventCallbackMap[eventName][i] === callback) {
          window.JSAPIEventCallbackMap[eventName].splice(i, 1);
          result = true;
        }
      }
      return result;
    });
  }
  var JSAPI = {
    ready: ready,
    invoke: invoke,
    call: call,
    on: on,
    remove: remove
  };

  
  function _log(level, msg) {
    if (level === 'log') {
      level = 'info';
      msg = "[WechatFe]".concat(msg);
    } else {
      var prefix = "__wap__".concat(window.__second_open__ ? ' (sec)' : '');
      msg = "".concat(prefix, " ").concat(msg, " location:[").concat(location.href, "]");
    }
    msg += new Error().stack;
    if (mmversion.isMpapp) {
      invoke$1('WNNativeCallbackLog', msg);
    } else if (mmversion.isWechat) {
      if (mmversion.isAndroid) {
        console.warn('[system]', "[MicroMsg.JsApiLog][".concat(level, "] jslog : ").concat(msg));
      } else if (mmversion.isIOS) {
        JSAPI.invoke('writeLog', {
          level: level,
          msg: msg
        });
      } else {
        JSAPI.invoke('log', {
          level: level,
          msg: msg
        });
      }
    }
  }
  var Log = {
    info: function info() {
      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key &lt; _len; _key++) {
        args[_key] = arguments[_key];
      }
      _log('info', args.join(' '));
    },
    warn: function warn() {
      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
        args[_key2] = arguments[_key2];
      }
      _log('warn', args.join(' '));
    },
    error: function error() {
      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 &lt; _len3; _key3++) {
        args[_key3] = arguments[_key3];
      }
      _log('error', args.join(' '));
    },
    debug: function debug() {
      for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 &lt; _len4; _key4++) {
        args[_key4] = arguments[_key4];
      }
      _log('debug', args.join(' '));
    },
    log: function log() {
      for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 &lt; _len5; _key5++) {
        args[_key5] = arguments[_key5];
      }
      _log('info', args.join(' '));
    }
  };
  var getOriginExpVal = function getOriginExpVal(key) {
    var _a, _b, _c;
    return ((_c = (_b = (_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.user_info) === null || _b === void 0 ? void 0 : _b.frontend_exp) === null || _c === void 0 ? void 0 : _c.list) &amp;&amp; window.cgiDataNew.user_info.frontend_exp.list.reduce(function (res, item) {
      if (item.key === key) res = (item === null || item === void 0 ? void 0 : item.value) || '';
      return res;
    }, '');
  };

  
  
  var Device = {};
  function detect(ua) {
    var MQQBrowser = ua.match(/MQQBrowser\/(\d+\.\d+)/i);
    var MQQClient = ua.match(/QQ\/(\d+\.(\d+)\.(\d+)\.(\d+))/i) || ua.match(/V1_AND_SQ_([\d\.]+)/);
    var WeChat = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/) || ua.match(/MicroMessenger\/((\d+)\.(\d+))/);
    var MacOS = ua.match(/Mac\sOS\sX\s(\d+[\.|_]\d+)/);
    var WinOS = ua.match(/Windows(\s+\w+)?\s+?(\d+\.\d+)/);
    var Linux = ua.match(/Linux\s/);
    var MiuiBrowser = ua.match(/MiuiBrowser\/(\d+\.\d+)/i);
    var M1 = ua.match(/MI-ONE/);
    var MIPAD = ua.match(/MI PAD/);
    var UC = ua.match(/UCBrowser\/(\d+\.\d+(\.\d+\.\d+)?)/) || ua.match(/\sUC\s/);
    var IEMobile = ua.match(/IEMobile(\/|\s+)(\d+\.\d+)/) || ua.match(/WPDesktop/);
    var ipod = ua.match(/(ipod).*\s([\d_]+)/i);
    var ipad = ua.match(/(ipad).*\s([\d_]+)/i);
    var iphone = ua.match(/(iphone)\sos\s([\d_]+)/i);
    var Chrome = ua.match(/Chrome\/(\d+\.\d+)/);
    var AndriodBrowser = ua.match(/Mozilla.*Linux.*Android.*AppleWebKit.*Mobile Safari/);
    var android = ua.match(/(android)\s([\d\.]+)/i);
    var harmony = ua.match(/(OpenHarmony)\s([\d\.]+)/i);
    Device.browser = Device.browser || {}, Device.os = Device.os || {};
    Device.os.type = -1;
    Device.os.unifiedPC = ua.match(/UnifiedPC/);
    Device.os.unifiedMac = /UnifiedPCMac/i.test(ua);
    Device.os.unifiedWindows = /UnifiedPCWindows/i.test(ua);
    if (window.ActiveXObject) {
      var vie = 6;
      (window.XMLHttpRequest || ua.indexOf('MSIE 7.0') &gt; -1) &amp;&amp; (vie = 7);
      (window.XDomainRequest || ua.indexOf('Trident/4.0') &gt; -1) &amp;&amp; (vie = 8);
      ua.indexOf('Trident/5.0') &gt; -1 &amp;&amp; (vie = 9);
      ua.indexOf('Trident/6.0') &gt; -1 &amp;&amp; (vie = 10);
      Device.browser.ie = true, Device.browser.version = vie;
    } else if (ua.indexOf('Trident/7.0') &gt; -1) {
      Device.browser.ie = true, Device.browser.version = 11;
    }
    if (android) {
      Device.os.android = true;
      Device.os.version = android[2];
      Device.os.type = 2;
    }
    if (harmony) {
      Device.os.harmony = true;
      Device.os.version = harmony[2];
      Device.os.type = 42;
    }
    if (ipod) {
      Device.os.ios = Device.os.ipod = true;
      Device.os.version = ipod[2].replace(/_/g, '.');
    }
    if (ipad) {
      Device.os.ios = Device.os.ipad = true;
      Device.os.version = ipad[2].replace(/_/g, '.');
      Device.os.type = 13;
    }
    if (iphone) {
      Device.os.iphone = Device.os.ios = true;
      Device.os.version = iphone[2].replace(/_/g, '.');
      Device.os.type = 1;
    }
    if (WinOS) Device.os.windows = true, Device.os.version = WinOS[2], Device.os.type = 15;
    if (MacOS) Device.os.Mac = true, Device.os.version = MacOS[1], Device.os.type = 14;
    if (Linux) Device.os.Linux = true, Device.os.type = 33;
    if (ua.indexOf('lepad_hls') &gt; 0) Device.os.LePad = true;
    if (MIPAD) Device.os.MIPAD = true;
    if (MQQBrowser) Device.browser.MQQ = true, Device.browser.version = MQQBrowser[1];
    if (MQQClient) Device.browser.MQQClient = true, Device.browser.version = MQQClient[1];
    if (WeChat) Device.browser.WeChat = true, Device.browser.mmversion = Device.browser.version = WeChat[1];
    if (MiuiBrowser) Device.browser.MIUI = true, Device.browser.version = MiuiBrowser[1];
    if (UC) Device.browser.UC = true, Device.browser.version = UC[1] || NaN;
    if (IEMobile) Device.browser.IEMobile = true, Device.browser.version = IEMobile[2];
    if (AndriodBrowser) {
      Device.browser.AndriodBrowser = true;
    }
    if (M1) {
      Device.browser.M1 = true;
    }
    if (Chrome) {
      Device.browser.Chrome = true, Device.browser.version = Chrome[1];
    }
    if (Device.os.windows) {
      if (typeof navigator.platform !== "undefined" &amp;&amp; navigator.platform.toLowerCase() == "win64") {
        Device.os.win64 = true;
      } else {
        Device.os.win64 = false;
      }
    }
    if (Device.os.Mac || Device.os.windows || Device.os.Linux || Device.os.unifiedPC || /OpenHarmony/i.test(ua) &amp;&amp; /pc/i.test(ua)) {
      Device.os.pc = true;
    }
    var osType = {
      iPad7: 'iPad; CPU OS 7',
      LePad: 'lepad_hls',
      XiaoMi: 'MI-ONE',
      SonyDTV: "SonyDTV",
      SamSung: 'SAMSUNG',
      HTC: 'HTC',
      VIVO: 'vivo'
    };
    for (var os in osType) {
      Device.os[os] = ua.indexOf(osType[os]) !== -1;
    }
    Device.os.phone = Device.os.phone || /windows phone/i.test(ua);
    Device.os.getNumVersion = function () {
      return parseFloat(Device.os.version);
    };
    Device.os.hasTouch = 'ontouchstart' in window;
    if (Device.os.hasTouch &amp;&amp; Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 6) {
      Device.os.hasTouch = false;
    }
    if (Device.browser.WeChat &amp;&amp; Device.browser.version &lt; 5.0) {
      Device.os.hasTouch = false;
    }
    Device.browser.getNumVersion = function () {
      return parseFloat(Device.browser.version);
    };
    Device.browser.isFFCanOcx = function () {
      return !!Device.browser.firefox &amp;&amp; Device.browser.getNumVersion() &gt;= 3.0;
    };
    Device.browser.isCanOcx = function () {
      return !!Device.os.windows &amp;&amp; (!!Device.browser.ie || Device.browser.isFFCanOcx() || !!Device.browser.webkit);
    };
    Device.browser.isNotIESupport = function () {
      return !!Device.os.windows &amp;&amp; (!!Device.browser.webkit || Device.browser.isFFCanOcx());
    };
    Device.userAgent = {};
    Device.userAgent.browserVersion = Device.browser.version;
    Device.userAgent.osVersion = Device.os.version;
    if (Device.os.unifiedPC) {
      if (Device.os.unifiedWindows) Device.os.type = 37;else if (Device.os.unifiedMac) Device.os.type = 38;else Device.os.type = 39;
    }
    delete Device.userAgent.version;
  }
  detect(window.navigator.userAgent);
  function canSupportH5Video() {
    var ua = window.navigator.userAgent,
      m = null;
    if (!!Device.os.android) {
      if (Device.browser.MQQ &amp;&amp; Device.browser.getNumVersion() &gt;= 4.2) {
        return true;
      }
      if (ua.indexOf('MI2') != -1) {
        return true;
      }
      if (Device.os.version &gt;= '4' &amp;&amp; (m = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/))) {
        if (parseFloat(m[1]) &gt;= 4.2) {
          return true;
        }
      }
      if (Device.os.version &gt;= '4.1') {
        return true;
      }
    }
    return false;
  }
  function canSupportVideoMp4() {
    var video = document.createElement('video');
    if (typeof video.canPlayType === 'function') {
      if (video.canPlayType('video/mp4; codecs="mp4v.20.8"') === 'probably') {
        return true;
      }
      if (video.canPlayType('video/mp4; codecs="avc1.42E01E"') === 'probably' || video.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"') === 'probably') {
        return true;
      }
    }
    return false;
  }
  function canSupportAutoPlay() {
    if (Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 10) {
      return false;
    }
    return true;
  }
  function isLockdownMode() {
    if (!Device.os.ios || Device.os.getNumVersion() &lt; 16) {
      return false;
    }
    if (typeof WebAssembly === 'undefined' &amp;&amp; typeof OfflineAudioContext === 'undefined' &amp;&amp; typeof WebGLRenderingContext === 'undefined') {
      return true;
    }
    return false;
  }
  Device.canSupportVideo = canSupportVideoMp4 || canSupportH5Video;
  Device.canSupportVideoMp4 = canSupportVideoMp4;
  Device.canSupportH5Video = canSupportH5Video;
  Device.canSupportAutoPlay = canSupportAutoPlay;
  Device.isLockdownMode = isLockdownMode;
  
  Device.cpVersion = function (version) {
    var cp = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 0;
    var canEqual = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    var nowVersionStr = Device.os.version;
    if (!nowVersionStr) return false;
    var versionArr = version.split('.');
    var nowVersionArr = nowVersionStr.split('.');
    for (var i = 0; i &lt; Math.max(nowVersionArr.length, versionArr.length); i++) {
      var vi = +versionArr[i];
      var nvi = +nowVersionArr[i];
      if (vi === nvi) continue;
      if (cp &gt; 0) return vi &gt; nvi;
      if (cp &lt; 0) return vi &lt; nvi;
    }
    return canEqual || cp === 0;
  };

  var attrs = ['top', 'left', 'right', 'bottom'];
  var elementComputedStyle = {};
  if (Device.os.android) {
    new Promise(function (resolve) {
      JSAPI.invoke('handleDeviceInfo', {
        action: 'getSafeAreaInsets'
      }, function (res) {
        if (res.err_msg.indexOf(':ok') !== -1) {
          elementComputedStyle.top = res.top;
          elementComputedStyle.left = res.left;
          elementComputedStyle.right = window.screen.width - res.right;
          elementComputedStyle.bottom = window.screen.height - res.bottom;
        } else {
          attrs.forEach(function (attr) {
            elementComputedStyle[attr] = 0;
          });
        }
        resolve();
      });
    });
  }

  function decode(str) {
    var replace = ["&amp;#96;", "`", "&amp;#39;", "'", "&amp;quot;", '"', "&amp;nbsp;", " ", "&amp;gt;", "&gt;", "&amp;lt;", "&lt;", "&amp;yen;", "¥", "&amp;amp;", "&amp;"];
    for (var i = 0; i &lt; replace.length; i += 2) {
      str = str.replace(new RegExp(replace[i], 'g'), replace[i + 1]);
    }
    return str;
  }
  function getQuery(url) {
    url = url || 'http://qq.com/s?a=b#rd';
    var tmp = url.split('?'),
      query = (tmp[1] || '').split('#')[0].split('&amp;'),
      params = {};
    for (var i = 0; i &lt; query.length; i++) {
      var eqIndex = query[i].indexOf('=');
      if (eqIndex &gt; -1) {
        var arg = query[i].substring(0, eqIndex);
        params[arg] = query[i].substring(eqIndex + 1);
      }
    }
    if (params['pass_ticket']) {
      params['pass_ticket'] = encodeURIComponent(decode(params['pass_ticket']).replace(/\s/g, '+'));
    }
    return params;
  }

  var idkey = 398384;
  var reportMap = {
    0: 7,
    5: 13,
    7: 19,
    8: 25,
    10: 31
  };
  function inWhiteList(itemShowType) {
    if ([5, 7, 8, 10].indexOf(itemShowType) &gt; -1) return true;
    if (itemShowType === 0) {
      return mmversion.isIOS &amp;&amp; mmversion.compareHexVersion('1800352B') || mmversion.isAndroid;
    }
    return false;
  }
  function getImmersiveMode(itemShowType) {
    if (!inWhiteList(itemShowType)) return;
    if (window !== top) {
      return;
    }
    var env = window.__wxWebEnv &amp;&amp; typeof window.__wxWebEnv.getEnv === 'function' &amp;&amp; window.__wxWebEnv.getEnv();
    if (env &amp;&amp; typeof env === 'string') {
      try {
        env = JSON.parse(env);
      } catch (err) {
        env = {};
      }
    } else {
      env = {};
    }
    console.log('[env] getImmersiveMode', env, itemShowType);
    try {
      Log.info("[immersiveMode] ".concat(JSON.stringify(env || {})));
    } catch (e) {
    }
    var needChange = window.immersiveMode !== !!env.immersiveMode;
    window.immersiveMode = !!env.immersiveMode;
    if (needChange) {
      if (env.immersiveMode) {
        window.weixinPostMessageHandlers &amp;&amp; window.weixinPostMessageHandlers.monitorHandler &amp;&amp; typeof window.weixinPostMessageHandlers.monitorHandler.postMessage === 'function' &amp;&amp; window.weixinPostMessageHandlers.monitorHandler.postMessage(JSON.stringify({
          event: 'stopImmersiveLoading'
        }));
        window.normalTopInset = env &amp;&amp; typeof env.normalTopInset !== 'undefined' ? +env.normalTopInset : 91;
        document.body.classList.add('fullscreen-padding');
        document.body.style = "".concat(document.body.style, ";--normal-top-insets: ").concat(window.normalTopInset || 91, "px;");
        var pictureFullscreenUI = getOriginExpVal('picture_fullscreen_ui') * 1;
        if (itemShowType * 1 === 8 &amp;&amp; mmversion.isIOS &amp;&amp; mmversion.compareHexVersion('1800412f') &amp;&amp; pictureFullscreenUI * 1 === 1) {
          window.newFullscreenTop = true;
          document.body.classList.add('new-fullscreen-top');
          var fullScreenTopPadding = document.createElement('DIV');
          fullScreenTopPadding.setAttribute('class', 'new-fullscreen-top-padding');
          document.body.insertBefore(fullScreenTopPadding, document.body.children[0]);
        }
        report(itemShowType);
      } else {
        window.normalTopInset = 0;
        document.body.classList.remove('fullscreen-padding', 'new-fullscreen-top');
      }
    }
    if (window.immersiveMode) {
      JSAPI.invoke('setNavigationBarColor', {
        wxcolor: {
          light: '#FFFFFF',
          dark: '#191919'
        },
        alpha: 0
      });
      if (mmversion.isAndroid) {
        JSAPI.invoke('disableBounceScroll', {
          'place': ['top', 'bottom']
        });
      }
    }
    return env;
  }
  var showScrollBorder = false;
  var doubleClickTemp = false;
  function registerImmersiveListener(itemShowType) {
    if (!inWhiteList(itemShowType)) return;
    if (!window.__hasRegisterImmersiveListener) {
      window.__hasRegisterImmersiveListener = true;
      JSAPI.on('activity:state_change', function () {
        return getImmersiveMode();
      });
      JSAPI.on('fakeImmersiveUIStyleTopInsetChanged', function (args) {
        console.log('[env] fakeImmersiveUIStyleTopInsetChanged', args);
        try {
          Log.info("[immersiveMode] fakeImmersiveUIStyleTopInsetChanged ".concat(JSON.stringify(args || {})));
        } catch (e) {
        }
        if (document.body.classList.contains('fullscreen-padding')) {
          window.normalTopInset = args &amp;&amp; typeof args.top !== 'undefined' ? +args.top : window.normalTopInset;
          document.body.style.setProperty('--normal-top-insets', "".concat(window.normalTopInset, "px"));
        }
      });
      window.addEventListener('scroll', function () {
        if (!window.immersiveMode) return;
        var dom = document.getElementById('js_content_container');
        var scrollTop = dom &amp;&amp; dom.scrollTop || window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
        if (showScrollBorder &amp;&amp; scrollTop &lt;= 2) {
          showScrollBorder = false;
          document.body.classList.remove('fullscreen-padding__border');
        } else if (!showScrollBorder &amp;&amp; scrollTop &gt; 2) {
          showScrollBorder = true;
          document.body.classList.add('fullscreen-padding__border');
        }
      });

      if (mmversion.isAndroid &amp;&amp; mmversion.compareHexVersion('28003859')) {
        JSAPI.on('onActionBarClickEventInImmersiveMode', function (res) {
          console.log('onActionBarClickEventInImmersiveMode', res);
          var x = res.x,
            y = res.y,
            action = res.action;
          if (!document.elementsFromPoint) return;
          var nodeAtPoint = document.elementFromPoint(+x, +y);
          if (action === 'click') {
            typeof nodeAtPoint.click === 'function' &amp;&amp; nodeAtPoint.click();
          } else if (action === 'longpress_start') {
            var touchStartEvent = new TouchEvent('touchstart', {
              bubbles: true,
              cancelable: true,
              touches: [new Touch({
                identifier: 1,
                target: nodeAtPoint,
                clientX: +x,
                clientY: +y
              })]
            });
            nodeAtPoint.dispatchEvent(touchStartEvent);
          } else if (action === 'longpress_end') {
            var touchEndEvent = new TouchEvent('touchend', {
              bubbles: true,
              cancelable: true,
              touches: []
            });
            nodeAtPoint.dispatchEvent(touchEndEvent);
          }
        });
      }
      document.body.addEventListener('click', function (e) {
        if (!window.immersiveMode) return;
        if (e.clientY &lt;= window.normalTopInset) {
          if (doubleClickTemp) {
            window.scrollTo({
              top: 0,
              behavior: 'smooth'
            });
            doubleClickTemp = false;
          } else {
            doubleClickTemp = true;
            setTimeout(function () {
              doubleClickTemp = false;
            }, 300);
          }
        }
      });
    }
  }
  function setFullscreenWebview(itemShowType) {
    if (!inWhiteList(itemShowType)) return;
    if (window !== top) {
      return;
    }
    getImmersiveMode(itemShowType);
    registerImmersiveListener(itemShowType);
  }
  function report(itemShowType) {
    new Image().src = "https://mp.weixin.qq.com/mp/jsmonitor?idkey=".concat(idkey, "_1_1");
    if (mmversion.isAndroid) {
      new Image().src = "https://mp.weixin.qq.com/mp/jsmonitor?idkey=".concat(idkey, "_2_1");
    } else if (mmversion.isIOS) {
      new Image().src = "https://mp.weixin.qq.com/mp/jsmonitor?idkey=".concat(idkey, "_3_1");
    }
    var key = reportMap[itemShowType];
    if (key) {
      new Image().src = "https://mp.weixin.qq.com/mp/jsmonitor?idkey=".concat(idkey, "_").concat(key, "_1");
      if (mmversion.isAndroid) {
        new Image().src = "https://mp.weixin.qq.com/mp/jsmonitor?idkey=".concat(idkey, "_").concat(key + 1, "_1");
      } else if (mmversion.isIOS) {
        new Image().src = "https://mp.weixin.qq.com/mp/jsmonitor?idkey=".concat(idkey, "_").concat(key + 2, "_1");
      }
    }
  }
  function setPreviewPublishNavHidden(itemShowType, urlParams) {
    if (itemShowType * 1 !== 8) return;
    var supportPreviewPublish = mmversion.isIOS &amp;&amp; mmversion.compareHexVersion('18004722');
    if (!supportPreviewPublish) return;
    var params = urlParams || getQuery(window.location.href);
    var previewtype = params.previewtype;
    var mpbizpublishFrom = params.mpbizpublish_from;
    if (previewtype * 1 === 2 &amp;&amp; mpbizpublishFrom === 'preview_publish') {
      JSAPI.invoke('setNavigationBarButtons', {
        right: {
          hidden: true
        }
      });
    }
  }
  if (!window.__second_open__) {
    var itemShowType = window.a_value_which_never_exists || '0';
    setFullscreenWebview(+itemShowType);
    setPreviewPublishNavHidden(+itemShowType);
  }

  exports.getImmersiveMode = getImmersiveMode;
  exports.registerImmersiveListener = registerImmersiveListener;
  exports.setFullscreenWebview = setFullscreenWebview;
  exports.setPreviewPublishNavHidden = setPreviewPublishNavHidden;

  Object.defineProperty(exports, '__esModule', { value: true });

  return exports;

})({});
  &lt;/script&gt;
  &lt;script nonce="579543733" reportloaderror=""&gt;
   try {
    window.env = window.__wxWebEnv &amp;&amp; typeof window.__wxWebEnv.getEnv === 'function' &amp;&amp; window.__wxWebEnv.getEnv();
    window.env = window.env ? JSON.parse(window.env) : {};
  } catch (error) {
    window.env = undefined;
    console.log('env error',error)
  }
  &lt;/script&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   window.PAGE_MID="mmbizwap:appmsg/newindex.html"
  &lt;/script&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   var write_sceen_time = (+new Date());
  var preview = "" * 1 || 0;
  var can_use_wecoin = '1' * 1;
  var wecoin_tips = '0' * 1;
  
  var wecoin_amount = '0' * 1;
  var preview_percent = '0' * 1;
 
  if (location.href.indexOf('rumor_middle_page=1') !== -1) {
    document.body.classList.add('rumor_middle_page');
  }

 
  var interaction_url = '';
  var underline_url= '';
  &lt;/script&gt;
  &lt;div class="rich_media" id="js_article" style="position:relative;"&gt;
   &lt;div class="top_banner" id="js_top_ad_area"&gt;
   &lt;/div&gt;
   &lt;div class="rich_media_inner" id="js_base_container"&gt;
    &lt;div class="wx_row_immersive_stream_wrap" id="js_row_immersive_stream_wrap"&gt;
     &lt;div id="js_row_immersive_cover_img"&gt;
      &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblJFjcx91vib3omibttTB8DdY7iabxzGU8zzwawHEwesPWWmEyIl4xicKb9FzicZF8bocib4BvdLBFblBsPx4c9LCYABzdXKOibflLZuI4/0?wx_fmt=jpeg"/&gt;
     &lt;/div&gt;
     &lt;div class="wx_row_immersive_stream_mask" id="js_row_immersive_stream_mask"&gt;
     &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="rich_media_area_primary" id="page-content" style=""&gt;
     &lt;div class="rich_media_area_primary_inner"&gt;
      &lt;div class="rich_media_wrp" id="img-content"&gt;
       &lt;h1 class="rich_media_title" id="activity-name"&gt;
        &lt;span&gt;
         一键做有声书 ，终于找到了本地方案 。
        &lt;/span&gt;
       &lt;/h1&gt;
       &lt;div class="rich_media_meta_list" id="meta_content"&gt;
        &lt;span&gt;
         原创
        &lt;/span&gt;
        &lt;span&gt;
         &lt;span style="display: none;"&gt;
          开源日记
         &lt;/span&gt;
         &lt;span&gt;
          开源日记
         &lt;/span&gt;
        &lt;/span&gt;
        &lt;span&gt;
         &lt;a class="wx_tap_link js_wx_tap_highlight weui-wa-hotarea" href="javascript:void(0);" id="js_name"&gt;
          开源日记
         &lt;/a&gt;
         &lt;div id="js_profile_card"&gt;
         &lt;/div&gt;
        &lt;/span&gt;
        &lt;span&gt;
         &lt;em class="rich_media_meta rich_media_meta_text" id="publish_time"&gt;
         &lt;/em&gt;
         &lt;em class="rich_media_meta rich_media_meta_text" id="js_ip_wording_wrp" style="display: none;"&gt;
          &lt;span&gt;
          &lt;/span&gt;
          &lt;span&gt;
          &lt;/span&gt;
         &lt;/em&gt;
         &lt;em aria-labelledby="js_a11y_op_title_modify js_title_modify" class="rich_media_meta rich_media_meta_text" id="js_title_modify_wrp" role="option" style="display: none;"&gt;
          &lt;span&gt;
          &lt;/span&gt;
         &lt;/em&gt;
         &lt;span style="display: none;"&gt;
         &lt;/span&gt;
        &lt;/span&gt;
       &lt;/div&gt;
       &lt;div class="novel-card js_wx_tap_highlight wx_tap_card" id="js_novel_card" style="display: none;"&gt;
        &lt;div class="novel-card__left novel-card__new-only"&gt;
         &lt;div class="novel-card__cover" id="js_novel_cover"&gt;
          &lt;img/&gt;
         &lt;/div&gt;
         &lt;div class="novel-card__text"&gt;
          &lt;div class="novel-card__main" id="js_novel_title"&gt;
           在小说阅读器读本章
          &lt;/div&gt;
          &lt;div class="novel-card__subtitle" id="js_novel_subtitle"&gt;
          &lt;/div&gt;
         &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class="novel-card__link novel-card__new-only" id="js_novel_link"&gt;
         去阅读
        &lt;/div&gt;
        &lt;div class="novel-info novel-card__old-only"&gt;
         &lt;div class="novel-cover-group"&gt;
          &lt;div class="novel-cover" id="js_novel_cover_old"&gt;
           &lt;img/&gt;
          &lt;/div&gt;
          &lt;div class="novel-meta"&gt;
           &lt;div class="novel-title" id="js_novel_title_old"&gt;
           &lt;/div&gt;
           &lt;div class="novel-description"&gt;
            在小说阅读器中沉浸阅读
           &lt;/div&gt;
          &lt;/div&gt;
         &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class="arrow-jump-icon novel-card__old-only"&gt;
        &lt;/div&gt;
       &lt;/div&gt;
       &lt;div class="rich_media_content js_underline_content autoTypeSetting24psection" id="js_content" style="visibility: hidden; opacity: 0; "&gt;
        &lt;section powered-by="werss"&gt;
         &lt;span&gt;
          &lt;br/&gt;
         &lt;/span&gt;
        &lt;/section&gt;
        &lt;section powered-by="werss" style="font-size: 16px;color: black;line-height: 1.6;word-spacing: 0px;letter-spacing: 0px;word-break: break-word;word-wrap: break-word;text-align: left;margin-top: -10px;font-family: PingFangSC-Light;padding: 0px;"&gt;
         &lt;section powered-by="werss"&gt;
          &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png" data-id="Mzg3NzU0NzIxMA==" data-nickname="开源日记" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
          &lt;/mp-common-profile&gt;
         &lt;/section&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           &lt;br/&gt;
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           今天来给各位介绍一款相当实用的神器。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           GitHub 开源不到一年，Star 直接冲到 4600。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
          &lt;span&gt;
           &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLSs3cbicZle1icfurtWvW8cc5FsYc7tvmwLAicfrjC0QIQNchH2NQJwdeHN4XBe9DSiaJ8Ou06ok5gVW3MBk6Inl2b0wnmLE4k18c/640?wx_fmt=png&amp;amp;from=appmsg" style="max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 20px auto;width: 98%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;"/&gt;
          &lt;/span&gt;
         &lt;/figure&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           现在市面上的文本转语音工具能找不到不少，不过大多数也只能满足一部分需求。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           语音效果欠佳，字幕与音频不同步。这些都是时常会碰到的毛病。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           假如你还想多种文档的导入，支持本地运行。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           那能找到的工具确实不多。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           最近注意到一个名为 abogen 的项目，恰好把这些能力都打包进了一套完整的解决方案当中。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
           &lt;span&gt;
            它其实就是用来把 EPUB，PDF，文本，Markdown 或者字幕文件转成高质量音频。自动生成同步字幕的工具
           &lt;/span&gt;
          &lt;/strong&gt;
          &lt;span&gt;
           。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
          &lt;span&gt;
           &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLzibA7Zxvjb84icaGkF9pIM4NyhZYDoHxlSNNpOic2OJjeNjAMav0qvt4zGDvsg9DHxyK0IBc5UiaJWJPftJJY0aBicumInwFA30rI/640?wx_fmt=png&amp;amp;from=appmsg" style="max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 20px auto;width: 98%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;"/&gt;
          &lt;/span&gt;
         &lt;/figure&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           它并不只是简单地把文字转成语音，要真是只有这个功能的话，那就真的没什么好推荐的了。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           它最有价值的地方在于，把整个有声书的制作流程都给打通了。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           从文档剖析，语音合成，字幕变动，再到章节管理，这一整套操作基本上都不需要手动去干预。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           处理的过程中会显示日志进度。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
          &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
           &lt;span&gt;
            废话少说，先看东西
           &lt;/span&gt;
          &lt;/span&gt;
         &lt;/h2&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           打开软件，界面整体很干净。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           上面是文本文件的输入的地方，下面就是各种设置，通过点击就可以设置。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
          &lt;span&gt;
           &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLg3WpgHsRtXibY8lzldk2TfyIibsoFibibic1kyHOFt2vLwlp64V1jUCeHtV8Ae7I2vG1hIbyzYLNOVpZdkrDqbZWw2UgGmCp5cOts/640?wx_fmt=png&amp;amp;from=appmsg" style="max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 20px auto;width: 98%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;"/&gt;
          &lt;/span&gt;
          &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
           &lt;span&gt;
            abogen 主界面
           &lt;/span&gt;
          &lt;/figcaption&gt;
         &lt;/figure&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           用起来也简单，直接拖进去一个 EPUB 或 PDF 文件，选好语音和输出格式，点一下 Start 就开始生成了。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
          &lt;span&gt;
           &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKduHQq35tj1kH0iaAEWIJIq7vnyklc1ZHWiao4YFLWyLp9eOwdhtYEtib3Nmw044Qn2vMib4d2gV2iauRVC6pHaF6dkdVhasrpPyZc/640?wx_fmt=png&amp;amp;from=appmsg" style="max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 20px auto;width: 98%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;"/&gt;
          &lt;/span&gt;
         &lt;/figure&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
           &lt;span&gt;
            从网友测出来结果来看，效果不错。
           &lt;/span&gt;
          &lt;/strong&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           找资料的时候，我看到一个日本用户在 Qiita 上分享过实测成果：
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           50 页的 PDF 文件，用了大概 5 分钟生成了 21 分钟的音频。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
          &lt;span&gt;
           &lt;img src="https://mmbiz.qpic.cn/mmbiz_gif/VDCUoW3UiblLqknRzLyyiaTukmQEA2YuSRINkzATCDBOudZia9YA5WZP3uOia3PQAoNX1BWzrtCR0OWcjrGC5UfLBX31TZ5GAPaJx8j99iaSZuxs/640?wx_fmt=gif&amp;amp;from=appmsg" style="max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 20px auto;width: 98%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;"/&gt;
          &lt;/span&gt;
          &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
           &lt;span&gt;
            abogen 实际运行演示
           &lt;/span&gt;
          &lt;/figcaption&gt;
         &lt;/figure&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           还有一位用户。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           他用了一块 RTX 2060 Mobile 低端笔记本 GPU，3000 字符的文本 11 秒就处理完了，最后生成 3 分 28 秒的音频。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           从上面两位网友的实测结果来看，效果不错。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
          &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
           &lt;span&gt;
            再看看它是怎么做到的
           &lt;/span&gt;
          &lt;/span&gt;
         &lt;/h2&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
           &lt;span&gt;
            01 文本转高质量语音这件事做得挺扎实
           &lt;/span&gt;
          &lt;/strong&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           abogen 用了 Kokoro-82M 这个开源 TTS 模型，它的参数规模是 82M。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           自然它支持的语言也很多。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           美式英语，英式英语，中文，法语，西班牙语，日语，葡萄牙语，意大利语，印地语这些全都覆盖到了。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
          &lt;span&gt;
           &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblK3cPZsmKT9ibCX4m3lAlM0F8iafZ789bu6K2Sp8EYSKI9eu275wNzvHjgyiaVDK7MCr2IiaG6yibW6SPduicX5iaEGbkh5QSRhUw8elg/640?wx_fmt=png&amp;amp;from=appmsg" style="max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 20px auto;width: 98%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;"/&gt;
          &lt;/span&gt;
         &lt;/figure&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           每种语音模型都有男声和女声可选。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
           &lt;span&gt;
            02 字幕精准同步是它和普通 TTS 工具拉开差距的地方
           &lt;/span&gt;
          &lt;/strong&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           它生成的字幕不是那种粗略的句子级时间戳，而是能够做到字级别的精确同步。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           字幕生成模式有好几种：
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           句子级，单词级，Sentence + Comma，Sentence + Highlighting 以及 Line 模式。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           输出格式支持 SRT，ASS wide，ASS narrow，ASS centered。常见字幕需求都可以满足。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
          &lt;span&gt;
           &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKZ2d8icnPID1xQXibzV6bTlPr8WzPP7aHbrJPf5w7uTRadI2WhDsv9LqXzgxB3M4ic3Gaw0tgk6WzwaVL4oCNbXHvXIcDNYLzGes/640?wx_fmt=png&amp;amp;from=appmsg" style="max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 20px auto;width: 98%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;"/&gt;
          &lt;/span&gt;
         &lt;/figure&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           不过有一个问题要注意一下，单词级字幕目前只支持英语。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           非英语语言会使用句子级或音频时长计时方式。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
           &lt;span&gt;
            03 多格式文档解析也做得比较完整
           &lt;/span&gt;
          &lt;/strong&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           EPUB，PDF，TXT，Markdown，SRT，ASS，VTT 这些格式全都可以直接拖入界面。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           EPUB 和 PDF 还会自动检测出章节，你可以选择把某些章节单独保存下来，也可以把所有章节合并成一个音频文件。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
           &lt;span&gt;
            04 章节管理挺省事的。
           &lt;/span&gt;
          &lt;/strong&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           在章节之间，你还能去配置一段静默间隙，封面图片，作者，标题这些信息，都会自动嵌入到输出的文件里。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           输出的音频格式包括 WAV，FLAC，MP3，OPUS 以及 M4B，其中 M4B 格式带有章节标记，这样可以直接放到有声书播放器里面使用。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
          &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
           &lt;span&gt;
            除了核心转换功能，abogen 还有一些好的细节
           &lt;/span&gt;
          &lt;/span&gt;
         &lt;/h2&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
           &lt;span&gt;
            语音混合器功能挺有意思。
           &lt;/span&gt;
          &lt;/strong&gt;
         &lt;/p&gt;
         &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
          &lt;span&gt;
           &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIUx3TRrYgCVMmXiafJm5hyQW7f0B6rq9sLYeJbl9icj6EZqESDg56u2qjw9stlOvZSGyMjhGL8UtPWOWoG80Hmp8Zfvia1CVuicoo/640?wx_fmt=png&amp;amp;from=appmsg" style="max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 20px auto;width: 98%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;"/&gt;
          &lt;/span&gt;
          &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
           &lt;span&gt;
            abogen 语音混合器
           &lt;/span&gt;
          &lt;/figcaption&gt;
         &lt;/figure&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           你可以把不同的语音模型按照权重混合在一起，创建出独特的自定义声音。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           例如把一个男声和一个女声按照 70:30 的比例混合。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           试听满意之后，还可以保存成 Profile，方便下次直接调用。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
           &lt;span&gt;
            批量处理也做得比较完整。
           &lt;/span&gt;
          &lt;/strong&gt;
         &lt;/p&gt;
         &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
          &lt;span&gt;
           &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJ8z7qyEqFmhAX2picYsSg0o8krbCb000pA0XgYo7icuHJg0DVuLqviciboeTccqcrb07zadwibFIEbTwKJyOshfErNrxEdATqIOxWo/640?wx_fmt=png&amp;amp;from=appmsg" style="max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 20px auto;width: 98%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;"/&gt;
          &lt;/span&gt;
          &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
           &lt;span&gt;
            abogen 队列模式
           &lt;/span&gt;
          &lt;/figcaption&gt;
         &lt;/figure&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           队列模式允许一次性添加多个文件，每个文件都能维持各自独立的设置，但也可以用全局设置来进行统一覆盖，处理进度会实时，显示，任务可以随时取消或者删除。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           你若需要更高级的功能。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           Web UI 版本还提供了 Supertonic TTS 引擎，LLM 文本规范化，Audiobookshelf 和 Calibre OPDS 集成，多角色，EPUB 3 打包管道等能力。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
          &lt;span&gt;
           &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblL4MQWZn52xsn1aKZFSNk8S7Z9EPVxBtibuqVicDrEwDClU8FjempibK12kvnmITkIJV5QBnSySu0g4CQNQ4Xav7XcmpYcsc8TiaC0/640?wx_fmt=png&amp;amp;from=appmsg" style="max-width: 100%;border-radius: 0px 0px 5px 5px;display: block;margin: 20px auto;width: 98%;object-fit: contain;box-shadow: rgb(132, 161, 168) 0px 10px 15px;height: auto !important;"/&gt;
          &lt;/span&gt;
         &lt;/figure&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           只是这些功能目前还只存在于 Web UI 当中。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           桌面 GUI 版本的功能相对稳定，但数量要少一些。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
          &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
           &lt;span&gt;
            看完这些功能，最低门槛的上手方式其实很简单
           &lt;/span&gt;
          &lt;/span&gt;
         &lt;/h2&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           Windows 用户可以直接下载仓库的 ZIP 包，解压之后运行 WINDOWS_INSTALL.bat，这个脚本会自动把所有依赖都装好，包括 CUDA 和 Python。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           也可用 pip 安装：
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;pip install abogen&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;abogen  &lt;/span&gt;&lt;span style="color: #5c6370;font-style: italic;line-height: 26px;"&gt;&lt;span&gt;# 启动桌面 GUI&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;abogen-web  &lt;/span&gt;&lt;span style="color: #5c6370;font-style: italic;line-height: 26px;"&gt;&lt;span&gt;# 启动 Web UI&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           Docker 部署也支持：
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;docker build -t abogen .&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;docker run --rm -p 8808:8808 -v ~/abogen-data:/data abogen&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
           &lt;span&gt;
            整个工具完全本地运行。
           &lt;/span&gt;
          &lt;/strong&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           数据不会上传到云端，HuggingFace Hub 的遥测功能默认是禁用的，Kokoro 的网络访问也可以关掉。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           在离线模式下。只要提前下载好模型和语音包，就完全可以断网使用。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
          &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
           &lt;span&gt;
            到这里缺点也给大家提提
           &lt;/span&gt;
          &lt;/span&gt;
         &lt;/h2&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           社区的讨论中也提到过一些难题：
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           缩写处理（像 Mr. 和 Mrs.）偶尔会出错，长文本的情感一致性还不够稳定，省略号的停顿处理也有优化的空间。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           但说实话，假如你只是想把自己积压的技术书转成有声书，方便消化，或者给 YouTube，TikTok 视频配音，这些其实影响不大。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
          &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
           &lt;span&gt;
            写在最后
           &lt;/span&gt;
          &lt;/span&gt;
         &lt;/h2&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           找配音要花钱，自己录又要花时间，字幕同步还得手动去调。abogen 把这些成本全都省掉了。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           拖一个文档进去，等上几分钟，音频和字幕就都有了。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           虽说 AI 有声书在市场上还有些争议，但用来消化技术书，做视频配音，这些场景完全够用。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           有文本转音频需求的朋友，推荐试试看。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           项目基于 MIT 协议开放，感兴趣的同学，可以去 GitHub 仓库翻看源码和文档。
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           开源地址：https://github.com/denizsafak/abogen
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
          &lt;span&gt;
           既然都看到这儿了，欢迎随手点赞，在看，转发，也可以点个星标⭐，接收最新的文章，我们下期见！
          &lt;/span&gt;
         &lt;/p&gt;
         &lt;section powered-by="werss"&gt;
          &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png" data-id="Mzg3NzU0NzIxMA==" data-nickname="开源日记" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
          &lt;/mp-common-profile&gt;
         &lt;/section&gt;
        &lt;/section&gt;
        &lt;p style="display: none;"&gt;
         &lt;mp-style-type data-value="3"&gt;
         &lt;/mp-style-type&gt;
        &lt;/p&gt;
       &lt;/div&gt;
       &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
        var first_sceen__time = (+new Date());
            if ("" == 1 &amp;&amp; document.getElementById('js_content')) {
              document.getElementById('js_content').addEventListener("selectstart",function(e){ e.preventDefault(); });
            }
       &lt;/script&gt;
      &lt;/div&gt;
      &lt;div class="article-tag__error-tips" id="js_tags_preview_toast" style="display: none;"&gt;
       预览时标签不可点
      &lt;/div&gt;
      &lt;div id="content_bottom_area"&gt;
      &lt;/div&gt;
      &lt;div id="font_pannel_area"&gt;
      &lt;/div&gt;
      &lt;div class="rich_media_tool_area" id="js_temp_bottom_area"&gt;
       &lt;div class="rich_media_tool__wrp"&gt;
        &lt;div class="rich_media_tool"&gt;
         &lt;div class="rich_media_info weui-flex"&gt;
         &lt;/div&gt;
        &lt;/div&gt;
       &lt;/div&gt;
      &lt;/div&gt;
     &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="rich_media_area_primary sougou" id="sg_tj" style="display:none"&gt;
    &lt;/div&gt;
    &lt;div class="rich_media_area_extra"&gt;
     &lt;div class="rich_media_area_extra_inner"&gt;
      &lt;div id="page_bottom_area"&gt;
      &lt;/div&gt;
     &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="qr_code_pc_outer" id="js_pc_qr_code" style="display:none;"&gt;
     &lt;div class="qr_code_pc_inner"&gt;
      &lt;div class="qr_code_pc"&gt;
       &lt;img/&gt;
       &lt;p&gt;
        微信扫一扫
        &lt;br/&gt;
        关注该公众号
       &lt;/p&gt;
      &lt;/div&gt;
     &lt;/div&gt;
    &lt;/div&gt;
   &lt;/div&gt;
   &lt;div class="wx_stream_article_slide_tip" id="wx_stream_article_slide_tip"&gt;
    &lt;div class="wx_stream_article_slide_tip_wrp"&gt;
     &lt;span&gt;
     &lt;/span&gt;
     &lt;span&gt;
      继续滑动看下一个
     &lt;/span&gt;
    &lt;/div&gt;
   &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="wx_network_msg_wrp" id="js_network_msg_wrp"&gt;
  &lt;/div&gt;
  &lt;div class="wx_expand_article" id="wx_expand_article"&gt;
   &lt;div class="wx_expand_article_gradient_background" id="wx_expand_background"&gt;
   &lt;/div&gt;
   &lt;div class="wx_expand_article_bottom_area" id="wx_expand_bottom"&gt;
    &lt;div class="wx_expand_article_button_wrap" id="wx_expand_article_placeholder"&gt;
     &lt;button class="wx_expand_article_button" id="wx_expand_article_button"&gt;
      轻触阅读原文
     &lt;/button&gt;
    &lt;/div&gt;
    &lt;div class="stream_bottom_bar_wrp" id="js_stream_bottom_bar"&gt;
     &lt;div class="bottom_bar_placeholder" id="js_stream_bottom_bar_placeholder"&gt;
      &lt;div class="wx_follow_context wx_follow_primary wx_follow_smart wx_follow_top wx_follow_bottom"&gt;
       &lt;div class="function_mod js_function_mod wx_tap_cell"&gt;
        &lt;div class="function_mod_inner js_function_mod_inner"&gt;
         &lt;div class="function_bd"&gt;
          &lt;div class="wx_follow_media weui-flex weui-flex_align-center"&gt;
           &lt;div class="wx_follow_hd"&gt;
            &lt;span&gt;
             &lt;img src="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png"&gt;
             &lt;/img&gt;
            &lt;/span&gt;
           &lt;/div&gt;
           &lt;div class="wx_follow_bd weui-flex__item"&gt;
            &lt;div class="wx_follow_info"&gt;
             &lt;div aria-describedby="js_wx_follow_tips" aria-labelledby="js_wx_follow_nickname" class="wx_follow_nickname" role="link" tabindex="0"&gt;
              开源日记
             &lt;/div&gt;
            &lt;/div&gt;
           &lt;/div&gt;
          &lt;/div&gt;
         &lt;/div&gt;
        &lt;/div&gt;
       &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class="interaction_bar__wrap" style="opacity: 1;"&gt;
       &lt;div class="interaction_bar" style="-webkit-text-size-adjust: 100%;"&gt;
       &lt;/div&gt;
      &lt;/div&gt;
     &lt;/div&gt;
     &lt;div id="stream_article_bottom_area"&gt;
     &lt;/div&gt;
    &lt;/div&gt;
   &lt;/div&gt;
   &lt;div class="wx_expand_article_slide_tip" id="wx_expand_slidetip"&gt;
    &lt;div class="wx_stream_article_slide_tip"&gt;
     &lt;div class="wx_stream_article_slide_tip_wrp"&gt;
      &lt;span&gt;
      &lt;/span&gt;
      &lt;span&gt;
       向上滑动看下一个
      &lt;/span&gt;
     &lt;/div&gt;
    &lt;/div&gt;
   &lt;/div&gt;
  &lt;/div&gt;
  &lt;div id="js_ad_control"&gt;
  &lt;/div&gt;
  &lt;div id="audio_panel_area"&gt;
  &lt;/div&gt;
  &lt;div id="js_profile_card_modal"&gt;
  &lt;/div&gt;
  &lt;div class="comment_primary_emotion_panel_wrp" id="js_emotion_panel_pc" style="display: none"&gt;
   &lt;div class="comment_primary_emotion_panel"&gt;
    &lt;ul class="comment_primary_emotion_list_pc" id="js_emotion_list_pc"&gt;
    &lt;/ul&gt;
   &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="weui-dialog__wrp" id="js_alert_panel" style="display:none;"&gt;
   &lt;div class="weui-mask"&gt;
   &lt;/div&gt;
   &lt;div class="weui-dialog"&gt;
    &lt;div class="weui-dialog__bd" id="js_alert_content"&gt;
    &lt;/div&gt;
    &lt;div class="weui-dialog__ft"&gt;
     &lt;a class="weui-dialog__btn weui-dialog__btn_default" href="javascript:;" id="js_alert_confirm"&gt;
      知道了
     &lt;/a&gt;
    &lt;/div&gt;
   &lt;/div&gt;
  &lt;/div&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   window.img_popup = 1;
  &lt;/script&gt;
  &lt;style&gt;
   .weui-dialog_link{-webkit-transform:translateY(-75%);transform:translateY(-75%)}
  &lt;/style&gt;
  &lt;div class="weui-desktop-popover weui-desktop-popover_pos-up-center weui-desktop-popover_img-text weapp_code_popover" id="js_pc_weapp_code" style="display: none;"&gt;
   &lt;div class="weui-desktop-popover__inner"&gt;
    &lt;div class="weui-desktop-popover__desc"&gt;
     &lt;img/&gt;
     微信扫一扫
     &lt;br/&gt;
     使用小程序
     &lt;span&gt;
     &lt;/span&gt;
    &lt;/div&gt;
   &lt;/div&gt;
  &lt;/div&gt;
  &lt;div aria-labelledby="js_minipro_dialog_head" aria-modal="true" class="outer_dialog" id="js_minipro_dialog" role="dialog" style="display:none;" tabindex="0"&gt;
   &lt;div class="weui-mask"&gt;
   &lt;/div&gt;
   &lt;div class="weui-dialog weui-dialog_link"&gt;
    &lt;div class="weui-dialog__hd"&gt;
     &lt;strong class="weui-dialog__title" id="js_minipro_dialog_head" tabindex="0"&gt;
     &lt;/strong&gt;
    &lt;/div&gt;
    &lt;div class="weui-dialog__bd" id="js_minipro_dialog_body"&gt;
    &lt;/div&gt;
    &lt;div class="weui-dialog__ft"&gt;
     &lt;a class="weui-dialog__btn weui-dialog__btn_default" href="javascript:void(0);" id="js_minipro_dialog_cancel" role="button"&gt;
      取消
     &lt;/a&gt;
     &lt;a class="weui-dialog__btn weui-dialog__btn_primary" href="javascript:void(0);" id="js_minipro_dialog_ok" role="button"&gt;
      允许
     &lt;/a&gt;
    &lt;/div&gt;
   &lt;/div&gt;
  &lt;/div&gt;
  &lt;div aria-labelledby="js_link_dialog_body" aria-modal="true" class="outer_dialog" id="js_link_dialog" role="dialog" style="display:none;" tabindex="0"&gt;
   &lt;div class="weui-mask"&gt;
   &lt;/div&gt;
   &lt;div class="weui-dialog weui-dialog_link"&gt;
    &lt;div class="weui-dialog__hd"&gt;
     &lt;strong class="weui-dialog__title" id="js_link_dialog_head" tabindex="0"&gt;
     &lt;/strong&gt;
    &lt;/div&gt;
    &lt;div class="weui-dialog__bd" id="js_link_dialog_body" tabindex="0"&gt;
    &lt;/div&gt;
    &lt;div class="weui-dialog__ft"&gt;
     &lt;a class="weui-dialog__btn weui-dialog__btn_default" href="javascript:void(0);" id="js_link_dialog_cancel" role="button"&gt;
      取消
     &lt;/a&gt;
     &lt;a class="weui-dialog__btn weui-dialog__btn_primary" href="javascript:void(0);" id="js_link_dialog_ok" role="button"&gt;
      允许
     &lt;/a&gt;
    &lt;/div&gt;
   &lt;/div&gt;
  &lt;/div&gt;
  &lt;div aria-labelledby="js_product_dialog_body" aria-modal="true" class="outer_dialog" id="js_product_dialog" role="dialog" style="display:none;" tabindex="0"&gt;
   &lt;div class="weui-mask"&gt;
   &lt;/div&gt;
   &lt;div class="weui-dialog weui-dialog_link"&gt;
    &lt;div class="weui-dialog__hd"&gt;
     &lt;strong class="weui-dialog__title" id="js_product_dialog_head" tabindex="0"&gt;
     &lt;/strong&gt;
    &lt;/div&gt;
    &lt;div class="weui-dialog__bd" id="js_product_dialog_body" tabindex="0"&gt;
    &lt;/div&gt;
    &lt;div class="weui-dialog__ft"&gt;
     &lt;a class="weui-dialog__btn weui-dialog__btn_default" href="javascript:void(0);" id="js_product_dialog_cancel" role="button"&gt;
      取消
     &lt;/a&gt;
     &lt;a class="weui-dialog__btn weui-dialog__btn_primary" href="javascript:void(0);" id="js_product_dialog_ok" role="button"&gt;
      允许
     &lt;/a&gt;
    &lt;/div&gt;
   &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="analyze_btn_wrap" id="js_analyze_btn" style="display:none"&gt;
   &lt;button class="close-button"&gt;
    ×
   &lt;/button&gt;
   &lt;button class="go-button wx_tap_card js_wx_tap_highlight"&gt;
    分析
   &lt;/button&gt;
  &lt;/div&gt;
  &lt;div class="weui-dialog__wrp jump_wx_qrcode_dialog" id="js_jump_wx_qrcode_dialog" role="dialog" style="display:none;"&gt;
   &lt;div class="weui-mask js_dialog_mask"&gt;
   &lt;/div&gt;
   &lt;div class="weui-dialog"&gt;
    &lt;div class="weui-dialog__hd"&gt;
     &lt;i class="weui-icon-close-thin js_dialog_close"&gt;
     &lt;/i&gt;
     &lt;div class="qrcode-con"&gt;
      &lt;img/&gt;
      &lt;div class="jump_author_avatar_con"&gt;
       &lt;img src="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png"/&gt;
      &lt;/div&gt;
     &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="weui-dialog__bd"&gt;
     &lt;p&gt;
      微信扫一扫可打开此内容，
      &lt;br/&gt;
      使用完整服务
     &lt;/p&gt;
    &lt;/div&gt;
   &lt;/div&gt;
  &lt;/div&gt;
  &lt;div id="unlogin_bottom_bar" style="display:none;"&gt;
   &lt;div class="bottom_bar_wrp js_temp_bottom_bar" id="js_article_bottom_bar"&gt;
    &lt;div id="article_bottom_bar_area"&gt;
    &lt;/div&gt;
   &lt;/div&gt;
  &lt;/div&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   window.logs.pagetime.page_begin = Date.now();

try {
  var adIframeUrl = localStorage.getItem('__WXLS_ad_iframe_url');
  if (window === top) {
    if (adIframeUrl) {
      if (navigator.userAgent.indexOf('iPhone') &gt; -1) {
        var img = new Image();
        img.src = adIframeUrl;
      } else {
        var link = document.createElement('link');
        link.rel = 'prefetch';
        link.href = adIframeUrl;
        document.getElementsByTagName('head')[0].appendChild(link);
      }
    }
  }
} catch (err) {

}
  &lt;/script&gt;
  &lt;span style="display:none"&gt;
   ：
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   ，
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   ，
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   ，
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   ，
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   ，
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   ，
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   ，
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   ，
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   ，
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   ，
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   ，
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   ，
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   。
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   视频
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   小程序
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   赞
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   ，轻点两下取消赞
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   在看
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   ，轻点两下取消在看
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   分享
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   留言
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   收藏
  &lt;/span&gt;
  &lt;span style="display:none"&gt;
   听过
  &lt;/span&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   (function () {
  var totalCount = 0,
    finishCount = 0;

  function _addScript(uri, cb) {
    totalCount++;
    var node = document.createElement('SCRIPT');
    node.type = 'text/javascript';
    node.src = uri;
    node.setAttribute('nonce', '579543733');
    if (cb) {
      node.onload = cb;
    }
    document.getElementsByTagName('head')[0].appendChild(node);
  }
  if ((document.cookie &amp;&amp; document.cookie.indexOf('vconsole_open=1') &gt; -1) || location.href.indexOf('vconsole=1') &gt; -1) {
    _addScript('https://mp.weixin.qq.com/mmbizappmsg/zh_CN/htmledition/js/scripts/vconsole-3.14.6.js', function () {
      window.vConsole = new window.VConsole();
    });
  }
  if (document.cookie &amp;&amp; document.cookie.indexOf('__xweb_remote_debug_device_token__') &gt; -1) {
   
    _addScript('https://mp.weixin.qq.com/mmbizappmsg/zh_CN/htmledition/js/scripts/mprdev-0.3.0.js', function () {
      _addScript('https://mp.weixin.qq.com/mmbizappmsg/zh_CN/htmledition/js/scripts/xwebrd-0.0.2.js');
    });
  }
})();
  &lt;/script&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   var item_show_type = "0";
  &lt;/script&gt;
  &lt;script h5only="" nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   var __INLINE_SCRIPT__ = (function () {
  'use strict';
  var FILTER_ATTRS = ['mp-original-line-height', 'mp-original-font-size'];
  var __contentFilter = function __contentFilter(container) {
    if (!container) return;
    var nodes = container.querySelectorAll("[".concat(FILTER_ATTRS.join('], ['), "]"));
    for (var i = 0; i &lt; nodes.length; i++) {
      for (var j = 0; j &lt; FILTER_ATTRS.length; j++) {
        nodes[i].removeAttribute(FILTER_ATTRS[j]);
      }
    }
  };
  if (!window.__second_open__) {
    __contentFilter(document.getElementById('js_content'));
  }

  return __contentFilter;

})();
  &lt;/script&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   var __INLINE_SCRIPT__ = (function (exports) {
  'use strict';

  function _typeof(obj) {
    "@babel/helpers - typeof";

    return _typeof = "function" == typeof Symbol &amp;&amp; "symbol" == typeof Symbol.iterator ? function (obj) {
      return typeof obj;
    } : function (obj) {
      return obj &amp;&amp; "function" == typeof Symbol &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj;
    }, _typeof(obj);
  }

  
  
  var Device = {};
  function detect(ua) {
    var MQQBrowser = ua.match(/MQQBrowser\/(\d+\.\d+)/i);
    var MQQClient = ua.match(/QQ\/(\d+\.(\d+)\.(\d+)\.(\d+))/i) || ua.match(/V1_AND_SQ_([\d\.]+)/);
    var WeChat = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/) || ua.match(/MicroMessenger\/((\d+)\.(\d+))/);
    var MacOS = ua.match(/Mac\sOS\sX\s(\d+[\.|_]\d+)/);
    var WinOS = ua.match(/Windows(\s+\w+)?\s+?(\d+\.\d+)/);
    var Linux = ua.match(/Linux\s/);
    var MiuiBrowser = ua.match(/MiuiBrowser\/(\d+\.\d+)/i);
    var M1 = ua.match(/MI-ONE/);
    var MIPAD = ua.match(/MI PAD/);
    var UC = ua.match(/UCBrowser\/(\d+\.\d+(\.\d+\.\d+)?)/) || ua.match(/\sUC\s/);
    var IEMobile = ua.match(/IEMobile(\/|\s+)(\d+\.\d+)/) || ua.match(/WPDesktop/);
    var ipod = ua.match(/(ipod).*\s([\d_]+)/i);
    var ipad = ua.match(/(ipad).*\s([\d_]+)/i);
    var iphone = ua.match(/(iphone)\sos\s([\d_]+)/i);
    var Chrome = ua.match(/Chrome\/(\d+\.\d+)/);
    var AndriodBrowser = ua.match(/Mozilla.*Linux.*Android.*AppleWebKit.*Mobile Safari/);
    var android = ua.match(/(android)\s([\d\.]+)/i);
    var harmony = ua.match(/(OpenHarmony)\s([\d\.]+)/i);
    Device.browser = Device.browser || {}, Device.os = Device.os || {};
    Device.os.type = -1;
    Device.os.unifiedPC = ua.match(/UnifiedPC/);
    Device.os.unifiedMac = /UnifiedPCMac/i.test(ua);
    Device.os.unifiedWindows = /UnifiedPCWindows/i.test(ua);
    if (window.ActiveXObject) {
      var vie = 6;
      (window.XMLHttpRequest || ua.indexOf('MSIE 7.0') &gt; -1) &amp;&amp; (vie = 7);
      (window.XDomainRequest || ua.indexOf('Trident/4.0') &gt; -1) &amp;&amp; (vie = 8);
      ua.indexOf('Trident/5.0') &gt; -1 &amp;&amp; (vie = 9);
      ua.indexOf('Trident/6.0') &gt; -1 &amp;&amp; (vie = 10);
      Device.browser.ie = true, Device.browser.version = vie;
    } else if (ua.indexOf('Trident/7.0') &gt; -1) {
      Device.browser.ie = true, Device.browser.version = 11;
    }
    if (android) {
      Device.os.android = true;
      Device.os.version = android[2];
      Device.os.type = 2;
    }
    if (harmony) {
      Device.os.harmony = true;
      Device.os.version = harmony[2];
      Device.os.type = 42;
    }
    if (ipod) {
      Device.os.ios = Device.os.ipod = true;
      Device.os.version = ipod[2].replace(/_/g, '.');
    }
    if (ipad) {
      Device.os.ios = Device.os.ipad = true;
      Device.os.version = ipad[2].replace(/_/g, '.');
      Device.os.type = 13;
    }
    if (iphone) {
      Device.os.iphone = Device.os.ios = true;
      Device.os.version = iphone[2].replace(/_/g, '.');
      Device.os.type = 1;
    }
    if (WinOS) Device.os.windows = true, Device.os.version = WinOS[2], Device.os.type = 15;
    if (MacOS) Device.os.Mac = true, Device.os.version = MacOS[1], Device.os.type = 14;
    if (Linux) Device.os.Linux = true, Device.os.type = 33;
    if (ua.indexOf('lepad_hls') &gt; 0) Device.os.LePad = true;
    if (MIPAD) Device.os.MIPAD = true;
    if (MQQBrowser) Device.browser.MQQ = true, Device.browser.version = MQQBrowser[1];
    if (MQQClient) Device.browser.MQQClient = true, Device.browser.version = MQQClient[1];
    if (WeChat) Device.browser.WeChat = true, Device.browser.mmversion = Device.browser.version = WeChat[1];
    if (MiuiBrowser) Device.browser.MIUI = true, Device.browser.version = MiuiBrowser[1];
    if (UC) Device.browser.UC = true, Device.browser.version = UC[1] || NaN;
    if (IEMobile) Device.browser.IEMobile = true, Device.browser.version = IEMobile[2];
    if (AndriodBrowser) {
      Device.browser.AndriodBrowser = true;
    }
    if (M1) {
      Device.browser.M1 = true;
    }
    if (Chrome) {
      Device.browser.Chrome = true, Device.browser.version = Chrome[1];
    }
    if (Device.os.windows) {
      if (typeof navigator.platform !== "undefined" &amp;&amp; navigator.platform.toLowerCase() == "win64") {
        Device.os.win64 = true;
      } else {
        Device.os.win64 = false;
      }
    }
    if (Device.os.Mac || Device.os.windows || Device.os.Linux || Device.os.unifiedPC || /OpenHarmony/i.test(ua) &amp;&amp; /pc/i.test(ua)) {
      Device.os.pc = true;
    }
    var osType = {
      iPad7: 'iPad; CPU OS 7',
      LePad: 'lepad_hls',
      XiaoMi: 'MI-ONE',
      SonyDTV: "SonyDTV",
      SamSung: 'SAMSUNG',
      HTC: 'HTC',
      VIVO: 'vivo'
    };
    for (var os in osType) {
      Device.os[os] = ua.indexOf(osType[os]) !== -1;
    }
    Device.os.phone = Device.os.phone || /windows phone/i.test(ua);
    Device.os.getNumVersion = function () {
      return parseFloat(Device.os.version);
    };
    Device.os.hasTouch = 'ontouchstart' in window;
    if (Device.os.hasTouch &amp;&amp; Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 6) {
      Device.os.hasTouch = false;
    }
    if (Device.browser.WeChat &amp;&amp; Device.browser.version &lt; 5.0) {
      Device.os.hasTouch = false;
    }
    Device.browser.getNumVersion = function () {
      return parseFloat(Device.browser.version);
    };
    Device.browser.isFFCanOcx = function () {
      return !!Device.browser.firefox &amp;&amp; Device.browser.getNumVersion() &gt;= 3.0;
    };
    Device.browser.isCanOcx = function () {
      return !!Device.os.windows &amp;&amp; (!!Device.browser.ie || Device.browser.isFFCanOcx() || !!Device.browser.webkit);
    };
    Device.browser.isNotIESupport = function () {
      return !!Device.os.windows &amp;&amp; (!!Device.browser.webkit || Device.browser.isFFCanOcx());
    };
    Device.userAgent = {};
    Device.userAgent.browserVersion = Device.browser.version;
    Device.userAgent.osVersion = Device.os.version;
    if (Device.os.unifiedPC) {
      if (Device.os.unifiedWindows) Device.os.type = 37;else if (Device.os.unifiedMac) Device.os.type = 38;else Device.os.type = 39;
    }
    delete Device.userAgent.version;
  }
  detect(window.navigator.userAgent);
  function canSupportH5Video() {
    var ua = window.navigator.userAgent,
      m = null;
    if (!!Device.os.android) {
      if (Device.browser.MQQ &amp;&amp; Device.browser.getNumVersion() &gt;= 4.2) {
        return true;
      }
      if (ua.indexOf('MI2') != -1) {
        return true;
      }
      if (Device.os.version &gt;= '4' &amp;&amp; (m = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/))) {
        if (parseFloat(m[1]) &gt;= 4.2) {
          return true;
        }
      }
      if (Device.os.version &gt;= '4.1') {
        return true;
      }
    }
    return false;
  }
  function canSupportVideoMp4() {
    var video = document.createElement('video');
    if (typeof video.canPlayType === 'function') {
      if (video.canPlayType('video/mp4; codecs="mp4v.20.8"') === 'probably') {
        return true;
      }
      if (video.canPlayType('video/mp4; codecs="avc1.42E01E"') === 'probably' || video.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"') === 'probably') {
        return true;
      }
    }
    return false;
  }
  function canSupportAutoPlay() {
    if (Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 10) {
      return false;
    }
    return true;
  }
  function isLockdownMode() {
    if (!Device.os.ios || Device.os.getNumVersion() &lt; 16) {
      return false;
    }
    if (typeof WebAssembly === 'undefined' &amp;&amp; typeof OfflineAudioContext === 'undefined' &amp;&amp; typeof WebGLRenderingContext === 'undefined') {
      return true;
    }
    return false;
  }
  Device.canSupportVideo = canSupportVideoMp4 || canSupportH5Video;
  Device.canSupportVideoMp4 = canSupportVideoMp4;
  Device.canSupportH5Video = canSupportH5Video;
  Device.canSupportAutoPlay = canSupportAutoPlay;
  Device.isLockdownMode = isLockdownMode;
  
  Device.cpVersion = function (version) {
    var cp = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 0;
    var canEqual = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    var nowVersionStr = Device.os.version;
    if (!nowVersionStr) return false;
    var versionArr = version.split('.');
    var nowVersionArr = nowVersionStr.split('.');
    for (var i = 0; i &lt; Math.max(nowVersionArr.length, versionArr.length); i++) {
      var vi = +versionArr[i];
      var nvi = +nowVersionArr[i];
      if (vi === nvi) continue;
      if (cp &gt; 0) return vi &gt; nvi;
      if (cp &lt; 0) return vi &lt; nvi;
    }
    return canEqual || cp === 0;
  };

  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" &amp;&amp; o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$1(o)) || allowArrayLike &amp;&amp; o &amp;&amp; typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i &gt;= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion &amp;&amp; it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
  function _unsupportedIterableToArray$1(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$1(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen); }
  function _arrayLikeToArray$1(arr, len) { if (len == null || len &gt; arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i]; return arr2; }
  
  
  var ua$1 = navigator.userAgent;
  var is_ios = /(iPhone|iPad|iPod|iOS)/i.test(ua$1);
  var is_wp = /Windows\sPhone/i.test(ua$1);
  var is_android$1 = /(Android)/i.test(ua$1);
  var is_wechat = /MicroMessenger\/([\d\.]+)/i.test(ua$1);
  var is_mac = /mac\sos/i.test(ua$1) &amp;&amp; !is_ios;
  var is_windows = /windows\snt/i.test(ua$1) &amp;&amp; !is_wp;
  var is_mpapp = /MPAPP\/([\d\.]+)/i.test(ua$1);
  var is_ipad = /iPad/i.test(ua$1);
  var is_windows_wechat = /WindowsWechat/i.test(ua$1);
  var is_mac_wechat = /MacWechat/i.test(ua$1) || /wechat.*mac os/i.test(ua$1);
  var is_prefetch = is_wechat &amp;&amp; window.WeixinPrefecherJSBridge;
  var is_donut_app = /SAAASDK/i.test(ua$1);
  var is_harmony = /OpenHarmony|ArkWeb/i.test(ua$1);
  var is_linux = /Linux\s/i.test(ua$1);
  var xweb_match = ua$1.match(/XWEB\/([\d.]+)/i);
  var xweb_version = xweb_match &amp;&amp; xweb_match[1] ? parseInt(xweb_match[1], 10) : 0;
  var is_unified_pc_wechat = /UnifiedPC\w+Wechat/i.test(ua$1);
  var is_in_miniProgram = is_android$1 &amp;&amp; /miniprogram/.test(ua$1.toLowerCase()) || window.__wxjs_environment == 'miniprogram';
  var is_wx_work = /wxwork/i.test(ua$1);
  function getUrlParams() {
    var vars = location.search.substring(1).split('&amp;');
    var params = {};
    var _iterator = _createForOfIteratorHelper(vars),
      _step;
    try {
      for (_iterator.s(); !(_step = _iterator.n()).done;) {
        var ele = _step.value;
        var pair = ele.split('=');
        var key = decodeURIComponent(pair[0]);
        if (typeof params[key] === 'undefined') {
          params[key] = decodeURIComponent(pair[1]);
        }
      }
    } catch (err) {
      _iterator.e(err);
    } finally {
      _iterator.f();
    }
    return params;
  }
  function get() {
    var reg = /MicroMessenger\/([\d\.]+)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMac() {
    var reg = /MacWechat\/([\d\.]+)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMacOS() {
    var reg = /Mac OS X ([\d_]+)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1].replace(/_/g, '.');
    }
    return false;
  }
  function getWindows() {
    var reg = /WindowsWechat\(0x(.+?)\)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getWxWork() {
    var reg = /wxwork\/([\d\.]+)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMpApp() {
    var appVersion = [2, 4, 5];
    var match = navigator.userAgent.match(/MPAPP\/(\d+(\.\d+)*)/);
    if (match) {
      appVersion = match[1].split('.').map(function (v) {
        return Number(v);
      });
    }
    return appVersion.join('.');
  }
  function getUnifiedPcVer() {
    var versionInfo = navigator.userAgent.match(/UnifiedPC\w+Wechat\(0xf\w{2}(\w+?)\w{2}\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(0, 1));
      var subVersion = getVersionNumber(version.slice(1, 2));
      var subVersion2 = getVersionNumber(version.slice(2, 3));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
  }
  function getVersionNumber(hexStr) {
    return Number(Number("0x".concat(hexStr)).toString(10));
  }
  function getWindowsVersionFormat() {
    var versionInfo = navigator.userAgent.match(/WindowsWechat\(0x(\w+?)\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(1, 2));
      var subVersion = getVersionNumber(version.slice(2, 4));
      var subVersion2 = getVersionNumber(version.slice(4, 6));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
    return false;
  }
  function getInner() {
    var reg = /MicroMessenger\/[\d\.]+\(0x(.+?)\)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1] &amp;&amp; ret[1] != null) {
      return ret[1];
    }
    if (!ret &amp;&amp; /MicroMessenger\/[\d\.]+/i.test(ua$1)) {
      var urlParams = getUrlParams();
      if (urlParams.version) {
        return urlParams.version;
      }
    }
    return false;
  }
  var opfunc = {
    'cp-1': function cp1(a, b) {
      return a &lt; b;
    },
    cp0: function cp0(a, b) {
      return a === b;
    },
    cp1: function cp1(a, b) {
      return a &gt; b;
    }
  };
  function cpVersion(ver, op, canEq, type) {
    var mmver = false;
    switch (type) {
      case 'mac':
        mmver = getMac();
        break;
      case 'windows':
        mmver = getWindowsVersionFormat();
        break;
      case 'wxwork':
        mmver = getWxWork();
        break;
      case 'mpapp':
        mmver = getMpApp();
        break;
      case 'unifiedpc':
        mmver = getUnifiedPcVer();
        break;
      default:
        mmver = get();
        break;
    }
    if (!mmver) {
      return;
    }
    var mmversion = mmver.split('.');
    var version = ver.split('.');
    if (!/\d+/g.test(mmversion[mmversion.length - 1])) {
      mmversion.pop();
    }
    for (var i = 0, len = Math.max(mmversion.length, version.length); i &lt; len; ++i) {
      var mmv = mmversion[i] || '';
      var v = version[i] || '';
      var mmvn = parseInt(mmv, 10) || 0;
      var vn = parseInt(v, 10) || 0;
      var eq = opfunc.cp0(mmvn, vn);
      if (eq) {
        continue;
      }
      var cp = opfunc["cp".concat(op)];
      return cp(mmvn, vn);
    }
    return canEq || op === 0;
  }
  function eqVersion(version) {
    return cpVersion(version, 0);
  }
  function gtVersion(version, canEq) {
    return cpVersion(version, 1, canEq);
  }
  function ltVersion(version, canEq) {
    return cpVersion(version, -1, canEq);
  }
  function getPlatform() {
    if (is_ios) {
      return 'ios';
    }
    if (is_android$1) {
      return 'android';
    }
    if (is_mac) {
      return 'mac_os';
    }
    if (is_windows) {
      return 'windows';
    }
    return 'unknown';
  }
  var is_google_play = false;
  var inner_ver_for_google_play_check = getInner();
  if (is_android$1 &amp;&amp; inner_ver_for_google_play_check) {
    var v = "0x".concat(inner_ver_for_google_play_check.substr(-2));
    if (parseInt(v) &gt;= 64 &amp;&amp; parseInt(v) &lt;= 79) {
      is_google_play = true;
    }
  }
  function compareHexVersion(hexNum) {
    var innerVersion = getInner();
    if (innerVersion &amp;&amp; hexNum) {
      if (typeof hexNum === 'string') {
        hexNum = parseInt(hexNum, 16);
      }
      var version = parseInt(innerVersion, 16);
      return version &gt;= hexNum;
    }
    return false;
  }
  var mmversion = {
    get: get,
    getMac: getMac,
    getMacOS: getMacOS,
    getWindows: getWindows,
    getInner: getInner,
    getWxWork: getWxWork,
    getMpApp: getMpApp,
    cpVersion: cpVersion,
    eqVersion: eqVersion,
    gtVersion: gtVersion,
    ltVersion: ltVersion,
    getPlatform: getPlatform,
    getVersionNumber: getVersionNumber,
    isWp: is_wp,
    isIOS: is_ios,
    isAndroid: is_android$1,
    isHarmony: is_harmony,
    isHarmonyWechat: is_harmony &amp;&amp; is_wechat &amp;&amp; cpVersion('1.0.0', 1, true),
    isInMiniProgram: is_in_miniProgram,
    isWechat: is_wechat,
    isMac: is_mac,
    isWindows: is_windows,
    isLinux: is_linux,
    isMacWechat: is_mac_wechat,
    isWindowsWechat: is_windows_wechat,
    isWxWork: is_wx_work,
    isOnlyWechat: is_wechat &amp;&amp; !is_wx_work,
    isMpapp: is_mpapp,
    isNewMpApp: false,
    isIPad: is_ipad,
    isGooglePlay: is_google_play,
    isPrefetch: is_prefetch,
    isDonutAPP: is_donut_app,
    compareHexVersion: compareHexVersion,
    isPcWechat: is_windows_wechat || is_mac_wechat,
    xwebVersion: xweb_version,
    isUnifiedPcWechat: is_unified_pc_wechat
  };
  var getOriginExpVal = function getOriginExpVal(key) {
    var _a, _b, _c;
    return ((_c = (_b = (_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.user_info) === null || _b === void 0 ? void 0 : _b.frontend_exp) === null || _c === void 0 ? void 0 : _c.list) &amp;&amp; window.cgiDataNew.user_info.frontend_exp.list.reduce(function (res, item) {
      if (item.key === key) res = (item === null || item === void 0 ? void 0 : item.value) || '';
      return res;
    }, '');
  };

  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
    try {
      var info = gen[key](arg);
      var value = info.value;
    } catch (error) {
      reject(error);
      return;
    }
    if (info.done) {
      resolve(value);
    } else {
      Promise.resolve(value).then(_next, _throw);
    }
  }
  function _asyncToGenerator(fn) {
    return function () {
      var self = this,
        args = arguments;
      return new Promise(function (resolve, reject) {
        var gen = fn.apply(self, args);
        function _next(value) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
        }
        function _throw(err) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
        }
        _next(undefined);
      });
    };
  }

  var initJsBridge = false;
  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }
  function connectWebViewJavascriptBridge(callback) {
    if (window.WebViewMPapp || window.WebViewJavascriptBridge) {
      return callback(window.WebViewMPapp || window.WebViewJavascriptBridge);
    }
    if (window.WVJBCallbacks) {
      return window.WVJBCallbacks.push(callback);
    }
    window.WVJBCallbacks = [callback];
    if (!mmversion.isMpapp) {
      return false;
    }
    if (!initJsBridge) {
      initJsBridge = true;
      var WVJBIframe = document.createElement('iframe');
      WVJBIframe.style.display = 'none';
      WVJBIframe.src = 'https://__bridge_loaded__';
      document.body.appendChild(WVJBIframe);
      setTimeout(function () {
        initJsBridge = false;
        document.body.removeChild(WVJBIframe);
      }, 0);
    }
    return false;
  }
  function invoke$1(jsapiName, opt, callback) {
    connectWebViewJavascriptBridge(function (bridge) {
      try {
        if (typeof opt === 'function') {
          callback = opt;
        }
        if (_typeof(opt) !== 'object' &amp;&amp; typeof opt !== 'string') {
          opt = {};
        }
        bridge.callHandler(jsapiName, opt, function (res) {
          try {
            var ret = _typeof(res) === 'object' ? res : JSON.parse(res);
            var errMsg = ret.err_msg || ret.errMsg;
            console.info("[mpapp jsapi] invoke-&gt;".concat(jsapiName, " ").concat(opt.action || '', " ").concat(errMsg));
            typeof callback === 'function' &amp;&amp; callback(ret);
          } catch (e) {
            window.WX_BJ_REPORT.BadJs.report('invoke', "callback ".concat(jsapiName, " error:"), {
              mid: 'mmbizwebapp:js_brridge',
              _info: e
            });
            console.error("[mpapp jsapi] ".concat(jsapiName, " ").concat(opt.action || ''), e, res);
          }
        });
      } catch (e) {
        window.WX_BJ_REPORT.BadJs.report('invoke', 'callback error:', {
          mid: 'mmbizwebapp:js_brridge',
          _info: e
        });
        console.error('[mpapp jsapi]', e);
      }
    });
  }

  function _regeneratorRuntime$2() {  _regeneratorRuntime$2 = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  var doc$1 = {};
  var isAcrossOrigin$1 = false;
  var notFoundedMPPageAction = [];
  var __moon_report$1 = window.__moon_report || function () {};
  var MOON_JSAPI_KEY_OFFSET = 8;
  try {
    doc$1 = top.window.document;
  } catch (e) {
    isAcrossOrigin$1 = true;
  }
  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }
  function ready$1(onBridgeReady) {
    var bridgeReady = function bridgeReady() {
      try {
        if (onBridgeReady) {
          window.onBridgeReadyTime = window.onBridgeReadyTime || Date.now();
          onBridgeReady();
        }
      } catch (e) {
        __moon_report$1([{
          offset: MOON_JSAPI_KEY_OFFSET,
          log: 'ready',
          e: e
        }]);
        throw e;
      }
      window.jsapiReadyTime = Date.now();
    };
    if (!isAcrossOrigin$1 &amp;&amp; (typeof top.window.WeixinJSBridge === 'undefined' || !top.window.WeixinJSBridge.invoke)) {
      if (doc$1.addEventListener) {
        doc$1.addEventListener('WeixinJSBridgeReady', bridgeReady, false);
      } else if (doc$1.attachEvent) {
        doc$1.attachEvent('WeixinJSBridgeReady', bridgeReady);
        doc$1.attachEvent('onWeixinJSBridgeReady', bridgeReady);
      }
    } else {
      bridgeReady();
    }
  }
  var invokeNotWaitA8key = ['notifyPageInfo', 'updatePageAuth'
  ];
  var checkNotFoundedInvoke = function checkNotFoundedInvoke(methodName, args) {
    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; notFoundedMPPageAction.includes(args === null || args === void 0 ? void 0 : args.action)) {
      return true;
    }
    return false;
  };
  function invoke(_x, _x2, _x3) {
    return _invoke.apply(this, arguments);
  }
  function _invoke() {
    _invoke = _asyncToGenerator( _regeneratorRuntime$2().mark(function _callee(methodName, args, callback) {
      return _regeneratorRuntime$2().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__ &amp;&amp; !invokeNotWaitA8key.includes(methodName))) {
              _context.next = 3;
              break;
            }
            _context.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready$1(function () {
              if (isAcrossOrigin$1) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                alert('请在微信中打开此链接');
                return false;
              }
              if (checkNotFoundedInvoke(methodName, args)) {
                setTimeout(function () {
                  if (callback) {
                    callback.apply(window, [{
                      err_msg: "".concat(methodName, ":fail"),
                      err_desc: 'action isn\'t supported'
                    }]);
                  }
                }, 0);
              } else {
                top.window.WeixinJSBridge.invoke(methodName, args, function () {
                  try {
                    for (var _len2 = arguments.length, rets = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
                      rets[_key2] = arguments[_key2];
                    }
                    var ret = rets[0];
                    var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
                    if (['handleMPPageAction', 'handleVideoAction', 'handleHaokanAction'].indexOf(methodName) !== -1) {
                      var action = (args === null || args === void 0 ? void 0 : args.action) || '';
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName, ", action-&gt;").concat(action).concat(errMsg));
                    } else {
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName).concat(errMsg));
                    }
                    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; ((ret === null || ret === void 0 ? void 0 : ret.err_desc) === 'action isn\'t supported' || (ret === null || ret === void 0 ? void 0 : ret.err_msg) === 'handleMPPageAction:fail action is not supported')) {
                      notFoundedMPPageAction.push(args === null || args === void 0 ? void 0 : args.action);
                    }
                    if (callback) {
                      callback.apply(window, rets);
                    }
                  } catch (e) {
                    __moon_report$1([{
                      offset: MOON_JSAPI_KEY_OFFSET,
                      log: "invoke;methodName:".concat(methodName),
                      e: e
                    }]);
                    throw e;
                  }
                });
              }
            });
          case 4:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return _invoke.apply(this, arguments);
  }
  function call(_x4) {
    return _call.apply(this, arguments);
  }
  function _call() {
    _call = _asyncToGenerator( _regeneratorRuntime$2().mark(function _callee2(methodName) {
      return _regeneratorRuntime$2().wrap(function _callee2$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__)) {
              _context2.next = 3;
              break;
            }
            _context2.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready$1(function () {
              if (isAcrossOrigin$1) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                return false;
              }
              try {
                top.window.WeixinJSBridge.call(methodName);
              } catch (e) {
                __moon_report$1([{
                  offset: MOON_JSAPI_KEY_OFFSET,
                  log: "call;methodName:".concat(methodName),
                  e: e
                }]);
                throw e;
              }
            });
          case 4:
          case "end":
            return _context2.stop();
        }
      }, _callee2);
    }));
    return _call.apply(this, arguments);
  }
  function on$2(eventName, callback) {
    ready$1(function () {
      if (isAcrossOrigin$1) return false;
      if (_typeof(top.window.WeixinJSBridge) !== 'object' || !top.window.WeixinJSBridge.on) {
        return false;
      }
      if (!window.JSAPIEventCallbackMap[eventName]) {
        window.JSAPIEventCallbackMap[eventName] = [];
      }
      window.JSAPIEventCallbackMap[eventName].push(callback);
      if (window.JSAPIEventCallbackMap[eventName].length &gt; 1) {
        return false;
      }
      top.window.WeixinJSBridge.on(eventName, function () {
        try {
          for (var _len = arguments.length, rets = new Array(_len), _key = 0; _key &lt; _len; _key++) {
            rets[_key] = arguments[_key];
          }
          var ret = rets[0];
          var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
          console.info('[system]', "[jsapi] event-&gt;".concat(eventName).concat(errMsg));
          if (window.JSAPIEventCallbackMap[eventName] &amp;&amp; window.JSAPIEventCallbackMap[eventName].length) {
            var result;
            for (var i = 0; i &lt; window.JSAPIEventCallbackMap[eventName].length; i++) {
              result = window.JSAPIEventCallbackMap[eventName][i].apply(window, rets);
            }
            return result;
          }
        } catch (e) {
          __moon_report$1([{
            offset: MOON_JSAPI_KEY_OFFSET,
            log: "on;eventName:".concat(eventName),
            e: e
          }]);
          throw e;
        }
      });
    });
  }
  function remove$1(eventName, callback) {
    ready$1(function () {
      if (!window.JSAPIEventCallbackMap[eventName]) {
        return false;
      }
      var result = false;
      for (var i = window.JSAPIEventCallbackMap[eventName].length - 1; i &gt;= 0; i--) {
        if (window.JSAPIEventCallbackMap[eventName][i] === callback) {
          window.JSAPIEventCallbackMap[eventName].splice(i, 1);
          result = true;
        }
      }
      return result;
    });
  }
  var JSAPI = {
    ready: ready$1,
    invoke: invoke,
    call: call,
    on: on$2,
    remove: remove$1
  };

  function _regeneratorRuntime$1() {  _regeneratorRuntime$1 = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  var attrs = ['top', 'left', 'right', 'bottom'];
  var elementComputedStyle = {};
  var changeAttrs = [];
  var callbacks = [];
  var inited;
  var support;
  var jsApiSupport = false;
  var androidReadyPromise = null;
  if (Device.os.android) {
    androidReadyPromise = new Promise(function (resolve) {
      JSAPI.invoke('handleDeviceInfo', {
        action: 'getSafeAreaInsets'
      }, function (res) {
        if (res.err_msg.indexOf(':ok') !== -1) {
          elementComputedStyle.top = res.top;
          elementComputedStyle.left = res.left;
          elementComputedStyle.right = window.screen.width - res.right;
          elementComputedStyle.bottom = window.screen.height - res.bottom;
          jsApiSupport = true;
        } else {
          attrs.forEach(function (attr) {
            elementComputedStyle[attr] = 0;
          });
        }
        inited = true;
        resolve();
      });
    });
  }
  function getSupport() {
    if (Device.os.android) {
      support = '';
    } else if (!('CSS' in window) || typeof CSS.supports !== 'function') {
      support = '';
    } else if (CSS.supports('top: env(safe-area-inset-top)')) {
      support = 'env';
    } else if (CSS.supports('top: constant(safe-area-inset-top)')) {
      support = 'constant';
    } else {
      support = '';
    }
    return support;
  }
  function attrChange(attr) {
    if (!changeAttrs.length) {
      setTimeout(function () {
        var style = {};
        changeAttrs.forEach(function (a) {
          style[a] = elementComputedStyle[a];
        });
        changeAttrs.length = 0;
        callbacks.forEach(function (callback) {
          callback(style);
        });
      }, 0);
    }
    changeAttrs.push(attr);
  }
  function init() {
    support = typeof support === 'string' ? support : getSupport();
    if (!support) {
      attrs.forEach(function (attr) {
        elementComputedStyle[attr] = 0;
      });
      return;
    }
    function setStyle(el, style) {
      var elStyle = el.style;
      Object.keys(style).forEach(function (key) {
        var val = style[key];
        elStyle[key] = val;
      });
    }
    var cbs = [];
    function parentReady(callback) {
      if (callback) {
        cbs.push(callback);
      } else {
        cbs.forEach(function (cb) {
          cb();
        });
      }
    }
    var passiveEvents = false;
    try {
      var opts = Object.defineProperty({}, 'passive', {
        get: function get() {
          passiveEvents = {
            passive: true
          };
        }
      });
      window.addEventListener('test', null, opts);
    } catch (e) {}
    function addChild(parent, attr) {
      var a1 = document.createElement('div');
      var a2 = document.createElement('div');
      var a1Children = document.createElement('div');
      var a2Children = document.createElement('div');
      var W = 100;
      var MAX = 10000;
      var aStyle = {
        position: 'absolute',
        width: "".concat(W, "px"),
        height: '200px',
        boxSizing: 'border-box',
        overflow: 'hidden',
        paddingBottom: "".concat(support, "(safe-area-inset-").concat(attr, ")")
      };
      setStyle(a1, aStyle);
      setStyle(a2, aStyle);
      setStyle(a1Children, {
        transition: '0s',
        animation: 'none',
        width: '400px',
        height: '400px'
      });
      setStyle(a2Children, {
        transition: '0s',
        animation: 'none',
        width: '250%',
        height: '250%'
      });
      a1.appendChild(a1Children);
      a2.appendChild(a2Children);
      parent.appendChild(a1);
      parent.appendChild(a2);
      parentReady(function () {
        a1.scrollTop = MAX;
        a2.scrollTop = MAX;
        var a1LastScrollTop = a1.scrollTop;
        var a2LastScrollTop = a2.scrollTop;
        function onScroll() {
          if (this.scrollTop === (this === a1 ? a1LastScrollTop : a2LastScrollTop)) {
            return;
          }
          a1.scrollTop = MAX;
          a2.scrollTop = MAX;
          a1LastScrollTop = a1.scrollTop;
          a2LastScrollTop = a2.scrollTop;
          attrChange(attr);
        }
        a1.addEventListener('scroll', onScroll, passiveEvents);
        a2.addEventListener('scroll', onScroll, passiveEvents);
      });
      var computedStyle = getComputedStyle(a1);
      Object.defineProperty(elementComputedStyle, attr, {
        configurable: true,
        get: function get() {
          return parseFloat(computedStyle.paddingBottom);
        }
      });
    }
    var parentDiv = document.createElement('div');
    setStyle(parentDiv, {
      position: 'absolute',
      left: '0',
      top: '0',
      width: '0',
      height: '0',
      zIndex: '-1',
      overflow: 'hidden',
      visibility: 'hidden'
    });
    attrs.forEach(function (key) {
      addChild(parentDiv, key);
    });
    document.body.appendChild(parentDiv);
    parentReady();
    inited = true;
  }
  function getAttr(attr) {
    if (!inited) {
      init();
    }
    return elementComputedStyle[attr];
  }
  function onChange(callback) {
    if (!getSupport()) {
      return;
    }
    if (!inited) {
      init();
    }
    if (typeof callback === 'function') {
      callbacks.push(callback);
    }
  }
  function offChange(callback) {
    var index = callbacks.indexOf(callback);
    if (index &gt;= 0) {
      callbacks.splice(index, 1);
    }
  }
  
  function pollUntilReady(attr) {
    var timeout = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 2000;
    return new Promise(function (resolve) {
      var start = Date.now();
      function check() {
        var val = elementComputedStyle[attr];
        if (val &amp;&amp; val !== 0 || Date.now() - start &gt; timeout) {
          resolve();
          return;
        }
        setTimeout(check, 300);
      }
      setTimeout(check, 300);
    });
  }
  var readyPromise = null;
  
  function ready() {
    if (!readyPromise) {
      readyPromise = _asyncToGenerator( _regeneratorRuntime$1().mark(function _callee() {
        return _regeneratorRuntime$1().wrap(function _callee$(_context) {
          while (1) switch (_context.prev = _context.next) {
            case 0:
              if (!androidReadyPromise) {
                _context.next = 4;
                break;
              }
              _context.next = 3;
              return androidReadyPromise;
            case 3:
              return _context.abrupt("return");
            case 4:
              if (!inited) {
                init();
              }
              if (!support) {
                _context.next = 8;
                break;
              }
              _context.next = 8;
              return pollUntilReady('bottom');
            case 8:
            case "end":
              return _context.stop();
          }
        }, _callee);
      }))();
    }
    return readyPromise;
  }
  
  function getAttrAsync(_x) {
    return _getAttrAsync.apply(this, arguments);
  }
  function _getAttrAsync() {
    _getAttrAsync = _asyncToGenerator( _regeneratorRuntime$1().mark(function _callee2(attr) {
      return _regeneratorRuntime$1().wrap(function _callee2$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            _context2.next = 2;
            return ready();
          case 2:
            return _context2.abrupt("return", elementComputedStyle[attr]);
          case 3:
          case "end":
            return _context2.stop();
        }
      }, _callee2);
    }));
    return _getAttrAsync.apply(this, arguments);
  }
  var SafeArea = {
    get support() {
      return (typeof support === 'string' ? support : getSupport()).length !== 0 || jsApiSupport;
    },
    get top() {
      return getAttr('top');
    },
    get left() {
      return getAttr('left');
    },
    get right() {
      return getAttr('right');
    },
    get bottom() {
      return getAttr('bottom');
    },
    onChange: onChange,
    offChange: offChange,
    ready: ready,
    getAsync: getAttrAsync
  };

  function _toPrimitive(input, hint) {
    if (_typeof(input) !== "object" || input === null) return input;
    var prim = input[Symbol.toPrimitive];
    if (prim !== undefined) {
      var res = prim.call(input, hint || "default");
      if (_typeof(res) !== "object") return res;
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return (hint === "string" ? String : Number)(input);
  }

  function _toPropertyKey(arg) {
    var key = _toPrimitive(arg, "string");
    return _typeof(key) === "symbol" ? key : String(key);
  }

  function _defineProperty(obj, key, value) {
    key = _toPropertyKey(key);
    if (key in obj) {
      Object.defineProperty(obj, key, {
        value: value,
        enumerable: true,
        configurable: true,
        writable: true
      });
    } else {
      obj[key] = value;
    }
    return obj;
  }

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  function _defineProperties(target, props) {
    for (var i = 0; i &lt; props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor) descriptor.writable = true;
      Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
    }
  }
  function _createClass(Constructor, protoProps, staticProps) {
    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
    if (staticProps) _defineProperties(Constructor, staticProps);
    Object.defineProperty(Constructor, "prototype", {
      writable: false
    });
    return Constructor;
  }

  
  var prefix = '__WXLS__';
  var localStorage$1 = window.localStorage || {
    getItem: function getItem() {},
    setItem: function setItem() {},
    removeItem: function removeItem() {},
    key: function key() {},
    clear: function clear() {
      var _a, _b;
      (_b = (_a = window.localStorage) === null || _a === void 0 ? void 0 : _a.clear) === null || _b === void 0 ? void 0 : _b.call(_a);
    },
    length: 0
  };
  var evictionPolicies = {
    noeviction: function noeviction(data) {
      return data;
    },
    'allkeys-random': function allkeysRandom(data, size) {
      var keys = Object.keys(data);
      var memCnt = 0;
      while (memCnt &lt; size) {
        var len = keys.length;
        var randomKeyIdx = Math.floor(Math.random() * len);
        var randomKey = keys[randomKeyIdx];
        memCnt += JSON.stringify(data[randomKey]).length;
        delete data[randomKey];
        keys = Object.keys(data);
      }
      return data;
    },
    'volatile-ttl': function volatileTtl(data, size) {
      var keys = Object.keys(data);
      keys = keys.sort(function (key1, key2) {
        var d1 = data[key1];
        var d2 = data[key2];
        if (d1.exp &lt; d2.exp) return -1;
        if (d1.exp &gt; d2.exp) return 1;
        return 0;
      });
      var memCnt = 0;
      for (var i = 0; i &lt; keys.length; i++) {
        if (memCnt &gt;= size) break;
        var key = keys[i];
        memCnt += JSON.stringify(data[key]).length;
        delete data[key];
      }
      return data;
    },
    'clear-all': function clearAll() {
      localStorage$1.clear();
      return {};
    }
  };
  function formatLogMsg(str) {
    return "[WXLS] ".concat(str);
  }
  
  var LS = function () {
    function LS(func, evictionPolicy, logger) {
      _classCallCheck(this, LS);
      this.logger = function () {};
      if (!func) throw 'require function name.';
      this.evictionPolicy = 'noeviction';
      this.key = func;
      if (typeof logger === 'function') {
        this.logger = function (str, type) {
          return logger(formatLogMsg(str), type);
        };
      }
      if (evictionPolicy &amp;&amp; Object.keys(evictionPolicies).indexOf(evictionPolicy) !== -1) {
        this.evictionPolicy = evictionPolicy;
      }
      this.init();
    }
    _createClass(LS, [{
      key: "init",
      value: function init() {
        var _a, _b;
        this.check();
        if (Math.random() * 1000 &lt; 1) {
          (_a = this.logger) === null || _a === void 0 ? void 0 : _a.call(this, "LSlen: ".concat(((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length) || localStorage$1.length), 'report');
        }
      }
    }, {
      key: "getData",
      value: function getData() {
        var data = LS.getItem(this.key) || '{}';
        try {
          data = JSON.parse(data);
        } catch (e) {
          this.logger("getData error: ".concat(e), 'error');
          localStorage$1.removeItem(prefix + this.key);
          data = {};
        }
        return data;
      }
    }, {
      key: "check",
      value: function check(isReturn) {
        var data = this.getData();
        var temp = {};
        var now = +new Date();
        var key;
        var val;
        for (key in data) {
          val = data[key];
          if (+val.exp &gt; now) {
            temp[key] = val;
          }
        }
        this.logger("check info: isReturn:".concat(isReturn, " data:").concat(JSON.stringify(temp)), 'info');
        if (isReturn) return temp;
        LS.setItem(this.key, JSON.stringify(temp), this.logger);
      }
    }, {
      key: "set",
      value: function set(key, val, exp) {
        var _a, _b;
        var data = this.check(true);
        data[key] = {
          val: val,
          exp: exp || +new Date()
        };
        try {
          if (localStorage$1.getItem(prefix + this.key)) localStorage$1.removeItem(prefix + this.key);
          localStorage$1.setItem(prefix + this.key, JSON.stringify(data));
          this.logger("first set success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data)), 'success');
        } catch (e) {
          this.logger("first set error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data), " k:").concat(key, " v:").concat(val, " exp:").concat(exp), 'error');
          localStorage$1.clear();
          LS.setItem(this.key, JSON.stringify(_defineProperty({}, key, {
            val: val,
            exp: exp || +new Date()
          })), this.logger);
        }
      }
    }, {
      key: "get",
      value: function get(key) {
        var data = this.getData();
        data = data[key];
        return data ? data.val || null : null;
      }
    }, {
      key: "remove",
      value: function remove(key) {
        var data = this.getData();
        if (data[key]) delete data[key];
        LS.setItem(this.key, JSON.stringify(data), this.logger);
      }
    }], [{
      key: "getItem",
      value: function getItem(key) {
        key = prefix + key;
        return localStorage$1.getItem(key);
      }
    }, {
      key: "setItem",
      value: function setItem(key, val, logger) {
        var _a, _b;
        key = prefix + key;
        var n = 3;
        while (n--) {
          try {
            if (localStorage$1.getItem(key)) localStorage$1.removeItem(key);
            localStorage$1.setItem(key, val);
            typeof logger === 'function' &amp;&amp; logger("setItem success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(key, " val:").concat(val), 'success');
            break;
          } catch (e) {
            typeof logger === 'function' &amp;&amp; logger("setItem error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(key, " val:").concat(val), 'error');
            LS.clear();
          }
        }
      }
    }, {
      key: "clear",
      value: function clear() {
        var i;
        var k;
        for (i = localStorage$1.length - 1; i &gt;= 0; i--) {
          k = localStorage$1.key(i);
          if (k.indexOf(prefix) == 0) {
            localStorage$1.removeItem(k);
          }
        }
      }
    }, {
      key: "getSupportEvicationPolicy",
      value: function getSupportEvicationPolicy() {
        return Object.keys(evictionPolicies);
      }
    }]);
    return LS;
  }();

  
  var LOCAL_STORAGE_EXPIRE_TIME = 24 * 60 * 60 * 1000;

  
  
  var onceListeners = {};
  var permanentListeners = {};
  function clean(event, all) {
    delete onceListeners[event];
    if (all) {
      delete permanentListeners[event];
    }
  }
  function on$1(event, callback, permanent) {
    if (typeof callback === 'function') {
      if (permanent) {
        if (!permanentListeners[event]) {
          permanentListeners[event] = [];
        }
        permanentListeners[event].push(callback);
      } else {
        if (!onceListeners[event]) {
          onceListeners[event] = [];
        }
        onceListeners[event].push(callback);
      }
    }
  }
  function emit(event) {
    for (var _len = arguments.length, params = new Array(_len &gt; 1 ? _len - 1 : 0), _key = 1; _key &lt; _len; _key++) {
      params[_key - 1] = arguments[_key];
    }
    if (permanentListeners[event]) {
      permanentListeners[event].forEach(function (callback) {
        if (typeof callback === 'function') {
          callback.apply(void 0, params);
        }
      });
    }
    if (onceListeners[event]) {
      onceListeners[event].forEach(function (callback) {
        if (typeof callback === 'function') {
          callback.apply(void 0, params);
        }
      });
      clean(event);
    }
  }
  function remove(event, callback, permanent) {
    if (typeof callback === 'function') {
      if (permanent &amp;&amp; permanentListeners[event]) {
        var idx = permanentListeners[event].indexOf(callback);
        if (idx !== -1) {
          permanentListeners[event].splice(idx, 1);
        }
      } else if (onceListeners[event]) {
        var _idx = onceListeners[event].indexOf(callback);
        if (_idx !== -1) {
          onceListeners[event].splice(_idx, 1);
        }
      }
    }
  }
  var EventBus = {
    on: on$1,
    emit: emit,
    remove: remove,
    clean: clean
  };

  function _arrayWithHoles(arr) {
    if (Array.isArray(arr)) return arr;
  }

  function _iterableToArrayLimit(arr, i) {
    var _i = null == arr ? null : "undefined" != typeof Symbol &amp;&amp; arr[Symbol.iterator] || arr["@@iterator"];
    if (null != _i) {
      var _s,
        _e,
        _x,
        _r,
        _arr = [],
        _n = !0,
        _d = !1;
      try {
        if (_x = (_i = _i.call(arr)).next, 0 === i) {
          if (Object(_i) !== _i) return;
          _n = !1;
        } else for (; !(_n = (_s = _x.call(_i)).done) &amp;&amp; (_arr.push(_s.value), _arr.length !== i); _n = !0);
      } catch (err) {
        _d = !0, _e = err;
      } finally {
        try {
          if (!_n &amp;&amp; null != _i["return"] &amp;&amp; (_r = _i["return"](), Object(_r) !== _r)) return;
        } finally {
          if (_d) throw _e;
        }
      }
      return _arr;
    }
  }

  function _arrayLikeToArray(arr, len) {
    if (len == null || len &gt; arr.length) len = arr.length;
    for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i];
    return arr2;
  }

  function _unsupportedIterableToArray(o, minLen) {
    if (!o) return;
    if (typeof o === "string") return _arrayLikeToArray(o, minLen);
    var n = Object.prototype.toString.call(o).slice(8, -1);
    if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name;
    if (n === "Map" || n === "Set") return Array.from(o);
    if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
  }

  function _nonIterableRest() {
    throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }

  function _slicedToArray(arr, i) {
    return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
  }
  var innerVersion = (mmversion.getInner() || '').toUpperCase();
  var getBizLS = new LS('get_biz_result');
  var bizMap = {};
  var isGetBizSupported = mmversion.isOnlyWechat &amp;&amp; mmversion.isIOS &amp;&amp; innerVersion &gt;= '18003C2A' || mmversion.isOnlyWechat &amp;&amp; mmversion.isAndroid &amp;&amp; innerVersion &gt;= '28003D3C' || mmversion.isUnifiedPcWechat &amp;&amp; mmversion.cpVersion('4.1.10', 1, true, 'unifiedpc');
  mmversion.isOnlyWechat &amp;&amp; mmversion.isIOS || mmversion.isOnlyWechat &amp;&amp; mmversion.isAndroid || mmversion.isUnifiedPcWechat &amp;&amp; mmversion.cpVersion('4.1.10', 1, true, 'unifiedpc');
  function getBiz(needCheckBiz, bizType) {
    var _a;
    if (needCheckBiz === void 0) {
      needCheckBiz = false;
    }
    if (bizType === void 0) {
      bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
    }
    return new Promise(function (resolve, reject) {
      if (needCheckBiz || bizMap[bizType] === undefined) {
        if (!isGetBizSupported) {
          reject('Not support');
        } else {
          JSAPI.invoke('handleMPPageAction', {
            action: 'getBiz',
            needCheckBiz: needCheckBiz,
            bizType: bizType
          }, function (res) {
            console.log("getBiz with needCheckBiz=".concat(needCheckBiz, " res: ").concat(JSON.stringify(res)));
            if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf('ok') &gt; -1) {
              bizMap[bizType] = res.biz;
              resolve(res.biz);
              getBizLS.set("".concat(bizType, "_get_biz_result"), res.biz, +new Date() + 3 * 24 * 60 * 60 * 1000);
            } else {
              reject('Failed to get biz');
            }
          });
        }
      } else {
        resolve(bizMap[bizType]);
      }
    });
  }
  var getIsAuthor = function getIsAuthor(cb, bizuin, needCheckBiz, bizType) {
    var _a;
    if (bizuin === void 0) {
      bizuin = window.biz;
    }
    if (needCheckBiz === void 0) {
      needCheckBiz = false;
    }
    if (bizType === void 0) {
      bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
    }
    getBiz(needCheckBiz, bizType).then(function (biz) {
      cb(biz &amp;&amp; biz === bizuin);
    })["catch"](function () {
      cb(false);
    });
  };

  function parseUrl(url) {
    var len = url.length;
    var ques_pos = url.indexOf('?');
    var hash_pos = url.indexOf('#');
    hash_pos = hash_pos == -1 ? len : hash_pos;
    ques_pos = ques_pos == -1 ? hash_pos : ques_pos;
    var host = url.substring(0, ques_pos);
    var query_str = url.substring(ques_pos + 1, hash_pos);
    var hash = url.substring(hash_pos + 1);
    return {
      host: host,
      query_str: query_str,
      hash: hash
    };
  }
  function join(url, args, noEncode) {
    var ret = parseUrl(url);
    var query_str = ret.query_str;
    var args_arr = [];
    if (_typeof(args) === 'object') {
      for (var key in args) {
        if (args.hasOwnProperty(key)) {
          args_arr.push("".concat(key, "=").concat(noEncode ? args[key] : encodeURIComponent(args[key])));
        }
      }
    } else {
      args_arr.push(noEncode ? args : encodeURIComponent(args));
    }
    if (args_arr.length &gt; 0) {
      query_str += (query_str !== "" ? "&amp;" : "") + args_arr.join("&amp;");
    }
    return ret.host + (query_str !== "" ? "?".concat(query_str) : "") + (ret.hash !== "" ? "#".concat(ret.hash) : "");
  }
  
  function addParam(url, param, value, forceReplace) {
    url = url || location.href;
    var firstAndPos = url.indexOf("&amp;");
    var len = url.length;
    var reverseUrl = url.replace(/^[\w\d]+:[/\\]+/g, "").split("").reverse();
    if (!Array.prototype.indexOf) {
      Array.prototype.indexOf = function (searchElement, fromIndex) {
        var k;
        if (this == null) {
          throw new TypeError('"this" is null or not defined');
        }
        var O = Object(this);
        var len = O.length &gt;&gt;&gt; 0;
        if (len === 0) {
          return -1;
        }
        var n = fromIndex || 0;
        if (Math.abs(n) === Infinity) {
          n = 0;
        }
        if (n &gt;= len) {
          return -1;
        }
        k = Math.max(n &gt;= 0 ? n : len - Math.abs(n), 0);
        while (k &lt; len) {
          if (k in O &amp;&amp; O[k] === searchElement) {
            return k;
          }
          k++;
        }
        return -1;
      };
    }
    var lastSlashPos = len - 1 - reverseUrl.indexOf("/");
    if (firstAndPos !== -1 &amp;&amp; url.indexOf("?") == -1 &amp;&amp; firstAndPos &gt; lastSlashPos) {
      url = url.replace("&amp;", "?");
    }
    var reg = new RegExp("([\\?&amp;]".concat(param, "=)[^&amp;#]*"));
    if (!url.match(reg)) {
      var urlInfo = parseUrl(url);
      var hash = urlInfo.hash ? '#' + urlInfo.hash : '';
      url = url.replace(hash, '');
      var _pos = url.indexOf("?");
      if (_pos == -1) {
        return "".concat(url, "?").concat(param, "=").concat(value).concat(hash);
      }
      if (_pos == url.length - 1) {
        return "".concat(url + param, "=").concat(value).concat(hash);
      }
      return "".concat(url, "&amp;").concat(param, "=").concat(value).concat(hash);
    }
    if (forceReplace === true) {
      return url.replace(reg, "$1".concat(value));
    }
    return url;
  }
  function addWxfrom(src, wxfrom) {
    var offset = window.service_type === 1 ? 10000 : 0;
    return addParam(src, 'wxfrom', offset + Number(wxfrom), true);
  }
  function removeParam(url, param) {
    var _URL = new URL(url),
      protocol = _URL.protocol,
      host = _URL.host,
      pathname = _URL.pathname,
      search = _URL.search,
      hash = _URL.hash;
    var queryParams = new URLSearchParams(search);
    queryParams["delete"](param);
    var newSearch = queryParams.toString();
    var newUrl = new URL("".concat(protocol, "//").concat(host).concat(pathname).concat(newSearch ? "?".concat(decodeURIComponent(newSearch)) : "").concat(hash));
    return newUrl.toString();
  }
  function getQuery(name, url) {
    var u = url || window.location.search;
    var reg = new RegExp("(^|&amp;)".concat(name, "=([^&amp;]*)(&amp;|$)"));
    var r = u.substring(u.indexOf('?') + 1).match(reg);
    return r !== null ? r[2] : '';
  }
  function encodeBase64(value) {
    try {
      return window.btoa(value);
    } catch (e) {
      return '';
    }
  }
  function decodeBase64(value) {
    try {
      return window.atob(value);
    } catch (e) {
      return '';
    }
  }
  function joinUrl$1(url) {
    var obj = {};
    if (typeof window.uin !== 'undefined') {
      obj.uin = window.uin;
    }
    if (typeof window.key !== 'undefined') {
      obj.key = window.key;
    }
    if (typeof window.pass_ticket !== 'undefined') {
      obj.pass_ticket = window.pass_ticket;
    }
    if (typeof window.wxtoken !== 'undefined') {
      obj.wxtoken = window.wxtoken;
    }
    if (typeof window.devicetype !== 'undefined') {
      obj.devicetype = window.devicetype;
    }
    if (typeof window.clientversion !== 'undefined') {
      obj.clientversion = window.clientversion || mmversion.getInner();
    }
    obj.version = obj.clientversion;
    if (window.biz) {
      obj.__biz = window.biz;
    }
    if (getQuery('enterid')) {
      obj.enterid = getQuery('enterid');
    }
    if (typeof window.appmsg_token !== 'undefined') {
      obj.appmsg_token = window.appmsg_token;
    } else if (url.indexOf('advertisement_report') &gt; -1) {
      new Image().src = "".concat(location.protocol, "//mp.weixin.qq.com/mp/jsmonitor?idkey=68064_13_1&amp;r=").concat(Math.random());
    }
    obj.x5 = navigator.userAgent.indexOf('TBS/') !== -1 ? '1' : '0';
    obj.f = 'json';
    return join(url, obj);
  }
  function joinUserArticleRole(url, notJoin, cb) {
    var bizuin = arguments.length &gt; 3 &amp;&amp; arguments[3] !== undefined ? arguments[3] : window.biz;
    var needCheckBiz = arguments.length &gt; 5 &amp;&amp; arguments[5] !== undefined ? arguments[5] : false;
    if (notJoin) {
      cb(url);
    } else {
      getIsAuthor(function (isAuthor) {
        cb(addParam(url, 'user_article_role', isAuthor ? 1 : 0, true));
      }, bizuin, needCheckBiz);
    }
  }
  function getA8keyQuery(name, url) {
    return new Promise(function (resolve) {
      if (window.__secPageAuthPromise) {
        window.__secPageAuthPromise.then(function () {
          resolve(getQuery(name, url));
        });
      } else {
        resolve(getQuery(name, url));
      }
    });
  }
  function addHash(url, hash) {
    var isReplace = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    if (isReplace) {
      return "".concat(url.split('#')[0]).concat(hash);
    }
    return "".concat(url).concat(url.indexOf('#') === -1 ? '#' : '').concat(hash);
  }
  function decodeUrl(url) {
    var _url = url;
    while (_url.indexOf('&amp;amp;') !== -1) {
      _url = _url.htmlDecode();
    }
    return _url;
  }
  var Url = {
    parseUrl: parseUrl,
    join: join,
    addParam: addParam,
    addWxfrom: addWxfrom,
    addHash: addHash,
    getQuery: getQuery,
    getA8keyQuery: getA8keyQuery,
    encodeBase64: encodeBase64,
    decodeBase64: decodeBase64,
    joinUrl: joinUrl$1,
    joinUserArticleRole: joinUserArticleRole,
    removeParam: removeParam,
    decodeUrl: decodeUrl
  };

  var isIPadOS13 = Device.os.ipad &amp;&amp; Device.os.getNumVersion() &gt;= 13 &amp;&amp; Device.os.getNumVersion() &lt; 14;
  
  var ARTICLE_FONT_SCALE_CHANGE_EVENT = 'article-font-scale-change';
  
  var FONT_LEVEL_TO_SCALE_MAP = [0.94, 1, 1.2, 1.3, 1.44, 1.5, 1.62, 1.7];
  function isSupportTextSizeAdjust() {
    var _a, _b;
    if (mmversion.isIOS) {
      return true;
    }
    return mmversion.isAndroid &amp;&amp; !!((_b = (_a = window.xweb_wechat_extend) === null || _a === void 0 ? void 0 : _a.AvailableFeatures) === null || _b === void 0 ? void 0 : _b.includes('XWEB_SUPPORT_TEXT_SIZE_ADJUST'));
  }
  function getNativeFontScaleVar() {
    if (window.__nativeFontScale__) {
      return window.__nativeFontScale__;
    }
    setNativeFontScaleVar(getScaleByDom());
    return window.__nativeFontScale__;
  }
  function setNativeFontScaleVar(val) {
    window.__nativeFontScale__ = val || 1;
  }
  function getNativeFontLevelVar() {
    var _a;
    if (window.__nativeFontLevel__) {
      return window.__nativeFontLevel__;
    }
    var fontLevel = +Url.getQuery('fontLevel');
    if (!fontLevel) {
      try {
        var envStr = (_a = window.__wxWebEnv) === null || _a === void 0 ? void 0 : _a.getEnv();
        if (envStr) {
          var envData = JSON.parse(envStr);
          if (envData.fontLevel) fontLevel = +envData.fontLevel;
        }
      } catch (e) {}
    }
    setNativeFontLevelVar(fontLevel);
    return window.__nativeFontLevel__;
  }
  function setNativeFontLevelVar(val) {
    window.__nativeFontLevel__ = val || 2;
  }
  function getScaleByDPR() {
    var _a;
    if (window.__dprScale__ !== null &amp;&amp; window.__dprScale__ !== undefined) return window.__dprScale__;
    try {
      var scale = (_a = window.__wxWebEnv) === null || _a === void 0 ? void 0 : _a.getLayoutScale();
      if (typeof scale === 'number' &amp;&amp; scale &gt; 0 &amp;&amp; isFinite(scale)) {
        window.__dprScale__ = 1 / scale;
        return window.__dprScale__;
      }
    } catch (e) {
    }
    window.__dprScale__ = 1;
    return window.__dprScale__;
  }
  function getNativeFontScale() {
    return getNativeFontScaleVar() * getScaleByDPR();
  }
  function getScaleByDom() {
    if (typeof document === 'undefined' || !document.body) {
      return 1;
    }
    var fontDom = document.createElement('div');
    fontDom.style.fontSize = '16px';
    document.body.appendChild(fontDom);
    var originFontSize = parseFloat(fontDom.style.fontSize);
    var realFontSize = parseFloat(window.getComputedStyle(fontDom, null).getPropertyValue('font-size'));
    document.body.removeChild(fontDom);
    var percent = realFontSize / originFontSize;
    if (!percent || percent &lt;= 0 || !isFinite(percent)) {
      return 1;
    }
    return percent;
  }
  function getScaleFromParent(node) {
    var targetNode;
    if (node instanceof ShadowRoot) {
      targetNode = node.host;
    } else {
      targetNode = node;
    }
    var originScale = targetNode.getAttribute('mp-font-scale');
    if (originScale) {
      return parseFloat(originScale);
    }
    if (!targetNode.parentElement) return getNativeFontScale();
    return getScaleFromParent(targetNode.parentElement);
  }
  function setFontSize(root, percent, fontScale) {
    if (root === null || !percent || mmversion.isPcWechat || !mmversion.isWechat) return;
    if (isSupportTextSizeAdjust()) {
      var targetEl = root instanceof ShadowRoot ? root.host : root;
      targetEl.setAttribute('mp-font-scale', percent.toString());
      var adjustValue = mmversion.isIOS ? "".concat(percent * 100, "%") : "".concat(percent * 100 / getNativeFontScale(), "%");
      targetEl.style.setProperty('-webkit-text-size-adjust', adjustValue);
      targetEl.style.setProperty('text-size-adjust', adjustValue);
      return;
    }
    var nowFontScale = fontScale || getScaleFromParent(root);
    if (root instanceof ShadowRoot) {
      root.host.setAttribute('mp-font-scale', percent.toString());
    } else {
      root.setAttribute('mp-font-scale', percent.toString());
    }
    var setQueue = [];
    var textWalker = document.createTreeWalker(root, 1);
    do {
      var textContainer = textWalker.currentNode;
      if (textContainer.nodeType !== 1) continue;
      if (textContainer.tagName &amp;&amp; customElements.get(textContainer.tagName.toLowerCase()) &amp;&amp; textContainer.shadowRoot) {
        var shadowRoot = textContainer.shadowRoot;
        setFontSize(shadowRoot, percent, fontScale);
        continue;
      }
      var oriFontSize = textContainer.getAttribute('mp-original-font-size');
      if (!oriFontSize) {
        if (isIPadOS13) {
          oriFontSize = String(parseFloat(getComputedStyle(textContainer).fontSize));
        } else {
          oriFontSize = String(parseFloat(getComputedStyle(textContainer).fontSize) / nowFontScale);
        }
        textContainer.setAttribute('mp-original-font-size', oriFontSize);
      }
      var oriLineHeight = textContainer.getAttribute('mp-original-line-height');
      if (!oriLineHeight) {
        oriLineHeight = parseFloat(getComputedStyle(textContainer).lineHeight) / parseFloat(getComputedStyle(textContainer).fontSize);
        textContainer.setAttribute('mp-original-line-height', String(oriLineHeight));
      }
      setQueue.push([textContainer, oriFontSize, oriLineHeight]);
    } while (textWalker.nextNode());
    for (var _i = 0, _setQueue = setQueue; _i &lt; _setQueue.length; _i++) {
      var setPair = _setQueue[_i];
      var originalSize = parseFloat(setPair[1]);
      if (isNaN(originalSize) || originalSize &lt;= 0) {
        continue;
      }
      var calculatedSize = originalSize * (percent / getNativeFontScale());
      if (!isFinite(calculatedSize) || calculatedSize &lt;= 0 || calculatedSize &gt; 1000) {
        continue;
      }
      setPair[0].style.fontSize = "".concat(calculatedSize, "px");
      setPair[0].style.lineHeight = "".concat(setPair[2]);
    }
  }
  
  function getLevelScaleByFontLevel(fontLevel) {
    var level = Math.max(0, Math.min(fontLevel, FONT_LEVEL_TO_SCALE_MAP.length - 1));
    return FONT_LEVEL_TO_SCALE_MAP[level];
  }
  function getClientFontScaleValue() {
    var useFontLevel = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : false;
    if (useFontLevel) {
      var fontLevel = getNativeFontLevelVar();
      return getLevelScaleByFontLevel(fontLevel - 1) * 100;
    }
    return getNativeFontScale() * 100;
  }
  
  function setArticleContentFontSize(percent, root) {
    var contentEl = root || document.getElementById('js_content');
    if (contentEl) {
      window.__contentFontScale__ = percent;
      EventBus.emit(ARTICLE_FONT_SCALE_CHANGE_EVENT, percent);
      setFontSize(contentEl, percent);
    }
  }
  
  function applyContentFontScale(localFontScale) {
    var useFontLevel = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : true;
    var root = arguments.length &gt; 2 ? arguments[2] : undefined;
    if (!localFontScale) return;
    var clientFontScale = getClientFontScaleValue(useFontLevel);
    var finalFontScale = localFontScale * clientFontScale / 100;
    setArticleContentFontSize(finalFontScale, root);
  }

  
  function _log(level, msg) {
    if (level === 'log') {
      level = 'info';
      msg = "[WechatFe]".concat(msg);
    } else {
      var prefix = "__wap__".concat(window.__second_open__ ? ' (sec)' : '');
      msg = "".concat(prefix, " ").concat(msg, " location:[").concat(location.href, "]");
    }
    msg += new Error().stack;
    if (mmversion.isMpapp) {
      invoke$1('WNNativeCallbackLog', msg);
    } else if (mmversion.isWechat) {
      if (mmversion.isAndroid) {
        console.warn('[system]', "[MicroMsg.JsApiLog][".concat(level, "] jslog : ").concat(msg));
      } else if (mmversion.isIOS) {
        JSAPI.invoke('writeLog', {
          level: level,
          msg: msg
        });
      } else {
        JSAPI.invoke('log', {
          level: level,
          msg: msg
        });
      }
    }
  }
  var Log = {
    info: function info() {
      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key &lt; _len; _key++) {
        args[_key] = arguments[_key];
      }
      _log('info', args.join(' '));
    },
    warn: function warn() {
      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
        args[_key2] = arguments[_key2];
      }
      _log('warn', args.join(' '));
    },
    error: function error() {
      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 &lt; _len3; _key3++) {
        args[_key3] = arguments[_key3];
      }
      _log('error', args.join(' '));
    },
    debug: function debug() {
      for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 &lt; _len4; _key4++) {
        args[_key4] = arguments[_key4];
      }
      _log('debug', args.join(' '));
    },
    log: function log() {
      for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 &lt; _len5; _key5++) {
        args[_key5] = arguments[_key5];
      }
      _log('info', args.join(' '));
    }
  };

  
  
  var reportLogs = [];
  var reportExtraLogs = [];
  var sendUrl = '/mp/jsmonitor?#wechat_redirect';
  var monitor = {};
  monitor._reportOptions = {
    idkey: {}
  };
  function ObjWithoutProperty(source, exclude) {
    if (source === null) return {};
    var target = {};
    var sourceKeys = Object.keys(source);
    for (var i = 0; i &lt; sourceKeys.length; i++) {
      var key = sourceKeys[i];
      if (exclude.indexOf(key) &gt;= 0) continue;
      target[key] = source[key];
    }
    return target;
  }
  function formatDataToString(data) {
    var reportData = [];
    for (var key in data) {
      if (Object.prototype.hasOwnProperty.call(data, key)) {
        reportData.push(key + '=' + encodeURIComponent(data[key]));
      }
    }
    return reportData.join('&amp;');
  }
  monitor.getReportData = function (opt) {
    opt = opt || {};
    var idkey = monitor._reportOptions.idkey || {};
    var key = null;
    var reportData = {};
    var nextKey;
    try {
      for (key in idkey) {
        if (Object.prototype.hasOwnProperty.call(idkey, key) &amp;&amp; idkey[key]) {
          reportLogs.push(key + '_' + idkey[key]);
        }
      }
    } catch (e) {
      return false;
    }
    if (reportLogs.length === 0) {
      return false;
    }
    if (reportExtraLogs.length) {
      reportData.lc = reportExtraLogs.length;
      reportExtraLogs.forEach(function (extraLog, index) {
        reportData["log".concat(index)] = extraLog;
      });
    }
    try {
      var reportOptions = monitor._reportOptions;
      if (reportOptions !== null &amp;&amp; reportOptions !== undefined) {
        for (nextKey in reportOptions) {
          if (Object.prototype.hasOwnProperty.call(reportOptions, nextKey)) {
            reportData[nextKey] = reportOptions[nextKey];
          }
        }
      }
    } catch (e) {
      reportData = {};
    }
    reportData.idkey = reportLogs.join(';');
    reportData.t = Math.random();
    if (opt.remove !== false) {
      reportLogs = [];
      reportExtraLogs = [];
      monitor._reportOptions = {
        idkey: {}
      };
    }
    return reportData;
  };
  monitor.setLogs = function (opt) {
    var id = opt.id;
    var key = opt.key;
    var value = opt.value;
    var extraLog = opt.log;
    var others = ObjWithoutProperty(opt, ['id', 'key', 'value', 'log']);
    var idkey = monitor._reportOptions.idkey || {};
    var param = id + '_' + key;
    if (idkey[param]) {
      idkey[param] += value;
    } else {
      idkey[param] = value;
    }
    monitor._reportOptions.idkey = idkey;
    if (extraLog) {
      reportExtraLogs.push(extraLog);
    }
    try {
      if (others !== null &amp;&amp; others !== undefined) {
        for (var otherKey in others) {
          if (Object.prototype.hasOwnProperty.call(others, otherKey)) {
            monitor._reportOptions[otherKey] = others[otherKey];
          }
        }
      }
    } catch (e) {
      console.log(e);
    }
    return monitor;
  };
  monitor.setAvg = function (id, key, value) {
    var idkey = monitor._reportOptions.idkey || {};
    var param1 = id + '_' + key;
    var param2 = id + '_' + (key - 1);
    if (idkey[param1]) {
      idkey[param1] += value;
    } else {
      idkey[param1] = value;
    }
    if (idkey[param2]) {
      idkey[param2] += 1;
    } else {
      idkey[param2] = 1;
    }
    monitor._reportOptions.idkey = idkey;
    return monitor;
  };
  monitor.setSum = function (id, key) {
    var value = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : 1;
    var idkey = monitor._reportOptions.idkey;
    var param = id + '_' + key;
    if (idkey[param]) {
      idkey[param] += value;
    } else {
      idkey[param] = value;
    }
    monitor._reportOptions.idkey = idkey;
    return monitor;
  };
  monitor.send = function (async, ajax, origin) {
    if (async !== false) {
      async = true;
    }
    var data = monitor.getReportData();
    origin = origin || '';
    if (!data) {
      return;
    }
    if (!!ajax &amp;&amp; ajax instanceof Function) {
      ajax({
        url: origin + sendUrl,
        type: 'POST',
        mayAbort: true,
        data: data,
        async: async,
        timeout: 2000,
        dontReport: true
      });
    } else {
      new Image().src = origin + '/mp/jsmonitor?' + formatDataToString(data) + '#wechat_redirect';
    }
  };
  if (typeof window !== 'undefined' &amp;&amp; window.__monitor) {
    monitor = window.__monitor;
  } else {
    typeof window !== 'undefined' &amp;&amp; (window.__monitor = monitor);
  }
  var monitor$1 = monitor;

  
  var logList = [];
  var log = function log(msg) {
    logList.push(msg);
  };
  var printLog = function printLog() {
    for (var i = 0, len = logList.length; i &lt; len; ++i) {
      console.log("[RespType]".concat(logList[i]));
    }
  };
  var isArray = function isArray(val) {
    return Object.prototype.toString.call(val) === '[object Array]';
  };
  var getValueType = function getValueType(value) {
    if (isArray(value)) {
      return 'array';
    }
    return _typeof(value);
  };
  var parseRtDesc = function parseRtDesc(rtDesc, k) {
    var type = 'mix';
    var isRequired = false;
    var key = k;
    if (k) {
      var requireKeyWord = '_R';
      var pos = k.indexOf(requireKeyWord);
      var len = k.length - requireKeyWord.length;
      isRequired = pos !== -1 &amp;&amp; pos === len;
      key = isRequired ? k.substring(0, len) : k;
    }
    if (typeof rtDesc === 'string') {
      type = rtDesc;
    } else if (isArray(rtDesc)) {
      type = 'array';
    } else if (_typeof(rtDesc) === 'object') {
      type = 'object';
    }
    return {
      key: key,
      type: type,
      isRequired: isRequired
    };
  };
  var checkForArrayRtDesc = function checkForArrayRtDesc(arr, rtDescs) {
    if (!isArray(arr)) {
      return false;
    }
    for (var i = 0, len = arr.length; i &lt; len; ++i) {
      var value = arr[i];
      var rtDesc = void 0;
      var j = 0;
      var flag = rtDescs.length === 0;
      while (rtDesc = rtDescs[j++]) {
        if (checkForRtDesc(value, rtDesc)) {
          flag = true;
          break;
        }
      }
      if (!flag) {
        return false;
      }
    }
    return true;
  };
  var checkForStringRtDesc = function checkForStringRtDesc(value, rtDesc) {
    var valueType = getValueType(value);
    var desc = parseRtDesc(rtDesc);
    var ret = desc.type === valueType;
    if (!ret) {
      log("miss match type : ".concat(valueType, " !== ").concat(desc.type));
    }
    return ret;
  };
  var checkForObjectRtDesc = function checkForObjectRtDesc(json, rtDesc) {
    if (_typeof(json) !== 'object' || isArray(json)) {
      log('must be object');
      return false;
    }
    var rootJson = json;
    var nowCheckValue = json;
    for (var k in rtDesc) {
      if (rtDesc.hasOwnProperty(k)) {
        var nowCheckDesc = rtDesc[k];
        var desc = parseRtDesc(nowCheckDesc, k);
        var key = desc.key;
        nowCheckValue = rootJson[key];
        var valueType = getValueType(nowCheckValue);
        if (desc.isRequired &amp;&amp; nowCheckValue === undefined) {
          log("is required @key=".concat(key));
          return false;
        }
        if (nowCheckValue !== undefined) {
          if (valueType !== desc.type &amp;&amp; desc.type !== 'mix') {
            log("miss match type : ".concat(valueType, " !== ").concat(desc.type, " @key=").concat(key));
            return false;
          }
          if ((valueType === 'array' || valueType === 'object') &amp;&amp; desc.type !== 'mix') {
            if (!checkForRtDesc(nowCheckValue, nowCheckDesc)) {
              return false;
            }
          }
        }
      }
    }
    return true;
  };
  var checkForRtDesc = function checkForRtDesc(json, rtDesc) {
    if (isArray(rtDesc)) {
      return checkForArrayRtDesc(json, rtDesc);
    }
    if (_typeof(rtDesc) === 'object') {
      return checkForObjectRtDesc(json, rtDesc);
    }
    if (typeof rtDesc === 'string') {
      return checkForStringRtDesc(json, rtDesc);
    }
    return false;
  };
  var _check = function check(json, rtDescs) {
    if (typeof json === 'string') {
      try {
        json = eval("(".concat(json, ")"));
      } catch (e) {
        log('parse json error');
        return false;
      }
    }
    if (_typeof(json) !== 'object') {
      log('must be object');
      return false;
    }
    if (!isArray(rtDescs)) {
      rtDescs = [rtDescs];
    }
    var rtDesc;
    var i = 0;
    while (rtDesc = rtDescs[i++]) {
      if (checkForRtDesc(json, rtDesc)) {
        return true;
      }
    }
    return false;
  };
  var RespTypes = {
    check: function check(json, rtDesc) {
      logList = [];
      try {
        var ret = _check(json, rtDesc);
        if (!ret) {
          printLog();
        }
        return ret;
      } catch (e) {
        logList.push("[rtException]".concat(e.toString()));
        printLog();
        return false;
      }
    },
    getMsg: function getMsg() {
      return logList.join(';');
    }
  };

  var _a;
  var doc;
  var isAcrossOrigin = false;
  try {
    doc = (_a = window.top) === null || _a === void 0 ? void 0 : _a.window.document;
  } catch (e) {
    isAcrossOrigin = true;
  }
  var StatusTextMap = {
    200: 'OK',
    302: 'Found',
    400: 'Bad Request',
    500: 'Internal Server Error'
  };
  function getIsAcrossOrigin() {
    return isAcrossOrigin;
  }
  function networkStartLog(item) {
    var _a, _b, _c, _d, _e;
    console.log('[system]', "&lt; [request ".concat(item.requestType, "]"), item.url, item.method, item);
    var rdevRequestId;
    var requestTime = performance.now() / 1000;
    if ((_b = (_a = window.RemoteDevSdk) === null || _a === void 0 ? void 0 : _a.instance) === null || _b === void 0 ? void 0 : _b.Network) {
      try {
        var willBeSentOptions = {
          url: item.url,
          method: item.method,
          requestHeaders: Object.assign({}, item.requestHeader || {}, {
            RDEV_REQUEST_TYPE: item.requestType
          }),
          requestBody: item.postData,
          requestTime: requestTime
        };
        rdevRequestId = window.RemoteDevSdk.instance.Network.customRequestWillBeSent(willBeSentOptions);
      } catch (err) {}
    }
    if ((_c = window.vConsole) === null || _c === void 0 ? void 0 : _c.network) {
      try {
        var vconsoleNetworkItem = (_e = (_d = window.vConsole.network).add) === null || _e === void 0 ? void 0 : _e.call(_d, Object.assign({}, item, {
          startTime: Date.now(),
          endTime: Date.now(),
          status: 0,
          readyState: 2,
          response: ''
        }));
        vconsoleNetworkItem.rdevRequestId = rdevRequestId;
        vconsoleNetworkItem.requestTime = requestTime;
        return vconsoleNetworkItem;
      } catch (err) {}
    }
    if (rdevRequestId) {
      return Object.assign(Object.assign({}, item), {
        id: '__only_rdev_log__',
        rdevRequestId: rdevRequestId,
        requestTime: requestTime
      });
    }
    return Object.assign({}, item, {
      id: '__system_log__'
    });
  }
  function networkEndLog(item) {
    var _a, _b, _c, _d, _e;
    console.log('[system]', "&gt; [response ".concat(item.requestType, "]"), item.url, item.response, item);
    if (item.rdevRequestId &amp;&amp; ((_b = (_a = window.RemoteDevSdk) === null || _a === void 0 ? void 0 : _a.instance) === null || _b === void 0 ? void 0 : _b.Network) &amp;&amp; item.id !== '__system_log__') {
      try {
        var finishedOptions = {
          requestId: item.rdevRequestId,
          url: item.url,
          status: +(item.status || '500'),
          statusText: StatusTextMap[+(item.status || '500')] || 'Error',
          responseHeaders: {
            RDEV_RESPONSE_TYPE: item.requestType
          },
          responseBody: item.response,
          requestTime: item.requestTime || 0,
          duration: item.costTime || (item.endTime &amp;&amp; item.startTime ? item.endTime - item.startTime : performance.now() / 1000 - (item.requestTime || 0))
        };
        window.RemoteDevSdk.instance.Network.customRequestFinished(finishedOptions);
      } catch (err) {}
    }
    if (((_c = window.vConsole) === null || _c === void 0 ? void 0 : _c.network) &amp;&amp; item.id !== '__system_log__') {
      try {
        item.statusText = "".concat(item.status);
        item.responseSize = item.response.length;
        item.responseSizeText = "".concat(item.response.length);
        return (_e = (_d = window.vConsole.network).update) === null || _e === void 0 ? void 0 : _e.call(_d, item.id, Object.assign({}, item, {
          readyState: 4
        }));
      } catch (err) {}
    }
  }
  function reqType(obj, path) {
    return obj.url.indexOf(path) &gt; -1 &amp;&amp; obj.url.indexOf('action=') === -1 &amp;&amp; (!obj.data || !obj.data.action);
  }
  function findAjaxScopeByConfig(url, config) {
    var pathname = new URL(url, location.href).pathname || '';
    var scope = config[pathname.slice(1)];
    if (scope) {
      return scope;
    }
  }
  function getAjaxScope(ajaxUrl) {
    if (Url.getQuery('no_transfer', location.href) !== '1' &amp;&amp; mmversion.isWechat &amp;&amp; !mmversion.isInMiniProgram &amp;&amp; !mmversion.isWxWork &amp;&amp; !mmversion.isMpapp &amp;&amp; !isAcrossOrigin &amp;&amp; window.__ajaxTransferConfig &amp;&amp; _typeof(window.__ajaxTransferConfig) === 'object' &amp;&amp; (
    mmversion.isIOS &amp;&amp; mmversion.compareHexVersion('1800282F') || mmversion.isAndroid &amp;&amp; mmversion.compareHexVersion('28002234') || mmversion.isWindowsWechat &amp;&amp; mmversion.cpVersion('3.9.5', 1, true, 'windows') || mmversion.isMacWechat &amp;&amp; mmversion.cpVersion('3.8.4', 1, true, 'mac') || mmversion.isHarmonyWechat &amp;&amp; mmversion.compareHexVersion('0xf3100b00') &amp;&amp; !mmversion.compareHexVersion('0xf3100c00') || mmversion.compareHexVersion('0xf3800b00'))) {
      try {
        return findAjaxScopeByConfig(ajaxUrl, window.__ajaxTransferConfig);
      } catch (err) {
        
      }
    }
  }
  function getActionByData(data) {
    var _a, _b;
    if (_typeof(data) === 'object' &amp;&amp; !(data instanceof Blob)) {
      if (data.hasOwnProperty('data') &amp;&amp; typeof data.data === 'string') {
        try {
          var workedData = JSON.parse(data.data);
          return workedData.action || '';
        } catch (e) {}
      }
      return data.action || '';
    }
    if (typeof data === 'string') {
      return ((_b = (_a = data.split(/[?&amp;]/).find(function (x) {
        return x.indexOf('action=') &gt;= 0;
      })) === null || _a === void 0 ? void 0 : _a.split('=')) === null || _b === void 0 ? void 0 : _b[1]) || '';
    }
    return '';
  }

  var METHOD_ENUM = {
    GET: 0,
    POST: 1
  };
  var __moon_report = window.__moon_report || function () {};
  var MOON_AJAX_SUCCESS_OFFSET = 3;
  var MOON_AJAX_NETWORK_OFFSET = 4;
  var MOON_AJAX_ERROR_OFFSET = 5;
  var MOON_AJAX_TIMEOUT_OFFSET = 6;
  var MOON_AJAX_COMPLETE_OFFSET = 7;
  var LENGTH_LIMIT = 4096;
  function reportRtError(type, id, key, content) {
    var log = '';
    var prefix = type === 'rt' ? 'rtCheckError' : 'Ajax Length Limit';
    if (content === null || content === void 0 ? void 0 : content.length) {
      var loglen = 1000;
      var len = content.length;
      var lc = Math.ceil(len / loglen);
      log = ["&amp;lc=".concat(lc)];
      for (var i = 0; i &lt; lc; ++i) {
        log.push("&amp;log".concat(i, "=") + "[".concat(prefix, "][").concat(i, "]").concat(encodeURIComponent(content.substring(i * loglen, i * loglen + loglen))));
      }
      log = log.join('');
    }
    var data = "idkey=".concat(id, "_").concat(key, "_1").concat(log, "&amp;r=").concat(Math.random());
    var xmlobj = new XMLHttpRequest();
    xmlobj.open('POST', "".concat(location.protocol, "//").concat(location.host, "/mp/jsmonitor?"), true);
    xmlobj.setRequestHeader('cache-control', 'no-cache');
    xmlobj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    xmlobj.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    xmlobj.send(data);
    if (type === 'ajaxLen') {
      monitor$1.setLogs({
        id: id,
        key: key,
        value: 1,
        log: log
      });
    }
  }
  function reportRt(id, key, content) {
    reportRtError('rt', id, key, content);
  }
  function reportAjaxLength(id, key, content) {
    reportRtError('ajaxLen', id, key, content);
  }
  function setXhrHeader(xhr, type, opt) {
    if (opt.contentType) {
      xhr.setRequestHeader('Content-Type', opt.contentType);
    } else if (type === 'POST') {
      xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    }
    if (!opt.noXRequestedWidthHeader) {
      xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    }
  }
  function Ajax(obj) {
    var report36408 = typeof obj.report36408 === 'function' ? obj.report36408 : function () {};
    if (obj.usePb) {
      obj.type = 'POST';
      obj.data = {
        data: JSON.stringify(obj.data)
      };
    }
    var ajaxScope = getAjaxScope(obj.url);
    var type = (obj.type || 'GET').toUpperCase();
    var timer;
    var _url;
    if (obj.notJoinUrl) {
      _url = obj.url;
    } else {
      _url = Url.joinUrl(obj.url);
    }
    Url.joinUserArticleRole(_url, !!obj.notJoinUrl, function (url) {
      var urlObj = new URL(url, location.origin);
      if (obj.f === 'html') {
        url = url.replace('&amp;f=json', '');
      }
      var data = null;
      if (obj.data instanceof Blob) {
        data = obj.data;
      } else if (_typeof(obj.data) === 'object') {
        var d = obj.data;
        var ds = [];
        for (var k in d) {
          if (d.hasOwnProperty(k)) {
            ds.push("".concat(k, "=").concat(encodeURIComponent(d[k])));
          }
        }
        data = ds.join('&amp;');
      } else {
        data = typeof obj.data === 'string' ? obj.data : null;
      }
      var beginTs;
      var beforeReq = function beforeReq() {
        if (reqType(obj, '/mp/getappmsgext')) {
          window.startGetAppmsgExtTime = Date.now();
          Log.log('start get appmsgext, url: ', obj.url);
        }
        if (reqType(obj, '/mp/getappmsgad')) {
          window.startGetAppmsgAdTime = Date.now();
          Log.log('start get appmsgad, url: ', obj.url);
        }
        beginTs = Date.now();
      };
      var beforeResp = function beforeResp(xhr) {
        if (reqType(obj, '/mp/getappmsgext')) {
          window.receiveGetAppmsgExt = "".concat(xhr.status, "|").concat(Date.now());
          Log.log("receive appmsgext response, status: ".concat(xhr.status));
        }
        if (reqType(obj, '/mp/getappmsgad')) {
          window.receiveGetAppmsgAd = "".concat(xhr.status, "|").concat(Date.now());
          Log.log("receive appmsgad response, status: ".concat(xhr.status));
        }
        if (Math.random() &lt; 0.001 &amp;&amp; window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs) {
          try {
            var key = ajaxScope ? 'transfer' : 'xhr';
            var interval = 250;
            var time = Date.now() - beginTs;
            var range = Math.floor(time / interval) * interval;
            var pathname = new URL(obj.url, location.href).pathname || '';
            window.WX_BJ_REPORT.BadJs.report("".concat(key, "_perf:").concat(pathname), JSON.stringify({
              status: xhr.status,
              time: "[".concat(range, "-").concat(range + interval, ")")
            }), {
              mid: 'mmbizwap:ajaxtransfer',
              view: 'wap_business'
            });
          } catch (err) {}
        }
      };
      var handleRespSucc = function handleRespSucc(xhr, requestType) {
        var _a, _b, _c, _d;
        try {
          var responseText = xhr.responseText;
          var resp = responseText;
          if (obj.dataType === 'json') {
            try {
              if (JSON &amp;&amp; JSON.parse) {
                resp = JSON.parse(resp);
              } else {
                resp = eval("(".concat(resp, ")"));
                monitor$1.setSum(523105, 127, 1).send();
              }
              var rtId = obj.rtId;
              var rtKey = obj.rtKey || 0;
              var rtDesc = obj.rtDesc;
              if (rtId &amp;&amp; rtDesc &amp;&amp; RespTypes &amp;&amp; !RespTypes.check(resp, rtDesc)) {
                reportRt(+rtId, +rtKey, "".concat(RespTypes.getMsg(), "[detail]").concat(responseText, ";").concat(obj.url));
              }
              if (resp &amp;&amp; resp.base_resp &amp;&amp; ((_a = resp.base_resp) === null || _a === void 0 ? void 0 : _a.ret) !== 0 &amp;&amp; typeof window.WX_BJ_REPORT !== 'undefined' &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; Math.random() &lt; 0.001) {
                var reportUrl = url;
                if (url.indexOf('?') !== -1) {
                  reportUrl = url.substring(0, url.indexOf('?'));
                  if (Url.getQuery('action', url)) {
                    reportUrl = "".concat(reportUrl, "?action=").concat(Url.getQuery('action', url));
                  }
                }
                if (!((reportUrl === '/mp/getappmsgext' || reportUrl === '/mp/getappmsgad') &amp;&amp; typeof resp.base_resp.ret === 'undefined')) {
                  window.WX_BJ_REPORT.BadJs.report(reportUrl, "ret=".concat(resp.base_resp.ret), {
                    mid: window.PAGE_MID,
                    view: 'wap_retcode'
                  });
                }
              }
            } catch (e) {
              obj.error &amp;&amp; obj.error(xhr, {
                type: 1,
                error: e,
                status: xhr.status
              });
              if (!obj.dontReport) {
                report36408({
                  CgiPath: urlObj.pathname || '',
                  Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                  Query: urlObj.search || '',
                  PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                  Method: type || '',
                  RequestType: requestType || 0,
                  RetType: 1,
                  HttpCode: xhr.status || 0,
                  Ret: 0
                });
              }
              return;
            }
          }
          if (_typeof(resp) === 'object' &amp;&amp; ((_b = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _b === void 0 ? void 0 : _b.ret) !== 0) {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                Method: type || '',
                RequestType: requestType || 0,
                RetType: 4,
                HttpCode: xhr.status || 0,
                Ret: ((_c = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _c === void 0 ? void 0 : _c.ret) || 0
              });
            }
          } else {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                Method: type || '',
                RequestType: requestType || 0,
                RetType: 0,
                HttpCode: xhr.status || 0,
                Ret: ((_d = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _d === void 0 ? void 0 : _d.ret) || 0
              });
            }
          }
          obj.success &amp;&amp; obj.success(resp);
        } catch (e) {
          __moon_report({
            offset: MOON_AJAX_SUCCESS_OFFSET,
            e: e
          });
          throw e;
        }
      };
      var handleRespErr = function handleRespErr(xhr, error, requestType) {
        try {
          obj.error &amp;&amp; obj.error(xhr, {
            type: 2,
            error: error,
            status: xhr.status
          });
          if (!obj.dontReport) {
            report36408({
              CgiPath: urlObj.pathname || '',
              Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
              Query: urlObj.search || '',
              PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
              Method: type,
              RequestType: requestType,
              RetType: 2,
              HttpCode: xhr.status,
              Ret: 0
            });
          }
        } catch (e) {
          __moon_report({
            offset: MOON_AJAX_ERROR_OFFSET,
            e: e
          });
          throw e;
        }
      };
      var handleRespComplete = function handleRespComplete() {
        clearTimeout(timer);
        try {
          obj.complete &amp;&amp; obj.complete();
        } catch (e) {
          __moon_report({
            offset: MOON_AJAX_COMPLETE_OFFSET,
            e: e
          });
          throw e;
        }
        obj.complete = null;
      };
      var handleReqTimeout = function handleReqTimeout(xhr) {
        if (typeof obj.timeout !== 'undefined') {
          timer = setTimeout(function () {
            xhr.abort();
            try {
              obj.complete &amp;&amp; obj.complete();
            } catch (e) {
              __moon_report({
                offset: MOON_AJAX_COMPLETE_OFFSET,
                e: e
              });
              throw e;
            }
            obj.complete = null;
            __moon_report({
              offset: MOON_AJAX_TIMEOUT_OFFSET,
              log: "ajax_timeout_error: ".concat(url),
              e: ''
            });
          }, obj.timeout);
        }
      };
      var retryXhrFn = function retryXhrFn(res, isTimeout, reqLogItem) {
        var retryXhr = new XMLHttpRequest();
        try {
          retryXhr._noVConsole = true;
        } catch (err) {}
        retryXhr.open(type, url);
        retryXhr.onreadystatechange = function () {
          if (isTimeout) return;
          if (retryXhr.readyState === 3) {
            obj.received &amp;&amp; obj.received(retryXhr);
          }
          if (retryXhr.readyState === 4) {
            beforeResp(retryXhr);
            var retryStatus = retryXhr.status;
            if (retryStatus &gt;= 200 &amp;&amp; retryStatus &lt; 400) {
              handleRespSucc(retryXhr, 1);
            } else {
              handleRespErr(retryXhr, res, 1);
              window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; window.WX_BJ_REPORT.BadJs.report('req_failure', JSON.stringify({
                retryXhrStatus: retryStatus,
                transferRes: res
              }), {
                mid: 'mmbizwap:ajaxtransfer',
                view: 'wap_business'
              });
            }
            reqLogItem.status = retryStatus;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = retryXhr.responseText;
            handleRespComplete();
            networkEndLog(reqLogItem);
          }
        };
        setXhrHeader(retryXhr, type, obj);
        retryXhr.send(data);
      };
      if (ajaxScope &amp;&amp; !obj.pureHttp) {
        var header = {
          'User-Agent': navigator.userAgent,
          'Cookie': (window.__test_env__ ? 'uniproxy_route=1; ' : '') + document.cookie,
          'Referer': location.href
        };
        if (obj.contentType) {
          header['Content-Type'] = obj.contentType;
        } else if (type === 'POST') {
          header['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
        }
        if (!obj.noXRequestedWidthHeader) {
          header['X-Requested-With'] = 'XMLHttpRequest';
        }
        var reqUrl = new URL(url, location.href).href;
        var method = METHOD_ENUM[type] || 0;
        var params = Device.os.pc ? {
          url: reqUrl,
          req_json: data || '',
          scope: ajaxScope,
          webcgi_method: method,
          webcgi_header: Object.keys(header).map(function (headerItemKey) {
            return Device.os.Mac ? _defineProperty({}, headerItemKey, header[headerItemKey]) : {
              key: headerItemKey,
              value: header[headerItemKey]
            };
          }),
          cgi_type: 1
        } : {
          reqUrl: reqUrl,
          reqBody: data,
          scope: ajaxScope,
          method: method,
          header: header
        };
        var reqLogItem = networkStartLog({
          method: type,
          url: url,
          postData: obj.data || {},
          requestHeader: header,
          requestType: 'transfer',
          startTime: Date.now(),
          responseType: url.indexOf('f=json') &gt; 0 ? 'json' : undefined
        });
        var isTimeout = false;
        handleReqTimeout({
          abort: function abort() {
            isTimeout = true;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = 'timeout';
            networkEndLog(reqLogItem);
          }
        });
        Device.os.pc &amp;&amp; monitor$1.setSum(115849, 69, 1);
        JSAPI.invoke(Device.os.pc ? 'H5ExtTransfer' : 'webTransfer', params, function (res) {
          var _a, _b, _c, _d, _e, _f;
          if (isTimeout) return;
          var status = 400;
          var result = '';
          if (Device.os.pc) {
            try {
              var retFlag = res.base_resp.ret === 0 &amp;&amp; res.jsapi_resp.ret === 0 &amp;&amp; res.err_msg.indexOf(':ok') &gt; -1;
              var respJsonFlag = res.jsapi_resp.resp_json;
              status = retFlag &amp;&amp; respJsonFlag ? 200 : 400;
              result = res.jsapi_resp.resp_json;
            } catch (err) {
              console.error(err);
            }
          } else {
            status = res &amp;&amp; res.errCode * 1 === 0 &amp;&amp; typeof res.result === 'string' &amp;&amp; res.result ? 200 : 400;
            result = res.result;
          }
          try {
            Log.log("ajax transfer, status: ".concat(status, ", reqUrl: ").concat(reqUrl));
          } catch (err) {
            console.error(err);
          }
          if (status &gt;= 200 &amp;&amp; status &lt; 400) {
            obj.received &amp;&amp; obj.received(null);
            beforeResp({
              status: status
            });
            handleRespSucc({
              status: status,
              responseText: result
            }, 10);
            reqLogItem.status = status;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = result;
            handleRespComplete();
            networkEndLog(reqLogItem);
          } else if (window.__second_open__) {
            JSAPI.invoke('request', {
              url: reqUrl,
              method: type,
              data: data,
              header: header
            }, function (retryRes) {
              try {
                Log.log("ajax retry request, retryStatus: ".concat((retryRes === null || retryRes === void 0 ? void 0 : retryRes.statusCode) || '', ", reqUrl: ").concat(reqUrl));
              } catch (err) {
                console.error(err);
              }
              if (isTimeout) return;
              var retryStatus = retryRes.statusCode;
              obj.received &amp;&amp; obj.received(null);
              beforeResp({
                status: retryStatus
              });
              if (retryRes.err_msg.indexOf(':ok') &gt; -1 &amp;&amp; retryStatus &gt;= 200 &amp;&amp; retryStatus &lt; 400) {
                handleRespSucc({
                  status: retryStatus,
                  responseText: retryRes.data
                }, 20);
              } else {
                retryXhrFn(res, isTimeout, reqLogItem);
                handleRespErr({
                  status: retryStatus
                }, res, 20);
                window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; window.WX_BJ_REPORT.BadJs.report('req_failure_sec_open', JSON.stringify({
                  retryReqJsapiRes: retryRes,
                  transferRes: res,
                  url: reqUrl
                }), {
                  mid: 'mmbizwap:ajaxtransfer',
                  view: 'wap_business'
                });
              }
              reqLogItem.status = retryStatus;
              reqLogItem.endTime = Date.now();
              reqLogItem.response = retryRes.data;
              handleRespComplete();
              networkEndLog(reqLogItem);
            });
          } else {
            retryXhrFn(res, isTimeout, reqLogItem);
          }
          if (Device.os.pc) {
            if (!res.err_msg.includes(':ok')) {
              (_b = (_a = window.WX_BJ_REPORT) === null || _a === void 0 ? void 0 : _a.BadJs) === null || _b === void 0 ? void 0 : _b.report("pc transfer res no ok: ".concat(res.err_msg), params.url || '', {
                mid: window.PAGE_MID,
                _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
              });
            }
            try {
              if (res.jsapi_resp.resp_json &amp;&amp; JSON.parse(res.jsapi_resp.resp_json).base_resp.ret !== 0 &amp;&amp; JSON.parse(res.jsapi_resp.resp_json).base_resp.ret !== 190001 || res.base_resp.ret !== 0 || res.jsapi_resp.ret !== 0) {
                (_d = (_c = window.WX_BJ_REPORT) === null || _c === void 0 ? void 0 : _c.BadJs) === null || _d === void 0 ? void 0 : _d.report("pc transfer res invalid ret", params.url || '', {
                  mid: window.PAGE_MID,
                  _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
                });
              }
            } catch (err) {}
          } else {
            try {
              if (res.errCode !== 0) {
                (_f = (_e = window.WX_BJ_REPORT) === null || _e === void 0 ? void 0 : _e.BadJs) === null || _f === void 0 ? void 0 : _f.report("mobile transfer res invalid ret", params.url || '', {
                  mid: window.PAGE_MID,
                  _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
                });
              }
            } catch (err) {}
          }
        });
        beforeReq();
        return;
      }
      var xhr = new XMLHttpRequest();
      var mayAbort = !!obj.mayAbort;
      var async = typeof obj.async === 'undefined' ? true : obj.async;
      var _onreadystatechange = xhr.onreadystatechange;
      xhr.open(type, url, async);
      xhr.onreadystatechange = function () {
        if (typeof _onreadystatechange === 'function') {
          _onreadystatechange.apply(xhr);
        }
        if (xhr.readyState === 3) {
          obj.received &amp;&amp; obj.received(xhr);
        }
        if (xhr.readyState === 4) {
          beforeResp(xhr);
          xhr.onreadystatechange = null;
          var status = xhr.status;
          if (status &gt;= 200 &amp;&amp; status &lt; 400) {
            handleRespSucc(xhr, 1);
          } else {
            handleRespErr(xhr, 'status error', 1);
            if (!!status || !mayAbort) {
              var __ajaxtest = window.__ajaxtest || '0';
              __moon_report({
                offset: MOON_AJAX_NETWORK_OFFSET,
                log: "ajax_network_error[".concat(status, "][").concat(__ajaxtest, "]: ").concat(url, ";host:").concat(location.host),
                e: ''
              });
            }
          }
          handleRespComplete();
        }
      };
      setXhrHeader(xhr, type, obj);
      handleReqTimeout(xhr);
      try {
        xhr.send(data);
        try {
          if (url &amp;&amp; url.length &gt; LENGTH_LIMIT) {
            reportAjaxLength(27613, 17, "ajax get limit[length: ".concat(url.length, "]").concat(url.substring(0, 1024)));
          }
          if (data &amp;&amp; !(data instanceof Blob) &amp;&amp; data.length &gt; LENGTH_LIMIT) {
            reportAjaxLength(27613, 18, "ajax post limit[length: ".concat(data.length, "]").concat(data.substring(0, 1024)));
          }
          if (data &amp;&amp; data instanceof Blob &amp;&amp; data.size &gt; LENGTH_LIMIT) {
            reportAjaxLength(27613, 18, "ajax post limit[length: ".concat(data.size, "]blob"));
          }
        } catch (e) {
        }
      } catch (e) {
        obj.error &amp;&amp; obj.error(xhr, {
          type: 3,
          error: e,
          status: 0
        });
      }
      beforeReq();
    });
  }

  
  mmversion.isWindowsWechat &amp;&amp; mmversion.compareHexVersion('0xf2550000') || mmversion.isMacWechat &amp;&amp; mmversion.compareHexVersion('0xf2650000');

  
  var getBrandServiceType = function getBrandServiceType() {
    var serviceType = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : window.service_type;
    var _a, _b;
    var brandServiceType = 0;
    if (serviceType !== undefined) brandServiceType = serviceType + 1;
    if (((_b = (_a = window.cgiData) === null || _a === void 0 ? void 0 : _a.trans_appmsg_info) === null || _b === void 0 ? void 0 : _b.trans_type) * 1 === 1) brandServiceType = 3;
    return brandServiceType;
  };

  function setCurrentMpInfo(ifShow) {
    var supportNewTopBar = mmversion.isIOS &amp;&amp; mmversion.gtVersion('7.0.10', true) || mmversion.isAndroid &amp;&amp; mmversion.gtVersion('7.0.12', true);
    var supportLiveStatus = mmversion.isIOS &amp;&amp; mmversion.gtVersion('8.0.46', true) || mmversion.isAndroid &amp;&amp; mmversion.gtVersion('8.0.46', true);
    JSAPI.invoke('currentMpInfo', {
      userName: window.user_name,
      brandName: !!supportNewTopBar &amp;&amp; window.nickname === '' ? '未命名账号' : window.title,
      title: window.msg_title || '',
      brandIcon: window.hd_head_img.replace(/\/0$/, '/132'),
      itemShowType: window.item_show_type,
      isPaySubscribe: window.isPaySubscribe,
      topBarStyle: supportNewTopBar ? 1 : 0,
      topBarShowed: ifShow,
      disableShowFinderLiveTopBar: !ifShow &amp;&amp; supportLiveStatus ? 1 : 0,
      brandServiceType: getBrandServiceType()
    }, function () {});
  }
  function AjaxWx(obj) {
    var report36408 = typeof obj.report36408 === 'function' ? obj.report36408 : function () {};
    obj.url += obj.url.indexOf('?') === -1 ? '?fasttmplajax=1' : '&amp;fasttmplajax=1';
    if (getAjaxScope(obj.url)) {
      Ajax(obj);
      return;
    }
    if (obj.usePb) {
      obj.type = 'POST';
      obj.data = {
        data: JSON.stringify(obj.data)
      };
    }
    if (!/^(http:\/\/|https:\/\/|\/\/)/.test(obj.url)) {
      obj.url = "https://mp.weixin.qq.com/".concat(obj.url.replace(/^\//, ''));
    } else if (/^\/\//.test(obj.url)) {
      obj.url = "https:".concat(obj.url);
    }
    if (obj.f !== 'html' &amp;&amp; (obj.url.indexOf('?f=json') === -1 || obj.url.indexOf('&amp;f=json') === -1)) {
      obj.url += '&amp;f=json';
    }
    if (!obj.notJoinUrl &amp;&amp; obj.f !== 'html') {
      obj.url = Url.joinUrl(obj.url);
    }
    Url.joinUserArticleRole(obj.url, !!obj.notJoinUrl, function (url) {
      obj.url = url;
      var urlObj = new URL(url, location.origin);
      var data = null;
      if (_typeof(obj.data) === 'object') {
        var d = obj.data;
        var ds = [];
        for (var k in d) {
          if (d.hasOwnProperty(k)) {
            ds.push("".concat(k, "=").concat(encodeURIComponent(d[k])));
          }
        }
        data = ds.join('&amp;');
      } else {
        data = typeof obj.data === 'string' ? obj.data : null;
      }
      var header = {
        Cookie: document.cookie,
        referer: location.href
      };
      if (obj.contentType) {
        header['Content-Type'] = obj.contentType;
      } else if ((obj.type || 'GET').toUpperCase() === 'POST') {
        header['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
      }
      var reqLogItem = networkStartLog({
        method: obj.type || 'GET',
        url: obj.url,
        postData: obj.data || {},
        requestHeader: header,
        requestType: 'jsapi',
        startTime: Date.now()
      });
      var retryTime = 1;
      var jsapiRequest = function jsapiRequest(obj, data) {
        return JSAPI.invoke('request', {
          url: obj.url,
          method: obj.type,
          data: data,
          header: header
        }, function (res) {
          var _a, _b, _c, _d, _e, _f;
          if (res.err_msg.indexOf(':ok') &gt; -1 &amp;&amp; (!res.statusCode || res.statusCode &gt;= 200 &amp;&amp; res.statusCode &lt; 400)) {
            if (reqType(obj, '/mp/getappmsgext')) {
              window.receiveGetAppmsgExt = "".concat(res.statusCode, "|").concat(Date.now());
            }
            if (reqType(obj, '/mp/getappmsgad')) {
              window.receiveGetAppmsgAd = "".concat(res.statusCode, "|").concat(Date.now());
            }
            if (retryTime === 1) {
              obj.received &amp;&amp; obj.received(null);
            }
            var resData = {};
            if (res.data) {
              try {
                if (obj.dataType === 'json') {
                  resData = JSON.parse(res.data);
                } else {
                  resData = res.data;
                }
                if (resData &amp;&amp; resData.base_resp &amp;&amp; ((_a = resData.base_resp) === null || _a === void 0 ? void 0 : _a.ret) !== 0 &amp;&amp; typeof window.WX_BJ_REPORT !== 'undefined' &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; Math.random() &lt; 0.001) {
                  var reportUrl = obj.url;
                  if (obj.url.indexOf('?') !== -1) {
                    reportUrl = obj.url.substring(0, obj.url.indexOf('?'));
                    if (Url.getQuery('action', obj.url)) {
                      reportUrl = "".concat(reportUrl, "?action=").concat(Url.getQuery('action', obj.url));
                    }
                  }
                  if (!((reportUrl === '/mp/getappmsgext' || reportUrl === '/mp/getappmsgad') &amp;&amp; typeof resData.base_resp.ret === 'undefined')) {
                    window.WX_BJ_REPORT.BadJs.report(reportUrl, "ret=".concat(resData.base_resp.ret), {
                      mid: window.PAGE_MID,
                      view: 'wap_retcode'
                    });
                  }
                }
              } catch (e) {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 1,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_b = resData === null || resData === void 0 ? void 0 : resData.base_resp) === null || _b === void 0 ? void 0 : _b.ret) || 0
                  });
                }
                console.error(e);
                obj.error &amp;&amp; obj.error(null, {
                  type: 1,
                  error: e,
                  status: res.statusCode
                });
                obj.complete &amp;&amp; obj.complete();
                reqLogItem.endTime = Date.now();
                reqLogItem.response = res;
                networkEndLog(reqLogItem);
                return;
              }
            }
            var tmpResData = {};
            try {
              tmpResData = JSON.parse(res.data);
            } catch (e) {}
            if (tmpResData &amp;&amp; tmpResData.base_resp &amp;&amp; tmpResData.base_resp.ret === -3 &amp;&amp; retryTime &lt; 2 &amp;&amp; (mmversion.isIOS || mmversion.isAndroid &amp;&amp; mmversion.getInner() &gt; '27000600')) {
              if (!obj.dontReport) {
                report36408({
                  CgiPath: urlObj.pathname || '',
                  Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                  Query: urlObj.search || '',
                  PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                  Method: obj.type || '',
                  RequestType: 20,
                  RetType: 1,
                  HttpCode: res.statusCode || 0,
                  Ret: ((_c = resData === null || resData === void 0 ? void 0 : resData.base_resp) === null || _c === void 0 ? void 0 : _c.ret) || 0
                });
              }
              var _retryTime = retryTime++;
              JSAPI.invoke('updatePageAuth', {}, function (res) {
                console.log('[skeleton] updatePageAuth', res);
                monitor$1.setSum(112287, 3, 1);
                if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf(':ok') &gt; -1) {
                  window.top.pass_ticket = encodeURIComponent(Url.getQuery('pass_ticket', res.fullUrl).html(false).replace(/\s/g, '+'));
                  if (obj.pass_ticket) {
                    obj.pass_ticket = window.top.pass_ticket;
                  }
                  console.warn('[skeleton] updatePageAuth resetTopbar');
                  var supportNewTopBar = mmversion.isIOS &amp;&amp; mmversion.gtVersion('7.0.10', true);
                  var showBottomBar = !!window.is_login;
                  if (window.top.item_show_type === '0' &amp;&amp; supportNewTopBar) {
                    var top = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop || 0;
                    setCurrentMpInfo(top &gt; 40 &amp;&amp; !showBottomBar);
                  }
                  try {
                    obj.url = Url.addParam(obj.url, 'retry', _retryTime, true);
                  } catch (err) {
                    console.error(err);
                  }
                  jsapiRequest(obj, data);
                  monitor$1.setSum(112287, 4, 1);
                } else {
                  obj.success &amp;&amp; obj.success(resData);
                  obj.complete &amp;&amp; obj.complete();
                  if (mmversion.isIOS) {
                    monitor$1.setSum(112287, 35, 1);
                  } else {
                    monitor$1.setSum(112287, 36, 1);
                  }
                  reqLogItem.status = 200;
                  reqLogItem.endTime = Date.now();
                  reqLogItem.response = resData;
                  networkEndLog(reqLogItem);
                }
              });
            } else {
              if (((_d = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _d === void 0 ? void 0 : _d.ret) !== 0) {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 4,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_e = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _e === void 0 ? void 0 : _e.ret) || 0
                  });
                }
              } else {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 0,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_f = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _f === void 0 ? void 0 : _f.ret) || 0
                  });
                }
              }
              obj.success &amp;&amp; obj.success(resData);
              obj.complete &amp;&amp; obj.complete();
              reqLogItem.status = 200;
              reqLogItem.endTime = Date.now();
              reqLogItem.response = resData;
              networkEndLog(reqLogItem);
            }
          } else if (res.err_msg.indexOf('no permission') &gt; -1 || !mmversion.isOnlyWechat) {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                Method: obj.type || '',
                RequestType: 20,
                RetType: 1,
                HttpCode: res.statusCode || 0,
                Ret: 0
              });
            }
            Ajax(obj);
            if (res.err_msg.indexOf('no permission') &gt; -1) {
              console.warn('[JSAPI Request] No permission');
              monitor$1.setSum(112287, 31, 1);
            }
            reqLogItem.status = 302;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = res;
            networkEndLog(reqLogItem);
          } else {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                Method: obj.type || '',
                RequestType: 20,
                RetType: 2,
                HttpCode: res.statusCode || 0,
                Ret: 0
              });
            }
            obj.error &amp;&amp; obj.error(null, {
              type: 3,
              error: res,
              status: 0
            });
            obj.complete &amp;&amp; obj.complete();
            monitor$1.setSum(112287, 32, 1);
            var sample = 0.001;
            if (Math.random() &lt; sample) {
              var msg = "request: ".concat(JSON.stringify(obj.type), " ").concat(JSON.stringify(obj.url), " ;;;; cookie: ").concat(JSON.stringify(document.cookie), " ;;;; data: ").concat(JSON.stringify(data), " ;;;; resp: ").concat(JSON.stringify(res));
              if (window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs) {
                window.WX_BJ_REPORT.BadJs.report('ajax_wx_request_error', msg, {
                  mid: 'mmbizwap:Monitor'
                });
              }
            }
            reqLogItem.status = 400;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = res;
            networkEndLog(reqLogItem);
          }
        });
      };
      if (reqType(obj, '/mp/getappmsgext')) {
        window.startGetAppmsgExtTime = Date.now();
      }
      if (reqType(obj, '/mp/getappmsgad')) {
        window.startGetAppmsgAdTime = Date.now();
      }
      jsapiRequest(obj, data);
    });
  }

  function _regeneratorRuntime() {  _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  var AjaxRouter = function () {
    var _ref = _asyncToGenerator( _regeneratorRuntime().mark(function _callee(obj) {
      return _regeneratorRuntime().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            if (!window.__secPageAuthPromise) {
              _context.next = 3;
              break;
            }
            _context.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            if (!(!mmversion.isWxWork &amp;&amp; (window.__second_open__ || !getIsAcrossOrigin() &amp;&amp; top.window.__second_open__) &amp;&amp; window.__is_page_auth_return__ &amp;&amp; !obj.pureHttp)) {
              _context.next = 5;
              break;
            }
            return _context.abrupt("return", AjaxWx(obj));
          case 5:
            return _context.abrupt("return", Ajax(obj));
          case 6:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return function AjaxRouter(_x) {
      return _ref.apply(this, arguments);
    };
  }();

  var isx5 = navigator.userAgent.indexOf('TBS/') !== -1;
  var getDataFunc = [];
  var reportData = [];
  
  var specificData = {};
  function joinUrl(url) {
    var obj = {};
    if (typeof window.uin !== 'undefined') {
      obj.uin = window.uin;
    }
    if (typeof window.key !== 'undefined') {
      obj.key = window.key;
    }
    if (typeof window.pass_ticket !== 'undefined') {
      obj.pass_ticket = window.pass_ticket;
    }
    if (typeof window.wxtoken !== 'undefined') {
      obj.wxtoken = window.wxtoken;
    }
    if (typeof window.devicetype !== 'undefined') {
      obj.devicetype = window.devicetype;
    }
    if (typeof window.clientversion !== 'undefined') {
      obj.clientversion = window.clientversion;
    }
    if (typeof window.appmsg_token !== 'undefined') {
      obj.appmsg_token = window.appmsg_token;
    } else if (url.indexOf('advertisement_report') &gt; -1) {
      new Image().src = "".concat(location.protocol, "//mp.weixin.qq.com/mp/jsmonitor?idkey=68064_13_1&amp;r=").concat(Math.random());
    }
    obj.x5 = isx5 ? '1' : '0';
    obj.f = 'json';
    return Url.join(url, obj);
  }
  function isObj(obj) {
    return obj &amp;&amp; _typeof(obj) === 'object';
  }
  function assign(target, source) {
    if (isObj(target) &amp;&amp; isObj(source)) {
      for (var key in source) {
        if (Object.prototype.hasOwnProperty.call(source, key)) {
          target[key] = source[key];
        }
      }
    }
  }
  function assembleReportData(initiative) {
    var leaveReportLog = [];
    leaveReportLog.push({
      content: "[LeaveReport] specificData keys: ".concat(Object.keys(specificData)),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] specificData keys: ".concat(Object.keys(specificData)));
    console.log("[LeaveReport] specificData keys: ".concat(Object.keys(specificData)));
    var allReportData = {};
    for (var reportField in specificData) {
      if (!allReportData[reportField]) {
        allReportData[reportField] = {};
      }
      for (var i = 0; i &lt; specificData[reportField].length; i++) {
        var param = specificData[reportField][i];
        if (typeof param === 'function') {
          try {
            assign(allReportData[reportField], param(initiative));
          } catch (err) {
            leaveReportLog.push({
              content: "[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)),
              timestamp: Date.now()
            });
            Log.error("[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)));
            console.error("[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)));
          }
        } else if (isObj(param)) {
          assign(allReportData[reportField], param);
        }
      }
    }
    leaveReportLog.push({
      content: "[LeaveReport] reportData.length: ".concat(reportData.length),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] reportData.length: ".concat(reportData.length));
    console.log("[LeaveReport] reportData.length: ".concat(reportData.length));
    leaveReportLog.push({
      content: "[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length));
    console.log("[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length));
    for (var _i = 0; _i &lt; getDataFunc.length; _i++) {
      try {
        var data = getDataFunc[_i](initiative);
        if (isObj(data)) {
          reportData.push(data);
        }
      } catch (err) {
        leaveReportLog.push({
          content: "[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)),
          timestamp: Date.now()
        });
        Log.error("[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)));
        console.error("[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)));
      }
    }
    for (var _i2 = 0; _i2 &lt; reportData.length; _i2++) {
      if (reportData[_i2].reportUrl) {
        reportData[_i2].reportUrl = joinUrl(reportData[_i2].reportUrl);
      }
    }
    allReportData.data = {
      'requestList': reportData
    };
    leaveReportLog.push({
      content: "[LeaveReport] final reportData.length: ".concat(reportData.length, ", data=").concat(JSON.stringify(reportData)),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] final reportData.length: ".concat(reportData.length));
    console.log("[LeaveReport] final reportData.length: ".concat(reportData.length));
    allReportData.info = leaveReportLog;
    return allReportData;
  }
  function addReport(param) {
    if (typeof param === 'function') {
      getDataFunc.push(param);
    } else if (isObj(param)) {
      reportData.push(param);
    }
  }
  
  function addSpecificReport(reportField, param) {
    if (!specificData[reportField]) {
      specificData[reportField] = [];
    }
    specificData[reportField].push(param);
  }
  
  function reportNow(callback) {
    var allReportData = assembleReportData(true);
    JSAPI.invoke('handleMPPageAction', {
      action: 'reportByLeaveForMPGateway',
      reportData: allReportData
    }, function (res) {
      if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf(':ok') !== -1) {
        getDataFunc = [];
        reportData = [];
        specificData = {};
        typeof callback === 'function' &amp;&amp; callback(res);
      } else {
        getDataFunc = [];
        reportData = [];
        var len = allReportData.data.requestList.length;
        allReportData.data.requestList.forEach(function (req) {
          if (req.reportUrl) {
            AjaxRouter({
              type: req.method || 'GET',
              url: req.reportUrl,
              data: req.reportData,
              async: false,
              success: function success(resp) {
                if (--len &lt; 0) {
                  typeof callback === 'function' &amp;&amp; callback({
                    err_msg: 'handleMPPageAction:ok',
                    fallback: true,
                    resp: resp
                  });
                }
              },
              error: function error(xhr, err) {
                if (--len &lt; 0) {
                  typeof callback === 'function' &amp;&amp; callback({
                    err_msg: 'handleMPPageAction:fail',
                    fallback: true,
                    err: err
                  });
                }
              }
            });
          }
        });
      }
    });
  }
  var leaveReport = {
    reportNow: reportNow,
    addReport: addReport,
    addSpecificReport: addSpecificReport
  };
  var _leaveReport = (function () {
    var doc = {};
    var isCrossOrigin = false;
    try {
      doc = top.window.document;
    } catch (e) {
      isCrossOrigin = true;
    }
    if (!isCrossOrigin &amp;&amp; top.window.__leaveReport) {
      return top.window.__leaveReport;
    }
    if (window.__leaveReport) {
      return window.__leaveReport;
    }
    JSAPI.on('reportOnLeaveForMP', function () {
      return assembleReportData(false);
    });
    return window.__leaveReport = leaveReport;
  })();

  var getReportJson = function getReportJson(logId, rawData) {
    var data = JSON.parse(JSON.stringify(rawData));
    data.log_id = Number(logId);
    data.TimeStamp = Math.round(Date.now() / 1000);
    console.log('[comm_report] reportjson: ', data);
    return JSON.stringify(data);
  };
  var getSuccessHandler = function getSuccessHandler(logId, data, opt) {
    return function (res) {
      if (res &amp;&amp; res.err_code !== 0) {
        console.warn("[comm_report] report ".concat(logId, " fail: "), res.err_msg, data);
      }
      if (typeof opt.success === 'function') {
        opt.success(res);
      }
    };
  };
  var getErrorHandler = function getErrorHandler(logId, data, opt) {
    return function (xhr, info) {
      console.error("[comm_report] report ".concat(logId, " error: "), info, data);
      if (typeof opt.error === 'function') {
        opt.error(xhr, info);
      }
    };
  };
  var batchReportDataArr = [];
  var blackLogId = [25587, 18832, 28208, 25574, 29139, 10945];
  var BATCH_SIZE = 4;
  var BATCH_TIME = 1000;
  var getRepeatedReportJson = function getRepeatedReportJson() {
    if (!batchReportDataArr || !batchReportDataArr.length) return false;
    var reportData = {
      count: 0
    };
    reportData.count = batchReportDataArr.length;
    batchReportDataArr.forEach(function (data, index) {
      reportData["reportjson".concat(index)] = data;
    });
    batchReportDataArr = [];
    console.log('[reportData]: ', reportData);
    return reportData;
  };
  var timeOutId;
  function batchReport() {
    if (!batchReportDataArr || !batchReportDataArr.length) return;
    var repeatedReportJson = getRepeatedReportJson();
    if (!repeatedReportJson) return;
    AjaxRouter({
      type: 'POST',
      dataType: 'json',
      url: '/mp/wapcommreport?action=batch_report',
      data: repeatedReportJson,
      dontReport: true,
      success: function success(res) {
        if (res &amp;&amp; res.err_code) {
          console.warn("[comm_report] batch report fail: ", res.err_msg, batchReportDataArr);
        }
      },
      error: function error(xhr, info) {
        console.error("[comm_report] batch report error: ", info, batchReportDataArr);
      }
    });
  }
  function batchReportThrottle(logId, rawData) {
    var reportJsonData = getReportJson(logId, rawData);
    if (!reportJsonData) return;
    batchReportDataArr.push(reportJsonData);
    if (batchReportDataArr.length &gt;= BATCH_SIZE) {
      batchReport();
    } else {
      if (!timeOutId) {
        timeOutId = setTimeout(function () {
          batchReport();
          clearTimeout(timeOutId);
          timeOutId = null;
        }, BATCH_TIME);
      }
    }
  }
  _leaveReport.addReport(function () {
    var repeatedReportJson = getRepeatedReportJson();
    if (!repeatedReportJson) return false;
    var reportData = [];
    for (var _i = 0, _Object$entries = Object.entries(repeatedReportJson); _i &lt; _Object$entries.length; _i++) {
      var _Object_i = _slicedToArray(_Object$entries[_i], 2),
        key = _Object_i[0],
        value = _Object_i[1];
      reportData.push("".concat(key, "=").concat(encodeURIComponent(value)));
    }
    return {
      reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport?action=batch_report',
      reportData: reportData.join('&amp;'),
      method: 'POST'
    };
  });
  var WapReport = {
    report: function report(logId, rawData, rawOpt) {
      var opt = rawOpt || {};
      if (!opt.realTime &amp;&amp; !blackLogId.includes(logId)) {
        batchReportThrottle(logId, rawData);
      } else {
        AjaxRouter({
          type: 'POST',
          dataType: 'json',
          url: '/mp/wapcommreport',
          data: {
            reportjson: getReportJson(logId, rawData)
          },
          async: opt.async,
          success: getSuccessHandler(logId, rawData, opt),
          error: getErrorHandler(logId, rawData, opt)
        });
      }
    },
    leaveReport: function leaveReport(logId, rawData) {
      _leaveReport.addReport(function () {
        var data = typeof rawData === 'function' ? rawData() : rawData;
        if (!data) {
          return false;
        }
        return {
          reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport',
          reportData: "reportjson=".concat(encodeURIComponent(getReportJson(logId, data))),
          method: 'POST'
        };
      });
    },
    reportByBeacon: function reportByBeacon(logId, rawData) {
      try {
        if (!Device.os.android &amp;&amp; !Device.os.ios) {
          var data = typeof rawData === 'function' ? rawData() : rawData;
          if (!data) {
            return false;
          }
          var url = '/mp/wapcommreport';
          var reportJsonData = encodeURIComponent(getReportJson(logId, data));
          console.log("reportByBeacon", JSON.stringify(reportJsonData));
          navigator.sendBeacon(Url.joinUrl(url), "reportjson=".concat(reportJsonData));
        } else {
          _leaveReport.addReport(function () {
            var data = typeof rawData === 'function' ? rawData() : rawData;
            if (!data) {
              return false;
            }
            return {
              reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport',
              reportData: "reportjson=".concat(encodeURIComponent(getReportJson(logId, data))),
              method: 'POST'
            };
          });
        }
      } catch (error) {
        console.log(error);
      }
    }
  };

  
  var ua = navigator.userAgent;
  var is_android = /(Android)/i.test(ua);
  var g = {
    x: 0,
    y: 0,
    isPc: /(WindowsNT)|(Windows NT)|(Macintosh)|Linux|UnifiedPCOHOSWechat/i.test(navigator.userAgent) &amp;&amp; !is_android,
    isWp: /Windows\sPhone/i.test(ua),
    tsTime: -1
  };
  var prefixes = ['webkit', 'moz', 'ms', 'o'];
  if (isUseTap()) {
    on(document, "touchstart", function (e) {
      if (e.touches.length === 1) {
        var st = e.touches[0];
        g.x = st.clientX;
        g.y = st.clientY;
        g.tsTime = +new Date();
      } else {
        g.tsTime = -1;
      }
    });
  }
  var scrolling;
  function isScrolling() {
    if (scrolling &amp;&amp; new Date().getTime() - scrolling &lt; 200) return true;
    return false;
  }
  window.addEventListener('scroll', function () {
    scrolling = new Date().getTime();
  }, true);
  function isUseTap() {
    if (g.isPc || g.isWp) {
      return false;
    }
    return true;
  }
  
  function tap(el, cb, flag, className) {
    if (!isUseTap()) {
      on(el, "click", className, cb, flag);
    } else {
      cb.tap_handler = function (e) {
        if (g.tsTime == -1 || +new Date() - g.tsTime &gt; 200 || isScrolling()) {
          return;
        }
        var st = e.changedTouches[0];
        if (Math.abs(g.y - st.clientY) &lt;= 5 &amp;&amp; Math.abs(g.x - st.clientX) &lt;= 5) {
          return cb.call(this, e);
          
        }
      };
      on(el, "touchend", className, cb.tap_handler, flag);
    }
  }
  
  function longtap(el, cb, _flag, className, cancelCb) {
    var self = this;
    var timeOutEvent;
    if (g.isPc || g.isWp) {
      var mousedown = false;
      var x;
      var y;
      var triggerLongClick;
      on(el, 'mousedown', className, function (e) {
        triggerLongClick = false;
        mousedown = true;
        x = e.clientX;
        y = e.clientY;
        timeOutEvent = setTimeout(function () {
          triggerLongClick = true;
          timeOutEvent = undefined;
          cb.call(this, e);
        }, 500);
        e.preventDefault();
      });
      on(el, 'mousemove', className, function (e) {
        if (!mousedown) return;
        if (timeOutEvent &amp;&amp; (Math.abs(y - e.clientY) &gt; 5 || Math.abs(x - e.clientX) &gt; 5)) {
          clearTimeout(timeOutEvent);
          timeOutEvent = undefined;
          typeof cancelCb === 'function' &amp;&amp; cancelCb.call(self, e);
        }
      });
      on(el, 'mouseup', className, function () {
        mousedown = false;
        clearTimeout(timeOutEvent);
      });
      on(el, 'click', className, function () {
        if (triggerLongClick) return false;
      });
    } else {
      on(el, 'touchstart', className, function (e) {
        e.touches.length === 1 &amp;&amp; (timeOutEvent = setTimeout(function () {
          timeOutEvent = undefined;
          cb.call(self, e);
        }, 500));
      });
      on(el, 'touchmove', className, function (e) {
        if (!timeOutEvent) return;
        var st = e.changedTouches[0];
        if (Math.abs(g.y - st.clientY) &gt; 5 || Math.abs(g.x - st.clientX) &gt; 5) {
          clearTimeout(timeOutEvent);
          timeOutEvent = undefined;
          typeof cancelCb === 'function' &amp;&amp; cancelCb.call(self, e);
        }
      });
      on(el, 'touchend', className, function (e) {
        if (timeOutEvent) {
          clearTimeout(timeOutEvent);
          timeOutEvent = undefined;
        } else {
          e.preventDefault();
        }
      }, true);
    }
  }
  function doubletap(el, cb) {
    var _this = this;
    var __lastTouchVideoTs = 0;
    var realCb = function realCb(e) {
      if (Date.now() - __lastTouchVideoTs &lt; 300) {
        cb.call(_this, e);
      }
      __lastTouchVideoTs = Date.now();
    };
    tap(el, realCb);
    return function () {
      return off(el, 'touchend', realCb);
    };
  }
  function matches(ele, className) {
    if (!ele || !className || ele.nodeType != ele.ELEMENT_NODE) return false;
    var matchesSelector = ele.webkitMatchesSelector || ele.msMatchesSelector || ele.matchesSelector;
    if (matchesSelector) return matchesSelector.call(ele, className);
    className = className.substr(1);
    return ele.className.indexOf(className) &gt; -1;
  }
  function closest(target, className, context) {
    while (target &amp;&amp; !matches(target, className)) {
      target = target !== context &amp;&amp; target.nodeType !== target.DOCUMENT_NODE &amp;&amp; target.parentNode;
    }
    return target;
  }
  function on(el, type, className, cb, flag, extra) {
    var callback;
    var handler;
    var delegator;
    if (!el) return;
    if (typeof className === 'function') {
      extra = flag;
      flag = cb;
      cb = className;
      className = '';
    }
    if (typeof className !== 'string') {
      className = '';
    }
    if (el == window &amp;&amp; type == "load" &amp;&amp; /complete|loaded/.test(document.readyState)) {
      return cb({
        type: "load"
      });
    }
    if (type == 'tap') return tap(el, cb, flag, className);
    if (type === 'longtap') return longtap(el, cb, flag, className, extra);
    if (type == "unload" &amp;&amp; "onpagehide" in window) {
      type = "pagehide";
    }
    callback = function callback(e) {
      var ret = cb(e);
      if (ret === false) {
        e.stopPropagation &amp;&amp; e.stopPropagation();
        e.preventDefault &amp;&amp; e.preventDefault();
      }
      return ret;
    };
    if (className &amp;&amp; className.charAt(0) == '.') delegator = function delegator(e) {
      var target = e.target || e.srcElement;
      var match = closest(target, className, el);
      if (match) {
        e.delegatedTarget = match;
        return callback(e);
      }
    };
    handler = delegator || callback;
    cb["".concat(type, "_handler")] = handler;
    if (el.addEventListener) {
      el.addEventListener(type, handler, !!flag);
      return;
    }
    if (el.attachEvent) {
      el.attachEvent("on".concat(type), handler, !!flag);
      return;
    }
  }
  function off(el, type, cb, flag) {
    if (!el) return;
    var handlerType = type;
    var handler;
    if (handlerType == 'tap') {
      if (isUseTap()) {
        handlerType = 'touchend';
        handler = cb.tap_handler &amp;&amp; cb.tap_handler.touchend_handler ? cb.tap_handler.touchend_handler : cb;
      } else {
        handlerType = 'click';
      }
    }
    if (!handler) {
      handler = cb["".concat(handlerType, "_handler")] || cb;
    }
    if (el.removeEventListener) {
      el.removeEventListener(handlerType, handler, !!flag);
      return;
    }
    if (el.detachEvent) {
      el.detachEvent("on".concat(handlerType), handler, !!flag);
      return;
    }
    if (handlerType == 'tap' &amp;&amp; isUseTap()) {
      if (cb.tap_handler) {
        cb.tap_handler.touchend_handler = null;
      }
      cb.tap_handler = null;
    } else {
      cb["".concat(handlerType, "_handler")] = null;
    }
  }
  function getHiddenProp() {
    if ('hidden' in document) {
      return 'hidden';
    }
    for (var i = 0; i &lt; prefixes.length; i++) {
      if ("".concat(prefixes[i], "Hidden") in document) {
        return "".concat(prefixes[i], "Hidden");
      }
    }
    return null;
  }
  function getVisibilityState() {
    if ('visibilityState' in document) {
      return 'visibilityState';
    }
    for (var i = 0; i &lt; prefixes.length; i++) {
      if ("".concat(prefixes[i], "VisibilityState") in document) {
        return "".concat(prefixes[i], "VisibilityState");
      }
    }
    return null;
  }
  function bindVisibilityChangeEvt(cb) {
    var visProp = getHiddenProp();
    if (visProp) {
      var evtname = "".concat(visProp.replace(/[H|h]idden/, ''), "visibilitychange");
      var handler = function handler() {
        var isShow = document[getVisibilityState()] !== 'hidden';
        typeof cb === 'function' &amp;&amp; cb(isShow);
      };
      document.addEventListener(evtname, handler, false);
      return function () {
        document.removeEventListener(evtname, handler, false);
      };
    }
    return function () {};
  }
  var DomEvent = {
    on: on,
    off: off,
    tap: tap,
    longtap: longtap,
    bindVisibilityChangeEvt: bindVisibilityChangeEvt,
    doubletap: doubletap
  };

  var html = function html(_str, encode) {
    if (!_str) return '';
    var replace = ['&amp;#96;', '`', '&amp;#39;', '\'', '&amp;quot;', '"', '&amp;nbsp;', ' ', '&amp;gt;', '&gt;', '&amp;lt;', '&lt;', '&amp;yen;', '¥', '&amp;amp;', '&amp;', '&amp;#60;', '&lt;', '&amp;#62;', '&gt;'];
    
    var replaceReverse = ['&amp;', '&amp;amp;', '¥', '&amp;yen;', '&lt;', '&amp;lt;', '&gt;', '&amp;gt;', ' ', '&amp;nbsp;', '"', '&amp;quot;', '\'', '&amp;#39;', '`', '&amp;#96;'];
    var str = _str;
    var target;
    if (encode) {
      target = replaceReverse;
    } else {
      target = replace;
    }
    for (var i = 0; i &lt; target.length; i += 2) {
      str = str.replace(new RegExp(target[i], 'g'), target[i + 1]);
    }
    return str;
  };
  var htmlLite = function htmlLite(_str, encode) {
    if (!_str) return '';
    var replace = ['&amp;#96;', '`', '&amp;#39;', '\'', '&amp;quot;', '"', '&amp;gt;', '&gt;', '&amp;lt;', '&lt;', '&amp;amp;', '&amp;'];
    
    var replaceReverse = ['&amp;', '&amp;amp;', '&lt;', '&amp;lt;', '&gt;', '&amp;gt;', '"', '&amp;quot;', '\'', '&amp;#39;', '`', '&amp;#96;'];
    var str = _str;
    var target;
    if (encode) {
      target = replaceReverse;
    } else {
      target = replace;
    }
    for (var i = 0; i &lt; target.length; i += 2) {
      str = str.replace(new RegExp(target[i], 'g'), target[i + 1]);
    }
    return str;
  };
  var htmlEncode = function htmlEncode(str) {
    return html(str, true);
  };
  var htmlDecode = function htmlDecode(str) {
    return html(str, false);
  };
  var htmlEncodeLite = function htmlEncodeLite(str) {
    return htmlLite(str, true);
  };
  var htmlDecodeLite = function htmlDecodeLite(str) {
    return htmlLite(str, false);
  };
  String.prototype.html = function (encode) {
    return html(this.toString(), encode);
  };
  String.prototype.htmlEncode = function () {
    return htmlEncode(this.toString());
  };
  String.prototype.htmlDecode = function () {
    return htmlDecode(this.toString());
  };
  String.prototype.htmlLite = function (encode) {
    return htmlLite(this.toString(), encode);
  };
  String.prototype.htmlEncodeLite = function () {
    return htmlEncodeLite(this.toString());
  };
  String.prototype.htmlDecodeLite = function () {
    return htmlDecodeLite(this.toString());
  };

  function getCommonReportData() {
    return {
      Referer: location.href,
      UserAgent: navigator.userAgent,
      Protocol: location.protocol || '',
      Origin: location.host || ''
    };
  }
  var report36408 = function report36408(data) {
    WapReport.report(36408, Object.assign(Object.assign({}, data), getCommonReportData()));
  };

  
  var ajax = function ajax(obj) {
    obj.report36408 = report36408;
    AjaxRouter(obj);
  };

  
  var timer = null;
  var jsmonitorReport = {
    setSum: function setSum(id, key, value) {
      throw new Error('Function not implemented.');
    },
    setAvg: function setAvg(id, key, value) {
      throw new Error('Function not implemented.');
    },
    setLogs: function setLogs(opt) {
      throw new Error('Function not implemented.');
    },
    send: function send(async) {
      throw new Error('Function not implemented.');
    }
  };
  window.__monitor_unload_has_done__ = false;
  jsmonitorReport.setSum = function (id, key, value) {
    monitor$1.setSum(id, key, value);
    return jsmonitorReport;
  };
  jsmonitorReport.setAvg = function (id, key, value) {
    monitor$1.setAvg(id, key, value);
    return jsmonitorReport;
  };
  jsmonitorReport.setLogs = function (opt) {
    monitor$1.setLogs(opt);
    return jsmonitorReport;
  };
  jsmonitorReport.send = function (async) {
    if (async !== false) {
      async = true;
    }
    monitor$1.send(async, ajax);
    return jsmonitorReport;
  };
  function reportInterval(fn, delay) {
    timer = window.setTimeout(function () {
      fn();
      reportInterval(fn, delay);
    }, delay);
  }
  reportInterval(function () {
    jsmonitorReport.send();
  }, 1 * 1000);
  window.addEventListener('unload', function () {
    if (window.__monitor_report_has_done__) return;
    window.__ajaxtest = '2';
    if (timer) {
      window.clearTimeout(timer);
      timer = null;
    }
    jsmonitorReport.send(false);
    window.__monitor_unload_has_done__ = true;
  }, false);
  if (window.__jsmonitorReport) {
    jsmonitorReport = window.__jsmonitorReport;
  } else {
    window.__jsmonitorReport = jsmonitorReport;
  }
  var jsmonitorReport$1 = jsmonitorReport;

  
  try {
    if (typeof parent.window.hasListenMpPageAction === 'undefined') {
      parent.window.hasListenMpPageAction = false;
    }
    if (typeof parent.window.hasListenStateChange === 'undefined') {
      parent.window.hasListenStateChange = false;
    }
  } catch (error) {
  }
  var mpPageActionCb = [];
  var stateChangeCb = [];
  var HistoryLS = new LS('history4secondopen');
  var HistoryKey = 'from';
  var hasListenPopstateForSecOpenReload = false;
  
  var webComptStatus = {
    status: 'loading'
  };
  var webComptInitCb = [];
  var directionHandlerId = 0;
  var directionChangeHandlersMap = {};
  function isNativePage() {
    return Url.getQuery('isNativePage') === '1' || Url.getQuery('isNativePage') === '2';
  }
  
  function debounce(func) {
    var wait = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 50;
    var timeout;
    return function () {
      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key &lt; _len; _key++) {
        args[_key] = arguments[_key];
      }
      var context = this;
      var later = function later() {
        timeout = null;
        func.apply(context, args);
      };
      if (timeout) {
        return;
      }
      timeout = setTimeout(later, wait);
    };
  }
  
  function checkIntersect(rectA, rectB) {
    return !(rectB.right &lt; rectA.left || rectB.left &gt; rectA.right || rectB.bottom &lt; rectA.top || rectB.top &gt; rectA.bottom);
  }
  var utils = {
    isNativePage: isNativePage,
    isNewNativePage: function isNewNativePage() {
      return Url.getQuery('isNativePage') === '2';
    },
    isOldNativePage: function isOldNativePage() {
      return Url.getQuery('isNativePage') === '1';
    },
    __useWcSlPlayer: false,
    isWcSlPage: function isWcSlPage() {
      return utils.__useWcSlPlayer;
    },
    getPlayerType: function getPlayerType() {
      if (isNativePage()) {
        return 2;
      }
      return 1;
    },
    getParam: function getParam(key) {
      if (!key) return null;
      var m = location.href.match(new RegExp("(\\?|&amp;)".concat(key, "=([^&amp;]+)")));
      return m ? m[2] : null;
    },
    
    insertAfter: function insertAfter(newElement, targetElement) {
      var parentElement = targetElement.parentNode;
      if (parentElement.lastChild === targetElement) {
        parentElement.appendChild(newElement);
      } else {
        parentElement.insertBefore(newElement, targetElement.nextSibling);
      }
    },
    getInnerHeight: function getInnerHeight() {
      var innerHeightFromApp = window.getInnerHeight &amp;&amp; window.getInnerHeight();
      return innerHeightFromApp || window.innerHeight || document.documentElement.clientHeight;
    },
    getInnerWidth: function getInnerWidth() {
      return window.innerWidth || document.documentElement.clientWidth;
    },
    getScrollTop: function getScrollTop() {
      return document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
    },
    getDocumentHeight: function getDocumentHeight() {
      return document.body.scrollHeight;
    },
    getElementActualTop: function getElementActualTop(element) {
      var elRect = element.getBoundingClientRect();
      var actualTop = elRect.top + this.getScrollTop();
      return actualTop;
    },
    getElementTop: function getElementTop(element) {
      return element.getBoundingClientRect().top;
    },
    getElementHeight: function getElementHeight(element) {
      return element.getBoundingClientRect().height;
    },
    getOrientation: function getOrientation() {
      var _a, _b;
      return (_b = (_a = window.screen.orientation) === null || _a === void 0 ? void 0 : _a.angle) !== null &amp;&amp; _b !== void 0 ? _b : window.orientation;
    },
    getDirection: function getDirection() {
      var orientation = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : utils.getOrientation();
      return (mmversion.isIPad ? [90, 270] : [0, 180]).indexOf(orientation) &gt; -1 ? 'vertical' : 'horizontal';
    },
    listenDirectionChange: function listenDirectionChange(cb) {
      var _a, _b;
      if ((_b = (_a = window.screen) === null || _a === void 0 ? void 0 : _a.orientation) === null || _b === void 0 ? void 0 : _b.addEventListener) {
        directionChangeHandlersMap[directionHandlerId] = function (e) {
          cb === null || cb === void 0 ? void 0 : cb(utils.getDirection(e.target.angle), e.target.angle);
        };
        window.screen.orientation.addEventListener('change', directionChangeHandlersMap[directionHandlerId]);
      } else {
        directionChangeHandlersMap[directionHandlerId] = function () {
          var orientation = utils.getOrientation();
          cb === null || cb === void 0 ? void 0 : cb(utils.getDirection(orientation), orientation);
        };
        window.addEventListener('orientationchange', directionChangeHandlersMap[directionHandlerId]);
      }
      return directionHandlerId++;
    },
    unlistenDirectionChange: function unlistenDirectionChange(handlerId) {
      var _a, _b;
      if ((_b = (_a = window.screen) === null || _a === void 0 ? void 0 : _a.orientation) === null || _b === void 0 ? void 0 : _b.removeEventListener) {
        window.screen.orientation.removeEventListener('change', directionChangeHandlersMap[handlerId]);
      } else {
        window.removeEventListener('orientationchange', directionChangeHandlersMap[handlerId]);
      }
      delete directionChangeHandlersMap[handlerId];
    },
    isScrollEnd: function isScrollEnd(threshold) {
      return this.getScrollTop() + this.getInnerHeight() + threshold &gt;= this.getDocumentHeight();
    },
    
    listenStateChange: function listenStateChange() {
      var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
      stateChangeCb.push(opt.cb);
      try {
        if (parent.window.hasListenStateChange) {
          return;
        }
      } catch (error) {
      }
      JSAPI.on('activity:state_change', function (res) {
        stateChangeCb.forEach(function (callback) {
          callback(res);
        });
      });
      try {
        parent.window.hasListenStateChange = true;
      } catch (error) {
      }
    },
    
    listenMpPageAction: function listenMpPageAction(cb) {
      mpPageActionCb.push(cb);
      try {
        if (parent.window.hasListenMpPageAction) {
          return;
        }
      } catch (error) {
      }
      JSAPI.on('onMPPageAction', function (res) {
        mpPageActionCb.forEach(function (callback) {
          callback(res);
        });
      });
      try {
        parent.window.hasListenMpPageAction = true;
      } catch (error) {
      }
    },
    getIosMainVersion: function getIosMainVersion() {
      var versionInfo = navigator.userAgent.toLowerCase().match(/cpu iphone os (.*?) like mac os/);
      return versionInfo &amp;&amp; versionInfo[1] &amp;&amp; parseInt(versionInfo[1].split('_')[0], 10);
    },
    
    report120081: function report120081(key, times) {
      jsmonitorReport$1.setSum(120081, key, times);
      jsmonitorReport$1.send();
    },
    loadNewPageKeepingHistoryStackIfSecOpen: function loadNewPageKeepingHistoryStackIfSecOpen(url) {
      if (window.__second_open__ &amp;&amp; typeof url === 'string' &amp;&amp; /^https?:\/\/mp.weixin.qq.com\//.test(url)) {
        HistoryLS.set(HistoryKey, location.href, Date.now() + 10000);
      }
      location.href = "".concat(url.replace(/#.*$/, ''), "#wechat_redirect");
    },
    initNewPageHistoryStackFromSecOpen: function initNewPageHistoryStackFromSecOpen() {
      var fromUrl = HistoryLS.get(HistoryKey);
      if (fromUrl &amp;&amp; typeof fromUrl === 'string' &amp;&amp; /^https?:\/\/mp.weixin.qq.com\//.test(fromUrl)) {
        HistoryLS.remove(HistoryKey);
        if (history &amp;&amp; history.replaceState &amp;&amp; history.pushState) {
          var curUrl = location.href;
          try {
            history.replaceState({
              __mock_secopen_history_stack_reload__: 1
            }, '', fromUrl);
            history.pushState({
              __mock_secopen_history_stack_reload__: 1
            }, '', curUrl);
          } catch (e) {
            console.error('[initNewPageHistoryStackFromSecOpen]', e);
          }
        }
      }
      if (!hasListenPopstateForSecOpenReload) {
        hasListenPopstateForSecOpenReload = true;
        window.addEventListener('popstate', function (e) {
          if (e.state &amp;&amp; e.state.__mock_secopen_history_stack_reload__ === 1) {
            location.reload();
          }
        });
      }
    },
    initWebCompt: function initWebCompt(webComptList, callback) {
      var flushCb = function flushCb() {
        while (webComptInitCb.length) {
          var cb = webComptInitCb.shift();
          cb(webComptStatus);
        }
      };
      if (mmversion.isWechat &amp;&amp; !mmversion.isInMiniProgram &amp;&amp; (Device.os.iphone &amp;&amp; Device.os.getNumVersion() &gt;= 10.3 &amp;&amp; (mmversion.gtVersion('7.0.14', 1) &amp;&amp; Device.os.getNumVersion() &lt; 15 || mmversion.gtVersion('8.0.7')) || Device.os.android &amp;&amp; mmversion.gtVersion('7.0.15', 1) &amp;&amp; Device.os.getNumVersion() &gt;= 5 || Device.os.harmony &amp;&amp; mmversion.compareHexVersion('0xf3800c00'))) {
        document.addEventListener('WeixinOpenTagsReady', function () {
          webComptStatus = {
            status: 'ready'
          };
          flushCb();
        });
        document.addEventListener('WeixinOpenTagsError', function (e) {
          webComptStatus = {
            status: 'error',
            error: e &amp;&amp; e.detail &amp;&amp; e.detail.errMsg
          };
          flushCb();
        });
        JSAPI.invoke('handleMPPageAction', {
          action: 'wxConfig',
          appid: 'wxmpfakeid',
          webComptList: webComptList,
          url: location.href
        }, function (res) {
          console.log('wx config web compt result', webComptList, res);
          Log.info('wx config web compt result', webComptList, JSON.stringify(res));
          if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf(':ok') === -1) {
            webComptStatus = {
              status: 'error',
              error: res.err_msg
            };
            flushCb();
          }
          if (typeof callback === 'function') {
            callback(res);
          }
        });
      } else {
        var res = {
          err_msg: 'handleMPPageAction:fail_webcompt unsupported'
        };
        console.log('wx config web compt result', webComptList, res);
        Log.info('wx config web compt result', webComptList, JSON.stringify(res));
        webComptStatus = {
          status: 'error',
          error: res.err_msg
        };
        flushCb();
        if (typeof callback === 'function') {
          callback(res);
        }
      }
    },
    initWebComptForWcSlVideoSharePage: function initWebComptForWcSlVideoSharePage() {
      var initAfterConfWxOpen = function initAfterConfWxOpen(res) {
        if (res.err_msg.indexOf(':ok') !== -1) {
          utils.initNewPageHistoryStackFromSecOpen();
        } else {
          window.__failConfigWxOpen = true;
          Log.info('failed to config wxopen: res not ok');
          jsmonitorReport$1.setSum(221515, Device.os.iphone ? 7 : 8, 1);
          window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; res &amp;&amp; window.WX_BJ_REPORT.BadJs.report('WcSlPlayer:CfgError', (window.__second_open__ ? 'secopen:' : 'h5:') + JSON.stringify(res));
        }
      };
      if (mmversion.isAndroid) {
        var clientVer = mmversion.getInner();
        if (clientVer &gt; '27001037' &amp;&amp; clientVer &lt; '27001060' || clientVer &gt;= '27001100') {
          utils.initWebCompt(['wxOpen' ], initAfterConfWxOpen);
        } else if (mmversion.gtVersion('7.0.15', 1)) {
          window.__failConfigWxOpen = true;
          Log.info('failed to config wxopen: android version check failed (gt 7.0.15)');
        } else {
          window.__failConfigWxOpen = true;
          Log.info('failed to config wxopen: android version check failed');
        }
      } else if (mmversion.isIOS) {
        if (mmversion.gtVersion('7.0.15', 1)) {
          utils.initWebCompt(['wxOpen' ], initAfterConfWxOpen);
        } else {
          window.__failConfigWxOpen = true;
          Log.info('failed to config wxopen: ios version check failed');
        }
      } else {
        window.__failConfigWxOpen = true;
      }
    },
    
    getWebComptStatus: function getWebComptStatus(cb) {
      if (typeof cb !== 'function') {
        return webComptStatus;
      }
      if (webComptStatus.status === 'loading') {
        webComptInitCb.push(cb);
      } else {
        cb(webComptStatus);
      }
      return true;
    },
    
    supportImmersiveMode: mmversion.isWechat &amp;&amp; !mmversion.isInMiniProgram &amp;&amp; (mmversion.isIOS &amp;&amp; mmversion.gtVersion('8.0.9', 1) || mmversion.isAndroid &amp;&amp; mmversion.gtVersion('8.0.9', 1)),
    debounce: debounce,
    
    bindDebounceScrollEvent: function bindDebounceScrollEvent(fn) {
      var scrollEle = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : window;
      var wait = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : 50;
      var useCapture = arguments.length &gt; 3 &amp;&amp; arguments[3] !== undefined ? arguments[3] : false;
      var debounceFn = debounce(fn, wait);
      DomEvent.on(scrollEle, 'scroll', '', debounceFn, useCapture);
    },
    checkIntersect: checkIntersect,
    
    clickRange: function clickRange(evt) {
      var selection = window.getSelection();
      var range = selection.rangeCount &amp;&amp; selection.getRangeAt(0);
      if (!range || range.collapsed || !range.intersectsNode(evt.target)) {
        return false;
      }
      var rangeClientRects = range.getClientRects();
      var targetLineHeight = parseFloat(getComputedStyle(evt.target).lineHeight, 10);
      var targetRect = evt.target.getBoundingClientRect();
      for (var i in rangeClientRects) {
        if (rangeClientRects.hasOwnProperty(i)) {
          var rect = rangeClientRects[i];
          var extraHeight = targetLineHeight ? (targetLineHeight - rect.height) / 2 : 0;
          if (rect.width &amp;&amp; checkIntersect(rect, targetRect) &amp;&amp; evt.clientX &gt;= rect.left &amp;&amp; evt.clientX &lt;= rect.right &amp;&amp; evt.clientY &gt;= rect.top - extraHeight &amp;&amp; evt.clientY &lt;= rect.bottom + extraHeight) {
            return true;
          }
        }
      }
    },
    once: function once(fn) {
      return function () {
        if (fn) {
          for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
            args[_key2] = arguments[_key2];
          }
          var ret = fn.apply(this, args);
          fn = null;
          return ret;
        }
      };
    },
    getRealHeightOfIOSNativePanel: function getRealHeightOfIOSNativePanel(oriHeight, callback) {
      if (mmversion.isIOS) {
        JSAPI.invoke('handleDeviceInfo', {
          action: 'getUIParams'
        }, function (res) {
          var realHeight = oriHeight;
          if (res.isShowBottomBar) {
            realHeight -= res.bottomBarHeight;
          }
          realHeight = Math.max(realHeight, 0);
          typeof callback === 'function' &amp;&amp; callback(realHeight);
        });
      } else {
        typeof callback === 'function' &amp;&amp; callback(oriHeight);
      }
    }
  };

  mmversion.isIOS &amp;&amp; mmversion.compareHexVersion('18003C31') || mmversion.isAndroid &amp;&amp; mmversion.compareHexVersion('28003E11');
  mmversion.isIOS &amp;&amp; mmversion.compareHexVersion('18003622') || mmversion.isAndroid &amp;&amp; mmversion.compareHexVersion('2800353C') || Device.os.unifiedPC &amp;&amp; mmversion.cpVersion('4.0.6', 1, true, 'unifiedpc') &amp;&amp; getOriginExpVal('unified_share_card_style_pc') !== '0'
;

  var e = {
      d: function d(t, r) {
        for (var i in r) e.o(r, i) &amp;&amp; !e.o(t, i) &amp;&amp; Object.defineProperty(t, i, {
          enumerable: !0,
          get: r[i]
        });
      },
      o: function o(e, t) {
        return Object.prototype.hasOwnProperty.call(e, t);
      }
    },
    t = {};
  e.d(t, {
    A: function A() {
      return s;
    },
    Q: function Q() {
      return a;
    }
  });
  var r = function r(e, t) {
      var r = {};
      for (var i in e) Object.prototype.hasOwnProperty.call(e, i) &amp;&amp; t.indexOf(i) &lt; 0 &amp;&amp; (r[i] = e[i]);
      if (null != e &amp;&amp; "function" == typeof Object.getOwnPropertySymbols) {
        var n = 0;
        for (i = Object.getOwnPropertySymbols(e); n &lt; i.length; n++) t.indexOf(i[n]) &lt; 0 &amp;&amp; Object.prototype.propertyIsEnumerable.call(e, i[n]) &amp;&amp; (r[i[n]] = e[i[n]]);
      }
      return r;
    },
    i = function i(e, t, r) {
      if (r || 2 === arguments.length) for (var i, n = 0, o = t.length; n &lt; o; n++) !i &amp;&amp; n in t || (i || (i = Array.prototype.slice.call(t, 0, n)), i[n] = t[n]);
      return e.concat(i || Array.prototype.slice.call(t));
    },
    n = function n(e) {
      if ("object" == _typeof(e) &amp;&amp; e) return e;
      if ("string" == typeof e) try {
        return JSON.parse(e);
      } catch (e) {
        return;
      }
    },
    o = function o(e) {
      return 173 === e ? 95 : 166 === e ? 147 : [205, 207, 206].includes(e) ? 135 : 78;
    };
  function a(e) {
    var t,
      a,
      s = e.thirdExtParam,
      d = void 0 === s ? "" : s,
      m = e.kvItems,
      p = void 0 === m ? [] : m,
      l = e.sessionKvItems,
      c = void 0 === l ? [] : l,
      u = e.scene,
      x = void 0 === u ? -1 : u,
      y = (e.query, e.parentType),
      h = r(e, ["thirdExtParam", "kvItems", "sessionKvItems", "scene", "query", "parentType"]),
      g = {
        crossExtReqParams: [],
        sessionExtReqParams: [],
        originThirdExtParam: ""
      };
    try {
      if (console.warn("mpThirdExtParamToSearchExtParam init extReqParams:", g), !d) throw new Error("mpThirdExtParamToSearchExtParam thirdExtParam 不存在");
      var _ = JSON.parse(decodeURIComponent(d));
      if (_) {
        if (g.originThirdExtParam = JSON.stringify({
          s1sKeywordsData: null == _ ? void 0 : _.s1sKeywordsData,
          mp_bizuin_msgid_msgidx: null == _ ? void 0 : _.mp_bizuin_msgid_msgidx,
          mp_finger_search_query_pos: null == _ ? void 0 : _.mp_finger_search_query_pos
        }), null == _ ? void 0 : _.s1sKeywordsData) {
          var v = (_ || {}).s1sKeywordsData,
            P = void 0 === v ? {} : v,
            f = P.enterId,
            E = void 0 === f ? 0 : f,
            S = P.s1sContextInfo,
            q = void 0 === S ? "{}" : S,
            T = P.s1sStatInfo,
            I = void 0 === T ? "{}" : T,
            R = P.sessionId,
            O = void 0 === R ? "" : R,
            b = P.postype,
            C = n(decodeURIComponent(q)) || {},
            k = n(decodeURIComponent(I)) || {},
            w = k.bizuin,
            j = void 0 === w ? 0 : w,
            z = k.msgid,
            J = void 0 === z ? 0 : z,
            N = k.msgidx,
            V = void 0 === N ? 0 : N,
            A = C.mixerCommonContext,
            D = void 0 === A ? "" : A,
            U = (C.isNeedUpdateGPTInfo, C.S1SPageType);
          if ([2, 5].includes(void 0 === U ? 1 : U)) return {
            thirdExtParam: d
          };
          g.crossExtReqParams.push({
            key: "parentSearchID",
            textValue: [y || o(x), E || k.enterId, "", "".concat(j, "_").concat(J, "_").concat(V), encodeURIComponent(JSON.stringify({
              enterId: E || k.enterId,
              sessionId: O,
              s1sStatInfo: k,
              postype: b,
              mpBizuinMsgidMsgidx: (null == _ ? void 0 : _.mp_bizuin_msgid_msgidx) || "".concat(j, "_").concat(J, "_").concat(V),
              mpFingerSearchQueryPos: null == _ ? void 0 : _.mp_finger_search_query_pos,
              docid: null == h ? void 0 : h.docid
            }))].join(":").replace(/,/g, ";")
          }), D &amp;&amp; g.crossExtReqParams.push({
            key: "mixerCommonContext",
            textValue: D
          });
        } else g.crossExtReqParams.push({
          key: "parentSearchID",
          textValue: [y || o(x), 0, "", "", encodeURIComponent(JSON.stringify({
            mpBizuinMsgidMsgidx: null == _ ? void 0 : _.mp_bizuin_msgid_msgidx,
            mpFingerSearchQueryPos: null == _ ? void 0 : _.mp_finger_search_query_pos,
            docid: null == h ? void 0 : h.docid
          }))].join(":").replace(/,/g, ";")
        });
        (null == _ ? void 0 : _.mpSelectedContent) &amp;&amp; g.sessionExtReqParams.push({
          key: "mpSelectedContent",
          textValue: _.mpSelectedContent
        }), (null == _ ? void 0 : _.mpSelectActionType) &amp;&amp; g.sessionExtReqParams.push({
          key: "mpSelectActionType",
          textValue: String(_.mpSelectActionType)
        }), (null == _ ? void 0 : _.mp_bizuin_msgid_msgidx) &amp;&amp; g.sessionExtReqParams.push({
          key: "mpBizuinMsgidMsgidx",
          textValue: _.mp_bizuin_msgid_msgidx
        }), (null == _ ? void 0 : _.mp_finger_search_query_context) &amp;&amp; g.sessionExtReqParams.push({
          key: "mpFingerSearchQueryContext",
          textValue: _.mp_finger_search_query_context
        }), (null == _ ? void 0 : _.mp_finger_search_query_pos) &amp;&amp; g.sessionExtReqParams.push({
          key: "mpFingerSearchQueryPos",
          textValue: String(_.mp_finger_search_query_pos)
        }), !(null == _ ? void 0 : _.aiH5Link) &amp;&amp; !(null == _ ? void 0 : _.aiH5Title) || [206].includes(x) || g.sessionExtReqParams.push({
          key: "aiSearchUploadInfo",
          textValue: JSON.stringify({
            uploadFiles: [{
              fileType: 4,
              fileContentDetail: {
                mpContentDetail: {
                  title: null == _ ? void 0 : _.aiH5Title
                }
              },
              url: String(null == _ ? void 0 : _.aiH5Link)
            }],
            contentType: 4,
            allowedContentType: 4
          })
        });
      }
      return (null == p ? void 0 : p.length) &amp;&amp; (t = g.crossExtReqParams).push.apply(t, p), (null == c ? void 0 : c.length) &amp;&amp; (a = g.sessionExtReqParams).push.apply(a, c), h &amp;&amp; Object.keys(h).length &amp;&amp; (g.otherJsApiParams = h), console.warn("mpThirdExtParamToSearchExtParam extReqParams:", g), {
        thirdExtParam: encodeURIComponent(JSON.stringify(g)),
        extReqParams: JSON.stringify(i(i([], g.crossExtReqParams, !0), g.sessionExtReqParams, !0))
      };
    } catch (e) {
      return console.error("mpThirdExtParamToSearchExtParam err:", e), {
        thirdExtParam: d
      };
    }
  }
  var s = {
    mpThirdExtParamToSearchExtParam: a
  };
  t.A;
    t.Q;

  utils.getInnerHeight();
  utils.getInnerWidth();
  (function () {
      var style = document.createElement('style');
      style.innerHTML = '*:not(input):not(textarea):not([contenteditable="true"]) { -webkit-touch-callout: none !important; -webkit-user-select: none !important; -khtml-user-select: none !important; -moz-user-select: none !important; -ms-user-select: none !important; user-select: none !important; }';
      return {
        enableSelect: function enableSelect() {
          document.head.contains(style) &amp;&amp; document.head.removeChild(style);
        },
        disableSelect: function disableSelect() {
          Log.log('disableSelect');
          document.head.appendChild(style);
        }
      };
    })();
  var uuid = function uuid() {
    return ((1 + Math.random()) * 0x10000 | 0).toString(16).substring(1);
  };

  var env = null;
  var getEnv = function getEnv(key, updateEnv) {
    if (window.__wxWebEnv &amp;&amp; (!env || updateEnv)) {
      try {
        env = window.__wxWebEnv &amp;&amp; typeof window.__wxWebEnv.getEnv === 'function' &amp;&amp; window.__wxWebEnv.getEnv();
        env = env ? JSON.parse(env) : null;
      } catch (error) {
        env = null;
        console.error('get env error', error);
      }
    }
    return env ? env[key] : undefined;
  };
  var fontLS = new LS('font-scale');
  function parseExp(key) {
    var expList = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : [];
    var frontend_exp_list = [];
    if (expList &amp;&amp; expList.length &gt; 0) {
      frontend_exp_list = expList;
    } else if (window.frontend_exp_list) {
      frontend_exp_list = window.frontend_exp_list;
    } else {
      try {
        var frontend_exp_str = '';
        frontend_exp_list = JSON.parse('[' + frontend_exp_str + ']');
      } catch (e) {
        console.log('============error', e);
      }
    }
    var res = frontend_exp_list.reduce(function (res, item) {
      if (item.key === key) res = item.value === '1';
      return res;
    }, false);
    return res;
  }
  function setAutospace() {
    if (Device.os.ios &amp;&amp; Device.cpVersion('18.4', -1, true)) {
      document.body.classList.add('autospace');
      window.test_autospace = true;
      new Image().src = "https://mp.weixin.qq.com/mp/jsmonitor?idkey=526340_1_1";
    }
  }
  function setBottomBarSafeBottom() {
    var bottomBarSafeBottomKey = '__bottom_bar_safe_bottom__';
    var bottomBarSafeBottom = localStorage.getItem(bottomBarSafeBottomKey);
    if (bottomBarSafeBottom) {
      document.documentElement.style.setProperty('--immersive-safe-bottom', bottomBarSafeBottom);
    }
    SafeArea.getAsync('bottom').then(function (res) {
      console.error('bottombar-safe-bottom', res);
      try {
        if (Device.os.ios || Device.os.android &amp;&amp; getEnv('enableAndroidEdge2Edge')) {
          document.documentElement.style.setProperty('--immersive-safe-bottom', "".concat(res, "px"));
          localStorage.setItem(bottomBarSafeBottomKey, "".concat(res, "px"));
        } else {
          document.documentElement.style.removeProperty('--immersive-safe-bottom');
          localStorage.removeItem(bottomBarSafeBottomKey);
        }
      } catch (error) {
        console.log(error);
      }
    });
  }
  function setGlobalTextLink() {
    var normalTextLinks = document.getElementsByClassName('normal_text_link');
    var mp_article_text_link = document.getElementsByClassName('mp_article_text_link');
    if (!normalTextLinks || normalTextLinks.length === 0 || mp_article_text_link &amp;&amp; mp_article_text_link.length &gt; 0) return;
    for (var i = 0; i &lt; normalTextLinks.length; i++) {
      var item = normalTextLinks[i];
      var href = item.getAttribute('href') || item.getAttribute('data-href');
      item.setAttribute('link-id', uuid());
      if (item &amp;&amp; href) {
        var isMpWeixinLink = /^https?:\/\/mp\.weixin\.qq\.com\/s/.test(href);
        if (isMpWeixinLink) {
          item.classList.add('mp_article_text_link');
        }
      }
    }
  }
  function setImgPgaeSkinPc() {
    if (window.cgiDataNew &amp;&amp; window.cgiDataNew.item_show_type * 1 === 8 &amp;&amp; document.documentElement.clientWidth &gt; 851) {
      document.body.classList.add('pages_skin_pc');
    }
  }
  function setWindowsTitleBold() {
    var ua = navigator.userAgent;
    var isWindows = /windows\snt/i.test(ua) &amp;&amp; !/Windows\sPhone/i.test(ua);
    if (isWindows) document.body.classList.add('windows-title-bold');
  }
  function setNewCmtUi() {
    document.body.classList.add('appmsg_cmt_new_ui');
    if (window.cgiDataNew &amp;&amp; window.cgiDataNew.item_show_type * 1 === 0) {
      document.body.classList.add('appmsg_content_new_ui');
    }
  }
  function setDeviceClass() {
    if (Device.os.ios) {
      document.body.classList.add('wx-device-ios');
    }
  }

  
  function isTimeValid(timestamp) {
    if (!timestamp || timestamp &lt;= 0) return false;
    var now = Date.now();
    return now - timestamp &lt;= LOCAL_STORAGE_EXPIRE_TIME;
  }

  
  function getFontScale(biz, mid, idx) {
    if (!biz || !mid || idx == null) return null;
    var tripleKey = biz + '-' + mid + '-' + idx;
    var lsData = fontLS.get(tripleKey);
    var dbData = null;
    if (Array.isArray(window.fontScaleDBData) &amp;&amp; window.fontScaleDBData.length &gt; 0) {
      var foundItem = window.fontScaleDBData.find(function (item) {
        return item &amp;&amp; item.tripleKey === tripleKey;
      });
      if (foundItem) {
        dbData = foundItem;
      }
    }
    var lsTime = lsData &amp;&amp; _typeof(lsData) === 'object' ? lsData.lastUpdateTime || 0 : 0;
    var dbTime = dbData ? dbData.lastUpdateTime || 0 : 0;
    var storedClientFontLevel = lsTime &gt;= dbTime &amp;&amp; lsData ? lsData.clientFontLevel || null : dbData ? dbData.clientFontLevel || null : null;
    var currentClientFontLevel = getNativeFontLevelVar();
    if (storedClientFontLevel !== null &amp;&amp; Number(currentClientFontLevel) !== Number(storedClientFontLevel)) {
      return null;
    }
    var latestTime = Math.max(lsTime, dbTime);
    if (!isTimeValid(latestTime)) {
      return null;
    }
    var fontScale = null;
    if (lsTime &gt;= dbTime &amp;&amp; lsData) {
      fontScale = _typeof(lsData) === 'object' ? lsData.fontScale : lsData;
    } else if (dbData) {
      fontScale = dbData.fontScale;
    }
    if (fontScale) window.lastFontScale = fontScale;
    console.log('getFontScale result:', fontScale);
    return fontScale;
  }

  

  function initFontScale(biz, mid, idx) {
    var useFontLevel = true;
    var fontScale = getFontScale(biz, mid, idx);
    var localFontScale = fontScale || 1;
    applyContentFontScale(localFontScale, useFontLevel);
  }
  function setGlobalStyle(biz, mid, idx) {
    initFontScale(biz, mid, idx);
    setWindowsTitleBold();
    setAutospace();
    setBottomBarSafeBottom();
    setImgPgaeSkinPc();
    setNewCmtUi();
    setDeviceClass();
  }
  window.canShowAiChatCommentEntry =
  mmversion.isIOS &amp;&amp; mmversion.compareHexVersion('0x18004221') || mmversion.isAndroid &amp;&amp; mmversion.compareHexVersion('0x28004150');
  window.canShowAiChatRoomEntry =
  mmversion.isIOS &amp;&amp; mmversion.compareHexVersion('0x18004522') || mmversion.isAndroid &amp;&amp; mmversion.compareHexVersion('0x28004555');
  function setBarAiChat() {
    if (!window.canShowAiChatRoomEntry) {
      var barAiChat = document.getElementById('js_bar_ai_chat');
      barAiChat === null || barAiChat === void 0 ? void 0 : barAiChat.parentElement.removeChild(barAiChat);
    }
  }
  try {
    setBarAiChat();
    setGlobalTextLink();
  } catch (error) {
    console.log('setGlobalTextLink error', error);
  }
  if (!window.__second_open__) {
    var _window = window,
      biz = _window.biz,
      mid = _window.mid,
      idx = _window.idx;
    setGlobalStyle(biz, mid, idx);
  }

  exports.getFontScale = getFontScale;
  exports.initFontScale = initFontScale;
  exports.parseExp = parseExp;
  exports.setAutospace = setAutospace;
  exports.setBottomBarSafeBottom = setBottomBarSafeBottom;
  exports.setDeviceClass = setDeviceClass;
  exports.setGlobalStyle = setGlobalStyle;
  exports.setGlobalTextLink = setGlobalTextLink;
  exports.setImgPgaeSkinPc = setImgPgaeSkinPc;
  exports.setNewCmtUi = setNewCmtUi;
  exports.setWindowsTitleBold = setWindowsTitleBold;

  Object.defineProperty(exports, '__esModule', { value: true });

  return exports;

})({});
  &lt;/script&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   var __INLINE_SCRIPT__ = (function () {
  'use strict';

  function _arrayLikeToArray$1(arr, len) {
    if (len == null || len &gt; arr.length) len = arr.length;
    for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i];
    return arr2;
  }

  function _arrayWithoutHoles(arr) {
    if (Array.isArray(arr)) return _arrayLikeToArray$1(arr);
  }

  function _iterableToArray(iter) {
    if (typeof Symbol !== "undefined" &amp;&amp; iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
  }

  function _unsupportedIterableToArray$1(o, minLen) {
    if (!o) return;
    if (typeof o === "string") return _arrayLikeToArray$1(o, minLen);
    var n = Object.prototype.toString.call(o).slice(8, -1);
    if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name;
    if (n === "Map" || n === "Set") return Array.from(o);
    if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen);
  }

  function _nonIterableSpread() {
    throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }

  function _toConsumableArray(arr) {
    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray$1(arr) || _nonIterableSpread();
  }

  function _typeof(obj) {
    "@babel/helpers - typeof";

    return _typeof = "function" == typeof Symbol &amp;&amp; "symbol" == typeof Symbol.iterator ? function (obj) {
      return typeof obj;
    } : function (obj) {
      return obj &amp;&amp; "function" == typeof Symbol &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj;
    }, _typeof(obj);
  }

  function _toPrimitive(input, hint) {
    if (_typeof(input) !== "object" || input === null) return input;
    var prim = input[Symbol.toPrimitive];
    if (prim !== undefined) {
      var res = prim.call(input, hint || "default");
      if (_typeof(res) !== "object") return res;
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return (hint === "string" ? String : Number)(input);
  }

  function _toPropertyKey(arg) {
    var key = _toPrimitive(arg, "string");
    return _typeof(key) === "symbol" ? key : String(key);
  }

  function _defineProperty(obj, key, value) {
    key = _toPropertyKey(key);
    if (key in obj) {
      Object.defineProperty(obj, key, {
        value: value,
        enumerable: true,
        configurable: true,
        writable: true
      });
    } else {
      obj[key] = value;
    }
    return obj;
  }

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  function _defineProperties(target, props) {
    for (var i = 0; i &lt; props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor) descriptor.writable = true;
      Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
    }
  }
  function _createClass(Constructor, protoProps, staticProps) {
    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
    if (staticProps) _defineProperties(Constructor, staticProps);
    Object.defineProperty(Constructor, "prototype", {
      writable: false
    });
    return Constructor;
  }

  
  var prefix = '__WXLS__';
  var localStorage = window.localStorage || {
    getItem: function getItem() {},
    setItem: function setItem() {},
    removeItem: function removeItem() {},
    key: function key() {},
    clear: function clear() {
      var _a, _b;
      (_b = (_a = window.localStorage) === null || _a === void 0 ? void 0 : _a.clear) === null || _b === void 0 ? void 0 : _b.call(_a);
    },
    length: 0
  };
  var evictionPolicies = {
    noeviction: function noeviction(data) {
      return data;
    },
    'allkeys-random': function allkeysRandom(data, size) {
      var keys = Object.keys(data);
      var memCnt = 0;
      while (memCnt &lt; size) {
        var len = keys.length;
        var randomKeyIdx = Math.floor(Math.random() * len);
        var randomKey = keys[randomKeyIdx];
        memCnt += JSON.stringify(data[randomKey]).length;
        delete data[randomKey];
        keys = Object.keys(data);
      }
      return data;
    },
    'volatile-ttl': function volatileTtl(data, size) {
      var keys = Object.keys(data);
      keys = keys.sort(function (key1, key2) {
        var d1 = data[key1];
        var d2 = data[key2];
        if (d1.exp &lt; d2.exp) return -1;
        if (d1.exp &gt; d2.exp) return 1;
        return 0;
      });
      var memCnt = 0;
      for (var i = 0; i &lt; keys.length; i++) {
        if (memCnt &gt;= size) break;
        var key = keys[i];
        memCnt += JSON.stringify(data[key]).length;
        delete data[key];
      }
      return data;
    },
    'clear-all': function clearAll() {
      localStorage.clear();
      return {};
    }
  };
  function formatLogMsg(str) {
    return "[WXLS] ".concat(str);
  }
  
  var LS = function () {
    function LS(func, evictionPolicy, logger) {
      _classCallCheck(this, LS);
      this.logger = function () {};
      if (!func) throw 'require function name.';
      this.evictionPolicy = 'noeviction';
      this.key = func;
      if (typeof logger === 'function') {
        this.logger = function (str, type) {
          return logger(formatLogMsg(str), type);
        };
      }
      if (evictionPolicy &amp;&amp; Object.keys(evictionPolicies).indexOf(evictionPolicy) !== -1) {
        this.evictionPolicy = evictionPolicy;
      }
      this.init();
    }
    _createClass(LS, [{
      key: "init",
      value: function init() {
        var _a, _b;
        this.check();
        if (Math.random() * 1000 &lt; 1) {
          (_a = this.logger) === null || _a === void 0 ? void 0 : _a.call(this, "LSlen: ".concat(((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length) || localStorage.length), 'report');
        }
      }
    }, {
      key: "getData",
      value: function getData() {
        var data = LS.getItem(this.key) || '{}';
        try {
          data = JSON.parse(data);
        } catch (e) {
          this.logger("getData error: ".concat(e), 'error');
          localStorage.removeItem(prefix + this.key);
          data = {};
        }
        return data;
      }
    }, {
      key: "check",
      value: function check(isReturn) {
        var data = this.getData();
        var temp = {};
        var now = +new Date();
        var key;
        var val;
        for (key in data) {
          val = data[key];
          if (+val.exp &gt; now) {
            temp[key] = val;
          }
        }
        this.logger("check info: isReturn:".concat(isReturn, " data:").concat(JSON.stringify(temp)), 'info');
        if (isReturn) return temp;
        LS.setItem(this.key, JSON.stringify(temp), this.logger);
      }
    }, {
      key: "set",
      value: function set(key, val, exp) {
        var _a, _b;
        var data = this.check(true);
        data[key] = {
          val: val,
          exp: exp || +new Date()
        };
        try {
          if (localStorage.getItem(prefix + this.key)) localStorage.removeItem(prefix + this.key);
          localStorage.setItem(prefix + this.key, JSON.stringify(data));
          this.logger("first set success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data)), 'success');
        } catch (e) {
          this.logger("first set error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data), " k:").concat(key, " v:").concat(val, " exp:").concat(exp), 'error');
          localStorage.clear();
          LS.setItem(this.key, JSON.stringify(_defineProperty({}, key, {
            val: val,
            exp: exp || +new Date()
          })), this.logger);
        }
      }
    }, {
      key: "get",
      value: function get(key) {
        var data = this.getData();
        data = data[key];
        return data ? data.val || null : null;
      }
    }, {
      key: "remove",
      value: function remove(key) {
        var data = this.getData();
        if (data[key]) delete data[key];
        LS.setItem(this.key, JSON.stringify(data), this.logger);
      }
    }], [{
      key: "getItem",
      value: function getItem(key) {
        key = prefix + key;
        return localStorage.getItem(key);
      }
    }, {
      key: "setItem",
      value: function setItem(key, val, logger) {
        var _a, _b;
        key = prefix + key;
        var n = 3;
        while (n--) {
          try {
            if (localStorage.getItem(key)) localStorage.removeItem(key);
            localStorage.setItem(key, val);
            typeof logger === 'function' &amp;&amp; logger("setItem success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(key, " val:").concat(val), 'success');
            break;
          } catch (e) {
            typeof logger === 'function' &amp;&amp; logger("setItem error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(key, " val:").concat(val), 'error');
            LS.clear();
          }
        }
      }
    }, {
      key: "clear",
      value: function clear() {
        var i;
        var k;
        for (i = localStorage.length - 1; i &gt;= 0; i--) {
          k = localStorage.key(i);
          if (k.indexOf(prefix) == 0) {
            localStorage.removeItem(k);
          }
        }
      }
    }, {
      key: "getSupportEvicationPolicy",
      value: function getSupportEvicationPolicy() {
        return Object.keys(evictionPolicies);
      }
    }]);
    return LS;
  }();

  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" &amp;&amp; o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike &amp;&amp; o &amp;&amp; typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i &gt;= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion &amp;&amp; it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
  function _arrayLikeToArray(arr, len) { if (len == null || len &gt; arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i]; return arr2; }
  
  
  var ua = navigator.userAgent;
  var is_ios = /(iPhone|iPad|iPod|iOS)/i.test(ua);
  var is_wp = /Windows\sPhone/i.test(ua);
  var is_android = /(Android)/i.test(ua);
  var is_wechat = /MicroMessenger\/([\d\.]+)/i.test(ua);
  var is_mac = /mac\sos/i.test(ua) &amp;&amp; !is_ios;
  var is_windows = /windows\snt/i.test(ua) &amp;&amp; !is_wp;
  var is_mpapp = /MPAPP\/([\d\.]+)/i.test(ua);
  var is_ipad = /iPad/i.test(ua);
  var is_windows_wechat = /WindowsWechat/i.test(ua);
  var is_mac_wechat = /MacWechat/i.test(ua) || /wechat.*mac os/i.test(ua);
  var is_prefetch = is_wechat &amp;&amp; window.WeixinPrefecherJSBridge;
  var is_donut_app = /SAAASDK/i.test(ua);
  var is_harmony = /OpenHarmony|ArkWeb/i.test(ua);
  var is_linux = /Linux\s/i.test(ua);
  var xweb_match = ua.match(/XWEB\/([\d.]+)/i);
  var xweb_version = xweb_match &amp;&amp; xweb_match[1] ? parseInt(xweb_match[1], 10) : 0;
  var is_unified_pc_wechat = /UnifiedPC\w+Wechat/i.test(ua);
  var is_in_miniProgram = is_android &amp;&amp; /miniprogram/.test(ua.toLowerCase()) || window.__wxjs_environment == 'miniprogram';
  var is_wx_work = /wxwork/i.test(ua);
  function getUrlParams() {
    var vars = location.search.substring(1).split('&amp;');
    var params = {};
    var _iterator = _createForOfIteratorHelper(vars),
      _step;
    try {
      for (_iterator.s(); !(_step = _iterator.n()).done;) {
        var ele = _step.value;
        var pair = ele.split('=');
        var key = decodeURIComponent(pair[0]);
        if (typeof params[key] === 'undefined') {
          params[key] = decodeURIComponent(pair[1]);
        }
      }
    } catch (err) {
      _iterator.e(err);
    } finally {
      _iterator.f();
    }
    return params;
  }
  function get() {
    var reg = /MicroMessenger\/([\d\.]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMac() {
    var reg = /MacWechat\/([\d\.]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMacOS() {
    var reg = /Mac OS X ([\d_]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1].replace(/_/g, '.');
    }
    return false;
  }
  function getWindows() {
    var reg = /WindowsWechat\(0x(.+?)\)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getWxWork() {
    var reg = /wxwork\/([\d\.]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMpApp() {
    var appVersion = [2, 4, 5];
    var match = navigator.userAgent.match(/MPAPP\/(\d+(\.\d+)*)/);
    if (match) {
      appVersion = match[1].split('.').map(function (v) {
        return Number(v);
      });
    }
    return appVersion.join('.');
  }
  function getUnifiedPcVer() {
    var versionInfo = navigator.userAgent.match(/UnifiedPC\w+Wechat\(0xf\w{2}(\w+?)\w{2}\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(0, 1));
      var subVersion = getVersionNumber(version.slice(1, 2));
      var subVersion2 = getVersionNumber(version.slice(2, 3));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
  }
  function getVersionNumber(hexStr) {
    return Number(Number("0x".concat(hexStr)).toString(10));
  }
  function getWindowsVersionFormat() {
    var versionInfo = navigator.userAgent.match(/WindowsWechat\(0x(\w+?)\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(1, 2));
      var subVersion = getVersionNumber(version.slice(2, 4));
      var subVersion2 = getVersionNumber(version.slice(4, 6));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
    return false;
  }
  function getInner() {
    var reg = /MicroMessenger\/[\d\.]+\(0x(.+?)\)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1] &amp;&amp; ret[1] != null) {
      return ret[1];
    }
    if (!ret &amp;&amp; /MicroMessenger\/[\d\.]+/i.test(ua)) {
      var urlParams = getUrlParams();
      if (urlParams.version) {
        return urlParams.version;
      }
    }
    return false;
  }
  var opfunc = {
    'cp-1': function cp1(a, b) {
      return a &lt; b;
    },
    cp0: function cp0(a, b) {
      return a === b;
    },
    cp1: function cp1(a, b) {
      return a &gt; b;
    }
  };
  function cpVersion(ver, op, canEq, type) {
    var mmver = false;
    switch (type) {
      case 'mac':
        mmver = getMac();
        break;
      case 'windows':
        mmver = getWindowsVersionFormat();
        break;
      case 'wxwork':
        mmver = getWxWork();
        break;
      case 'mpapp':
        mmver = getMpApp();
        break;
      case 'unifiedpc':
        mmver = getUnifiedPcVer();
        break;
      default:
        mmver = get();
        break;
    }
    if (!mmver) {
      return;
    }
    var mmversion = mmver.split('.');
    var version = ver.split('.');
    if (!/\d+/g.test(mmversion[mmversion.length - 1])) {
      mmversion.pop();
    }
    for (var i = 0, len = Math.max(mmversion.length, version.length); i &lt; len; ++i) {
      var mmv = mmversion[i] || '';
      var v = version[i] || '';
      var mmvn = parseInt(mmv, 10) || 0;
      var vn = parseInt(v, 10) || 0;
      var eq = opfunc.cp0(mmvn, vn);
      if (eq) {
        continue;
      }
      var cp = opfunc["cp".concat(op)];
      return cp(mmvn, vn);
    }
    return canEq || op === 0;
  }
  function eqVersion(version) {
    return cpVersion(version, 0);
  }
  function gtVersion(version, canEq) {
    return cpVersion(version, 1, canEq);
  }
  function ltVersion(version, canEq) {
    return cpVersion(version, -1, canEq);
  }
  function getPlatform() {
    if (is_ios) {
      return 'ios';
    }
    if (is_android) {
      return 'android';
    }
    if (is_mac) {
      return 'mac_os';
    }
    if (is_windows) {
      return 'windows';
    }
    return 'unknown';
  }
  var is_google_play = false;
  var inner_ver_for_google_play_check = getInner();
  if (is_android &amp;&amp; inner_ver_for_google_play_check) {
    var v = "0x".concat(inner_ver_for_google_play_check.substr(-2));
    if (parseInt(v) &gt;= 64 &amp;&amp; parseInt(v) &lt;= 79) {
      is_google_play = true;
    }
  }
  function compareHexVersion(hexNum) {
    var innerVersion = getInner();
    if (innerVersion &amp;&amp; hexNum) {
      if (typeof hexNum === 'string') {
        hexNum = parseInt(hexNum, 16);
      }
      var version = parseInt(innerVersion, 16);
      return version &gt;= hexNum;
    }
    return false;
  }
  var mmversion = {
    get: get,
    getMac: getMac,
    getMacOS: getMacOS,
    getWindows: getWindows,
    getInner: getInner,
    getWxWork: getWxWork,
    getMpApp: getMpApp,
    cpVersion: cpVersion,
    eqVersion: eqVersion,
    gtVersion: gtVersion,
    ltVersion: ltVersion,
    getPlatform: getPlatform,
    getVersionNumber: getVersionNumber,
    isWp: is_wp,
    isIOS: is_ios,
    isAndroid: is_android,
    isHarmony: is_harmony,
    isHarmonyWechat: is_harmony &amp;&amp; is_wechat &amp;&amp; cpVersion('1.0.0', 1, true),
    isInMiniProgram: is_in_miniProgram,
    isWechat: is_wechat,
    isMac: is_mac,
    isWindows: is_windows,
    isLinux: is_linux,
    isMacWechat: is_mac_wechat,
    isWindowsWechat: is_windows_wechat,
    isWxWork: is_wx_work,
    isOnlyWechat: is_wechat &amp;&amp; !is_wx_work,
    isMpapp: is_mpapp,
    isNewMpApp: false,
    isIPad: is_ipad,
    isGooglePlay: is_google_play,
    isPrefetch: is_prefetch,
    isDonutAPP: is_donut_app,
    compareHexVersion: compareHexVersion,
    isPcWechat: is_windows_wechat || is_mac_wechat,
    xwebVersion: xweb_version,
    isUnifiedPcWechat: is_unified_pc_wechat
  };

  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
    try {
      var info = gen[key](arg);
      var value = info.value;
    } catch (error) {
      reject(error);
      return;
    }
    if (info.done) {
      resolve(value);
    } else {
      Promise.resolve(value).then(_next, _throw);
    }
  }
  function _asyncToGenerator(fn) {
    return function () {
      var self = this,
        args = arguments;
      return new Promise(function (resolve, reject) {
        var gen = fn.apply(self, args);
        function _next(value) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
        }
        function _throw(err) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
        }
        _next(undefined);
      });
    };
  }

  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }

  function _regeneratorRuntime() {  _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  var doc = {};
  var isAcrossOrigin = false;
  var notFoundedMPPageAction = [];
  var __moon_report = window.__moon_report || function () {};
  var MOON_JSAPI_KEY_OFFSET = 8;
  try {
    doc = top.window.document;
  } catch (e) {
    isAcrossOrigin = true;
  }
  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }
  function ready(onBridgeReady) {
    var bridgeReady = function bridgeReady() {
      try {
        if (onBridgeReady) {
          window.onBridgeReadyTime = window.onBridgeReadyTime || Date.now();
          onBridgeReady();
        }
      } catch (e) {
        __moon_report([{
          offset: MOON_JSAPI_KEY_OFFSET,
          log: 'ready',
          e: e
        }]);
        throw e;
      }
      window.jsapiReadyTime = Date.now();
    };
    if (!isAcrossOrigin &amp;&amp; (typeof top.window.WeixinJSBridge === 'undefined' || !top.window.WeixinJSBridge.invoke)) {
      if (doc.addEventListener) {
        doc.addEventListener('WeixinJSBridgeReady', bridgeReady, false);
      } else if (doc.attachEvent) {
        doc.attachEvent('WeixinJSBridgeReady', bridgeReady);
        doc.attachEvent('onWeixinJSBridgeReady', bridgeReady);
      }
    } else {
      bridgeReady();
    }
  }
  var invokeNotWaitA8key = ['notifyPageInfo', 'updatePageAuth'
  ];
  var checkNotFoundedInvoke = function checkNotFoundedInvoke(methodName, args) {
    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; notFoundedMPPageAction.includes(args === null || args === void 0 ? void 0 : args.action)) {
      return true;
    }
    return false;
  };
  function invoke(_x, _x2, _x3) {
    return _invoke.apply(this, arguments);
  }
  function _invoke() {
    _invoke = _asyncToGenerator( _regeneratorRuntime().mark(function _callee(methodName, args, callback) {
      return _regeneratorRuntime().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__ &amp;&amp; !invokeNotWaitA8key.includes(methodName))) {
              _context.next = 3;
              break;
            }
            _context.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                alert('请在微信中打开此链接');
                return false;
              }
              if (checkNotFoundedInvoke(methodName, args)) {
                setTimeout(function () {
                  if (callback) {
                    callback.apply(window, [{
                      err_msg: "".concat(methodName, ":fail"),
                      err_desc: 'action isn\'t supported'
                    }]);
                  }
                }, 0);
              } else {
                top.window.WeixinJSBridge.invoke(methodName, args, function () {
                  try {
                    for (var _len2 = arguments.length, rets = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
                      rets[_key2] = arguments[_key2];
                    }
                    var ret = rets[0];
                    var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
                    if (['handleMPPageAction', 'handleVideoAction', 'handleHaokanAction'].indexOf(methodName) !== -1) {
                      var action = (args === null || args === void 0 ? void 0 : args.action) || '';
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName, ", action-&gt;").concat(action).concat(errMsg));
                    } else {
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName).concat(errMsg));
                    }
                    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; ((ret === null || ret === void 0 ? void 0 : ret.err_desc) === 'action isn\'t supported' || (ret === null || ret === void 0 ? void 0 : ret.err_msg) === 'handleMPPageAction:fail action is not supported')) {
                      notFoundedMPPageAction.push(args === null || args === void 0 ? void 0 : args.action);
                    }
                    if (callback) {
                      callback.apply(window, rets);
                    }
                  } catch (e) {
                    __moon_report([{
                      offset: MOON_JSAPI_KEY_OFFSET,
                      log: "invoke;methodName:".concat(methodName),
                      e: e
                    }]);
                    throw e;
                  }
                });
              }
            });
          case 4:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return _invoke.apply(this, arguments);
  }
  function call(_x4) {
    return _call.apply(this, arguments);
  }
  function _call() {
    _call = _asyncToGenerator( _regeneratorRuntime().mark(function _callee2(methodName) {
      return _regeneratorRuntime().wrap(function _callee2$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__)) {
              _context2.next = 3;
              break;
            }
            _context2.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                return false;
              }
              try {
                top.window.WeixinJSBridge.call(methodName);
              } catch (e) {
                __moon_report([{
                  offset: MOON_JSAPI_KEY_OFFSET,
                  log: "call;methodName:".concat(methodName),
                  e: e
                }]);
                throw e;
              }
            });
          case 4:
          case "end":
            return _context2.stop();
        }
      }, _callee2);
    }));
    return _call.apply(this, arguments);
  }
  function on(eventName, callback) {
    ready(function () {
      if (isAcrossOrigin) return false;
      if (_typeof(top.window.WeixinJSBridge) !== 'object' || !top.window.WeixinJSBridge.on) {
        return false;
      }
      if (!window.JSAPIEventCallbackMap[eventName]) {
        window.JSAPIEventCallbackMap[eventName] = [];
      }
      window.JSAPIEventCallbackMap[eventName].push(callback);
      if (window.JSAPIEventCallbackMap[eventName].length &gt; 1) {
        return false;
      }
      top.window.WeixinJSBridge.on(eventName, function () {
        try {
          for (var _len = arguments.length, rets = new Array(_len), _key = 0; _key &lt; _len; _key++) {
            rets[_key] = arguments[_key];
          }
          var ret = rets[0];
          var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
          console.info('[system]', "[jsapi] event-&gt;".concat(eventName).concat(errMsg));
          if (window.JSAPIEventCallbackMap[eventName] &amp;&amp; window.JSAPIEventCallbackMap[eventName].length) {
            var result;
            for (var i = 0; i &lt; window.JSAPIEventCallbackMap[eventName].length; i++) {
              result = window.JSAPIEventCallbackMap[eventName][i].apply(window, rets);
            }
            return result;
          }
        } catch (e) {
          __moon_report([{
            offset: MOON_JSAPI_KEY_OFFSET,
            log: "on;eventName:".concat(eventName),
            e: e
          }]);
          throw e;
        }
      });
    });
  }
  function remove(eventName, callback) {
    ready(function () {
      if (!window.JSAPIEventCallbackMap[eventName]) {
        return false;
      }
      var result = false;
      for (var i = window.JSAPIEventCallbackMap[eventName].length - 1; i &gt;= 0; i--) {
        if (window.JSAPIEventCallbackMap[eventName][i] === callback) {
          window.JSAPIEventCallbackMap[eventName].splice(i, 1);
          result = true;
        }
      }
      return result;
    });
  }
  var JSAPI = {
    ready: ready,
    invoke: invoke,
    call: call,
    on: on,
    remove: remove
  };
  var innerVersion = (mmversion.getInner() || '').toUpperCase();
  var getBizLS = new LS('get_biz_result');
  var bizMap = {};
  var isGetBizSupported = mmversion.isOnlyWechat &amp;&amp; mmversion.isIOS &amp;&amp; innerVersion &gt;= '18003C2A' || mmversion.isOnlyWechat &amp;&amp; mmversion.isAndroid &amp;&amp; innerVersion &gt;= '28003D3C' || mmversion.isUnifiedPcWechat &amp;&amp; mmversion.cpVersion('4.1.10', 1, true, 'unifiedpc');
  mmversion.isOnlyWechat &amp;&amp; mmversion.isIOS || mmversion.isOnlyWechat &amp;&amp; mmversion.isAndroid || mmversion.isUnifiedPcWechat &amp;&amp; mmversion.cpVersion('4.1.10', 1, true, 'unifiedpc');
  function getBiz(needCheckBiz, bizType) {
    var _a;
    if (needCheckBiz === void 0) {
      needCheckBiz = false;
    }
    if (bizType === void 0) {
      bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
    }
    return new Promise(function (resolve, reject) {
      if (needCheckBiz || bizMap[bizType] === undefined) {
        if (!isGetBizSupported) {
          reject('Not support');
        } else {
          JSAPI.invoke('handleMPPageAction', {
            action: 'getBiz',
            needCheckBiz: needCheckBiz,
            bizType: bizType
          }, function (res) {
            console.log("getBiz with needCheckBiz=".concat(needCheckBiz, " res: ").concat(JSON.stringify(res)));
            if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf('ok') &gt; -1) {
              bizMap[bizType] = res.biz;
              resolve(res.biz);
              getBizLS.set("".concat(bizType, "_get_biz_result"), res.biz, +new Date() + 3 * 24 * 60 * 60 * 1000);
            } else {
              reject('Failed to get biz');
            }
          });
        }
      } else {
        resolve(bizMap[bizType]);
      }
    });
  }
  function LsGetBiz(bizType) {
    var _a, _b, _c;
    if (bizType === void 0) {
      bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
    }
    return (_c = (_b = bizMap[bizType]) !== null &amp;&amp; _b !== void 0 ? _b : getBizLS.get("".concat(bizType, "_get_biz_result"))) !== null &amp;&amp; _c !== void 0 ? _c : '';
  }
  
  var getIsAuthorLs = function getIsAuthorLs(bizuin, bizType) {
    var _a;
    if (bizuin === void 0) {
      bizuin = window.biz;
    }
    if (bizType === void 0) {
      bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
    }
    return bizuin &amp;&amp; bizuin === LsGetBiz(bizType);
  };
  var getIsAuthor = function getIsAuthor(cb, bizuin, needCheckBiz, bizType) {
    var _a;
    if (bizuin === void 0) {
      bizuin = window.biz;
    }
    if (needCheckBiz === void 0) {
      needCheckBiz = false;
    }
    if (bizType === void 0) {
      bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
    }
    getBiz(needCheckBiz, bizType).then(function (biz) {
      cb(biz &amp;&amp; biz === bizuin);
    })["catch"](function () {
      cb(false);
    });
  };

  function parseUrl(url) {
    var len = url.length;
    var ques_pos = url.indexOf('?');
    var hash_pos = url.indexOf('#');
    hash_pos = hash_pos == -1 ? len : hash_pos;
    ques_pos = ques_pos == -1 ? hash_pos : ques_pos;
    var host = url.substring(0, ques_pos);
    var query_str = url.substring(ques_pos + 1, hash_pos);
    var hash = url.substring(hash_pos + 1);
    return {
      host: host,
      query_str: query_str,
      hash: hash
    };
  }
  function join(url, args, noEncode) {
    var ret = parseUrl(url);
    var query_str = ret.query_str;
    var args_arr = [];
    if (_typeof(args) === 'object') {
      for (var key in args) {
        if (args.hasOwnProperty(key)) {
          args_arr.push("".concat(key, "=").concat(noEncode ? args[key] : encodeURIComponent(args[key])));
        }
      }
    } else {
      args_arr.push(noEncode ? args : encodeURIComponent(args));
    }
    if (args_arr.length &gt; 0) {
      query_str += (query_str !== "" ? "&amp;" : "") + args_arr.join("&amp;");
    }
    return ret.host + (query_str !== "" ? "?".concat(query_str) : "") + (ret.hash !== "" ? "#".concat(ret.hash) : "");
  }
  
  function addParam(url, param, value, forceReplace) {
    url = url || location.href;
    var firstAndPos = url.indexOf("&amp;");
    var len = url.length;
    var reverseUrl = url.replace(/^[\w\d]+:[/\\]+/g, "").split("").reverse();
    if (!Array.prototype.indexOf) {
      Array.prototype.indexOf = function (searchElement, fromIndex) {
        var k;
        if (this == null) {
          throw new TypeError('"this" is null or not defined');
        }
        var O = Object(this);
        var len = O.length &gt;&gt;&gt; 0;
        if (len === 0) {
          return -1;
        }
        var n = fromIndex || 0;
        if (Math.abs(n) === Infinity) {
          n = 0;
        }
        if (n &gt;= len) {
          return -1;
        }
        k = Math.max(n &gt;= 0 ? n : len - Math.abs(n), 0);
        while (k &lt; len) {
          if (k in O &amp;&amp; O[k] === searchElement) {
            return k;
          }
          k++;
        }
        return -1;
      };
    }
    var lastSlashPos = len - 1 - reverseUrl.indexOf("/");
    if (firstAndPos !== -1 &amp;&amp; url.indexOf("?") == -1 &amp;&amp; firstAndPos &gt; lastSlashPos) {
      url = url.replace("&amp;", "?");
    }
    var reg = new RegExp("([\\?&amp;]".concat(param, "=)[^&amp;#]*"));
    if (!url.match(reg)) {
      var urlInfo = parseUrl(url);
      var hash = urlInfo.hash ? '#' + urlInfo.hash : '';
      url = url.replace(hash, '');
      var _pos = url.indexOf("?");
      if (_pos == -1) {
        return "".concat(url, "?").concat(param, "=").concat(value).concat(hash);
      }
      if (_pos == url.length - 1) {
        return "".concat(url + param, "=").concat(value).concat(hash);
      }
      return "".concat(url, "&amp;").concat(param, "=").concat(value).concat(hash);
    }
    if (forceReplace === true) {
      return url.replace(reg, "$1".concat(value));
    }
    return url;
  }
  function addWxfrom(src, wxfrom) {
    var offset = window.service_type === 1 ? 10000 : 0;
    return addParam(src, 'wxfrom', offset + Number(wxfrom), true);
  }
  function removeParam(url, param) {
    var _URL = new URL(url),
      protocol = _URL.protocol,
      host = _URL.host,
      pathname = _URL.pathname,
      search = _URL.search,
      hash = _URL.hash;
    var queryParams = new URLSearchParams(search);
    queryParams["delete"](param);
    var newSearch = queryParams.toString();
    var newUrl = new URL("".concat(protocol, "//").concat(host).concat(pathname).concat(newSearch ? "?".concat(decodeURIComponent(newSearch)) : "").concat(hash));
    return newUrl.toString();
  }
  function getQuery(name, url) {
    var u = url || window.location.search;
    var reg = new RegExp("(^|&amp;)".concat(name, "=([^&amp;]*)(&amp;|$)"));
    var r = u.substring(u.indexOf('?') + 1).match(reg);
    return r !== null ? r[2] : '';
  }
  function encodeBase64(value) {
    try {
      return window.btoa(value);
    } catch (e) {
      return '';
    }
  }
  function decodeBase64(value) {
    try {
      return window.atob(value);
    } catch (e) {
      return '';
    }
  }
  function joinUrl(url) {
    var obj = {};
    if (typeof window.uin !== 'undefined') {
      obj.uin = window.uin;
    }
    if (typeof window.key !== 'undefined') {
      obj.key = window.key;
    }
    if (typeof window.pass_ticket !== 'undefined') {
      obj.pass_ticket = window.pass_ticket;
    }
    if (typeof window.wxtoken !== 'undefined') {
      obj.wxtoken = window.wxtoken;
    }
    if (typeof window.devicetype !== 'undefined') {
      obj.devicetype = window.devicetype;
    }
    if (typeof window.clientversion !== 'undefined') {
      obj.clientversion = window.clientversion || mmversion.getInner();
    }
    obj.version = obj.clientversion;
    if (window.biz) {
      obj.__biz = window.biz;
    }
    if (getQuery('enterid')) {
      obj.enterid = getQuery('enterid');
    }
    if (typeof window.appmsg_token !== 'undefined') {
      obj.appmsg_token = window.appmsg_token;
    } else if (url.indexOf('advertisement_report') &gt; -1) {
      new Image().src = "".concat(location.protocol, "//mp.weixin.qq.com/mp/jsmonitor?idkey=68064_13_1&amp;r=").concat(Math.random());
    }
    obj.x5 = navigator.userAgent.indexOf('TBS/') !== -1 ? '1' : '0';
    obj.f = 'json';
    return join(url, obj);
  }
  function joinUserArticleRole(url, notJoin, cb) {
    var bizuin = arguments.length &gt; 3 &amp;&amp; arguments[3] !== undefined ? arguments[3] : window.biz;
    var needCheckBiz = arguments.length &gt; 5 &amp;&amp; arguments[5] !== undefined ? arguments[5] : false;
    if (notJoin) {
      cb(url);
    } else {
      getIsAuthor(function (isAuthor) {
        cb(addParam(url, 'user_article_role', isAuthor ? 1 : 0, true));
      }, bizuin, needCheckBiz);
    }
  }
  function getA8keyQuery(name, url) {
    return new Promise(function (resolve) {
      if (window.__secPageAuthPromise) {
        window.__secPageAuthPromise.then(function () {
          resolve(getQuery(name, url));
        });
      } else {
        resolve(getQuery(name, url));
      }
    });
  }
  function addHash(url, hash) {
    var isReplace = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    if (isReplace) {
      return "".concat(url.split('#')[0]).concat(hash);
    }
    return "".concat(url).concat(url.indexOf('#') === -1 ? '#' : '').concat(hash);
  }
  function decodeUrl(url) {
    var _url = url;
    while (_url.indexOf('&amp;amp;') !== -1) {
      _url = _url.htmlDecode();
    }
    return _url;
  }
  var Url = {
    parseUrl: parseUrl,
    join: join,
    addParam: addParam,
    addWxfrom: addWxfrom,
    addHash: addHash,
    getQuery: getQuery,
    getA8keyQuery: getA8keyQuery,
    encodeBase64: encodeBase64,
    decodeBase64: decodeBase64,
    joinUrl: joinUrl,
    joinUserArticleRole: joinUserArticleRole,
    removeParam: removeParam,
    decodeUrl: decodeUrl
  };

  
  
  var Device = {};
  function detect(ua) {
    var MQQBrowser = ua.match(/MQQBrowser\/(\d+\.\d+)/i);
    var MQQClient = ua.match(/QQ\/(\d+\.(\d+)\.(\d+)\.(\d+))/i) || ua.match(/V1_AND_SQ_([\d\.]+)/);
    var WeChat = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/) || ua.match(/MicroMessenger\/((\d+)\.(\d+))/);
    var MacOS = ua.match(/Mac\sOS\sX\s(\d+[\.|_]\d+)/);
    var WinOS = ua.match(/Windows(\s+\w+)?\s+?(\d+\.\d+)/);
    var Linux = ua.match(/Linux\s/);
    var MiuiBrowser = ua.match(/MiuiBrowser\/(\d+\.\d+)/i);
    var M1 = ua.match(/MI-ONE/);
    var MIPAD = ua.match(/MI PAD/);
    var UC = ua.match(/UCBrowser\/(\d+\.\d+(\.\d+\.\d+)?)/) || ua.match(/\sUC\s/);
    var IEMobile = ua.match(/IEMobile(\/|\s+)(\d+\.\d+)/) || ua.match(/WPDesktop/);
    var ipod = ua.match(/(ipod).*\s([\d_]+)/i);
    var ipad = ua.match(/(ipad).*\s([\d_]+)/i);
    var iphone = ua.match(/(iphone)\sos\s([\d_]+)/i);
    var Chrome = ua.match(/Chrome\/(\d+\.\d+)/);
    var AndriodBrowser = ua.match(/Mozilla.*Linux.*Android.*AppleWebKit.*Mobile Safari/);
    var android = ua.match(/(android)\s([\d\.]+)/i);
    var harmony = ua.match(/(OpenHarmony)\s([\d\.]+)/i);
    Device.browser = Device.browser || {}, Device.os = Device.os || {};
    Device.os.type = -1;
    Device.os.unifiedPC = ua.match(/UnifiedPC/);
    Device.os.unifiedMac = /UnifiedPCMac/i.test(ua);
    Device.os.unifiedWindows = /UnifiedPCWindows/i.test(ua);
    if (window.ActiveXObject) {
      var vie = 6;
      (window.XMLHttpRequest || ua.indexOf('MSIE 7.0') &gt; -1) &amp;&amp; (vie = 7);
      (window.XDomainRequest || ua.indexOf('Trident/4.0') &gt; -1) &amp;&amp; (vie = 8);
      ua.indexOf('Trident/5.0') &gt; -1 &amp;&amp; (vie = 9);
      ua.indexOf('Trident/6.0') &gt; -1 &amp;&amp; (vie = 10);
      Device.browser.ie = true, Device.browser.version = vie;
    } else if (ua.indexOf('Trident/7.0') &gt; -1) {
      Device.browser.ie = true, Device.browser.version = 11;
    }
    if (android) {
      Device.os.android = true;
      Device.os.version = android[2];
      Device.os.type = 2;
    }
    if (harmony) {
      Device.os.harmony = true;
      Device.os.version = harmony[2];
      Device.os.type = 42;
    }
    if (ipod) {
      Device.os.ios = Device.os.ipod = true;
      Device.os.version = ipod[2].replace(/_/g, '.');
    }
    if (ipad) {
      Device.os.ios = Device.os.ipad = true;
      Device.os.version = ipad[2].replace(/_/g, '.');
      Device.os.type = 13;
    }
    if (iphone) {
      Device.os.iphone = Device.os.ios = true;
      Device.os.version = iphone[2].replace(/_/g, '.');
      Device.os.type = 1;
    }
    if (WinOS) Device.os.windows = true, Device.os.version = WinOS[2], Device.os.type = 15;
    if (MacOS) Device.os.Mac = true, Device.os.version = MacOS[1], Device.os.type = 14;
    if (Linux) Device.os.Linux = true, Device.os.type = 33;
    if (ua.indexOf('lepad_hls') &gt; 0) Device.os.LePad = true;
    if (MIPAD) Device.os.MIPAD = true;
    if (MQQBrowser) Device.browser.MQQ = true, Device.browser.version = MQQBrowser[1];
    if (MQQClient) Device.browser.MQQClient = true, Device.browser.version = MQQClient[1];
    if (WeChat) Device.browser.WeChat = true, Device.browser.mmversion = Device.browser.version = WeChat[1];
    if (MiuiBrowser) Device.browser.MIUI = true, Device.browser.version = MiuiBrowser[1];
    if (UC) Device.browser.UC = true, Device.browser.version = UC[1] || NaN;
    if (IEMobile) Device.browser.IEMobile = true, Device.browser.version = IEMobile[2];
    if (AndriodBrowser) {
      Device.browser.AndriodBrowser = true;
    }
    if (M1) {
      Device.browser.M1 = true;
    }
    if (Chrome) {
      Device.browser.Chrome = true, Device.browser.version = Chrome[1];
    }
    if (Device.os.windows) {
      if (typeof navigator.platform !== "undefined" &amp;&amp; navigator.platform.toLowerCase() == "win64") {
        Device.os.win64 = true;
      } else {
        Device.os.win64 = false;
      }
    }
    if (Device.os.Mac || Device.os.windows || Device.os.Linux || Device.os.unifiedPC || /OpenHarmony/i.test(ua) &amp;&amp; /pc/i.test(ua)) {
      Device.os.pc = true;
    }
    var osType = {
      iPad7: 'iPad; CPU OS 7',
      LePad: 'lepad_hls',
      XiaoMi: 'MI-ONE',
      SonyDTV: "SonyDTV",
      SamSung: 'SAMSUNG',
      HTC: 'HTC',
      VIVO: 'vivo'
    };
    for (var os in osType) {
      Device.os[os] = ua.indexOf(osType[os]) !== -1;
    }
    Device.os.phone = Device.os.phone || /windows phone/i.test(ua);
    Device.os.getNumVersion = function () {
      return parseFloat(Device.os.version);
    };
    Device.os.hasTouch = 'ontouchstart' in window;
    if (Device.os.hasTouch &amp;&amp; Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 6) {
      Device.os.hasTouch = false;
    }
    if (Device.browser.WeChat &amp;&amp; Device.browser.version &lt; 5.0) {
      Device.os.hasTouch = false;
    }
    Device.browser.getNumVersion = function () {
      return parseFloat(Device.browser.version);
    };
    Device.browser.isFFCanOcx = function () {
      return !!Device.browser.firefox &amp;&amp; Device.browser.getNumVersion() &gt;= 3.0;
    };
    Device.browser.isCanOcx = function () {
      return !!Device.os.windows &amp;&amp; (!!Device.browser.ie || Device.browser.isFFCanOcx() || !!Device.browser.webkit);
    };
    Device.browser.isNotIESupport = function () {
      return !!Device.os.windows &amp;&amp; (!!Device.browser.webkit || Device.browser.isFFCanOcx());
    };
    Device.userAgent = {};
    Device.userAgent.browserVersion = Device.browser.version;
    Device.userAgent.osVersion = Device.os.version;
    if (Device.os.unifiedPC) {
      if (Device.os.unifiedWindows) Device.os.type = 37;else if (Device.os.unifiedMac) Device.os.type = 38;else Device.os.type = 39;
    }
    delete Device.userAgent.version;
  }
  detect(window.navigator.userAgent);
  function canSupportH5Video() {
    var ua = window.navigator.userAgent,
      m = null;
    if (!!Device.os.android) {
      if (Device.browser.MQQ &amp;&amp; Device.browser.getNumVersion() &gt;= 4.2) {
        return true;
      }
      if (ua.indexOf('MI2') != -1) {
        return true;
      }
      if (Device.os.version &gt;= '4' &amp;&amp; (m = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/))) {
        if (parseFloat(m[1]) &gt;= 4.2) {
          return true;
        }
      }
      if (Device.os.version &gt;= '4.1') {
        return true;
      }
    }
    return false;
  }
  function canSupportVideoMp4() {
    var video = document.createElement('video');
    if (typeof video.canPlayType === 'function') {
      if (video.canPlayType('video/mp4; codecs="mp4v.20.8"') === 'probably') {
        return true;
      }
      if (video.canPlayType('video/mp4; codecs="avc1.42E01E"') === 'probably' || video.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"') === 'probably') {
        return true;
      }
    }
    return false;
  }
  function canSupportAutoPlay() {
    if (Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 10) {
      return false;
    }
    return true;
  }
  function isLockdownMode() {
    if (!Device.os.ios || Device.os.getNumVersion() &lt; 16) {
      return false;
    }
    if (typeof WebAssembly === 'undefined' &amp;&amp; typeof OfflineAudioContext === 'undefined' &amp;&amp; typeof WebGLRenderingContext === 'undefined') {
      return true;
    }
    return false;
  }
  Device.canSupportVideo = canSupportVideoMp4 || canSupportH5Video;
  Device.canSupportVideoMp4 = canSupportVideoMp4;
  Device.canSupportH5Video = canSupportH5Video;
  Device.canSupportAutoPlay = canSupportAutoPlay;
  Device.isLockdownMode = isLockdownMode;
  
  Device.cpVersion = function (version) {
    var cp = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 0;
    var canEqual = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    var nowVersionStr = Device.os.version;
    if (!nowVersionStr) return false;
    var versionArr = version.split('.');
    var nowVersionArr = nowVersionStr.split('.');
    for (var i = 0; i &lt; Math.max(nowVersionArr.length, versionArr.length); i++) {
      var vi = +versionArr[i];
      var nvi = +nowVersionArr[i];
      if (vi === nvi) continue;
      if (cp &gt; 0) return vi &gt; nvi;
      if (cp &lt; 0) return vi &lt; nvi;
    }
    return canEqual || cp === 0;
  };

  var isIPadOS13 = Device.os.ipad &amp;&amp; Device.os.getNumVersion() &gt;= 13 &amp;&amp; Device.os.getNumVersion() &lt; 14;
  function isSupportTextSizeAdjust() {
    var _a, _b;
    if (mmversion.isIOS) {
      return true;
    }
    return mmversion.isAndroid &amp;&amp; !!((_b = (_a = window.xweb_wechat_extend) === null || _a === void 0 ? void 0 : _a.AvailableFeatures) === null || _b === void 0 ? void 0 : _b.includes('XWEB_SUPPORT_TEXT_SIZE_ADJUST'));
  }
  function getNativeFontScaleVar() {
    if (window.__nativeFontScale__) {
      return window.__nativeFontScale__;
    }
    setNativeFontScaleVar(getScaleByDom());
    return window.__nativeFontScale__;
  }
  function setNativeFontScaleVar(val) {
    window.__nativeFontScale__ = val || 1;
  }
  function getScaleByDPR() {
    var _a;
    if (window.__dprScale__ !== null &amp;&amp; window.__dprScale__ !== undefined) return window.__dprScale__;
    try {
      var scale = (_a = window.__wxWebEnv) === null || _a === void 0 ? void 0 : _a.getLayoutScale();
      if (typeof scale === 'number' &amp;&amp; scale &gt; 0 &amp;&amp; isFinite(scale)) {
        window.__dprScale__ = 1 / scale;
        return window.__dprScale__;
      }
    } catch (e) {
    }
    window.__dprScale__ = 1;
    return window.__dprScale__;
  }
  function getNativeFontScale() {
    return getNativeFontScaleVar() * getScaleByDPR();
  }
  function getScaleByDom() {
    if (typeof document === 'undefined' || !document.body) {
      return 1;
    }
    var fontDom = document.createElement('div');
    fontDom.style.fontSize = '16px';
    document.body.appendChild(fontDom);
    var originFontSize = parseFloat(fontDom.style.fontSize);
    var realFontSize = parseFloat(window.getComputedStyle(fontDom, null).getPropertyValue('font-size'));
    document.body.removeChild(fontDom);
    var percent = realFontSize / originFontSize;
    if (!percent || percent &lt;= 0 || !isFinite(percent)) {
      return 1;
    }
    return percent;
  }
  function getScaleFromParent(node) {
    var targetNode;
    if (node instanceof ShadowRoot) {
      targetNode = node.host;
    } else {
      targetNode = node;
    }
    var originScale = targetNode.getAttribute('mp-font-scale');
    if (originScale) {
      return parseFloat(originScale);
    }
    if (!targetNode.parentElement) return getNativeFontScale();
    return getScaleFromParent(targetNode.parentElement);
  }
  function setFontSize(root, percent, fontScale) {
    if (root === null || !percent || mmversion.isPcWechat || !mmversion.isWechat) return;
    if (isSupportTextSizeAdjust()) {
      var targetEl = root instanceof ShadowRoot ? root.host : root;
      targetEl.setAttribute('mp-font-scale', percent.toString());
      var adjustValue = mmversion.isIOS ? "".concat(percent * 100, "%") : "".concat(percent * 100 / getNativeFontScale(), "%");
      targetEl.style.setProperty('-webkit-text-size-adjust', adjustValue);
      targetEl.style.setProperty('text-size-adjust', adjustValue);
      return;
    }
    var nowFontScale = fontScale || getScaleFromParent(root);
    if (root instanceof ShadowRoot) {
      root.host.setAttribute('mp-font-scale', percent.toString());
    } else {
      root.setAttribute('mp-font-scale', percent.toString());
    }
    var setQueue = [];
    var textWalker = document.createTreeWalker(root, 1);
    do {
      var textContainer = textWalker.currentNode;
      if (textContainer.nodeType !== 1) continue;
      if (textContainer.tagName &amp;&amp; customElements.get(textContainer.tagName.toLowerCase()) &amp;&amp; textContainer.shadowRoot) {
        var shadowRoot = textContainer.shadowRoot;
        setFontSize(shadowRoot, percent, fontScale);
        continue;
      }
      var oriFontSize = textContainer.getAttribute('mp-original-font-size');
      if (!oriFontSize) {
        if (isIPadOS13) {
          oriFontSize = String(parseFloat(getComputedStyle(textContainer).fontSize));
        } else {
          oriFontSize = String(parseFloat(getComputedStyle(textContainer).fontSize) / nowFontScale);
        }
        textContainer.setAttribute('mp-original-font-size', oriFontSize);
      }
      var oriLineHeight = textContainer.getAttribute('mp-original-line-height');
      if (!oriLineHeight) {
        oriLineHeight = parseFloat(getComputedStyle(textContainer).lineHeight) / parseFloat(getComputedStyle(textContainer).fontSize);
        textContainer.setAttribute('mp-original-line-height', String(oriLineHeight));
      }
      setQueue.push([textContainer, oriFontSize, oriLineHeight]);
    } while (textWalker.nextNode());
    for (var _i = 0, _setQueue = setQueue; _i &lt; _setQueue.length; _i++) {
      var setPair = _setQueue[_i];
      var originalSize = parseFloat(setPair[1]);
      if (isNaN(originalSize) || originalSize &lt;= 0) {
        continue;
      }
      var calculatedSize = originalSize * (percent / getNativeFontScale());
      if (!isFinite(calculatedSize) || calculatedSize &lt;= 0 || calculatedSize &gt; 1000) {
        continue;
      }
      setPair[0].style.fontSize = "".concat(calculatedSize, "px");
      setPair[0].style.lineHeight = "".concat(setPair[2]);
    }
  }
  function limitFontSizePercent(el, maxPercent) {
    var nowFontScale = getScaleFromParent(el);
    var setPercent = Math.min(maxPercent, getNativeFontScale());
    if (isIPadOS13) {
      setFontSize(el, setPercent, nowFontScale);
    } else if (mmversion.isAndroid || mmversion.isHarmony) {
      setFontSize(el, setPercent, nowFontScale);
    } else if (mmversion.isIOS) {
      el.style.setProperty('-webkit-text-size-adjust', "".concat(Math.min(maxPercent, nowFontScale) * 100, "%"));
    }
  }
  function fixedFontSizePercent(el) {
    var nowFontScale = getScaleFromParent(el);
    var setPercent = 1;
    if (isIPadOS13) {
      setFontSize(el, setPercent, nowFontScale);
    } else if (mmversion.isAndroid) {
      setFontSize(el, setPercent, nowFontScale);
    } else if (mmversion.isIOS) {
      el.style.setProperty('-webkit-text-size-adjust', '100%');
    }
  }

  var key = 'stream_last_read_pos';
  new LS(key);
  var interactionStatusLS = new LS('bottom_interaction_status');
  function getInteractionStatus() {
    var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    var biz = opt.biz || window.biz;
    var sn = opt.sn || window.sn;
    var mid = opt.mid || window.mid;
    var idx = opt.idx || window.idx;
    var interactionStatusKey = [biz, sn, mid, idx].join('_');
    var interactionStatusInfo = interactionStatusLS.get(interactionStatusKey) || {};
    if (Object.prototype.toString.call(interactionStatusInfo) !== '[object Object]' || window.cgiData &amp;&amp; window.cgiData.trans_appmsg_info &amp;&amp; window.cgiData.trans_appmsg_info.trans_type === 1
    ) {
      interactionStatusInfo = {};
    }
    var interactionSubscribeInfo = interactionStatusLS.get(biz + 'interaction_subscribe') || {};
    interactionStatusInfo.is_subscribed = interactionSubscribeInfo.is_subscribed || false;
    return interactionStatusInfo;
  }

  function textOverflow(el, binding) {
    var _a, _b;
    if (!el || getComputedStyle(el).display === 'none') return;
    var text = el.innerHTML;
    if (!text || !text.length) return;
    var retainTail = [];
    if ((_a = binding.value) === null || _a === void 0 ? void 0 : _a.tailNum) {
      retainTail = Array.from(el.childNodes).slice(-binding.value.tailNum);
    }
    var count = 0;
    function needTextOverflow() {
      var _a;
      if ((_a = binding.value) === null || _a === void 0 ? void 0 : _a.lineClamp) {
        return binding.value.lineClamp &lt; computeLineNum(el);
      }
      return el.offsetHeight &lt; el.scrollHeight;
    }
    if (needTextOverflow()) {
      try {
        var getLeaf = function getLeaf(node) {
          var result = [];
          if (!node.childNodes || node.childNodes.length === 0) {
            return [node];
          }
          node.childNodes.forEach(function (child) {
            result = [].concat(_toConsumableArray(result), _toConsumableArray(getLeaf(child)));
          });
          return result;
        };
        var getFragmentHTML = function getFragmentHTML(frag) {
          var _a, _b;
          var div = document.createDocumentFragment();
          div.appendChild(frag);
          var span = document.createElement('span');
          span.innerHTML = ((_a = binding.value) === null || _a === void 0 ? void 0 : _a.html) || '...';
          if (div.lastElementChild) {
            div.lastElementChild.style.display = 'inline';
          }
          div.appendChild(span);
          el.extraElement = span;
          if ((_b = binding.value) === null || _b === void 0 ? void 0 : _b.tailNum) {
            retainTail.forEach(function (tail) {
              div.appendChild(tail);
            });
          }
          return div;
        };
        var findLastNode = function findLastNode(start, end) {
          if (end - start &lt;= 1) {
            range.setEndAfter(leaves[start]);
            setNewFrag(el, getFragmentHTML(range.cloneContents()));
            return needTextOverflow() ? start : end;
          }
          var mid = start + end &gt;&gt; 1;
          count++;
          range.setEndAfter(leaves[mid]);
          setNewFrag(el, getFragmentHTML(range.cloneContents()));
          return needTextOverflow() ? findLastNode(start, mid) : findLastNode(mid, end);
        };
        var findLastCharIndex = function findLastCharIndex(start, end) {
          if (end - start &lt;= 1) {
            if (start === 0) {
              range.setEndAfter(leaves[Math.max(lastNodeIndex - 1, 0)]);
            } else {
              range.setEnd(lastNode, start);
            }
            setNewFrag(el, getFragmentHTML(range.cloneContents()));
            return start;
          }
          var mid = start + end &gt;&gt; 1;
          count++;
          range.setEnd(lastNode, mid);
          setNewFrag(el, getFragmentHTML(range.cloneContents()));
          return needTextOverflow() ? findLastCharIndex(start, mid) : findLastCharIndex(mid, end);
        };
        var dom = document.createElement('div');
        dom.innerHTML = text;
        var leaves = getLeaf(dom);
        var range = document.createRange();
        range.setStartBefore(leaves[0]);
        var lastNodeIndex = findLastNode(0, leaves.length - 1);
        var lastNode = leaves[lastNodeIndex];
        findLastCharIndex(0, lastNode.textContent.length);
        ((_b = binding.value) === null || _b === void 0 ? void 0 : _b.processExtraElement) &amp;&amp; binding.value.processExtraElement(el.extraElement, el);
      } catch (error) {
        console.error(error);
      }
    }
  }
  function computeLineNum(el) {
    var computyStyle = getComputedStyle(el);
    return Math.round(el.offsetHeight / parseFloat(computyStyle.lineHeight));
  }
  function removeAllChild(el) {
    var childNodes = Array.from(el.childNodes);
    childNodes.forEach(function (child) {
      el.removeChild(child);
    });
  }
  function setNewFrag(el, frag) {
    removeAllChild(el);
    el.appendChild(frag);
  }

  var __setBarData = function __setBarData(appmsgBarData, cgiData, allData) {
    if (Url.getQuery('uninteractive') * 1 === 1) return;
    var barWarp = document.querySelector('#js_article_bottom_bar');
    var barMask = document.querySelector('#js_temp_bar_mask');
    var isImageType = (cgiData === null || cgiData === void 0 ? void 0 : cgiData.item_show_type) * 1 === 8;
    try {
      if (isImageType) {
        var imgPagePosLS = new LS('page_pos_image', 'clear-all');
        var imgPagePosKey = [cgiData.biz, cgiData.sn, cgiData.mid, cgiData.idx].join('_');
        var _ref = imgPagePosLS.get(imgPagePosKey) || {},
          barPostion = _ref.barPostion,
          barIsRelativeStyle = _ref.barIsRelativeStyle;
        if (document.body.classList.contains('pages_skin_pc') || barPostion === 2 &amp;&amp; barIsRelativeStyle) {
          window._has_not_render_bar_placeholder_ = true;
          return;
        }
      }
    } catch (err) {
      console.error(err);
    }
    var bottombar = document.getElementById('js_wx_follow_nickname_large_font');
    var fontScale = +Url.getQuery('fontScale');
    if (!fontScale) {
      try {
        var envData = JSON.parse(window.__wxWebEnv &amp;&amp; window.__wxWebEnv.getEnv());
        if (envData.fontScale) fontScale = +envData.fontScale;
      } catch (e) {}
    }
    if (!appmsgBarData) {
      return;
    }
    function formatReadNum(value) {
      var unit = '万';
      if (window.LANG === 'en') {
        unit = 'k';
      }
      var result = '';
      if (parseInt(value, 10) &gt; 100000) {
        result = 10 + unit + '+';
      } else if (parseInt(value, 10) &gt; 10000 &amp;&amp; parseInt(value, 10) &lt;= 100000) {
        var num = '' + parseInt(value, 10) / 10000;
        var dotIndex = num.indexOf('.');
        if (dotIndex === -1) {
          result = num + unit;
        } else {
          result = num.substr(0, dotIndex) + '.' + num.charAt(dotIndex + 1) + unit;
        }
      } else if (parseInt(value, 10) === 0) {
        result = '';
      } else {
        result = value || '';
      }
      return result;
    }
    try {
      var barOldlikeBtn = document.getElementById('js_bar_oldlike_btn');
      var barShareBtn = document.getElementById('js_bar_share_btn');
      var barLikeBtn = document.getElementById('js_bar_like_btn');
      var barCommentBtn = document.getElementById('js_bar_comment_btn');
      var barCollectBtn = document.getElementById('js_bar_collect_btn');
      var barSubscribeBtn = document.getElementById('js_bar_subscribe_btn');
      var barReadNum = document.getElementById('js_temp_bar_read_num');
      var tempBarToAnalysis = document.getElementById('js_temp_bar_to_analysis');
      var tempbarWriteCmt = document.getElementById('js_temp_bar_write_cmt');
      var tempBarProfile = document.getElementById('js_bar_profile');
      var barProfileHead = document.getElementById('js_bar_profile_head');
      var oldLikeEl = barOldlikeBtn &amp;&amp; barOldlikeBtn.parentElement;
      var likeEl = barLikeBtn &amp;&amp; barLikeBtn.parentElement;
      var isChanegeCommentBtnContext = false;
      try {
        var defaultText = '写留言';
        var fontSize = (barCommentBtn &amp;&amp; window.getComputedStyle(barCommentBtn).fontSize.split('px')[0] || 12) * Math.min(1.24, fontScale / 100);
        var offsetWidth = (barCommentBtn === null || barCommentBtn === void 0 ? void 0 : barCommentBtn.offsetWidth) || 39;
        isChanegeCommentBtnContext = fontSize * defaultText.length &gt;= offsetWidth;
      } catch (e) {
        console.error('=======compute comment width error ', e);
      }
      var interactionStatus = cgiData.isFinderMsg ? {} : getInteractionStatus({
        biz: cgiData.biz,
        mid: cgiData.mid,
        sn: cgiData.sn,
        idx: cgiData.idx
      });
      var isAuthorWx = getIsAuthorLs(cgiData.biz, allData.biz_type);
      if (interactionStatus.is_my_old_like &amp;&amp; !isAuthorWx) {
        oldLikeEl &amp;&amp; oldLikeEl.classList.add('praised');
      }
      if (interactionStatus.is_my_like &amp;&amp; !isAuthorWx) {
        likeEl &amp;&amp; (appmsgBarData.show_friend_seen === 2 ? likeEl.classList.add('love_btn_loved') : likeEl.classList.add('like_btn_liked'));
      }
      var old_like_count = interactionStatus.old_like_count * 1 ? Math.max(interactionStatus.old_like_count * 1, appmsgBarData.old_like_count) : appmsgBarData.old_like_count || 0;
      var share_count = interactionStatus.share_count * 1 ? Math.max(interactionStatus.share_count * 1, appmsgBarData.share_count) : appmsgBarData.share_count || 0;
      var like_count = interactionStatus.like_count * 1 ? Math.max(interactionStatus.like_count * 1, appmsgBarData.like_count) : appmsgBarData.like_count || 0;
      var comment_count = interactionStatus.comment_count * 1 ? Math.max(interactionStatus.comment_count * 1, appmsgBarData.comment_count) : appmsgBarData.comment_count || 0;
      var comment_enabled = (typeof interactionStatus.comment_enabled === 'number' ? interactionStatus.comment_enabled : appmsgBarData.comment_enabled || 0) * 1;
      var collect_count = appmsgBarData.collect_count || 0;
      var read_num = appmsgBarData.read_num || 0;

      
      if (barOldlikeBtn) {
        var defaultWd = isAuthorWx ? '0' : '赞';
        barOldlikeBtn.innerText = old_like_count ? formatReadNum(old_like_count) : defaultWd;
      }
      if (barShareBtn) {
        var _defaultWd = isAuthorWx ? '0' : '分享';
        barShareBtn.innerText = share_count ? formatReadNum(share_count) : _defaultWd;
      }
      if (barLikeBtn) {
        var _defaultWd2 = isAuthorWx ? '0' : allData &amp;&amp; allData.red_flower_like_info &amp;&amp; allData.red_flower_like_info.is_red_flower_like * 1 === 1 ? '助力' : '推荐';
        barLikeBtn.innerText = like_count ? formatReadNum(like_count) : _defaultWd2;
      }
      if (barCommentBtn) {
        var _defaultWd3 = isAuthorWx ? '0' : isChanegeCommentBtnContext ? '留言' : '写留言';
        barCommentBtn.innerText = comment_count ? formatReadNum(comment_count) : _defaultWd3;
      }
      if (barCollectBtn) {
        var _defaultWd4 = isAuthorWx ? '0' : '收藏';
        barCollectBtn.innerText = collect_count ? formatReadNum(collect_count) : _defaultWd4;
      }
      if (read_num &amp;&amp; barReadNum) {
        if (allData &amp;&amp; allData.private_info.private_type === 1) {
          barReadNum.innerText = '仅自己可见';
        } else {
          barReadNum.innerText = '阅读 ' + formatReadNum(read_num);
        }
      }
      if (mmversion.isInMiniProgram) {
        if (barShareBtn) {
          barShareBtn.style.display = 'none';
        }
        if (barLikeBtn) {
          barLikeBtn.style.display = 'none';
        }
      }
      var tempbarPraiseBtn = document.getElementById('js_temp_sns_sc_praise_btn');
      var tempbarShareBtn = document.getElementById('js_temp_sns_sc_share_btn');
      var tempbarCollectBtn = document.getElementById('js_temp_sns_sc_collect_btn');
      var tempbarLikeBtn = document.getElementById('js_temp_sns_sc_like_btn');
      var tempbarCommentBtn = document.getElementById('js_temp_sns_sc_comment_btn');
      var tempbarCommentBtnCon = document.getElementById('js_temp_sns_sc_comment_btn_con');
      var tempbarFriendSubscribe = document.getElementById('js_bar_friend_subscribe');
      var tempbarSubscribeBtn = document.getElementById('js_temp_bar_subscribe_btn');
      var tempbarFriendsList = document.getElementById('js_stream_friends_all');
      var tempLoadingInnerHtml = '&lt;span class="sns_opr_gap"&gt;&lt;span style="font-size: 12px" class="weui-primary-loading"&gt;&lt;i class="weui-primary-loading__dot"&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;';
      var handleTempClick = function handleTempClick(_ref2) {
        var type = _ref2.type,
          val = _ref2.val,
          sucCb = _ref2.sucCb,
          failCb = _ref2.failCb;
        if (typeof window.__click_temp_btm_bar_cb__ === 'function') {
          window.__click_temp_btm_bar_cb__({
            type: type,
            val: val,
            sucCb: sucCb,
            failCb: failCb
          });
        } else {
          if (!window.__wait_click_temp_btm_bar_cb__) window.__wait_click_temp_btm_bar_cb__ = [];
          window.__wait_click_temp_btm_bar_cb__.push(function () {
            window.__click_temp_btm_bar_cb__({
              type: type,
              val: val,
              sucCb: sucCb,
              failCb: failCb
            });
          });
        }
      };
      if (isAuthorWx) {
        tempbarPraiseBtn &amp;&amp; tempbarPraiseBtn.classList.add('author_praise_btn');
        tempbarLikeBtn &amp;&amp; tempbarLikeBtn.classList.add('author_love_btn');
        tempbarFriendSubscribe &amp;&amp; (tempbarFriendSubscribe.style.display = 'none');
        tempbarSubscribeBtn &amp;&amp; (tempbarSubscribeBtn.style.display = 'none');
        tempbarFriendsList &amp;&amp; (tempbarFriendsList.style.display = 'none');
      }
      if (interactionStatus &amp;&amp; interactionStatus.is_subscribed) {
        tempbarFriendSubscribe &amp;&amp; (tempbarFriendSubscribe.style.display = 'none');
        tempbarSubscribeBtn &amp;&amp; (tempbarSubscribeBtn.style.display = 'none');
      }
      tempbarPraiseBtn &amp;&amp; barOldlikeBtn &amp;&amp; oldLikeEl &amp;&amp; tempbarPraiseBtn.addEventListener('click', function () {
        if (isAuthorWx) {
          if (tempbarPraiseBtn.getAttribute('has_click') * 1 === 1) return;
          tempbarPraiseBtn.setAttribute('has_click', 1);
          var tempInnerHTML = tempbarPraiseBtn.innerHTML;
          tempbarPraiseBtn.innerHTML = tempLoadingInnerHtml;
          handleTempClick({
            type: 'author_praise',
            sucCb: function sucCb() {
              tempbarPraiseBtn.removeAttribute('has_click');
              tempbarPraiseBtn.innerHTML = tempInnerHTML;
            }
          });
          return;
        }
        var newPraiseStatus = !oldLikeEl.classList.contains('praised');
        var readNum = 0;
        if (newPraiseStatus) {
          oldLikeEl.classList.add('praised');
          readNum = formatReadNum(interactionStatus.is_my_old_like ? old_like_count : old_like_count + 1);
        } else {
          oldLikeEl.classList.remove('praised');
          readNum = formatReadNum(interactionStatus.is_my_old_like ? Math.max(0, old_like_count - 1) : old_like_count);
        }
        barOldlikeBtn.innerText = readNum ? readNum : '赞';
        handleTempClick({
          type: 'praise',
          val: newPraiseStatus
        });
      });
      tempbarLikeBtn &amp;&amp; barLikeBtn &amp;&amp; likeEl &amp;&amp; tempbarLikeBtn.addEventListener('click', function () {
        if (isAuthorWx) {
          if (tempbarLikeBtn.getAttribute('has_click') * 1 === 1) return;
          tempbarLikeBtn.setAttribute('has_click', 1);
          var tempInnerHTML = tempbarLikeBtn.innerHTML;
          tempbarLikeBtn.innerHTML = tempLoadingInnerHtml;
          handleTempClick({
            type: 'author_recommend',
            sucCb: function sucCb() {
              tempbarLikeBtn.removeAttribute('has_click');
              tempbarLikeBtn.innerHTML = tempInnerHTML;
            }
          });
          return;
        }
        var newRecommendStatus = appmsgBarData.show_friend_seen === 2 ? !likeEl.classList.contains('love_btn_loved') : !likeEl.classList.contains('like_btn_liked');
        var recommendNum = 0;
        if (newRecommendStatus) {
          appmsgBarData.show_friend_seen === 2 ? likeEl.classList.add('love_btn_loved') : likeEl.classList.add('like_btn_liked');
          recommendNum = formatReadNum(interactionStatus.is_my_like ? like_count : like_count + 1);
        } else {
          appmsgBarData.show_friend_seen === 2 ? likeEl.classList.remove('love_btn_loved') : likeEl.classList.remove('like_btn_liked');
          recommendNum = formatReadNum(interactionStatus.is_my_like ? Math.max(0, like_count - 1) : like_count);
        }
        if (recommendNum) {
          barLikeBtn.innerText = recommendNum;
        } else {
          barLikeBtn.innerText = appmsgBarData.show_friend_seen === 2 ? '推荐' : '在看';
        }
        handleTempClick({
          type: 'recommend',
          val: newRecommendStatus
        });
      });
      tempbarShareBtn &amp;&amp; barShareBtn &amp;&amp; tempbarShareBtn.addEventListener('click', function () {
        if (tempbarShareBtn.getAttribute('has_click') * 1 === 1) return;
        tempbarShareBtn.setAttribute('has_click', 1);
        var tempInnerHTML = tempbarShareBtn.innerHTML;
        tempbarShareBtn.innerHTML = tempLoadingInnerHtml;
        handleTempClick({
          type: 'share',
          sucCb: function sucCb() {
            tempbarShareBtn.removeAttribute('has_click');
            tempbarShareBtn.innerHTML = tempInnerHTML;
          }
        });
      });
      tempbarCommentBtn &amp;&amp; barCommentBtn &amp;&amp; tempbarCommentBtn.addEventListener('click', function () {
        if (barCommentBtn.getAttribute('has_click') * 1 === 1) return;
        barCommentBtn.setAttribute('has_click', 1);
        var tempInnerHTML = barCommentBtn.innerHTML;
        barCommentBtn.innerHTML = tempLoadingInnerHtml;
        handleTempClick({
          type: 'comment',
          sucCb: function sucCb() {
            barCommentBtn.removeAttribute('has_click');
            barCommentBtn.innerHTML = tempInnerHTML;
          }
        });
      });
      tempbarCollectBtn &amp;&amp; barCollectBtn &amp;&amp; tempbarCollectBtn.addEventListener('click', function () {
        handleTempClick({
          type: 'collect'
        });
      });
      barSubscribeBtn &amp;&amp; barSubscribeBtn.addEventListener('click', function () {
        handleTempClick({
          type: 'subscribe'
        });
      });
      tempBarToAnalysis &amp;&amp; tempBarToAnalysis.addEventListener('click', function () {
        handleTempClick({
          type: 'to_analysis'
        });
      });
      if (comment_enabled || isAuthorWx &amp;&amp; comment_count &gt; 0) {
        tempbarCommentBtnCon &amp;&amp; (tempbarCommentBtnCon.style.display = '');
        if (isAuthorWx &amp;&amp; comment_enabled * 1 === 0) {
          tempbarCommentBtn.classList.add('sns_sc_lock_comment_btn');
        }
      }
    } catch (error) {
      console.error(error);
    }
    try {
      try {
        var interactionBar = document.querySelectorAll('.interaction_bar_placeholder');
        var buttons = document.querySelectorAll('.wx_follow_button_placeholder');
        var fixedElements = _toConsumableArray(buttons);
        var maxSize = 1.24;
        var maxSizeElements = _toConsumableArray(interactionBar);
        for (var i = 0; i &lt; fixedElements.length; i++) {
          fixedFontSizePercent(fixedElements[i]);
        }
        for (var _i = 0; _i &lt; maxSizeElements.length; _i++) {
          limitFontSizePercent(maxSizeElements[_i], maxSize);
        }
      } catch (err) {
        console.error('limitFontSizePercent error', err);
      }
      if (fontScale &gt;= 116) {
        var bigBar = document.querySelector('.js_big_font_size_bottom_bar');
        var normalBar = document.querySelector('.js_normal_font_size_bottom_bar');
        var normalBarFt = document.querySelector('.js_normal_font_size_bottom_bar_ft');
        if (normalBar) normalBar.style.display = 'none';
        if (normalBarFt) normalBarFt.style.display = 'none';
        if (bigBar) bigBar.style.display = 'block';
        var bigTopBar = document.querySelector('.js_big_font_size_top_bar');
        var normalTopBar = document.querySelector('.js_normal_font_size_top_bar');
        var normalTopBarFt = document.querySelector('.js_normal_font_size_top_bar_ft');
        if (normalTopBar) normalTopBar.style.display = 'none';
        if (normalTopBarFt) normalTopBarFt.style.display = 'none';
        if (bigTopBar) bigTopBar.style.display = 'block';
        var js_bar_profile = document.getElementById('js_bar_profile');
        js_bar_profile &amp;&amp; js_bar_profile.classList.add('large_font_like_profile_bar');
        var topbar = document.getElementById('js_wx_follow_nickname_large_font_top');
        var topNickNameSpans = document.querySelectorAll('.js_big_font_size_top_bar .nickNameSpan');
        var bottomFollowFt = document.querySelectorAll('.js_big_font_size_bottom_bar .wx_follow_ft');
        var topFollowFt = document.querySelectorAll('.js_big_font_size_top_bar .wx_follow_ft');
        [].concat(_toConsumableArray(topNickNameSpans), _toConsumableArray(bottomFollowFt), _toConsumableArray(topFollowFt)).forEach(function (element) {
          fixedFontSizePercent(element);
        });
        if (bottombar) {
          textOverflow(bottombar, {
            value: {
              lineClamp: 2,
              tailNum: 3
            }
          });
        }
        if (topbar) {
          textOverflow(topbar, {
            value: {
              lineClamp: 1,
              tailNum: 2
            }
          });
        }
      } else {
        var _bigBar = document.querySelector('.js_big_font_size_bottom_bar');
        var _normalBar = document.querySelector('.js_normal_font_size_bottom_bar');
        var _normalBarFt = document.querySelector('.js_normal_font_size_bottom_bar_ft');
        if (_bigBar) _bigBar.style.display = 'none';
        if (_normalBar) _normalBar.style.display = 'block';
        if (_normalBarFt) _normalBarFt.style.display = 'block';
        var _bigTopBar = document.querySelector('.js_big_font_size_top_bar');
        var _normalTopBar = document.querySelector('.js_normal_font_size_top_bar');
        var _normalTopBarFt = document.querySelector('.js_normal_font_size_top_bar_ft');
        if (_bigTopBar) _bigTopBar.style.display = 'none';
        if (_normalTopBar) _normalTopBar.style.display = 'block';
        if (_normalTopBarFt) _normalTopBarFt.style.display = 'block';
        var normalNickname = document.getElementById('js_wx_follow_nickname_small_font');
        if (normalNickname) {
          var applyTextOverflow = function applyTextOverflow() {
            textOverflow(normalNickname, {
              value: {
                lineClamp: 1,
                tailNum: 2
              }
            });
          };
          if (Device.os.pc) {
            setTimeout(applyTextOverflow, 0);
          } else {
            applyTextOverflow();
          }
        }
      }
    } catch (error) {
      console.error('set like_profile style error', error);
    }
    barWarp &amp;&amp; barWarp.classList.remove('hide');
    barMask &amp;&amp; barMask.classList.remove('hide');
  };
  if (!window.__second_open__) {
    var tmpAppmsgBarData = {
      show_like: '' * 1,
      like_count: '' * 1,
      show_share: '' * 1,
      share_count: '' * 1,
      show_old_like: '' * 1,
      old_like_count: '' * 1,
      comment_enabled: '' * 1,
      comment_count: '' * 1,
      show_collect: '' * 1,
      collect_count: '' * 1,
      show_friend_seen: '' * 1,
      is_subscribed: '' * 1,
      verify_status: '' * 1,
      original_content_num: '$user_info.appmsg_bar_data.original_content_num.DATA$' * 1,
      friend_subscribe_count: '' * 1,
      read_num: '' * 1
    };
    var cgiData = {
      idx: ''  ,
      biz: '' ,
      mid: ''  ,
      sn: ''  ,
      subcount_version: '',
      isFinderMsg: '' * 1,
      export_id: '',
      source: '' * 1,
      item_show_type: '0' * 1,
      ori_create_time: '1780125513' * 1
    };
    __setBarData(tmpAppmsgBarData, cgiData, cgiDataNew);
    window.__setBarData = __setBarData;
  }

  return __setBarData;

})();
  &lt;/script&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   var __INLINE_SCRIPT__ = (function () {
  'use strict';

  function _typeof(obj) {
    "@babel/helpers - typeof";

    return _typeof = "function" == typeof Symbol &amp;&amp; "symbol" == typeof Symbol.iterator ? function (obj) {
      return typeof obj;
    } : function (obj) {
      return obj &amp;&amp; "function" == typeof Symbol &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj;
    }, _typeof(obj);
  }

  function _toPrimitive(input, hint) {
    if (_typeof(input) !== "object" || input === null) return input;
    var prim = input[Symbol.toPrimitive];
    if (prim !== undefined) {
      var res = prim.call(input, hint || "default");
      if (_typeof(res) !== "object") return res;
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return (hint === "string" ? String : Number)(input);
  }

  function _toPropertyKey(arg) {
    var key = _toPrimitive(arg, "string");
    return _typeof(key) === "symbol" ? key : String(key);
  }

  function _defineProperty(obj, key, value) {
    key = _toPropertyKey(key);
    if (key in obj) {
      Object.defineProperty(obj, key, {
        value: value,
        enumerable: true,
        configurable: true,
        writable: true
      });
    } else {
      obj[key] = value;
    }
    return obj;
  }

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  function _defineProperties(target, props) {
    for (var i = 0; i &lt; props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor) descriptor.writable = true;
      Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
    }
  }
  function _createClass(Constructor, protoProps, staticProps) {
    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
    if (staticProps) _defineProperties(Constructor, staticProps);
    Object.defineProperty(Constructor, "prototype", {
      writable: false
    });
    return Constructor;
  }

  
  var prefix = '__WXLS__';
  var localStorage = window.localStorage || {
    getItem: function getItem() {},
    setItem: function setItem() {},
    removeItem: function removeItem() {},
    key: function key() {},
    clear: function clear() {
      var _a, _b;
      (_b = (_a = window.localStorage) === null || _a === void 0 ? void 0 : _a.clear) === null || _b === void 0 ? void 0 : _b.call(_a);
    },
    length: 0
  };
  var evictionPolicies = {
    noeviction: function noeviction(data) {
      return data;
    },
    'allkeys-random': function allkeysRandom(data, size) {
      var keys = Object.keys(data);
      var memCnt = 0;
      while (memCnt &lt; size) {
        var len = keys.length;
        var randomKeyIdx = Math.floor(Math.random() * len);
        var randomKey = keys[randomKeyIdx];
        memCnt += JSON.stringify(data[randomKey]).length;
        delete data[randomKey];
        keys = Object.keys(data);
      }
      return data;
    },
    'volatile-ttl': function volatileTtl(data, size) {
      var keys = Object.keys(data);
      keys = keys.sort(function (key1, key2) {
        var d1 = data[key1];
        var d2 = data[key2];
        if (d1.exp &lt; d2.exp) return -1;
        if (d1.exp &gt; d2.exp) return 1;
        return 0;
      });
      var memCnt = 0;
      for (var i = 0; i &lt; keys.length; i++) {
        if (memCnt &gt;= size) break;
        var key = keys[i];
        memCnt += JSON.stringify(data[key]).length;
        delete data[key];
      }
      return data;
    },
    'clear-all': function clearAll() {
      localStorage.clear();
      return {};
    }
  };
  function formatLogMsg(str) {
    return "[WXLS] ".concat(str);
  }
  
  var LS = function () {
    function LS(func, evictionPolicy, logger) {
      _classCallCheck(this, LS);
      this.logger = function () {};
      if (!func) throw 'require function name.';
      this.evictionPolicy = 'noeviction';
      this.key = func;
      if (typeof logger === 'function') {
        this.logger = function (str, type) {
          return logger(formatLogMsg(str), type);
        };
      }
      if (evictionPolicy &amp;&amp; Object.keys(evictionPolicies).indexOf(evictionPolicy) !== -1) {
        this.evictionPolicy = evictionPolicy;
      }
      this.init();
    }
    _createClass(LS, [{
      key: "init",
      value: function init() {
        var _a, _b;
        this.check();
        if (Math.random() * 1000 &lt; 1) {
          (_a = this.logger) === null || _a === void 0 ? void 0 : _a.call(this, "LSlen: ".concat(((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length) || localStorage.length), 'report');
        }
      }
    }, {
      key: "getData",
      value: function getData() {
        var data = LS.getItem(this.key) || '{}';
        try {
          data = JSON.parse(data);
        } catch (e) {
          this.logger("getData error: ".concat(e), 'error');
          localStorage.removeItem(prefix + this.key);
          data = {};
        }
        return data;
      }
    }, {
      key: "check",
      value: function check(isReturn) {
        var data = this.getData();
        var temp = {};
        var now = +new Date();
        var key;
        var val;
        for (key in data) {
          val = data[key];
          if (+val.exp &gt; now) {
            temp[key] = val;
          }
        }
        this.logger("check info: isReturn:".concat(isReturn, " data:").concat(JSON.stringify(temp)), 'info');
        if (isReturn) return temp;
        LS.setItem(this.key, JSON.stringify(temp), this.logger);
      }
    }, {
      key: "set",
      value: function set(key, val, exp) {
        var _a, _b;
        var data = this.check(true);
        data[key] = {
          val: val,
          exp: exp || +new Date()
        };
        try {
          if (localStorage.getItem(prefix + this.key)) localStorage.removeItem(prefix + this.key);
          localStorage.setItem(prefix + this.key, JSON.stringify(data));
          this.logger("first set success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data)), 'success');
        } catch (e) {
          this.logger("first set error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data), " k:").concat(key, " v:").concat(val, " exp:").concat(exp), 'error');
          localStorage.clear();
          LS.setItem(this.key, JSON.stringify(_defineProperty({}, key, {
            val: val,
            exp: exp || +new Date()
          })), this.logger);
        }
      }
    }, {
      key: "get",
      value: function get(key) {
        var data = this.getData();
        data = data[key];
        return data ? data.val || null : null;
      }
    }, {
      key: "remove",
      value: function remove(key) {
        var data = this.getData();
        if (data[key]) delete data[key];
        LS.setItem(this.key, JSON.stringify(data), this.logger);
      }
    }], [{
      key: "getItem",
      value: function getItem(key) {
        key = prefix + key;
        return localStorage.getItem(key);
      }
    }, {
      key: "setItem",
      value: function setItem(key, val, logger) {
        var _a, _b;
        key = prefix + key;
        var n = 3;
        while (n--) {
          try {
            if (localStorage.getItem(key)) localStorage.removeItem(key);
            localStorage.setItem(key, val);
            typeof logger === 'function' &amp;&amp; logger("setItem success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(key, " val:").concat(val), 'success');
            break;
          } catch (e) {
            typeof logger === 'function' &amp;&amp; logger("setItem error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(key, " val:").concat(val), 'error');
            LS.clear();
          }
        }
      }
    }, {
      key: "clear",
      value: function clear() {
        var i;
        var k;
        for (i = localStorage.length - 1; i &gt;= 0; i--) {
          k = localStorage.key(i);
          if (k.indexOf(prefix) == 0) {
            localStorage.removeItem(k);
          }
        }
      }
    }, {
      key: "getSupportEvicationPolicy",
      value: function getSupportEvicationPolicy() {
        return Object.keys(evictionPolicies);
      }
    }]);
    return LS;
  }();

  var rewardLS = new LS('reward');
  var rewardLSData = null;
  function getRewardLS() {
    var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    rewardLSData === null &amp;&amp; (rewardLSData = rewardLS.get([opt.biz || window.biz, opt.mid || window.mid, opt.idx || window.idx].join('_')));
    return rewardLSData;
  }

  
  var __setReward = function __setReward(cgiData, opt) {
    var data = getRewardLS(opt);
    if (data) {
      data.canReward !== undefined &amp;&amp; (cgiData.can_reward = data.canReward);
      data.isNeedReward !== undefined &amp;&amp; (cgiData.is_need_reward = data.isNeedReward);
      data.closeReward !== undefined &amp;&amp; (cgiData.user_info.close_reward = data.closeReward);
      data.authorId !== undefined &amp;&amp; (cgiData.author_id = data.authorId);
      data.rewardAuthorHead !== undefined &amp;&amp; (cgiData.reward_author_head = data.rewardAuthorHead);
      data.author !== undefined &amp;&amp; (cgiData.author = data.author);
      data.rewardWording !== undefined &amp;&amp; (cgiData.reward_wording = data.rewardWording);
    }
  };
  if (!window.__second_open__) {
    var data = getRewardLS();
    if (data) {
      if (window.cgiData) {
        data.canReward !== undefined &amp;&amp; (window.cgiData.can_reward = data.canReward);
        data.isNeedReward !== undefined &amp;&amp; (window.cgiData.is_need_reward = data.isNeedReward);
        data.authorId !== undefined &amp;&amp; (window.cgiData.author_id = data.authorId);
        data.rewardAuthorHead !== undefined &amp;&amp; (window.cgiData.reward_author_head = data.rewardAuthorHead);
        data.author !== undefined &amp;&amp; (window.cgiData.author = data.author);
        data.rewardWording !== undefined &amp;&amp; (window.cgiData.reward_wording = data.rewardWording);
      } else {
        data.canReward !== undefined &amp;&amp; (window.can_reward = data.canReward);
        data.isNeedReward !== undefined &amp;&amp; (window.is_need_reward = data.isNeedReward);
        data.authorId !== undefined &amp;&amp; (window.author_id = data.authorId);
        data.rewardAuthorHead !== undefined &amp;&amp; (window.reward_author_head = data.rewardAuthorHead);
        data.author !== undefined &amp;&amp; (window.author = data.author);
        data.rewardWording !== undefined &amp;&amp; (window.reward_wording = data.rewardWording);
      }
      data.canReward !== undefined &amp;&amp; (window.cgiDataNew.can_reward = data.canReward);
      data.closeReward !== undefined &amp;&amp; (window.cgiDataNew.user_info.close_reward = data.closeReward);
    }
  }

  return __setReward;

})();
  &lt;/script&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   (function () {
  'use strict';

  function _arrayLikeToArray(arr, len) {
    if (len == null || len &gt; arr.length) len = arr.length;
    for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i];
    return arr2;
  }

  function _arrayWithoutHoles(arr) {
    if (Array.isArray(arr)) return _arrayLikeToArray(arr);
  }

  function _iterableToArray(iter) {
    if (typeof Symbol !== "undefined" &amp;&amp; iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
  }

  function _unsupportedIterableToArray(o, minLen) {
    if (!o) return;
    if (typeof o === "string") return _arrayLikeToArray(o, minLen);
    var n = Object.prototype.toString.call(o).slice(8, -1);
    if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name;
    if (n === "Map" || n === "Set") return Array.from(o);
    if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
  }

  function _nonIterableSpread() {
    throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }

  function _toConsumableArray(arr) {
    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
  }

  var containers = [document.getElementById('page-content')];
  var bgPlaceholder = 'url("data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==")';
  var isCareMode = window.a_value_which_never_exists || '' * 1 || 0;
  var isCartoonCopyright = window.a_value_which_never_exists || '0' * 1 || 0;
  if (!window.__second_open__ &amp;&amp; !isCareMode &amp;&amp; !isCartoonCopyright) {
    containers.forEach(function (dom) {
      var containsBackground = dom.querySelectorAll('[style*="background-image"]');
      _toConsumableArray(containsBackground).forEach(function (node) {
        if (node &amp;&amp; node.style &amp;&amp; typeof node.getAttribute === 'function' &amp;&amp; !node.getAttribute('data-lazy-bgimg') &amp;&amp; !window.__lazyload_detected) {
          var bgImg = node.style.backgroundImage;
          var bgImgUrl = bgImg &amp;&amp; bgImg.match(/url\(['"]?(.*?)['"]?\)/);
          if (bgImgUrl &amp;&amp; bgImgUrl[1]) {
            node.style.backgroundImage = bgImg.replace(/url\(['"]?.*?['"]?\)/, bgPlaceholder);
            node.setAttribute('data-lazy-bgimg', bgImgUrl[1]);
            node.classList.add('wx_imgbc_placeholder');
          }
        }
      });
    });
  }

})();
  &lt;/script&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   (function () {
  'use strict';

  

  if (typeof window.__emojiFormat === 'undefined' &amp;&amp; window.weEmoji) {
    var emoji_url = '//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/pic/pic_blank7e6959.gif';
    var emoji_wx_icon = '&lt;img src="' + emoji_url + '" class="#style#" alt="#name#" /&gt;';
    var dataMap = window.weEmoji.EmojiDataMap;
    try {
      var replaceRegex = new RegExp(Object.keys(dataMap).map(function (str) {
        return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&amp;');
      }).sort(function (a, b) {
        return b.length - a.length;
      }).join('|'), 'g');
      window.__emojiFormat = function (text) {
        if (!replaceRegex.test(text)) {
          return text;
        }
        return text.replace(replaceRegex, function (match) {
          if (dataMap[match] &amp;&amp; window.weEmoji.EmojiData[dataMap[match].index]) {
            var data = window.weEmoji.EmojiData[dataMap[match].index];
            return emoji_wx_icon.replace('#name#', match).replace('#style#', data.style + ' we-emoji');
          }
          return match;
        });
      };
    } catch (e) {
      window.__emojiFormat = function (text) {
        return text;
      };
    }
  } else if (typeof window.__emojiFormat === 'undefined') {
    window.__emojiFormat = function (text) {
      return text;
    };
  }

})();
  &lt;/script&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   var __INLINE_SCRIPT__ = (function () {
  'use strict';

  function _typeof(obj) {
    "@babel/helpers - typeof";

    return _typeof = "function" == typeof Symbol &amp;&amp; "symbol" == typeof Symbol.iterator ? function (obj) {
      return typeof obj;
    } : function (obj) {
      return obj &amp;&amp; "function" == typeof Symbol &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj;
    }, _typeof(obj);
  }

  function _arrayWithHoles(arr) {
    if (Array.isArray(arr)) return arr;
  }

  function _iterableToArrayLimit(arr, i) {
    var _i = null == arr ? null : "undefined" != typeof Symbol &amp;&amp; arr[Symbol.iterator] || arr["@@iterator"];
    if (null != _i) {
      var _s,
        _e,
        _x,
        _r,
        _arr = [],
        _n = !0,
        _d = !1;
      try {
        if (_x = (_i = _i.call(arr)).next, 0 === i) {
          if (Object(_i) !== _i) return;
          _n = !1;
        } else for (; !(_n = (_s = _x.call(_i)).done) &amp;&amp; (_arr.push(_s.value), _arr.length !== i); _n = !0);
      } catch (err) {
        _d = !0, _e = err;
      } finally {
        try {
          if (!_n &amp;&amp; null != _i["return"] &amp;&amp; (_r = _i["return"](), Object(_r) !== _r)) return;
        } finally {
          if (_d) throw _e;
        }
      }
      return _arr;
    }
  }

  function _arrayLikeToArray$1(arr, len) {
    if (len == null || len &gt; arr.length) len = arr.length;
    for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i];
    return arr2;
  }

  function _unsupportedIterableToArray$1(o, minLen) {
    if (!o) return;
    if (typeof o === "string") return _arrayLikeToArray$1(o, minLen);
    var n = Object.prototype.toString.call(o).slice(8, -1);
    if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name;
    if (n === "Map" || n === "Set") return Array.from(o);
    if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen);
  }

  function _nonIterableRest() {
    throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }

  function _slicedToArray(arr, i) {
    return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray$1(arr, i) || _nonIterableRest();
  }

  function _toPrimitive(input, hint) {
    if (_typeof(input) !== "object" || input === null) return input;
    var prim = input[Symbol.toPrimitive];
    if (prim !== undefined) {
      var res = prim.call(input, hint || "default");
      if (_typeof(res) !== "object") return res;
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return (hint === "string" ? String : Number)(input);
  }

  function _toPropertyKey(arg) {
    var key = _toPrimitive(arg, "string");
    return _typeof(key) === "symbol" ? key : String(key);
  }

  function _defineProperty(obj, key, value) {
    key = _toPropertyKey(key);
    if (key in obj) {
      Object.defineProperty(obj, key, {
        value: value,
        enumerable: true,
        configurable: true,
        writable: true
      });
    } else {
      obj[key] = value;
    }
    return obj;
  }

  
  
  var Device = {};
  function detect(ua) {
    var MQQBrowser = ua.match(/MQQBrowser\/(\d+\.\d+)/i);
    var MQQClient = ua.match(/QQ\/(\d+\.(\d+)\.(\d+)\.(\d+))/i) || ua.match(/V1_AND_SQ_([\d\.]+)/);
    var WeChat = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/) || ua.match(/MicroMessenger\/((\d+)\.(\d+))/);
    var MacOS = ua.match(/Mac\sOS\sX\s(\d+[\.|_]\d+)/);
    var WinOS = ua.match(/Windows(\s+\w+)?\s+?(\d+\.\d+)/);
    var Linux = ua.match(/Linux\s/);
    var MiuiBrowser = ua.match(/MiuiBrowser\/(\d+\.\d+)/i);
    var M1 = ua.match(/MI-ONE/);
    var MIPAD = ua.match(/MI PAD/);
    var UC = ua.match(/UCBrowser\/(\d+\.\d+(\.\d+\.\d+)?)/) || ua.match(/\sUC\s/);
    var IEMobile = ua.match(/IEMobile(\/|\s+)(\d+\.\d+)/) || ua.match(/WPDesktop/);
    var ipod = ua.match(/(ipod).*\s([\d_]+)/i);
    var ipad = ua.match(/(ipad).*\s([\d_]+)/i);
    var iphone = ua.match(/(iphone)\sos\s([\d_]+)/i);
    var Chrome = ua.match(/Chrome\/(\d+\.\d+)/);
    var AndriodBrowser = ua.match(/Mozilla.*Linux.*Android.*AppleWebKit.*Mobile Safari/);
    var android = ua.match(/(android)\s([\d\.]+)/i);
    var harmony = ua.match(/(OpenHarmony)\s([\d\.]+)/i);
    Device.browser = Device.browser || {}, Device.os = Device.os || {};
    Device.os.type = -1;
    Device.os.unifiedPC = ua.match(/UnifiedPC/);
    Device.os.unifiedMac = /UnifiedPCMac/i.test(ua);
    Device.os.unifiedWindows = /UnifiedPCWindows/i.test(ua);
    if (window.ActiveXObject) {
      var vie = 6;
      (window.XMLHttpRequest || ua.indexOf('MSIE 7.0') &gt; -1) &amp;&amp; (vie = 7);
      (window.XDomainRequest || ua.indexOf('Trident/4.0') &gt; -1) &amp;&amp; (vie = 8);
      ua.indexOf('Trident/5.0') &gt; -1 &amp;&amp; (vie = 9);
      ua.indexOf('Trident/6.0') &gt; -1 &amp;&amp; (vie = 10);
      Device.browser.ie = true, Device.browser.version = vie;
    } else if (ua.indexOf('Trident/7.0') &gt; -1) {
      Device.browser.ie = true, Device.browser.version = 11;
    }
    if (android) {
      Device.os.android = true;
      Device.os.version = android[2];
      Device.os.type = 2;
    }
    if (harmony) {
      Device.os.harmony = true;
      Device.os.version = harmony[2];
      Device.os.type = 42;
    }
    if (ipod) {
      Device.os.ios = Device.os.ipod = true;
      Device.os.version = ipod[2].replace(/_/g, '.');
    }
    if (ipad) {
      Device.os.ios = Device.os.ipad = true;
      Device.os.version = ipad[2].replace(/_/g, '.');
      Device.os.type = 13;
    }
    if (iphone) {
      Device.os.iphone = Device.os.ios = true;
      Device.os.version = iphone[2].replace(/_/g, '.');
      Device.os.type = 1;
    }
    if (WinOS) Device.os.windows = true, Device.os.version = WinOS[2], Device.os.type = 15;
    if (MacOS) Device.os.Mac = true, Device.os.version = MacOS[1], Device.os.type = 14;
    if (Linux) Device.os.Linux = true, Device.os.type = 33;
    if (ua.indexOf('lepad_hls') &gt; 0) Device.os.LePad = true;
    if (MIPAD) Device.os.MIPAD = true;
    if (MQQBrowser) Device.browser.MQQ = true, Device.browser.version = MQQBrowser[1];
    if (MQQClient) Device.browser.MQQClient = true, Device.browser.version = MQQClient[1];
    if (WeChat) Device.browser.WeChat = true, Device.browser.mmversion = Device.browser.version = WeChat[1];
    if (MiuiBrowser) Device.browser.MIUI = true, Device.browser.version = MiuiBrowser[1];
    if (UC) Device.browser.UC = true, Device.browser.version = UC[1] || NaN;
    if (IEMobile) Device.browser.IEMobile = true, Device.browser.version = IEMobile[2];
    if (AndriodBrowser) {
      Device.browser.AndriodBrowser = true;
    }
    if (M1) {
      Device.browser.M1 = true;
    }
    if (Chrome) {
      Device.browser.Chrome = true, Device.browser.version = Chrome[1];
    }
    if (Device.os.windows) {
      if (typeof navigator.platform !== "undefined" &amp;&amp; navigator.platform.toLowerCase() == "win64") {
        Device.os.win64 = true;
      } else {
        Device.os.win64 = false;
      }
    }
    if (Device.os.Mac || Device.os.windows || Device.os.Linux || Device.os.unifiedPC || /OpenHarmony/i.test(ua) &amp;&amp; /pc/i.test(ua)) {
      Device.os.pc = true;
    }
    var osType = {
      iPad7: 'iPad; CPU OS 7',
      LePad: 'lepad_hls',
      XiaoMi: 'MI-ONE',
      SonyDTV: "SonyDTV",
      SamSung: 'SAMSUNG',
      HTC: 'HTC',
      VIVO: 'vivo'
    };
    for (var os in osType) {
      Device.os[os] = ua.indexOf(osType[os]) !== -1;
    }
    Device.os.phone = Device.os.phone || /windows phone/i.test(ua);
    Device.os.getNumVersion = function () {
      return parseFloat(Device.os.version);
    };
    Device.os.hasTouch = 'ontouchstart' in window;
    if (Device.os.hasTouch &amp;&amp; Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 6) {
      Device.os.hasTouch = false;
    }
    if (Device.browser.WeChat &amp;&amp; Device.browser.version &lt; 5.0) {
      Device.os.hasTouch = false;
    }
    Device.browser.getNumVersion = function () {
      return parseFloat(Device.browser.version);
    };
    Device.browser.isFFCanOcx = function () {
      return !!Device.browser.firefox &amp;&amp; Device.browser.getNumVersion() &gt;= 3.0;
    };
    Device.browser.isCanOcx = function () {
      return !!Device.os.windows &amp;&amp; (!!Device.browser.ie || Device.browser.isFFCanOcx() || !!Device.browser.webkit);
    };
    Device.browser.isNotIESupport = function () {
      return !!Device.os.windows &amp;&amp; (!!Device.browser.webkit || Device.browser.isFFCanOcx());
    };
    Device.userAgent = {};
    Device.userAgent.browserVersion = Device.browser.version;
    Device.userAgent.osVersion = Device.os.version;
    if (Device.os.unifiedPC) {
      if (Device.os.unifiedWindows) Device.os.type = 37;else if (Device.os.unifiedMac) Device.os.type = 38;else Device.os.type = 39;
    }
    delete Device.userAgent.version;
  }
  detect(window.navigator.userAgent);
  function canSupportH5Video() {
    var ua = window.navigator.userAgent,
      m = null;
    if (!!Device.os.android) {
      if (Device.browser.MQQ &amp;&amp; Device.browser.getNumVersion() &gt;= 4.2) {
        return true;
      }
      if (ua.indexOf('MI2') != -1) {
        return true;
      }
      if (Device.os.version &gt;= '4' &amp;&amp; (m = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/))) {
        if (parseFloat(m[1]) &gt;= 4.2) {
          return true;
        }
      }
      if (Device.os.version &gt;= '4.1') {
        return true;
      }
    }
    return false;
  }
  function canSupportVideoMp4() {
    var video = document.createElement('video');
    if (typeof video.canPlayType === 'function') {
      if (video.canPlayType('video/mp4; codecs="mp4v.20.8"') === 'probably') {
        return true;
      }
      if (video.canPlayType('video/mp4; codecs="avc1.42E01E"') === 'probably' || video.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"') === 'probably') {
        return true;
      }
    }
    return false;
  }
  function canSupportAutoPlay() {
    if (Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 10) {
      return false;
    }
    return true;
  }
  function isLockdownMode() {
    if (!Device.os.ios || Device.os.getNumVersion() &lt; 16) {
      return false;
    }
    if (typeof WebAssembly === 'undefined' &amp;&amp; typeof OfflineAudioContext === 'undefined' &amp;&amp; typeof WebGLRenderingContext === 'undefined') {
      return true;
    }
    return false;
  }
  Device.canSupportVideo = canSupportVideoMp4 || canSupportH5Video;
  Device.canSupportVideoMp4 = canSupportVideoMp4;
  Device.canSupportH5Video = canSupportH5Video;
  Device.canSupportAutoPlay = canSupportAutoPlay;
  Device.isLockdownMode = isLockdownMode;
  
  Device.cpVersion = function (version) {
    var cp = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 0;
    var canEqual = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    var nowVersionStr = Device.os.version;
    if (!nowVersionStr) return false;
    var versionArr = version.split('.');
    var nowVersionArr = nowVersionStr.split('.');
    for (var i = 0; i &lt; Math.max(nowVersionArr.length, versionArr.length); i++) {
      var vi = +versionArr[i];
      var nvi = +nowVersionArr[i];
      if (vi === nvi) continue;
      if (cp &gt; 0) return vi &gt; nvi;
      if (cp &lt; 0) return vi &lt; nvi;
    }
    return canEqual || cp === 0;
  };

  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
    try {
      var info = gen[key](arg);
      var value = info.value;
    } catch (error) {
      reject(error);
      return;
    }
    if (info.done) {
      resolve(value);
    } else {
      Promise.resolve(value).then(_next, _throw);
    }
  }
  function _asyncToGenerator(fn) {
    return function () {
      var self = this,
        args = arguments;
      return new Promise(function (resolve, reject) {
        var gen = fn.apply(self, args);
        function _next(value) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
        }
        function _throw(err) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
        }
        _next(undefined);
      });
    };
  }

  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" &amp;&amp; o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike &amp;&amp; o &amp;&amp; typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i &gt;= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion &amp;&amp; it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
  function _arrayLikeToArray(arr, len) { if (len == null || len &gt; arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i]; return arr2; }
  
  
  var ua$1 = navigator.userAgent;
  var is_ios = /(iPhone|iPad|iPod|iOS)/i.test(ua$1);
  var is_wp = /Windows\sPhone/i.test(ua$1);
  var is_android$1 = /(Android)/i.test(ua$1);
  var is_wechat = /MicroMessenger\/([\d\.]+)/i.test(ua$1);
  var is_mac = /mac\sos/i.test(ua$1) &amp;&amp; !is_ios;
  var is_windows = /windows\snt/i.test(ua$1) &amp;&amp; !is_wp;
  var is_mpapp = /MPAPP\/([\d\.]+)/i.test(ua$1);
  var is_ipad = /iPad/i.test(ua$1);
  var is_windows_wechat = /WindowsWechat/i.test(ua$1);
  var is_mac_wechat = /MacWechat/i.test(ua$1) || /wechat.*mac os/i.test(ua$1);
  var is_prefetch = is_wechat &amp;&amp; window.WeixinPrefecherJSBridge;
  var is_donut_app = /SAAASDK/i.test(ua$1);
  var is_harmony = /OpenHarmony|ArkWeb/i.test(ua$1);
  var is_linux = /Linux\s/i.test(ua$1);
  var xweb_match = ua$1.match(/XWEB\/([\d.]+)/i);
  var xweb_version = xweb_match &amp;&amp; xweb_match[1] ? parseInt(xweb_match[1], 10) : 0;
  var is_unified_pc_wechat = /UnifiedPC\w+Wechat/i.test(ua$1);
  var is_in_miniProgram = is_android$1 &amp;&amp; /miniprogram/.test(ua$1.toLowerCase()) || window.__wxjs_environment == 'miniprogram';
  var is_wx_work = /wxwork/i.test(ua$1);
  function getUrlParams() {
    var vars = location.search.substring(1).split('&amp;');
    var params = {};
    var _iterator = _createForOfIteratorHelper(vars),
      _step;
    try {
      for (_iterator.s(); !(_step = _iterator.n()).done;) {
        var ele = _step.value;
        var pair = ele.split('=');
        var key = decodeURIComponent(pair[0]);
        if (typeof params[key] === 'undefined') {
          params[key] = decodeURIComponent(pair[1]);
        }
      }
    } catch (err) {
      _iterator.e(err);
    } finally {
      _iterator.f();
    }
    return params;
  }
  function get() {
    var reg = /MicroMessenger\/([\d\.]+)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMac() {
    var reg = /MacWechat\/([\d\.]+)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMacOS() {
    var reg = /Mac OS X ([\d_]+)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1].replace(/_/g, '.');
    }
    return false;
  }
  function getWindows() {
    var reg = /WindowsWechat\(0x(.+?)\)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getWxWork() {
    var reg = /wxwork\/([\d\.]+)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMpApp() {
    var appVersion = [2, 4, 5];
    var match = navigator.userAgent.match(/MPAPP\/(\d+(\.\d+)*)/);
    if (match) {
      appVersion = match[1].split('.').map(function (v) {
        return Number(v);
      });
    }
    return appVersion.join('.');
  }
  function getUnifiedPcVer() {
    var versionInfo = navigator.userAgent.match(/UnifiedPC\w+Wechat\(0xf\w{2}(\w+?)\w{2}\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(0, 1));
      var subVersion = getVersionNumber(version.slice(1, 2));
      var subVersion2 = getVersionNumber(version.slice(2, 3));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
  }
  function getVersionNumber(hexStr) {
    return Number(Number("0x".concat(hexStr)).toString(10));
  }
  function getWindowsVersionFormat() {
    var versionInfo = navigator.userAgent.match(/WindowsWechat\(0x(\w+?)\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(1, 2));
      var subVersion = getVersionNumber(version.slice(2, 4));
      var subVersion2 = getVersionNumber(version.slice(4, 6));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
    return false;
  }
  function getInner() {
    var reg = /MicroMessenger\/[\d\.]+\(0x(.+?)\)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1] &amp;&amp; ret[1] != null) {
      return ret[1];
    }
    if (!ret &amp;&amp; /MicroMessenger\/[\d\.]+/i.test(ua$1)) {
      var urlParams = getUrlParams();
      if (urlParams.version) {
        return urlParams.version;
      }
    }
    return false;
  }
  var opfunc = {
    'cp-1': function cp1(a, b) {
      return a &lt; b;
    },
    cp0: function cp0(a, b) {
      return a === b;
    },
    cp1: function cp1(a, b) {
      return a &gt; b;
    }
  };
  function cpVersion(ver, op, canEq, type) {
    var mmver = false;
    switch (type) {
      case 'mac':
        mmver = getMac();
        break;
      case 'windows':
        mmver = getWindowsVersionFormat();
        break;
      case 'wxwork':
        mmver = getWxWork();
        break;
      case 'mpapp':
        mmver = getMpApp();
        break;
      case 'unifiedpc':
        mmver = getUnifiedPcVer();
        break;
      default:
        mmver = get();
        break;
    }
    if (!mmver) {
      return;
    }
    var mmversion = mmver.split('.');
    var version = ver.split('.');
    if (!/\d+/g.test(mmversion[mmversion.length - 1])) {
      mmversion.pop();
    }
    for (var i = 0, len = Math.max(mmversion.length, version.length); i &lt; len; ++i) {
      var mmv = mmversion[i] || '';
      var v = version[i] || '';
      var mmvn = parseInt(mmv, 10) || 0;
      var vn = parseInt(v, 10) || 0;
      var eq = opfunc.cp0(mmvn, vn);
      if (eq) {
        continue;
      }
      var cp = opfunc["cp".concat(op)];
      return cp(mmvn, vn);
    }
    return canEq || op === 0;
  }
  function eqVersion(version) {
    return cpVersion(version, 0);
  }
  function gtVersion(version, canEq) {
    return cpVersion(version, 1, canEq);
  }
  function ltVersion(version, canEq) {
    return cpVersion(version, -1, canEq);
  }
  function getPlatform() {
    if (is_ios) {
      return 'ios';
    }
    if (is_android$1) {
      return 'android';
    }
    if (is_mac) {
      return 'mac_os';
    }
    if (is_windows) {
      return 'windows';
    }
    return 'unknown';
  }
  var is_google_play = false;
  var inner_ver_for_google_play_check = getInner();
  if (is_android$1 &amp;&amp; inner_ver_for_google_play_check) {
    var v = "0x".concat(inner_ver_for_google_play_check.substr(-2));
    if (parseInt(v) &gt;= 64 &amp;&amp; parseInt(v) &lt;= 79) {
      is_google_play = true;
    }
  }
  function compareHexVersion(hexNum) {
    var innerVersion = getInner();
    if (innerVersion &amp;&amp; hexNum) {
      if (typeof hexNum === 'string') {
        hexNum = parseInt(hexNum, 16);
      }
      var version = parseInt(innerVersion, 16);
      return version &gt;= hexNum;
    }
    return false;
  }
  var mmversion = {
    get: get,
    getMac: getMac,
    getMacOS: getMacOS,
    getWindows: getWindows,
    getInner: getInner,
    getWxWork: getWxWork,
    getMpApp: getMpApp,
    cpVersion: cpVersion,
    eqVersion: eqVersion,
    gtVersion: gtVersion,
    ltVersion: ltVersion,
    getPlatform: getPlatform,
    getVersionNumber: getVersionNumber,
    isWp: is_wp,
    isIOS: is_ios,
    isAndroid: is_android$1,
    isHarmony: is_harmony,
    isHarmonyWechat: is_harmony &amp;&amp; is_wechat &amp;&amp; cpVersion('1.0.0', 1, true),
    isInMiniProgram: is_in_miniProgram,
    isWechat: is_wechat,
    isMac: is_mac,
    isWindows: is_windows,
    isLinux: is_linux,
    isMacWechat: is_mac_wechat,
    isWindowsWechat: is_windows_wechat,
    isWxWork: is_wx_work,
    isOnlyWechat: is_wechat &amp;&amp; !is_wx_work,
    isMpapp: is_mpapp,
    isNewMpApp: false,
    isIPad: is_ipad,
    isGooglePlay: is_google_play,
    isPrefetch: is_prefetch,
    isDonutAPP: is_donut_app,
    compareHexVersion: compareHexVersion,
    isPcWechat: is_windows_wechat || is_mac_wechat,
    xwebVersion: xweb_version,
    isUnifiedPcWechat: is_unified_pc_wechat
  };

  var initJsBridge = false;
  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }
  function connectWebViewJavascriptBridge(callback) {
    if (window.WebViewMPapp || window.WebViewJavascriptBridge) {
      return callback(window.WebViewMPapp || window.WebViewJavascriptBridge);
    }
    if (window.WVJBCallbacks) {
      return window.WVJBCallbacks.push(callback);
    }
    window.WVJBCallbacks = [callback];
    if (!mmversion.isMpapp) {
      return false;
    }
    if (!initJsBridge) {
      initJsBridge = true;
      var WVJBIframe = document.createElement('iframe');
      WVJBIframe.style.display = 'none';
      WVJBIframe.src = 'https://__bridge_loaded__';
      document.body.appendChild(WVJBIframe);
      setTimeout(function () {
        initJsBridge = false;
        document.body.removeChild(WVJBIframe);
      }, 0);
    }
    return false;
  }
  function invoke$1(jsapiName, opt, callback) {
    connectWebViewJavascriptBridge(function (bridge) {
      try {
        if (typeof opt === 'function') {
          callback = opt;
        }
        if (_typeof(opt) !== 'object' &amp;&amp; typeof opt !== 'string') {
          opt = {};
        }
        bridge.callHandler(jsapiName, opt, function (res) {
          try {
            var ret = _typeof(res) === 'object' ? res : JSON.parse(res);
            var errMsg = ret.err_msg || ret.errMsg;
            console.info("[mpapp jsapi] invoke-&gt;".concat(jsapiName, " ").concat(opt.action || '', " ").concat(errMsg));
            typeof callback === 'function' &amp;&amp; callback(ret);
          } catch (e) {
            window.WX_BJ_REPORT.BadJs.report('invoke', "callback ".concat(jsapiName, " error:"), {
              mid: 'mmbizwebapp:js_brridge',
              _info: e
            });
            console.error("[mpapp jsapi] ".concat(jsapiName, " ").concat(opt.action || ''), e, res);
          }
        });
      } catch (e) {
        window.WX_BJ_REPORT.BadJs.report('invoke', 'callback error:', {
          mid: 'mmbizwebapp:js_brridge',
          _info: e
        });
        console.error('[mpapp jsapi]', e);
      }
    });
  }

  function _regeneratorRuntime$1() {  _regeneratorRuntime$1 = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  var doc$1 = {};
  var isAcrossOrigin$1 = false;
  var notFoundedMPPageAction = [];
  var __moon_report$1 = window.__moon_report || function () {};
  var MOON_JSAPI_KEY_OFFSET = 8;
  try {
    doc$1 = top.window.document;
  } catch (e) {
    isAcrossOrigin$1 = true;
  }
  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }
  function ready(onBridgeReady) {
    var bridgeReady = function bridgeReady() {
      try {
        if (onBridgeReady) {
          window.onBridgeReadyTime = window.onBridgeReadyTime || Date.now();
          onBridgeReady();
        }
      } catch (e) {
        __moon_report$1([{
          offset: MOON_JSAPI_KEY_OFFSET,
          log: 'ready',
          e: e
        }]);
        throw e;
      }
      window.jsapiReadyTime = Date.now();
    };
    if (!isAcrossOrigin$1 &amp;&amp; (typeof top.window.WeixinJSBridge === 'undefined' || !top.window.WeixinJSBridge.invoke)) {
      if (doc$1.addEventListener) {
        doc$1.addEventListener('WeixinJSBridgeReady', bridgeReady, false);
      } else if (doc$1.attachEvent) {
        doc$1.attachEvent('WeixinJSBridgeReady', bridgeReady);
        doc$1.attachEvent('onWeixinJSBridgeReady', bridgeReady);
      }
    } else {
      bridgeReady();
    }
  }
  var invokeNotWaitA8key = ['notifyPageInfo', 'updatePageAuth'
  ];
  var checkNotFoundedInvoke = function checkNotFoundedInvoke(methodName, args) {
    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; notFoundedMPPageAction.includes(args === null || args === void 0 ? void 0 : args.action)) {
      return true;
    }
    return false;
  };
  function invoke(_x, _x2, _x3) {
    return _invoke.apply(this, arguments);
  }
  function _invoke() {
    _invoke = _asyncToGenerator( _regeneratorRuntime$1().mark(function _callee(methodName, args, callback) {
      return _regeneratorRuntime$1().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__ &amp;&amp; !invokeNotWaitA8key.includes(methodName))) {
              _context.next = 3;
              break;
            }
            _context.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin$1) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                alert('请在微信中打开此链接');
                return false;
              }
              if (checkNotFoundedInvoke(methodName, args)) {
                setTimeout(function () {
                  if (callback) {
                    callback.apply(window, [{
                      err_msg: "".concat(methodName, ":fail"),
                      err_desc: 'action isn\'t supported'
                    }]);
                  }
                }, 0);
              } else {
                top.window.WeixinJSBridge.invoke(methodName, args, function () {
                  try {
                    for (var _len2 = arguments.length, rets = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
                      rets[_key2] = arguments[_key2];
                    }
                    var ret = rets[0];
                    var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
                    if (['handleMPPageAction', 'handleVideoAction', 'handleHaokanAction'].indexOf(methodName) !== -1) {
                      var action = (args === null || args === void 0 ? void 0 : args.action) || '';
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName, ", action-&gt;").concat(action).concat(errMsg));
                    } else {
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName).concat(errMsg));
                    }
                    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; ((ret === null || ret === void 0 ? void 0 : ret.err_desc) === 'action isn\'t supported' || (ret === null || ret === void 0 ? void 0 : ret.err_msg) === 'handleMPPageAction:fail action is not supported')) {
                      notFoundedMPPageAction.push(args === null || args === void 0 ? void 0 : args.action);
                    }
                    if (callback) {
                      callback.apply(window, rets);
                    }
                  } catch (e) {
                    __moon_report$1([{
                      offset: MOON_JSAPI_KEY_OFFSET,
                      log: "invoke;methodName:".concat(methodName),
                      e: e
                    }]);
                    throw e;
                  }
                });
              }
            });
          case 4:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return _invoke.apply(this, arguments);
  }
  function call(_x4) {
    return _call.apply(this, arguments);
  }
  function _call() {
    _call = _asyncToGenerator( _regeneratorRuntime$1().mark(function _callee2(methodName) {
      return _regeneratorRuntime$1().wrap(function _callee2$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__)) {
              _context2.next = 3;
              break;
            }
            _context2.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin$1) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                return false;
              }
              try {
                top.window.WeixinJSBridge.call(methodName);
              } catch (e) {
                __moon_report$1([{
                  offset: MOON_JSAPI_KEY_OFFSET,
                  log: "call;methodName:".concat(methodName),
                  e: e
                }]);
                throw e;
              }
            });
          case 4:
          case "end":
            return _context2.stop();
        }
      }, _callee2);
    }));
    return _call.apply(this, arguments);
  }
  function on$1(eventName, callback) {
    ready(function () {
      if (isAcrossOrigin$1) return false;
      if (_typeof(top.window.WeixinJSBridge) !== 'object' || !top.window.WeixinJSBridge.on) {
        return false;
      }
      if (!window.JSAPIEventCallbackMap[eventName]) {
        window.JSAPIEventCallbackMap[eventName] = [];
      }
      window.JSAPIEventCallbackMap[eventName].push(callback);
      if (window.JSAPIEventCallbackMap[eventName].length &gt; 1) {
        return false;
      }
      top.window.WeixinJSBridge.on(eventName, function () {
        try {
          for (var _len = arguments.length, rets = new Array(_len), _key = 0; _key &lt; _len; _key++) {
            rets[_key] = arguments[_key];
          }
          var ret = rets[0];
          var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
          console.info('[system]', "[jsapi] event-&gt;".concat(eventName).concat(errMsg));
          if (window.JSAPIEventCallbackMap[eventName] &amp;&amp; window.JSAPIEventCallbackMap[eventName].length) {
            var result;
            for (var i = 0; i &lt; window.JSAPIEventCallbackMap[eventName].length; i++) {
              result = window.JSAPIEventCallbackMap[eventName][i].apply(window, rets);
            }
            return result;
          }
        } catch (e) {
          __moon_report$1([{
            offset: MOON_JSAPI_KEY_OFFSET,
            log: "on;eventName:".concat(eventName),
            e: e
          }]);
          throw e;
        }
      });
    });
  }
  function remove(eventName, callback) {
    ready(function () {
      if (!window.JSAPIEventCallbackMap[eventName]) {
        return false;
      }
      var result = false;
      for (var i = window.JSAPIEventCallbackMap[eventName].length - 1; i &gt;= 0; i--) {
        if (window.JSAPIEventCallbackMap[eventName][i] === callback) {
          window.JSAPIEventCallbackMap[eventName].splice(i, 1);
          result = true;
        }
      }
      return result;
    });
  }
  var JSAPI = {
    ready: ready,
    invoke: invoke,
    call: call,
    on: on$1,
    remove: remove
  };

  
  function _log(level, msg) {
    if (level === 'log') {
      level = 'info';
      msg = "[WechatFe]".concat(msg);
    } else {
      var prefix = "__wap__".concat(window.__second_open__ ? ' (sec)' : '');
      msg = "".concat(prefix, " ").concat(msg, " location:[").concat(location.href, "]");
    }
    msg += new Error().stack;
    if (mmversion.isMpapp) {
      invoke$1('WNNativeCallbackLog', msg);
    } else if (mmversion.isWechat) {
      if (mmversion.isAndroid) {
        console.warn('[system]', "[MicroMsg.JsApiLog][".concat(level, "] jslog : ").concat(msg));
      } else if (mmversion.isIOS) {
        JSAPI.invoke('writeLog', {
          level: level,
          msg: msg
        });
      } else {
        JSAPI.invoke('log', {
          level: level,
          msg: msg
        });
      }
    }
  }
  var Log = {
    info: function info() {
      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key &lt; _len; _key++) {
        args[_key] = arguments[_key];
      }
      _log('info', args.join(' '));
    },
    warn: function warn() {
      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
        args[_key2] = arguments[_key2];
      }
      _log('warn', args.join(' '));
    },
    error: function error() {
      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 &lt; _len3; _key3++) {
        args[_key3] = arguments[_key3];
      }
      _log('error', args.join(' '));
    },
    debug: function debug() {
      for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 &lt; _len4; _key4++) {
        args[_key4] = arguments[_key4];
      }
      _log('debug', args.join(' '));
    },
    log: function log() {
      for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 &lt; _len5; _key5++) {
        args[_key5] = arguments[_key5];
      }
      _log('info', args.join(' '));
    }
  };

  
  
  var reportLogs = [];
  var reportExtraLogs = [];
  var sendUrl = '/mp/jsmonitor?#wechat_redirect';
  var monitor = {};
  monitor._reportOptions = {
    idkey: {}
  };
  function ObjWithoutProperty(source, exclude) {
    if (source === null) return {};
    var target = {};
    var sourceKeys = Object.keys(source);
    for (var i = 0; i &lt; sourceKeys.length; i++) {
      var key = sourceKeys[i];
      if (exclude.indexOf(key) &gt;= 0) continue;
      target[key] = source[key];
    }
    return target;
  }
  function formatDataToString(data) {
    var reportData = [];
    for (var key in data) {
      if (Object.prototype.hasOwnProperty.call(data, key)) {
        reportData.push(key + '=' + encodeURIComponent(data[key]));
      }
    }
    return reportData.join('&amp;');
  }
  monitor.getReportData = function (opt) {
    opt = opt || {};
    var idkey = monitor._reportOptions.idkey || {};
    var key = null;
    var reportData = {};
    var nextKey;
    try {
      for (key in idkey) {
        if (Object.prototype.hasOwnProperty.call(idkey, key) &amp;&amp; idkey[key]) {
          reportLogs.push(key + '_' + idkey[key]);
        }
      }
    } catch (e) {
      return false;
    }
    if (reportLogs.length === 0) {
      return false;
    }
    if (reportExtraLogs.length) {
      reportData.lc = reportExtraLogs.length;
      reportExtraLogs.forEach(function (extraLog, index) {
        reportData["log".concat(index)] = extraLog;
      });
    }
    try {
      var reportOptions = monitor._reportOptions;
      if (reportOptions !== null &amp;&amp; reportOptions !== undefined) {
        for (nextKey in reportOptions) {
          if (Object.prototype.hasOwnProperty.call(reportOptions, nextKey)) {
            reportData[nextKey] = reportOptions[nextKey];
          }
        }
      }
    } catch (e) {
      reportData = {};
    }
    reportData.idkey = reportLogs.join(';');
    reportData.t = Math.random();
    if (opt.remove !== false) {
      reportLogs = [];
      reportExtraLogs = [];
      monitor._reportOptions = {
        idkey: {}
      };
    }
    return reportData;
  };
  monitor.setLogs = function (opt) {
    var id = opt.id;
    var key = opt.key;
    var value = opt.value;
    var extraLog = opt.log;
    var others = ObjWithoutProperty(opt, ['id', 'key', 'value', 'log']);
    var idkey = monitor._reportOptions.idkey || {};
    var param = id + '_' + key;
    if (idkey[param]) {
      idkey[param] += value;
    } else {
      idkey[param] = value;
    }
    monitor._reportOptions.idkey = idkey;
    if (extraLog) {
      reportExtraLogs.push(extraLog);
    }
    try {
      if (others !== null &amp;&amp; others !== undefined) {
        for (var otherKey in others) {
          if (Object.prototype.hasOwnProperty.call(others, otherKey)) {
            monitor._reportOptions[otherKey] = others[otherKey];
          }
        }
      }
    } catch (e) {
      console.log(e);
    }
    return monitor;
  };
  monitor.setAvg = function (id, key, value) {
    var idkey = monitor._reportOptions.idkey || {};
    var param1 = id + '_' + key;
    var param2 = id + '_' + (key - 1);
    if (idkey[param1]) {
      idkey[param1] += value;
    } else {
      idkey[param1] = value;
    }
    if (idkey[param2]) {
      idkey[param2] += 1;
    } else {
      idkey[param2] = 1;
    }
    monitor._reportOptions.idkey = idkey;
    return monitor;
  };
  monitor.setSum = function (id, key) {
    var value = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : 1;
    var idkey = monitor._reportOptions.idkey;
    var param = id + '_' + key;
    if (idkey[param]) {
      idkey[param] += value;
    } else {
      idkey[param] = value;
    }
    monitor._reportOptions.idkey = idkey;
    return monitor;
  };
  monitor.send = function (async, ajax, origin) {
    if (async !== false) {
      async = true;
    }
    var data = monitor.getReportData();
    origin = origin || '';
    if (!data) {
      return;
    }
    if (!!ajax &amp;&amp; ajax instanceof Function) {
      ajax({
        url: origin + sendUrl,
        type: 'POST',
        mayAbort: true,
        data: data,
        async: async,
        timeout: 2000,
        dontReport: true
      });
    } else {
      new Image().src = origin + '/mp/jsmonitor?' + formatDataToString(data) + '#wechat_redirect';
    }
  };
  if (typeof window !== 'undefined' &amp;&amp; window.__monitor) {
    monitor = window.__monitor;
  } else {
    typeof window !== 'undefined' &amp;&amp; (window.__monitor = monitor);
  }
  var monitor$1 = monitor;

  
  var logList = [];
  var log = function log(msg) {
    logList.push(msg);
  };
  var printLog = function printLog() {
    for (var i = 0, len = logList.length; i &lt; len; ++i) {
      console.log("[RespType]".concat(logList[i]));
    }
  };
  var isArray = function isArray(val) {
    return Object.prototype.toString.call(val) === '[object Array]';
  };
  var getValueType = function getValueType(value) {
    if (isArray(value)) {
      return 'array';
    }
    return _typeof(value);
  };
  var parseRtDesc = function parseRtDesc(rtDesc, k) {
    var type = 'mix';
    var isRequired = false;
    var key = k;
    if (k) {
      var requireKeyWord = '_R';
      var pos = k.indexOf(requireKeyWord);
      var len = k.length - requireKeyWord.length;
      isRequired = pos !== -1 &amp;&amp; pos === len;
      key = isRequired ? k.substring(0, len) : k;
    }
    if (typeof rtDesc === 'string') {
      type = rtDesc;
    } else if (isArray(rtDesc)) {
      type = 'array';
    } else if (_typeof(rtDesc) === 'object') {
      type = 'object';
    }
    return {
      key: key,
      type: type,
      isRequired: isRequired
    };
  };
  var checkForArrayRtDesc = function checkForArrayRtDesc(arr, rtDescs) {
    if (!isArray(arr)) {
      return false;
    }
    for (var i = 0, len = arr.length; i &lt; len; ++i) {
      var value = arr[i];
      var rtDesc = void 0;
      var j = 0;
      var flag = rtDescs.length === 0;
      while (rtDesc = rtDescs[j++]) {
        if (checkForRtDesc(value, rtDesc)) {
          flag = true;
          break;
        }
      }
      if (!flag) {
        return false;
      }
    }
    return true;
  };
  var checkForStringRtDesc = function checkForStringRtDesc(value, rtDesc) {
    var valueType = getValueType(value);
    var desc = parseRtDesc(rtDesc);
    var ret = desc.type === valueType;
    if (!ret) {
      log("miss match type : ".concat(valueType, " !== ").concat(desc.type));
    }
    return ret;
  };
  var checkForObjectRtDesc = function checkForObjectRtDesc(json, rtDesc) {
    if (_typeof(json) !== 'object' || isArray(json)) {
      log('must be object');
      return false;
    }
    var rootJson = json;
    var nowCheckValue = json;
    for (var k in rtDesc) {
      if (rtDesc.hasOwnProperty(k)) {
        var nowCheckDesc = rtDesc[k];
        var desc = parseRtDesc(nowCheckDesc, k);
        var key = desc.key;
        nowCheckValue = rootJson[key];
        var valueType = getValueType(nowCheckValue);
        if (desc.isRequired &amp;&amp; nowCheckValue === undefined) {
          log("is required @key=".concat(key));
          return false;
        }
        if (nowCheckValue !== undefined) {
          if (valueType !== desc.type &amp;&amp; desc.type !== 'mix') {
            log("miss match type : ".concat(valueType, " !== ").concat(desc.type, " @key=").concat(key));
            return false;
          }
          if ((valueType === 'array' || valueType === 'object') &amp;&amp; desc.type !== 'mix') {
            if (!checkForRtDesc(nowCheckValue, nowCheckDesc)) {
              return false;
            }
          }
        }
      }
    }
    return true;
  };
  var checkForRtDesc = function checkForRtDesc(json, rtDesc) {
    if (isArray(rtDesc)) {
      return checkForArrayRtDesc(json, rtDesc);
    }
    if (_typeof(rtDesc) === 'object') {
      return checkForObjectRtDesc(json, rtDesc);
    }
    if (typeof rtDesc === 'string') {
      return checkForStringRtDesc(json, rtDesc);
    }
    return false;
  };
  var _check = function check(json, rtDescs) {
    if (typeof json === 'string') {
      try {
        json = eval("(".concat(json, ")"));
      } catch (e) {
        log('parse json error');
        return false;
      }
    }
    if (_typeof(json) !== 'object') {
      log('must be object');
      return false;
    }
    if (!isArray(rtDescs)) {
      rtDescs = [rtDescs];
    }
    var rtDesc;
    var i = 0;
    while (rtDesc = rtDescs[i++]) {
      if (checkForRtDesc(json, rtDesc)) {
        return true;
      }
    }
    return false;
  };
  var RespTypes = {
    check: function check(json, rtDesc) {
      logList = [];
      try {
        var ret = _check(json, rtDesc);
        if (!ret) {
          printLog();
        }
        return ret;
      } catch (e) {
        logList.push("[rtException]".concat(e.toString()));
        printLog();
        return false;
      }
    },
    getMsg: function getMsg() {
      return logList.join(';');
    }
  };

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  function _defineProperties(target, props) {
    for (var i = 0; i &lt; props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor) descriptor.writable = true;
      Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
    }
  }
  function _createClass(Constructor, protoProps, staticProps) {
    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
    if (staticProps) _defineProperties(Constructor, staticProps);
    Object.defineProperty(Constructor, "prototype", {
      writable: false
    });
    return Constructor;
  }

  
  var prefix = '__WXLS__';
  var localStorage = window.localStorage || {
    getItem: function getItem() {},
    setItem: function setItem() {},
    removeItem: function removeItem() {},
    key: function key() {},
    clear: function clear() {
      var _a, _b;
      (_b = (_a = window.localStorage) === null || _a === void 0 ? void 0 : _a.clear) === null || _b === void 0 ? void 0 : _b.call(_a);
    },
    length: 0
  };
  var evictionPolicies = {
    noeviction: function noeviction(data) {
      return data;
    },
    'allkeys-random': function allkeysRandom(data, size) {
      var keys = Object.keys(data);
      var memCnt = 0;
      while (memCnt &lt; size) {
        var len = keys.length;
        var randomKeyIdx = Math.floor(Math.random() * len);
        var randomKey = keys[randomKeyIdx];
        memCnt += JSON.stringify(data[randomKey]).length;
        delete data[randomKey];
        keys = Object.keys(data);
      }
      return data;
    },
    'volatile-ttl': function volatileTtl(data, size) {
      var keys = Object.keys(data);
      keys = keys.sort(function (key1, key2) {
        var d1 = data[key1];
        var d2 = data[key2];
        if (d1.exp &lt; d2.exp) return -1;
        if (d1.exp &gt; d2.exp) return 1;
        return 0;
      });
      var memCnt = 0;
      for (var i = 0; i &lt; keys.length; i++) {
        if (memCnt &gt;= size) break;
        var key = keys[i];
        memCnt += JSON.stringify(data[key]).length;
        delete data[key];
      }
      return data;
    },
    'clear-all': function clearAll() {
      localStorage.clear();
      return {};
    }
  };
  function formatLogMsg(str) {
    return "[WXLS] ".concat(str);
  }
  
  var LS = function () {
    function LS(func, evictionPolicy, logger) {
      _classCallCheck(this, LS);
      this.logger = function () {};
      if (!func) throw 'require function name.';
      this.evictionPolicy = 'noeviction';
      this.key = func;
      if (typeof logger === 'function') {
        this.logger = function (str, type) {
          return logger(formatLogMsg(str), type);
        };
      }
      if (evictionPolicy &amp;&amp; Object.keys(evictionPolicies).indexOf(evictionPolicy) !== -1) {
        this.evictionPolicy = evictionPolicy;
      }
      this.init();
    }
    _createClass(LS, [{
      key: "init",
      value: function init() {
        var _a, _b;
        this.check();
        if (Math.random() * 1000 &lt; 1) {
          (_a = this.logger) === null || _a === void 0 ? void 0 : _a.call(this, "LSlen: ".concat(((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length) || localStorage.length), 'report');
        }
      }
    }, {
      key: "getData",
      value: function getData() {
        var data = LS.getItem(this.key) || '{}';
        try {
          data = JSON.parse(data);
        } catch (e) {
          this.logger("getData error: ".concat(e), 'error');
          localStorage.removeItem(prefix + this.key);
          data = {};
        }
        return data;
      }
    }, {
      key: "check",
      value: function check(isReturn) {
        var data = this.getData();
        var temp = {};
        var now = +new Date();
        var key;
        var val;
        for (key in data) {
          val = data[key];
          if (+val.exp &gt; now) {
            temp[key] = val;
          }
        }
        this.logger("check info: isReturn:".concat(isReturn, " data:").concat(JSON.stringify(temp)), 'info');
        if (isReturn) return temp;
        LS.setItem(this.key, JSON.stringify(temp), this.logger);
      }
    }, {
      key: "set",
      value: function set(key, val, exp) {
        var _a, _b;
        var data = this.check(true);
        data[key] = {
          val: val,
          exp: exp || +new Date()
        };
        try {
          if (localStorage.getItem(prefix + this.key)) localStorage.removeItem(prefix + this.key);
          localStorage.setItem(prefix + this.key, JSON.stringify(data));
          this.logger("first set success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data)), 'success');
        } catch (e) {
          this.logger("first set error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data), " k:").concat(key, " v:").concat(val, " exp:").concat(exp), 'error');
          localStorage.clear();
          LS.setItem(this.key, JSON.stringify(_defineProperty({}, key, {
            val: val,
            exp: exp || +new Date()
          })), this.logger);
        }
      }
    }, {
      key: "get",
      value: function get(key) {
        var data = this.getData();
        data = data[key];
        return data ? data.val || null : null;
      }
    }, {
      key: "remove",
      value: function remove(key) {
        var data = this.getData();
        if (data[key]) delete data[key];
        LS.setItem(this.key, JSON.stringify(data), this.logger);
      }
    }], [{
      key: "getItem",
      value: function getItem(key) {
        key = prefix + key;
        return localStorage.getItem(key);
      }
    }, {
      key: "setItem",
      value: function setItem(key, val, logger) {
        var _a, _b;
        key = prefix + key;
        var n = 3;
        while (n--) {
          try {
            if (localStorage.getItem(key)) localStorage.removeItem(key);
            localStorage.setItem(key, val);
            typeof logger === 'function' &amp;&amp; logger("setItem success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(key, " val:").concat(val), 'success');
            break;
          } catch (e) {
            typeof logger === 'function' &amp;&amp; logger("setItem error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(key, " val:").concat(val), 'error');
            LS.clear();
          }
        }
      }
    }, {
      key: "clear",
      value: function clear() {
        var i;
        var k;
        for (i = localStorage.length - 1; i &gt;= 0; i--) {
          k = localStorage.key(i);
          if (k.indexOf(prefix) == 0) {
            localStorage.removeItem(k);
          }
        }
      }
    }, {
      key: "getSupportEvicationPolicy",
      value: function getSupportEvicationPolicy() {
        return Object.keys(evictionPolicies);
      }
    }]);
    return LS;
  }();
  var innerVersion = (mmversion.getInner() || '').toUpperCase();
  var getBizLS = new LS('get_biz_result');
  var bizMap = {};
  var isGetBizSupported = mmversion.isOnlyWechat &amp;&amp; mmversion.isIOS &amp;&amp; innerVersion &gt;= '18003C2A' || mmversion.isOnlyWechat &amp;&amp; mmversion.isAndroid &amp;&amp; innerVersion &gt;= '28003D3C' || mmversion.isUnifiedPcWechat &amp;&amp; mmversion.cpVersion('4.1.10', 1, true, 'unifiedpc');
  mmversion.isOnlyWechat &amp;&amp; mmversion.isIOS || mmversion.isOnlyWechat &amp;&amp; mmversion.isAndroid || mmversion.isUnifiedPcWechat &amp;&amp; mmversion.cpVersion('4.1.10', 1, true, 'unifiedpc');
  function getBiz(needCheckBiz, bizType) {
    var _a;
    if (needCheckBiz === void 0) {
      needCheckBiz = false;
    }
    if (bizType === void 0) {
      bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
    }
    return new Promise(function (resolve, reject) {
      if (needCheckBiz || bizMap[bizType] === undefined) {
        if (!isGetBizSupported) {
          reject('Not support');
        } else {
          JSAPI.invoke('handleMPPageAction', {
            action: 'getBiz',
            needCheckBiz: needCheckBiz,
            bizType: bizType
          }, function (res) {
            console.log("getBiz with needCheckBiz=".concat(needCheckBiz, " res: ").concat(JSON.stringify(res)));
            if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf('ok') &gt; -1) {
              bizMap[bizType] = res.biz;
              resolve(res.biz);
              getBizLS.set("".concat(bizType, "_get_biz_result"), res.biz, +new Date() + 3 * 24 * 60 * 60 * 1000);
            } else {
              reject('Failed to get biz');
            }
          });
        }
      } else {
        resolve(bizMap[bizType]);
      }
    });
  }
  var getIsAuthor = function getIsAuthor(cb, bizuin, needCheckBiz, bizType) {
    var _a;
    if (bizuin === void 0) {
      bizuin = window.biz;
    }
    if (needCheckBiz === void 0) {
      needCheckBiz = false;
    }
    if (bizType === void 0) {
      bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
    }
    getBiz(needCheckBiz, bizType).then(function (biz) {
      cb(biz &amp;&amp; biz === bizuin);
    })["catch"](function () {
      cb(false);
    });
  };

  function parseUrl(url) {
    var len = url.length;
    var ques_pos = url.indexOf('?');
    var hash_pos = url.indexOf('#');
    hash_pos = hash_pos == -1 ? len : hash_pos;
    ques_pos = ques_pos == -1 ? hash_pos : ques_pos;
    var host = url.substring(0, ques_pos);
    var query_str = url.substring(ques_pos + 1, hash_pos);
    var hash = url.substring(hash_pos + 1);
    return {
      host: host,
      query_str: query_str,
      hash: hash
    };
  }
  function join(url, args, noEncode) {
    var ret = parseUrl(url);
    var query_str = ret.query_str;
    var args_arr = [];
    if (_typeof(args) === 'object') {
      for (var key in args) {
        if (args.hasOwnProperty(key)) {
          args_arr.push("".concat(key, "=").concat(noEncode ? args[key] : encodeURIComponent(args[key])));
        }
      }
    } else {
      args_arr.push(noEncode ? args : encodeURIComponent(args));
    }
    if (args_arr.length &gt; 0) {
      query_str += (query_str !== "" ? "&amp;" : "") + args_arr.join("&amp;");
    }
    return ret.host + (query_str !== "" ? "?".concat(query_str) : "") + (ret.hash !== "" ? "#".concat(ret.hash) : "");
  }
  
  function addParam(url, param, value, forceReplace) {
    url = url || location.href;
    var firstAndPos = url.indexOf("&amp;");
    var len = url.length;
    var reverseUrl = url.replace(/^[\w\d]+:[/\\]+/g, "").split("").reverse();
    if (!Array.prototype.indexOf) {
      Array.prototype.indexOf = function (searchElement, fromIndex) {
        var k;
        if (this == null) {
          throw new TypeError('"this" is null or not defined');
        }
        var O = Object(this);
        var len = O.length &gt;&gt;&gt; 0;
        if (len === 0) {
          return -1;
        }
        var n = fromIndex || 0;
        if (Math.abs(n) === Infinity) {
          n = 0;
        }
        if (n &gt;= len) {
          return -1;
        }
        k = Math.max(n &gt;= 0 ? n : len - Math.abs(n), 0);
        while (k &lt; len) {
          if (k in O &amp;&amp; O[k] === searchElement) {
            return k;
          }
          k++;
        }
        return -1;
      };
    }
    var lastSlashPos = len - 1 - reverseUrl.indexOf("/");
    if (firstAndPos !== -1 &amp;&amp; url.indexOf("?") == -1 &amp;&amp; firstAndPos &gt; lastSlashPos) {
      url = url.replace("&amp;", "?");
    }
    var reg = new RegExp("([\\?&amp;]".concat(param, "=)[^&amp;#]*"));
    if (!url.match(reg)) {
      var urlInfo = parseUrl(url);
      var hash = urlInfo.hash ? '#' + urlInfo.hash : '';
      url = url.replace(hash, '');
      var _pos = url.indexOf("?");
      if (_pos == -1) {
        return "".concat(url, "?").concat(param, "=").concat(value).concat(hash);
      }
      if (_pos == url.length - 1) {
        return "".concat(url + param, "=").concat(value).concat(hash);
      }
      return "".concat(url, "&amp;").concat(param, "=").concat(value).concat(hash);
    }
    if (forceReplace === true) {
      return url.replace(reg, "$1".concat(value));
    }
    return url;
  }
  function addWxfrom(src, wxfrom) {
    var offset = window.service_type === 1 ? 10000 : 0;
    return addParam(src, 'wxfrom', offset + Number(wxfrom), true);
  }
  function removeParam(url, param) {
    var _URL = new URL(url),
      protocol = _URL.protocol,
      host = _URL.host,
      pathname = _URL.pathname,
      search = _URL.search,
      hash = _URL.hash;
    var queryParams = new URLSearchParams(search);
    queryParams["delete"](param);
    var newSearch = queryParams.toString();
    var newUrl = new URL("".concat(protocol, "//").concat(host).concat(pathname).concat(newSearch ? "?".concat(decodeURIComponent(newSearch)) : "").concat(hash));
    return newUrl.toString();
  }
  function getQuery(name, url) {
    var u = url || window.location.search;
    var reg = new RegExp("(^|&amp;)".concat(name, "=([^&amp;]*)(&amp;|$)"));
    var r = u.substring(u.indexOf('?') + 1).match(reg);
    return r !== null ? r[2] : '';
  }
  function encodeBase64(value) {
    try {
      return window.btoa(value);
    } catch (e) {
      return '';
    }
  }
  function decodeBase64(value) {
    try {
      return window.atob(value);
    } catch (e) {
      return '';
    }
  }
  function joinUrl$1(url) {
    var obj = {};
    if (typeof window.uin !== 'undefined') {
      obj.uin = window.uin;
    }
    if (typeof window.key !== 'undefined') {
      obj.key = window.key;
    }
    if (typeof window.pass_ticket !== 'undefined') {
      obj.pass_ticket = window.pass_ticket;
    }
    if (typeof window.wxtoken !== 'undefined') {
      obj.wxtoken = window.wxtoken;
    }
    if (typeof window.devicetype !== 'undefined') {
      obj.devicetype = window.devicetype;
    }
    if (typeof window.clientversion !== 'undefined') {
      obj.clientversion = window.clientversion || mmversion.getInner();
    }
    obj.version = obj.clientversion;
    if (window.biz) {
      obj.__biz = window.biz;
    }
    if (getQuery('enterid')) {
      obj.enterid = getQuery('enterid');
    }
    if (typeof window.appmsg_token !== 'undefined') {
      obj.appmsg_token = window.appmsg_token;
    } else if (url.indexOf('advertisement_report') &gt; -1) {
      new Image().src = "".concat(location.protocol, "//mp.weixin.qq.com/mp/jsmonitor?idkey=68064_13_1&amp;r=").concat(Math.random());
    }
    obj.x5 = navigator.userAgent.indexOf('TBS/') !== -1 ? '1' : '0';
    obj.f = 'json';
    return join(url, obj);
  }
  function joinUserArticleRole(url, notJoin, cb) {
    var bizuin = arguments.length &gt; 3 &amp;&amp; arguments[3] !== undefined ? arguments[3] : window.biz;
    var needCheckBiz = arguments.length &gt; 5 &amp;&amp; arguments[5] !== undefined ? arguments[5] : false;
    if (notJoin) {
      cb(url);
    } else {
      getIsAuthor(function (isAuthor) {
        cb(addParam(url, 'user_article_role', isAuthor ? 1 : 0, true));
      }, bizuin, needCheckBiz);
    }
  }
  function getA8keyQuery(name, url) {
    return new Promise(function (resolve) {
      if (window.__secPageAuthPromise) {
        window.__secPageAuthPromise.then(function () {
          resolve(getQuery(name, url));
        });
      } else {
        resolve(getQuery(name, url));
      }
    });
  }
  function addHash(url, hash) {
    var isReplace = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    if (isReplace) {
      return "".concat(url.split('#')[0]).concat(hash);
    }
    return "".concat(url).concat(url.indexOf('#') === -1 ? '#' : '').concat(hash);
  }
  function decodeUrl(url) {
    var _url = url;
    while (_url.indexOf('&amp;amp;') !== -1) {
      _url = _url.htmlDecode();
    }
    return _url;
  }
  var Url = {
    parseUrl: parseUrl,
    join: join,
    addParam: addParam,
    addWxfrom: addWxfrom,
    addHash: addHash,
    getQuery: getQuery,
    getA8keyQuery: getA8keyQuery,
    encodeBase64: encodeBase64,
    decodeBase64: decodeBase64,
    joinUrl: joinUrl$1,
    joinUserArticleRole: joinUserArticleRole,
    removeParam: removeParam,
    decodeUrl: decodeUrl
  };

  var _a;
  var doc;
  var isAcrossOrigin = false;
  try {
    doc = (_a = window.top) === null || _a === void 0 ? void 0 : _a.window.document;
  } catch (e) {
    isAcrossOrigin = true;
  }
  var StatusTextMap = {
    200: 'OK',
    302: 'Found',
    400: 'Bad Request',
    500: 'Internal Server Error'
  };
  function getIsAcrossOrigin() {
    return isAcrossOrigin;
  }
  function networkStartLog(item) {
    var _a, _b, _c, _d, _e;
    console.log('[system]', "&lt; [request ".concat(item.requestType, "]"), item.url, item.method, item);
    var rdevRequestId;
    var requestTime = performance.now() / 1000;
    if ((_b = (_a = window.RemoteDevSdk) === null || _a === void 0 ? void 0 : _a.instance) === null || _b === void 0 ? void 0 : _b.Network) {
      try {
        var willBeSentOptions = {
          url: item.url,
          method: item.method,
          requestHeaders: Object.assign({}, item.requestHeader || {}, {
            RDEV_REQUEST_TYPE: item.requestType
          }),
          requestBody: item.postData,
          requestTime: requestTime
        };
        rdevRequestId = window.RemoteDevSdk.instance.Network.customRequestWillBeSent(willBeSentOptions);
      } catch (err) {}
    }
    if ((_c = window.vConsole) === null || _c === void 0 ? void 0 : _c.network) {
      try {
        var vconsoleNetworkItem = (_e = (_d = window.vConsole.network).add) === null || _e === void 0 ? void 0 : _e.call(_d, Object.assign({}, item, {
          startTime: Date.now(),
          endTime: Date.now(),
          status: 0,
          readyState: 2,
          response: ''
        }));
        vconsoleNetworkItem.rdevRequestId = rdevRequestId;
        vconsoleNetworkItem.requestTime = requestTime;
        return vconsoleNetworkItem;
      } catch (err) {}
    }
    if (rdevRequestId) {
      return Object.assign(Object.assign({}, item), {
        id: '__only_rdev_log__',
        rdevRequestId: rdevRequestId,
        requestTime: requestTime
      });
    }
    return Object.assign({}, item, {
      id: '__system_log__'
    });
  }
  function networkEndLog(item) {
    var _a, _b, _c, _d, _e;
    console.log('[system]', "&gt; [response ".concat(item.requestType, "]"), item.url, item.response, item);
    if (item.rdevRequestId &amp;&amp; ((_b = (_a = window.RemoteDevSdk) === null || _a === void 0 ? void 0 : _a.instance) === null || _b === void 0 ? void 0 : _b.Network) &amp;&amp; item.id !== '__system_log__') {
      try {
        var finishedOptions = {
          requestId: item.rdevRequestId,
          url: item.url,
          status: +(item.status || '500'),
          statusText: StatusTextMap[+(item.status || '500')] || 'Error',
          responseHeaders: {
            RDEV_RESPONSE_TYPE: item.requestType
          },
          responseBody: item.response,
          requestTime: item.requestTime || 0,
          duration: item.costTime || (item.endTime &amp;&amp; item.startTime ? item.endTime - item.startTime : performance.now() / 1000 - (item.requestTime || 0))
        };
        window.RemoteDevSdk.instance.Network.customRequestFinished(finishedOptions);
      } catch (err) {}
    }
    if (((_c = window.vConsole) === null || _c === void 0 ? void 0 : _c.network) &amp;&amp; item.id !== '__system_log__') {
      try {
        item.statusText = "".concat(item.status);
        item.responseSize = item.response.length;
        item.responseSizeText = "".concat(item.response.length);
        return (_e = (_d = window.vConsole.network).update) === null || _e === void 0 ? void 0 : _e.call(_d, item.id, Object.assign({}, item, {
          readyState: 4
        }));
      } catch (err) {}
    }
  }
  function reqType(obj, path) {
    return obj.url.indexOf(path) &gt; -1 &amp;&amp; obj.url.indexOf('action=') === -1 &amp;&amp; (!obj.data || !obj.data.action);
  }
  function findAjaxScopeByConfig(url, config) {
    var pathname = new URL(url, location.href).pathname || '';
    var scope = config[pathname.slice(1)];
    if (scope) {
      return scope;
    }
  }
  function getAjaxScope(ajaxUrl) {
    if (Url.getQuery('no_transfer', location.href) !== '1' &amp;&amp; mmversion.isWechat &amp;&amp; !mmversion.isInMiniProgram &amp;&amp; !mmversion.isWxWork &amp;&amp; !mmversion.isMpapp &amp;&amp; !isAcrossOrigin &amp;&amp; window.__ajaxTransferConfig &amp;&amp; _typeof(window.__ajaxTransferConfig) === 'object' &amp;&amp; (
    mmversion.isIOS &amp;&amp; mmversion.compareHexVersion('1800282F') || mmversion.isAndroid &amp;&amp; mmversion.compareHexVersion('28002234') || mmversion.isWindowsWechat &amp;&amp; mmversion.cpVersion('3.9.5', 1, true, 'windows') || mmversion.isMacWechat &amp;&amp; mmversion.cpVersion('3.8.4', 1, true, 'mac') || mmversion.isHarmonyWechat &amp;&amp; mmversion.compareHexVersion('0xf3100b00') &amp;&amp; !mmversion.compareHexVersion('0xf3100c00') || mmversion.compareHexVersion('0xf3800b00'))) {
      try {
        return findAjaxScopeByConfig(ajaxUrl, window.__ajaxTransferConfig);
      } catch (err) {
        
      }
    }
  }
  function getActionByData(data) {
    var _a, _b;
    if (_typeof(data) === 'object' &amp;&amp; !(data instanceof Blob)) {
      if (data.hasOwnProperty('data') &amp;&amp; typeof data.data === 'string') {
        try {
          var workedData = JSON.parse(data.data);
          return workedData.action || '';
        } catch (e) {}
      }
      return data.action || '';
    }
    if (typeof data === 'string') {
      return ((_b = (_a = data.split(/[?&amp;]/).find(function (x) {
        return x.indexOf('action=') &gt;= 0;
      })) === null || _a === void 0 ? void 0 : _a.split('=')) === null || _b === void 0 ? void 0 : _b[1]) || '';
    }
    return '';
  }

  var METHOD_ENUM = {
    GET: 0,
    POST: 1
  };
  var __moon_report = window.__moon_report || function () {};
  var MOON_AJAX_SUCCESS_OFFSET = 3;
  var MOON_AJAX_NETWORK_OFFSET = 4;
  var MOON_AJAX_ERROR_OFFSET = 5;
  var MOON_AJAX_TIMEOUT_OFFSET = 6;
  var MOON_AJAX_COMPLETE_OFFSET = 7;
  var LENGTH_LIMIT = 4096;
  function reportRtError(type, id, key, content) {
    var log = '';
    var prefix = type === 'rt' ? 'rtCheckError' : 'Ajax Length Limit';
    if (content === null || content === void 0 ? void 0 : content.length) {
      var loglen = 1000;
      var len = content.length;
      var lc = Math.ceil(len / loglen);
      log = ["&amp;lc=".concat(lc)];
      for (var i = 0; i &lt; lc; ++i) {
        log.push("&amp;log".concat(i, "=") + "[".concat(prefix, "][").concat(i, "]").concat(encodeURIComponent(content.substring(i * loglen, i * loglen + loglen))));
      }
      log = log.join('');
    }
    var data = "idkey=".concat(id, "_").concat(key, "_1").concat(log, "&amp;r=").concat(Math.random());
    var xmlobj = new XMLHttpRequest();
    xmlobj.open('POST', "".concat(location.protocol, "//").concat(location.host, "/mp/jsmonitor?"), true);
    xmlobj.setRequestHeader('cache-control', 'no-cache');
    xmlobj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    xmlobj.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    xmlobj.send(data);
    if (type === 'ajaxLen') {
      monitor$1.setLogs({
        id: id,
        key: key,
        value: 1,
        log: log
      });
    }
  }
  function reportRt(id, key, content) {
    reportRtError('rt', id, key, content);
  }
  function reportAjaxLength(id, key, content) {
    reportRtError('ajaxLen', id, key, content);
  }
  function setXhrHeader(xhr, type, opt) {
    if (opt.contentType) {
      xhr.setRequestHeader('Content-Type', opt.contentType);
    } else if (type === 'POST') {
      xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    }
    if (!opt.noXRequestedWidthHeader) {
      xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    }
  }
  function Ajax(obj) {
    var report36408 = typeof obj.report36408 === 'function' ? obj.report36408 : function () {};
    if (obj.usePb) {
      obj.type = 'POST';
      obj.data = {
        data: JSON.stringify(obj.data)
      };
    }
    var ajaxScope = getAjaxScope(obj.url);
    var type = (obj.type || 'GET').toUpperCase();
    var timer;
    var _url;
    if (obj.notJoinUrl) {
      _url = obj.url;
    } else {
      _url = Url.joinUrl(obj.url);
    }
    Url.joinUserArticleRole(_url, !!obj.notJoinUrl, function (url) {
      var urlObj = new URL(url, location.origin);
      if (obj.f === 'html') {
        url = url.replace('&amp;f=json', '');
      }
      var data = null;
      if (obj.data instanceof Blob) {
        data = obj.data;
      } else if (_typeof(obj.data) === 'object') {
        var d = obj.data;
        var ds = [];
        for (var k in d) {
          if (d.hasOwnProperty(k)) {
            ds.push("".concat(k, "=").concat(encodeURIComponent(d[k])));
          }
        }
        data = ds.join('&amp;');
      } else {
        data = typeof obj.data === 'string' ? obj.data : null;
      }
      var beginTs;
      var beforeReq = function beforeReq() {
        if (reqType(obj, '/mp/getappmsgext')) {
          window.startGetAppmsgExtTime = Date.now();
          Log.log('start get appmsgext, url: ', obj.url);
        }
        if (reqType(obj, '/mp/getappmsgad')) {
          window.startGetAppmsgAdTime = Date.now();
          Log.log('start get appmsgad, url: ', obj.url);
        }
        beginTs = Date.now();
      };
      var beforeResp = function beforeResp(xhr) {
        if (reqType(obj, '/mp/getappmsgext')) {
          window.receiveGetAppmsgExt = "".concat(xhr.status, "|").concat(Date.now());
          Log.log("receive appmsgext response, status: ".concat(xhr.status));
        }
        if (reqType(obj, '/mp/getappmsgad')) {
          window.receiveGetAppmsgAd = "".concat(xhr.status, "|").concat(Date.now());
          Log.log("receive appmsgad response, status: ".concat(xhr.status));
        }
        if (Math.random() &lt; 0.001 &amp;&amp; window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs) {
          try {
            var key = ajaxScope ? 'transfer' : 'xhr';
            var interval = 250;
            var time = Date.now() - beginTs;
            var range = Math.floor(time / interval) * interval;
            var pathname = new URL(obj.url, location.href).pathname || '';
            window.WX_BJ_REPORT.BadJs.report("".concat(key, "_perf:").concat(pathname), JSON.stringify({
              status: xhr.status,
              time: "[".concat(range, "-").concat(range + interval, ")")
            }), {
              mid: 'mmbizwap:ajaxtransfer',
              view: 'wap_business'
            });
          } catch (err) {}
        }
      };
      var handleRespSucc = function handleRespSucc(xhr, requestType) {
        var _a, _b, _c, _d;
        try {
          var responseText = xhr.responseText;
          var resp = responseText;
          if (obj.dataType === 'json') {
            try {
              if (JSON &amp;&amp; JSON.parse) {
                resp = JSON.parse(resp);
              } else {
                resp = eval("(".concat(resp, ")"));
                monitor$1.setSum(523105, 127, 1).send();
              }
              var rtId = obj.rtId;
              var rtKey = obj.rtKey || 0;
              var rtDesc = obj.rtDesc;
              if (rtId &amp;&amp; rtDesc &amp;&amp; RespTypes &amp;&amp; !RespTypes.check(resp, rtDesc)) {
                reportRt(+rtId, +rtKey, "".concat(RespTypes.getMsg(), "[detail]").concat(responseText, ";").concat(obj.url));
              }
              if (resp &amp;&amp; resp.base_resp &amp;&amp; ((_a = resp.base_resp) === null || _a === void 0 ? void 0 : _a.ret) !== 0 &amp;&amp; typeof window.WX_BJ_REPORT !== 'undefined' &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; Math.random() &lt; 0.001) {
                var reportUrl = url;
                if (url.indexOf('?') !== -1) {
                  reportUrl = url.substring(0, url.indexOf('?'));
                  if (Url.getQuery('action', url)) {
                    reportUrl = "".concat(reportUrl, "?action=").concat(Url.getQuery('action', url));
                  }
                }
                if (!((reportUrl === '/mp/getappmsgext' || reportUrl === '/mp/getappmsgad') &amp;&amp; typeof resp.base_resp.ret === 'undefined')) {
                  window.WX_BJ_REPORT.BadJs.report(reportUrl, "ret=".concat(resp.base_resp.ret), {
                    mid: window.PAGE_MID,
                    view: 'wap_retcode'
                  });
                }
              }
            } catch (e) {
              obj.error &amp;&amp; obj.error(xhr, {
                type: 1,
                error: e,
                status: xhr.status
              });
              if (!obj.dontReport) {
                report36408({
                  CgiPath: urlObj.pathname || '',
                  Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                  Query: urlObj.search || '',
                  PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                  Method: type || '',
                  RequestType: requestType || 0,
                  RetType: 1,
                  HttpCode: xhr.status || 0,
                  Ret: 0
                });
              }
              return;
            }
          }
          if (_typeof(resp) === 'object' &amp;&amp; ((_b = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _b === void 0 ? void 0 : _b.ret) !== 0) {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                Method: type || '',
                RequestType: requestType || 0,
                RetType: 4,
                HttpCode: xhr.status || 0,
                Ret: ((_c = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _c === void 0 ? void 0 : _c.ret) || 0
              });
            }
          } else {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                Method: type || '',
                RequestType: requestType || 0,
                RetType: 0,
                HttpCode: xhr.status || 0,
                Ret: ((_d = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _d === void 0 ? void 0 : _d.ret) || 0
              });
            }
          }
          obj.success &amp;&amp; obj.success(resp);
        } catch (e) {
          __moon_report({
            offset: MOON_AJAX_SUCCESS_OFFSET,
            e: e
          });
          throw e;
        }
      };
      var handleRespErr = function handleRespErr(xhr, error, requestType) {
        try {
          obj.error &amp;&amp; obj.error(xhr, {
            type: 2,
            error: error,
            status: xhr.status
          });
          if (!obj.dontReport) {
            report36408({
              CgiPath: urlObj.pathname || '',
              Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
              Query: urlObj.search || '',
              PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
              Method: type,
              RequestType: requestType,
              RetType: 2,
              HttpCode: xhr.status,
              Ret: 0
            });
          }
        } catch (e) {
          __moon_report({
            offset: MOON_AJAX_ERROR_OFFSET,
            e: e
          });
          throw e;
        }
      };
      var handleRespComplete = function handleRespComplete() {
        clearTimeout(timer);
        try {
          obj.complete &amp;&amp; obj.complete();
        } catch (e) {
          __moon_report({
            offset: MOON_AJAX_COMPLETE_OFFSET,
            e: e
          });
          throw e;
        }
        obj.complete = null;
      };
      var handleReqTimeout = function handleReqTimeout(xhr) {
        if (typeof obj.timeout !== 'undefined') {
          timer = setTimeout(function () {
            xhr.abort();
            try {
              obj.complete &amp;&amp; obj.complete();
            } catch (e) {
              __moon_report({
                offset: MOON_AJAX_COMPLETE_OFFSET,
                e: e
              });
              throw e;
            }
            obj.complete = null;
            __moon_report({
              offset: MOON_AJAX_TIMEOUT_OFFSET,
              log: "ajax_timeout_error: ".concat(url),
              e: ''
            });
          }, obj.timeout);
        }
      };
      var retryXhrFn = function retryXhrFn(res, isTimeout, reqLogItem) {
        var retryXhr = new XMLHttpRequest();
        try {
          retryXhr._noVConsole = true;
        } catch (err) {}
        retryXhr.open(type, url);
        retryXhr.onreadystatechange = function () {
          if (isTimeout) return;
          if (retryXhr.readyState === 3) {
            obj.received &amp;&amp; obj.received(retryXhr);
          }
          if (retryXhr.readyState === 4) {
            beforeResp(retryXhr);
            var retryStatus = retryXhr.status;
            if (retryStatus &gt;= 200 &amp;&amp; retryStatus &lt; 400) {
              handleRespSucc(retryXhr, 1);
            } else {
              handleRespErr(retryXhr, res, 1);
              window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; window.WX_BJ_REPORT.BadJs.report('req_failure', JSON.stringify({
                retryXhrStatus: retryStatus,
                transferRes: res
              }), {
                mid: 'mmbizwap:ajaxtransfer',
                view: 'wap_business'
              });
            }
            reqLogItem.status = retryStatus;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = retryXhr.responseText;
            handleRespComplete();
            networkEndLog(reqLogItem);
          }
        };
        setXhrHeader(retryXhr, type, obj);
        retryXhr.send(data);
      };
      if (ajaxScope &amp;&amp; !obj.pureHttp) {
        var header = {
          'User-Agent': navigator.userAgent,
          'Cookie': (window.__test_env__ ? 'uniproxy_route=1; ' : '') + document.cookie,
          'Referer': location.href
        };
        if (obj.contentType) {
          header['Content-Type'] = obj.contentType;
        } else if (type === 'POST') {
          header['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
        }
        if (!obj.noXRequestedWidthHeader) {
          header['X-Requested-With'] = 'XMLHttpRequest';
        }
        var reqUrl = new URL(url, location.href).href;
        var method = METHOD_ENUM[type] || 0;
        var params = Device.os.pc ? {
          url: reqUrl,
          req_json: data || '',
          scope: ajaxScope,
          webcgi_method: method,
          webcgi_header: Object.keys(header).map(function (headerItemKey) {
            return Device.os.Mac ? _defineProperty({}, headerItemKey, header[headerItemKey]) : {
              key: headerItemKey,
              value: header[headerItemKey]
            };
          }),
          cgi_type: 1
        } : {
          reqUrl: reqUrl,
          reqBody: data,
          scope: ajaxScope,
          method: method,
          header: header
        };
        var reqLogItem = networkStartLog({
          method: type,
          url: url,
          postData: obj.data || {},
          requestHeader: header,
          requestType: 'transfer',
          startTime: Date.now(),
          responseType: url.indexOf('f=json') &gt; 0 ? 'json' : undefined
        });
        var isTimeout = false;
        handleReqTimeout({
          abort: function abort() {
            isTimeout = true;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = 'timeout';
            networkEndLog(reqLogItem);
          }
        });
        Device.os.pc &amp;&amp; monitor$1.setSum(115849, 69, 1);
        JSAPI.invoke(Device.os.pc ? 'H5ExtTransfer' : 'webTransfer', params, function (res) {
          var _a, _b, _c, _d, _e, _f;
          if (isTimeout) return;
          var status = 400;
          var result = '';
          if (Device.os.pc) {
            try {
              var retFlag = res.base_resp.ret === 0 &amp;&amp; res.jsapi_resp.ret === 0 &amp;&amp; res.err_msg.indexOf(':ok') &gt; -1;
              var respJsonFlag = res.jsapi_resp.resp_json;
              status = retFlag &amp;&amp; respJsonFlag ? 200 : 400;
              result = res.jsapi_resp.resp_json;
            } catch (err) {
              console.error(err);
            }
          } else {
            status = res &amp;&amp; res.errCode * 1 === 0 &amp;&amp; typeof res.result === 'string' &amp;&amp; res.result ? 200 : 400;
            result = res.result;
          }
          try {
            Log.log("ajax transfer, status: ".concat(status, ", reqUrl: ").concat(reqUrl));
          } catch (err) {
            console.error(err);
          }
          if (status &gt;= 200 &amp;&amp; status &lt; 400) {
            obj.received &amp;&amp; obj.received(null);
            beforeResp({
              status: status
            });
            handleRespSucc({
              status: status,
              responseText: result
            }, 10);
            reqLogItem.status = status;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = result;
            handleRespComplete();
            networkEndLog(reqLogItem);
          } else if (window.__second_open__) {
            JSAPI.invoke('request', {
              url: reqUrl,
              method: type,
              data: data,
              header: header
            }, function (retryRes) {
              try {
                Log.log("ajax retry request, retryStatus: ".concat((retryRes === null || retryRes === void 0 ? void 0 : retryRes.statusCode) || '', ", reqUrl: ").concat(reqUrl));
              } catch (err) {
                console.error(err);
              }
              if (isTimeout) return;
              var retryStatus = retryRes.statusCode;
              obj.received &amp;&amp; obj.received(null);
              beforeResp({
                status: retryStatus
              });
              if (retryRes.err_msg.indexOf(':ok') &gt; -1 &amp;&amp; retryStatus &gt;= 200 &amp;&amp; retryStatus &lt; 400) {
                handleRespSucc({
                  status: retryStatus,
                  responseText: retryRes.data
                }, 20);
              } else {
                retryXhrFn(res, isTimeout, reqLogItem);
                handleRespErr({
                  status: retryStatus
                }, res, 20);
                window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; window.WX_BJ_REPORT.BadJs.report('req_failure_sec_open', JSON.stringify({
                  retryReqJsapiRes: retryRes,
                  transferRes: res,
                  url: reqUrl
                }), {
                  mid: 'mmbizwap:ajaxtransfer',
                  view: 'wap_business'
                });
              }
              reqLogItem.status = retryStatus;
              reqLogItem.endTime = Date.now();
              reqLogItem.response = retryRes.data;
              handleRespComplete();
              networkEndLog(reqLogItem);
            });
          } else {
            retryXhrFn(res, isTimeout, reqLogItem);
          }
          if (Device.os.pc) {
            if (!res.err_msg.includes(':ok')) {
              (_b = (_a = window.WX_BJ_REPORT) === null || _a === void 0 ? void 0 : _a.BadJs) === null || _b === void 0 ? void 0 : _b.report("pc transfer res no ok: ".concat(res.err_msg), params.url || '', {
                mid: window.PAGE_MID,
                _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
              });
            }
            try {
              if (res.jsapi_resp.resp_json &amp;&amp; JSON.parse(res.jsapi_resp.resp_json).base_resp.ret !== 0 &amp;&amp; JSON.parse(res.jsapi_resp.resp_json).base_resp.ret !== 190001 || res.base_resp.ret !== 0 || res.jsapi_resp.ret !== 0) {
                (_d = (_c = window.WX_BJ_REPORT) === null || _c === void 0 ? void 0 : _c.BadJs) === null || _d === void 0 ? void 0 : _d.report("pc transfer res invalid ret", params.url || '', {
                  mid: window.PAGE_MID,
                  _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
                });
              }
            } catch (err) {}
          } else {
            try {
              if (res.errCode !== 0) {
                (_f = (_e = window.WX_BJ_REPORT) === null || _e === void 0 ? void 0 : _e.BadJs) === null || _f === void 0 ? void 0 : _f.report("mobile transfer res invalid ret", params.url || '', {
                  mid: window.PAGE_MID,
                  _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
                });
              }
            } catch (err) {}
          }
        });
        beforeReq();
        return;
      }
      var xhr = new XMLHttpRequest();
      var mayAbort = !!obj.mayAbort;
      var async = typeof obj.async === 'undefined' ? true : obj.async;
      var _onreadystatechange = xhr.onreadystatechange;
      xhr.open(type, url, async);
      xhr.onreadystatechange = function () {
        if (typeof _onreadystatechange === 'function') {
          _onreadystatechange.apply(xhr);
        }
        if (xhr.readyState === 3) {
          obj.received &amp;&amp; obj.received(xhr);
        }
        if (xhr.readyState === 4) {
          beforeResp(xhr);
          xhr.onreadystatechange = null;
          var status = xhr.status;
          if (status &gt;= 200 &amp;&amp; status &lt; 400) {
            handleRespSucc(xhr, 1);
          } else {
            handleRespErr(xhr, 'status error', 1);
            if (!!status || !mayAbort) {
              var __ajaxtest = window.__ajaxtest || '0';
              __moon_report({
                offset: MOON_AJAX_NETWORK_OFFSET,
                log: "ajax_network_error[".concat(status, "][").concat(__ajaxtest, "]: ").concat(url, ";host:").concat(location.host),
                e: ''
              });
            }
          }
          handleRespComplete();
        }
      };
      setXhrHeader(xhr, type, obj);
      handleReqTimeout(xhr);
      try {
        xhr.send(data);
        try {
          if (url &amp;&amp; url.length &gt; LENGTH_LIMIT) {
            reportAjaxLength(27613, 17, "ajax get limit[length: ".concat(url.length, "]").concat(url.substring(0, 1024)));
          }
          if (data &amp;&amp; !(data instanceof Blob) &amp;&amp; data.length &gt; LENGTH_LIMIT) {
            reportAjaxLength(27613, 18, "ajax post limit[length: ".concat(data.length, "]").concat(data.substring(0, 1024)));
          }
          if (data &amp;&amp; data instanceof Blob &amp;&amp; data.size &gt; LENGTH_LIMIT) {
            reportAjaxLength(27613, 18, "ajax post limit[length: ".concat(data.size, "]blob"));
          }
        } catch (e) {
        }
      } catch (e) {
        obj.error &amp;&amp; obj.error(xhr, {
          type: 3,
          error: e,
          status: 0
        });
      }
      beforeReq();
    });
  }

  
  mmversion.isWindowsWechat &amp;&amp; mmversion.compareHexVersion('0xf2550000') || mmversion.isMacWechat &amp;&amp; mmversion.compareHexVersion('0xf2650000');

  
  var getBrandServiceType = function getBrandServiceType() {
    var serviceType = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : window.service_type;
    var _a, _b;
    var brandServiceType = 0;
    if (serviceType !== undefined) brandServiceType = serviceType + 1;
    if (((_b = (_a = window.cgiData) === null || _a === void 0 ? void 0 : _a.trans_appmsg_info) === null || _b === void 0 ? void 0 : _b.trans_type) * 1 === 1) brandServiceType = 3;
    return brandServiceType;
  };

  function setCurrentMpInfo(ifShow) {
    var supportNewTopBar = mmversion.isIOS &amp;&amp; mmversion.gtVersion('7.0.10', true) || mmversion.isAndroid &amp;&amp; mmversion.gtVersion('7.0.12', true);
    var supportLiveStatus = mmversion.isIOS &amp;&amp; mmversion.gtVersion('8.0.46', true) || mmversion.isAndroid &amp;&amp; mmversion.gtVersion('8.0.46', true);
    JSAPI.invoke('currentMpInfo', {
      userName: window.user_name,
      brandName: !!supportNewTopBar &amp;&amp; window.nickname === '' ? '未命名账号' : window.title,
      title: window.msg_title || '',
      brandIcon: window.hd_head_img.replace(/\/0$/, '/132'),
      itemShowType: window.item_show_type,
      isPaySubscribe: window.isPaySubscribe,
      topBarStyle: supportNewTopBar ? 1 : 0,
      topBarShowed: ifShow,
      disableShowFinderLiveTopBar: !ifShow &amp;&amp; supportLiveStatus ? 1 : 0,
      brandServiceType: getBrandServiceType()
    }, function () {});
  }
  function AjaxWx(obj) {
    var report36408 = typeof obj.report36408 === 'function' ? obj.report36408 : function () {};
    obj.url += obj.url.indexOf('?') === -1 ? '?fasttmplajax=1' : '&amp;fasttmplajax=1';
    if (getAjaxScope(obj.url)) {
      Ajax(obj);
      return;
    }
    if (obj.usePb) {
      obj.type = 'POST';
      obj.data = {
        data: JSON.stringify(obj.data)
      };
    }
    if (!/^(http:\/\/|https:\/\/|\/\/)/.test(obj.url)) {
      obj.url = "https://mp.weixin.qq.com/".concat(obj.url.replace(/^\//, ''));
    } else if (/^\/\//.test(obj.url)) {
      obj.url = "https:".concat(obj.url);
    }
    if (obj.f !== 'html' &amp;&amp; (obj.url.indexOf('?f=json') === -1 || obj.url.indexOf('&amp;f=json') === -1)) {
      obj.url += '&amp;f=json';
    }
    if (!obj.notJoinUrl &amp;&amp; obj.f !== 'html') {
      obj.url = Url.joinUrl(obj.url);
    }
    Url.joinUserArticleRole(obj.url, !!obj.notJoinUrl, function (url) {
      obj.url = url;
      var urlObj = new URL(url, location.origin);
      var data = null;
      if (_typeof(obj.data) === 'object') {
        var d = obj.data;
        var ds = [];
        for (var k in d) {
          if (d.hasOwnProperty(k)) {
            ds.push("".concat(k, "=").concat(encodeURIComponent(d[k])));
          }
        }
        data = ds.join('&amp;');
      } else {
        data = typeof obj.data === 'string' ? obj.data : null;
      }
      var header = {
        Cookie: document.cookie,
        referer: location.href
      };
      if (obj.contentType) {
        header['Content-Type'] = obj.contentType;
      } else if ((obj.type || 'GET').toUpperCase() === 'POST') {
        header['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
      }
      var reqLogItem = networkStartLog({
        method: obj.type || 'GET',
        url: obj.url,
        postData: obj.data || {},
        requestHeader: header,
        requestType: 'jsapi',
        startTime: Date.now()
      });
      var retryTime = 1;
      var jsapiRequest = function jsapiRequest(obj, data) {
        return JSAPI.invoke('request', {
          url: obj.url,
          method: obj.type,
          data: data,
          header: header
        }, function (res) {
          var _a, _b, _c, _d, _e, _f;
          if (res.err_msg.indexOf(':ok') &gt; -1 &amp;&amp; (!res.statusCode || res.statusCode &gt;= 200 &amp;&amp; res.statusCode &lt; 400)) {
            if (reqType(obj, '/mp/getappmsgext')) {
              window.receiveGetAppmsgExt = "".concat(res.statusCode, "|").concat(Date.now());
            }
            if (reqType(obj, '/mp/getappmsgad')) {
              window.receiveGetAppmsgAd = "".concat(res.statusCode, "|").concat(Date.now());
            }
            if (retryTime === 1) {
              obj.received &amp;&amp; obj.received(null);
            }
            var resData = {};
            if (res.data) {
              try {
                if (obj.dataType === 'json') {
                  resData = JSON.parse(res.data);
                } else {
                  resData = res.data;
                }
                if (resData &amp;&amp; resData.base_resp &amp;&amp; ((_a = resData.base_resp) === null || _a === void 0 ? void 0 : _a.ret) !== 0 &amp;&amp; typeof window.WX_BJ_REPORT !== 'undefined' &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; Math.random() &lt; 0.001) {
                  var reportUrl = obj.url;
                  if (obj.url.indexOf('?') !== -1) {
                    reportUrl = obj.url.substring(0, obj.url.indexOf('?'));
                    if (Url.getQuery('action', obj.url)) {
                      reportUrl = "".concat(reportUrl, "?action=").concat(Url.getQuery('action', obj.url));
                    }
                  }
                  if (!((reportUrl === '/mp/getappmsgext' || reportUrl === '/mp/getappmsgad') &amp;&amp; typeof resData.base_resp.ret === 'undefined')) {
                    window.WX_BJ_REPORT.BadJs.report(reportUrl, "ret=".concat(resData.base_resp.ret), {
                      mid: window.PAGE_MID,
                      view: 'wap_retcode'
                    });
                  }
                }
              } catch (e) {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 1,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_b = resData === null || resData === void 0 ? void 0 : resData.base_resp) === null || _b === void 0 ? void 0 : _b.ret) || 0
                  });
                }
                console.error(e);
                obj.error &amp;&amp; obj.error(null, {
                  type: 1,
                  error: e,
                  status: res.statusCode
                });
                obj.complete &amp;&amp; obj.complete();
                reqLogItem.endTime = Date.now();
                reqLogItem.response = res;
                networkEndLog(reqLogItem);
                return;
              }
            }
            var tmpResData = {};
            try {
              tmpResData = JSON.parse(res.data);
            } catch (e) {}
            if (tmpResData &amp;&amp; tmpResData.base_resp &amp;&amp; tmpResData.base_resp.ret === -3 &amp;&amp; retryTime &lt; 2 &amp;&amp; (mmversion.isIOS || mmversion.isAndroid &amp;&amp; mmversion.getInner() &gt; '27000600')) {
              if (!obj.dontReport) {
                report36408({
                  CgiPath: urlObj.pathname || '',
                  Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                  Query: urlObj.search || '',
                  PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                  Method: obj.type || '',
                  RequestType: 20,
                  RetType: 1,
                  HttpCode: res.statusCode || 0,
                  Ret: ((_c = resData === null || resData === void 0 ? void 0 : resData.base_resp) === null || _c === void 0 ? void 0 : _c.ret) || 0
                });
              }
              var _retryTime = retryTime++;
              JSAPI.invoke('updatePageAuth', {}, function (res) {
                console.log('[skeleton] updatePageAuth', res);
                monitor$1.setSum(112287, 3, 1);
                if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf(':ok') &gt; -1) {
                  window.top.pass_ticket = encodeURIComponent(Url.getQuery('pass_ticket', res.fullUrl).html(false).replace(/\s/g, '+'));
                  if (obj.pass_ticket) {
                    obj.pass_ticket = window.top.pass_ticket;
                  }
                  console.warn('[skeleton] updatePageAuth resetTopbar');
                  var supportNewTopBar = mmversion.isIOS &amp;&amp; mmversion.gtVersion('7.0.10', true);
                  var showBottomBar = !!window.is_login;
                  if (window.top.item_show_type === '0' &amp;&amp; supportNewTopBar) {
                    var top = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop || 0;
                    setCurrentMpInfo(top &gt; 40 &amp;&amp; !showBottomBar);
                  }
                  try {
                    obj.url = Url.addParam(obj.url, 'retry', _retryTime, true);
                  } catch (err) {
                    console.error(err);
                  }
                  jsapiRequest(obj, data);
                  monitor$1.setSum(112287, 4, 1);
                } else {
                  obj.success &amp;&amp; obj.success(resData);
                  obj.complete &amp;&amp; obj.complete();
                  if (mmversion.isIOS) {
                    monitor$1.setSum(112287, 35, 1);
                  } else {
                    monitor$1.setSum(112287, 36, 1);
                  }
                  reqLogItem.status = 200;
                  reqLogItem.endTime = Date.now();
                  reqLogItem.response = resData;
                  networkEndLog(reqLogItem);
                }
              });
            } else {
              if (((_d = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _d === void 0 ? void 0 : _d.ret) !== 0) {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 4,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_e = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _e === void 0 ? void 0 : _e.ret) || 0
                  });
                }
              } else {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 0,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_f = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _f === void 0 ? void 0 : _f.ret) || 0
                  });
                }
              }
              obj.success &amp;&amp; obj.success(resData);
              obj.complete &amp;&amp; obj.complete();
              reqLogItem.status = 200;
              reqLogItem.endTime = Date.now();
              reqLogItem.response = resData;
              networkEndLog(reqLogItem);
            }
          } else if (res.err_msg.indexOf('no permission') &gt; -1 || !mmversion.isOnlyWechat) {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                Method: obj.type || '',
                RequestType: 20,
                RetType: 1,
                HttpCode: res.statusCode || 0,
                Ret: 0
              });
            }
            Ajax(obj);
            if (res.err_msg.indexOf('no permission') &gt; -1) {
              console.warn('[JSAPI Request] No permission');
              monitor$1.setSum(112287, 31, 1);
            }
            reqLogItem.status = 302;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = res;
            networkEndLog(reqLogItem);
          } else {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                Method: obj.type || '',
                RequestType: 20,
                RetType: 2,
                HttpCode: res.statusCode || 0,
                Ret: 0
              });
            }
            obj.error &amp;&amp; obj.error(null, {
              type: 3,
              error: res,
              status: 0
            });
            obj.complete &amp;&amp; obj.complete();
            monitor$1.setSum(112287, 32, 1);
            var sample = 0.001;
            if (Math.random() &lt; sample) {
              var msg = "request: ".concat(JSON.stringify(obj.type), " ").concat(JSON.stringify(obj.url), " ;;;; cookie: ").concat(JSON.stringify(document.cookie), " ;;;; data: ").concat(JSON.stringify(data), " ;;;; resp: ").concat(JSON.stringify(res));
              if (window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs) {
                window.WX_BJ_REPORT.BadJs.report('ajax_wx_request_error', msg, {
                  mid: 'mmbizwap:Monitor'
                });
              }
            }
            reqLogItem.status = 400;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = res;
            networkEndLog(reqLogItem);
          }
        });
      };
      if (reqType(obj, '/mp/getappmsgext')) {
        window.startGetAppmsgExtTime = Date.now();
      }
      if (reqType(obj, '/mp/getappmsgad')) {
        window.startGetAppmsgAdTime = Date.now();
      }
      jsapiRequest(obj, data);
    });
  }

  function _regeneratorRuntime() {  _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  var AjaxRouter = function () {
    var _ref = _asyncToGenerator( _regeneratorRuntime().mark(function _callee(obj) {
      return _regeneratorRuntime().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            if (!window.__secPageAuthPromise) {
              _context.next = 3;
              break;
            }
            _context.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            if (!(!mmversion.isWxWork &amp;&amp; (window.__second_open__ || !getIsAcrossOrigin() &amp;&amp; top.window.__second_open__) &amp;&amp; window.__is_page_auth_return__ &amp;&amp; !obj.pureHttp)) {
              _context.next = 5;
              break;
            }
            return _context.abrupt("return", AjaxWx(obj));
          case 5:
            return _context.abrupt("return", Ajax(obj));
          case 6:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return function AjaxRouter(_x) {
      return _ref.apply(this, arguments);
    };
  }();

  var isx5 = navigator.userAgent.indexOf('TBS/') !== -1;
  var getDataFunc = [];
  var reportData = [];
  
  var specificData = {};
  function joinUrl(url) {
    var obj = {};
    if (typeof window.uin !== 'undefined') {
      obj.uin = window.uin;
    }
    if (typeof window.key !== 'undefined') {
      obj.key = window.key;
    }
    if (typeof window.pass_ticket !== 'undefined') {
      obj.pass_ticket = window.pass_ticket;
    }
    if (typeof window.wxtoken !== 'undefined') {
      obj.wxtoken = window.wxtoken;
    }
    if (typeof window.devicetype !== 'undefined') {
      obj.devicetype = window.devicetype;
    }
    if (typeof window.clientversion !== 'undefined') {
      obj.clientversion = window.clientversion;
    }
    if (typeof window.appmsg_token !== 'undefined') {
      obj.appmsg_token = window.appmsg_token;
    } else if (url.indexOf('advertisement_report') &gt; -1) {
      new Image().src = "".concat(location.protocol, "//mp.weixin.qq.com/mp/jsmonitor?idkey=68064_13_1&amp;r=").concat(Math.random());
    }
    obj.x5 = isx5 ? '1' : '0';
    obj.f = 'json';
    return Url.join(url, obj);
  }
  function isObj(obj) {
    return obj &amp;&amp; _typeof(obj) === 'object';
  }
  function assign(target, source) {
    if (isObj(target) &amp;&amp; isObj(source)) {
      for (var key in source) {
        if (Object.prototype.hasOwnProperty.call(source, key)) {
          target[key] = source[key];
        }
      }
    }
  }
  function assembleReportData(initiative) {
    var leaveReportLog = [];
    leaveReportLog.push({
      content: "[LeaveReport] specificData keys: ".concat(Object.keys(specificData)),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] specificData keys: ".concat(Object.keys(specificData)));
    console.log("[LeaveReport] specificData keys: ".concat(Object.keys(specificData)));
    var allReportData = {};
    for (var reportField in specificData) {
      if (!allReportData[reportField]) {
        allReportData[reportField] = {};
      }
      for (var i = 0; i &lt; specificData[reportField].length; i++) {
        var param = specificData[reportField][i];
        if (typeof param === 'function') {
          try {
            assign(allReportData[reportField], param(initiative));
          } catch (err) {
            leaveReportLog.push({
              content: "[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)),
              timestamp: Date.now()
            });
            Log.error("[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)));
            console.error("[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)));
          }
        } else if (isObj(param)) {
          assign(allReportData[reportField], param);
        }
      }
    }
    leaveReportLog.push({
      content: "[LeaveReport] reportData.length: ".concat(reportData.length),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] reportData.length: ".concat(reportData.length));
    console.log("[LeaveReport] reportData.length: ".concat(reportData.length));
    leaveReportLog.push({
      content: "[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length));
    console.log("[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length));
    for (var _i = 0; _i &lt; getDataFunc.length; _i++) {
      try {
        var data = getDataFunc[_i](initiative);
        if (isObj(data)) {
          reportData.push(data);
        }
      } catch (err) {
        leaveReportLog.push({
          content: "[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)),
          timestamp: Date.now()
        });
        Log.error("[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)));
        console.error("[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)));
      }
    }
    for (var _i2 = 0; _i2 &lt; reportData.length; _i2++) {
      if (reportData[_i2].reportUrl) {
        reportData[_i2].reportUrl = joinUrl(reportData[_i2].reportUrl);
      }
    }
    allReportData.data = {
      'requestList': reportData
    };
    leaveReportLog.push({
      content: "[LeaveReport] final reportData.length: ".concat(reportData.length, ", data=").concat(JSON.stringify(reportData)),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] final reportData.length: ".concat(reportData.length));
    console.log("[LeaveReport] final reportData.length: ".concat(reportData.length));
    allReportData.info = leaveReportLog;
    return allReportData;
  }
  function addReport(param) {
    if (typeof param === 'function') {
      getDataFunc.push(param);
    } else if (isObj(param)) {
      reportData.push(param);
    }
  }
  
  function addSpecificReport(reportField, param) {
    if (!specificData[reportField]) {
      specificData[reportField] = [];
    }
    specificData[reportField].push(param);
  }
  
  function reportNow(callback) {
    var allReportData = assembleReportData(true);
    JSAPI.invoke('handleMPPageAction', {
      action: 'reportByLeaveForMPGateway',
      reportData: allReportData
    }, function (res) {
      if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf(':ok') !== -1) {
        getDataFunc = [];
        reportData = [];
        specificData = {};
        typeof callback === 'function' &amp;&amp; callback(res);
      } else {
        getDataFunc = [];
        reportData = [];
        var len = allReportData.data.requestList.length;
        allReportData.data.requestList.forEach(function (req) {
          if (req.reportUrl) {
            AjaxRouter({
              type: req.method || 'GET',
              url: req.reportUrl,
              data: req.reportData,
              async: false,
              success: function success(resp) {
                if (--len &lt; 0) {
                  typeof callback === 'function' &amp;&amp; callback({
                    err_msg: 'handleMPPageAction:ok',
                    fallback: true,
                    resp: resp
                  });
                }
              },
              error: function error(xhr, err) {
                if (--len &lt; 0) {
                  typeof callback === 'function' &amp;&amp; callback({
                    err_msg: 'handleMPPageAction:fail',
                    fallback: true,
                    err: err
                  });
                }
              }
            });
          }
        });
      }
    });
  }
  var leaveReport = {
    reportNow: reportNow,
    addReport: addReport,
    addSpecificReport: addSpecificReport
  };
  var _leaveReport = (function () {
    var doc = {};
    var isCrossOrigin = false;
    try {
      doc = top.window.document;
    } catch (e) {
      isCrossOrigin = true;
    }
    if (!isCrossOrigin &amp;&amp; top.window.__leaveReport) {
      return top.window.__leaveReport;
    }
    if (window.__leaveReport) {
      return window.__leaveReport;
    }
    JSAPI.on('reportOnLeaveForMP', function () {
      return assembleReportData(false);
    });
    return window.__leaveReport = leaveReport;
  })();

  var getReportJson = function getReportJson(logId, rawData) {
    var data = JSON.parse(JSON.stringify(rawData));
    data.log_id = Number(logId);
    data.TimeStamp = Math.round(Date.now() / 1000);
    console.log('[comm_report] reportjson: ', data);
    return JSON.stringify(data);
  };
  var getSuccessHandler = function getSuccessHandler(logId, data, opt) {
    return function (res) {
      if (res &amp;&amp; res.err_code !== 0) {
        console.warn("[comm_report] report ".concat(logId, " fail: "), res.err_msg, data);
      }
      if (typeof opt.success === 'function') {
        opt.success(res);
      }
    };
  };
  var getErrorHandler = function getErrorHandler(logId, data, opt) {
    return function (xhr, info) {
      console.error("[comm_report] report ".concat(logId, " error: "), info, data);
      if (typeof opt.error === 'function') {
        opt.error(xhr, info);
      }
    };
  };
  var batchReportDataArr = [];
  var blackLogId = [25587, 18832, 28208, 25574, 29139, 10945];
  var BATCH_SIZE = 4;
  var BATCH_TIME = 1000;
  var getRepeatedReportJson = function getRepeatedReportJson() {
    if (!batchReportDataArr || !batchReportDataArr.length) return false;
    var reportData = {
      count: 0
    };
    reportData.count = batchReportDataArr.length;
    batchReportDataArr.forEach(function (data, index) {
      reportData["reportjson".concat(index)] = data;
    });
    batchReportDataArr = [];
    console.log('[reportData]: ', reportData);
    return reportData;
  };
  var timeOutId;
  function batchReport() {
    if (!batchReportDataArr || !batchReportDataArr.length) return;
    var repeatedReportJson = getRepeatedReportJson();
    if (!repeatedReportJson) return;
    AjaxRouter({
      type: 'POST',
      dataType: 'json',
      url: '/mp/wapcommreport?action=batch_report',
      data: repeatedReportJson,
      dontReport: true,
      success: function success(res) {
        if (res &amp;&amp; res.err_code) {
          console.warn("[comm_report] batch report fail: ", res.err_msg, batchReportDataArr);
        }
      },
      error: function error(xhr, info) {
        console.error("[comm_report] batch report error: ", info, batchReportDataArr);
      }
    });
  }
  function batchReportThrottle(logId, rawData) {
    var reportJsonData = getReportJson(logId, rawData);
    if (!reportJsonData) return;
    batchReportDataArr.push(reportJsonData);
    if (batchReportDataArr.length &gt;= BATCH_SIZE) {
      batchReport();
    } else {
      if (!timeOutId) {
        timeOutId = setTimeout(function () {
          batchReport();
          clearTimeout(timeOutId);
          timeOutId = null;
        }, BATCH_TIME);
      }
    }
  }
  _leaveReport.addReport(function () {
    var repeatedReportJson = getRepeatedReportJson();
    if (!repeatedReportJson) return false;
    var reportData = [];
    for (var _i = 0, _Object$entries = Object.entries(repeatedReportJson); _i &lt; _Object$entries.length; _i++) {
      var _Object_i = _slicedToArray(_Object$entries[_i], 2),
        key = _Object_i[0],
        value = _Object_i[1];
      reportData.push("".concat(key, "=").concat(encodeURIComponent(value)));
    }
    return {
      reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport?action=batch_report',
      reportData: reportData.join('&amp;'),
      method: 'POST'
    };
  });
  var WapReport = {
    report: function report(logId, rawData, rawOpt) {
      var opt = rawOpt || {};
      if (!opt.realTime &amp;&amp; !blackLogId.includes(logId)) {
        batchReportThrottle(logId, rawData);
      } else {
        AjaxRouter({
          type: 'POST',
          dataType: 'json',
          url: '/mp/wapcommreport',
          data: {
            reportjson: getReportJson(logId, rawData)
          },
          async: opt.async,
          success: getSuccessHandler(logId, rawData, opt),
          error: getErrorHandler(logId, rawData, opt)
        });
      }
    },
    leaveReport: function leaveReport(logId, rawData) {
      _leaveReport.addReport(function () {
        var data = typeof rawData === 'function' ? rawData() : rawData;
        if (!data) {
          return false;
        }
        return {
          reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport',
          reportData: "reportjson=".concat(encodeURIComponent(getReportJson(logId, data))),
          method: 'POST'
        };
      });
    },
    reportByBeacon: function reportByBeacon(logId, rawData) {
      try {
        if (!Device.os.android &amp;&amp; !Device.os.ios) {
          var data = typeof rawData === 'function' ? rawData() : rawData;
          if (!data) {
            return false;
          }
          var url = '/mp/wapcommreport';
          var reportJsonData = encodeURIComponent(getReportJson(logId, data));
          console.log("reportByBeacon", JSON.stringify(reportJsonData));
          navigator.sendBeacon(Url.joinUrl(url), "reportjson=".concat(reportJsonData));
        } else {
          _leaveReport.addReport(function () {
            var data = typeof rawData === 'function' ? rawData() : rawData;
            if (!data) {
              return false;
            }
            return {
              reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport',
              reportData: "reportjson=".concat(encodeURIComponent(getReportJson(logId, data))),
              method: 'POST'
            };
          });
        }
      } catch (error) {
        console.log(error);
      }
    }
  };

  
  var ua = navigator.userAgent;
  var is_android = /(Android)/i.test(ua);
  var g = {
    x: 0,
    y: 0,
    isPc: /(WindowsNT)|(Windows NT)|(Macintosh)|Linux|UnifiedPCOHOSWechat/i.test(navigator.userAgent) &amp;&amp; !is_android,
    isWp: /Windows\sPhone/i.test(ua),
    tsTime: -1
  };
  var prefixes = ['webkit', 'moz', 'ms', 'o'];
  if (isUseTap()) {
    on(document, "touchstart", function (e) {
      if (e.touches.length === 1) {
        var st = e.touches[0];
        g.x = st.clientX;
        g.y = st.clientY;
        g.tsTime = +new Date();
      } else {
        g.tsTime = -1;
      }
    });
  }
  var scrolling;
  function isScrolling() {
    if (scrolling &amp;&amp; new Date().getTime() - scrolling &lt; 200) return true;
    return false;
  }
  window.addEventListener('scroll', function () {
    scrolling = new Date().getTime();
  }, true);
  function isUseTap() {
    if (g.isPc || g.isWp) {
      return false;
    }
    return true;
  }
  
  function tap(el, cb, flag, className) {
    if (!isUseTap()) {
      on(el, "click", className, cb, flag);
    } else {
      cb.tap_handler = function (e) {
        if (g.tsTime == -1 || +new Date() - g.tsTime &gt; 200 || isScrolling()) {
          return;
        }
        var st = e.changedTouches[0];
        if (Math.abs(g.y - st.clientY) &lt;= 5 &amp;&amp; Math.abs(g.x - st.clientX) &lt;= 5) {
          return cb.call(this, e);
          
        }
      };
      on(el, "touchend", className, cb.tap_handler, flag);
    }
  }
  
  function longtap(el, cb, _flag, className, cancelCb) {
    var self = this;
    var timeOutEvent;
    if (g.isPc || g.isWp) {
      var mousedown = false;
      var x;
      var y;
      var triggerLongClick;
      on(el, 'mousedown', className, function (e) {
        triggerLongClick = false;
        mousedown = true;
        x = e.clientX;
        y = e.clientY;
        timeOutEvent = setTimeout(function () {
          triggerLongClick = true;
          timeOutEvent = undefined;
          cb.call(this, e);
        }, 500);
        e.preventDefault();
      });
      on(el, 'mousemove', className, function (e) {
        if (!mousedown) return;
        if (timeOutEvent &amp;&amp; (Math.abs(y - e.clientY) &gt; 5 || Math.abs(x - e.clientX) &gt; 5)) {
          clearTimeout(timeOutEvent);
          timeOutEvent = undefined;
          typeof cancelCb === 'function' &amp;&amp; cancelCb.call(self, e);
        }
      });
      on(el, 'mouseup', className, function () {
        mousedown = false;
        clearTimeout(timeOutEvent);
      });
      on(el, 'click', className, function () {
        if (triggerLongClick) return false;
      });
    } else {
      on(el, 'touchstart', className, function (e) {
        e.touches.length === 1 &amp;&amp; (timeOutEvent = setTimeout(function () {
          timeOutEvent = undefined;
          cb.call(self, e);
        }, 500));
      });
      on(el, 'touchmove', className, function (e) {
        if (!timeOutEvent) return;
        var st = e.changedTouches[0];
        if (Math.abs(g.y - st.clientY) &gt; 5 || Math.abs(g.x - st.clientX) &gt; 5) {
          clearTimeout(timeOutEvent);
          timeOutEvent = undefined;
          typeof cancelCb === 'function' &amp;&amp; cancelCb.call(self, e);
        }
      });
      on(el, 'touchend', className, function (e) {
        if (timeOutEvent) {
          clearTimeout(timeOutEvent);
          timeOutEvent = undefined;
        } else {
          e.preventDefault();
        }
      }, true);
    }
  }
  function doubletap(el, cb) {
    var _this = this;
    var __lastTouchVideoTs = 0;
    var realCb = function realCb(e) {
      if (Date.now() - __lastTouchVideoTs &lt; 300) {
        cb.call(_this, e);
      }
      __lastTouchVideoTs = Date.now();
    };
    tap(el, realCb);
    return function () {
      return off(el, 'touchend', realCb);
    };
  }
  function matches(ele, className) {
    if (!ele || !className || ele.nodeType != ele.ELEMENT_NODE) return false;
    var matchesSelector = ele.webkitMatchesSelector || ele.msMatchesSelector || ele.matchesSelector;
    if (matchesSelector) return matchesSelector.call(ele, className);
    className = className.substr(1);
    return ele.className.indexOf(className) &gt; -1;
  }
  function closest(target, className, context) {
    while (target &amp;&amp; !matches(target, className)) {
      target = target !== context &amp;&amp; target.nodeType !== target.DOCUMENT_NODE &amp;&amp; target.parentNode;
    }
    return target;
  }
  function on(el, type, className, cb, flag, extra) {
    var callback;
    var handler;
    var delegator;
    if (!el) return;
    if (typeof className === 'function') {
      extra = flag;
      flag = cb;
      cb = className;
      className = '';
    }
    if (typeof className !== 'string') {
      className = '';
    }
    if (el == window &amp;&amp; type == "load" &amp;&amp; /complete|loaded/.test(document.readyState)) {
      return cb({
        type: "load"
      });
    }
    if (type == 'tap') return tap(el, cb, flag, className);
    if (type === 'longtap') return longtap(el, cb, flag, className, extra);
    if (type == "unload" &amp;&amp; "onpagehide" in window) {
      type = "pagehide";
    }
    callback = function callback(e) {
      var ret = cb(e);
      if (ret === false) {
        e.stopPropagation &amp;&amp; e.stopPropagation();
        e.preventDefault &amp;&amp; e.preventDefault();
      }
      return ret;
    };
    if (className &amp;&amp; className.charAt(0) == '.') delegator = function delegator(e) {
      var target = e.target || e.srcElement;
      var match = closest(target, className, el);
      if (match) {
        e.delegatedTarget = match;
        return callback(e);
      }
    };
    handler = delegator || callback;
    cb["".concat(type, "_handler")] = handler;
    if (el.addEventListener) {
      el.addEventListener(type, handler, !!flag);
      return;
    }
    if (el.attachEvent) {
      el.attachEvent("on".concat(type), handler, !!flag);
      return;
    }
  }
  function off(el, type, cb, flag) {
    if (!el) return;
    var handlerType = type;
    var handler;
    if (handlerType == 'tap') {
      if (isUseTap()) {
        handlerType = 'touchend';
        handler = cb.tap_handler &amp;&amp; cb.tap_handler.touchend_handler ? cb.tap_handler.touchend_handler : cb;
      } else {
        handlerType = 'click';
      }
    }
    if (!handler) {
      handler = cb["".concat(handlerType, "_handler")] || cb;
    }
    if (el.removeEventListener) {
      el.removeEventListener(handlerType, handler, !!flag);
      return;
    }
    if (el.detachEvent) {
      el.detachEvent("on".concat(handlerType), handler, !!flag);
      return;
    }
    if (handlerType == 'tap' &amp;&amp; isUseTap()) {
      if (cb.tap_handler) {
        cb.tap_handler.touchend_handler = null;
      }
      cb.tap_handler = null;
    } else {
      cb["".concat(handlerType, "_handler")] = null;
    }
  }
  function getHiddenProp() {
    if ('hidden' in document) {
      return 'hidden';
    }
    for (var i = 0; i &lt; prefixes.length; i++) {
      if ("".concat(prefixes[i], "Hidden") in document) {
        return "".concat(prefixes[i], "Hidden");
      }
    }
    return null;
  }
  function getVisibilityState() {
    if ('visibilityState' in document) {
      return 'visibilityState';
    }
    for (var i = 0; i &lt; prefixes.length; i++) {
      if ("".concat(prefixes[i], "VisibilityState") in document) {
        return "".concat(prefixes[i], "VisibilityState");
      }
    }
    return null;
  }
  function bindVisibilityChangeEvt(cb) {
    var visProp = getHiddenProp();
    if (visProp) {
      var evtname = "".concat(visProp.replace(/[H|h]idden/, ''), "visibilitychange");
      var handler = function handler() {
        var isShow = document[getVisibilityState()] !== 'hidden';
        typeof cb === 'function' &amp;&amp; cb(isShow);
      };
      document.addEventListener(evtname, handler, false);
      return function () {
        document.removeEventListener(evtname, handler, false);
      };
    }
    return function () {};
  }
  var DomEvent = {
    on: on,
    off: off,
    tap: tap,
    longtap: longtap,
    bindVisibilityChangeEvt: bindVisibilityChangeEvt,
    doubletap: doubletap
  };

  var html = function html(_str, encode) {
    if (!_str) return '';
    var replace = ['&amp;#96;', '`', '&amp;#39;', '\'', '&amp;quot;', '"', '&amp;nbsp;', ' ', '&amp;gt;', '&gt;', '&amp;lt;', '&lt;', '&amp;yen;', '¥', '&amp;amp;', '&amp;', '&amp;#60;', '&lt;', '&amp;#62;', '&gt;'];
    
    var replaceReverse = ['&amp;', '&amp;amp;', '¥', '&amp;yen;', '&lt;', '&amp;lt;', '&gt;', '&amp;gt;', ' ', '&amp;nbsp;', '"', '&amp;quot;', '\'', '&amp;#39;', '`', '&amp;#96;'];
    var str = _str;
    var target;
    if (encode) {
      target = replaceReverse;
    } else {
      target = replace;
    }
    for (var i = 0; i &lt; target.length; i += 2) {
      str = str.replace(new RegExp(target[i], 'g'), target[i + 1]);
    }
    return str;
  };
  var htmlLite = function htmlLite(_str, encode) {
    if (!_str) return '';
    var replace = ['&amp;#96;', '`', '&amp;#39;', '\'', '&amp;quot;', '"', '&amp;gt;', '&gt;', '&amp;lt;', '&lt;', '&amp;amp;', '&amp;'];
    
    var replaceReverse = ['&amp;', '&amp;amp;', '&lt;', '&amp;lt;', '&gt;', '&amp;gt;', '"', '&amp;quot;', '\'', '&amp;#39;', '`', '&amp;#96;'];
    var str = _str;
    var target;
    if (encode) {
      target = replaceReverse;
    } else {
      target = replace;
    }
    for (var i = 0; i &lt; target.length; i += 2) {
      str = str.replace(new RegExp(target[i], 'g'), target[i + 1]);
    }
    return str;
  };
  var htmlEncode = function htmlEncode(str) {
    return html(str, true);
  };
  var htmlDecode = function htmlDecode(str) {
    return html(str, false);
  };
  var htmlEncodeLite = function htmlEncodeLite(str) {
    return htmlLite(str, true);
  };
  var htmlDecodeLite = function htmlDecodeLite(str) {
    return htmlLite(str, false);
  };
  String.prototype.html = function (encode) {
    return html(this.toString(), encode);
  };
  String.prototype.htmlEncode = function () {
    return htmlEncode(this.toString());
  };
  String.prototype.htmlDecode = function () {
    return htmlDecode(this.toString());
  };
  String.prototype.htmlLite = function (encode) {
    return htmlLite(this.toString(), encode);
  };
  String.prototype.htmlEncodeLite = function () {
    return htmlEncodeLite(this.toString());
  };
  String.prototype.htmlDecodeLite = function () {
    return htmlDecodeLite(this.toString());
  };

  function getCommonReportData() {
    return {
      Referer: location.href,
      UserAgent: navigator.userAgent,
      Protocol: location.protocol || '',
      Origin: location.host || ''
    };
  }
  var report36408 = function report36408(data) {
    WapReport.report(36408, Object.assign(Object.assign({}, data), getCommonReportData()));
  };

  
  var ajax = function ajax(obj) {
    obj.report36408 = report36408;
    AjaxRouter(obj);
  };

  
  var timer = null;
  var jsmonitorReport = {
    setSum: function setSum(id, key, value) {
      throw new Error('Function not implemented.');
    },
    setAvg: function setAvg(id, key, value) {
      throw new Error('Function not implemented.');
    },
    setLogs: function setLogs(opt) {
      throw new Error('Function not implemented.');
    },
    send: function send(async) {
      throw new Error('Function not implemented.');
    }
  };
  window.__monitor_unload_has_done__ = false;
  jsmonitorReport.setSum = function (id, key, value) {
    monitor$1.setSum(id, key, value);
    return jsmonitorReport;
  };
  jsmonitorReport.setAvg = function (id, key, value) {
    monitor$1.setAvg(id, key, value);
    return jsmonitorReport;
  };
  jsmonitorReport.setLogs = function (opt) {
    monitor$1.setLogs(opt);
    return jsmonitorReport;
  };
  jsmonitorReport.send = function (async) {
    if (async !== false) {
      async = true;
    }
    monitor$1.send(async, ajax);
    return jsmonitorReport;
  };
  function reportInterval(fn, delay) {
    timer = window.setTimeout(function () {
      fn();
      reportInterval(fn, delay);
    }, delay);
  }
  reportInterval(function () {
    jsmonitorReport.send();
  }, 1 * 1000);
  window.addEventListener('unload', function () {
    if (window.__monitor_report_has_done__) return;
    window.__ajaxtest = '2';
    if (timer) {
      window.clearTimeout(timer);
      timer = null;
    }
    jsmonitorReport.send(false);
    window.__monitor_unload_has_done__ = true;
  }, false);
  if (window.__jsmonitorReport) {
    jsmonitorReport = window.__jsmonitorReport;
  } else {
    window.__jsmonitorReport = jsmonitorReport;
  }
  var jsmonitorReport$1 = jsmonitorReport;

  
  try {
    if (typeof parent.window.hasListenMpPageAction === 'undefined') {
      parent.window.hasListenMpPageAction = false;
    }
    if (typeof parent.window.hasListenStateChange === 'undefined') {
      parent.window.hasListenStateChange = false;
    }
  } catch (error) {
  }
  var mpPageActionCb = [];
  var stateChangeCb = [];
  var HistoryLS = new LS('history4secondopen');
  var HistoryKey = 'from';
  var hasListenPopstateForSecOpenReload = false;
  
  var webComptStatus = {
    status: 'loading'
  };
  var webComptInitCb = [];
  var directionHandlerId = 0;
  var directionChangeHandlersMap = {};
  function isNativePage() {
    return Url.getQuery('isNativePage') === '1' || Url.getQuery('isNativePage') === '2';
  }
  
  function debounce(func) {
    var wait = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 50;
    var timeout;
    return function () {
      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key &lt; _len; _key++) {
        args[_key] = arguments[_key];
      }
      var context = this;
      var later = function later() {
        timeout = null;
        func.apply(context, args);
      };
      if (timeout) {
        return;
      }
      timeout = setTimeout(later, wait);
    };
  }
  
  function checkIntersect(rectA, rectB) {
    return !(rectB.right &lt; rectA.left || rectB.left &gt; rectA.right || rectB.bottom &lt; rectA.top || rectB.top &gt; rectA.bottom);
  }
  var utils = {
    isNativePage: isNativePage,
    isNewNativePage: function isNewNativePage() {
      return Url.getQuery('isNativePage') === '2';
    },
    isOldNativePage: function isOldNativePage() {
      return Url.getQuery('isNativePage') === '1';
    },
    __useWcSlPlayer: false,
    isWcSlPage: function isWcSlPage() {
      return utils.__useWcSlPlayer;
    },
    getPlayerType: function getPlayerType() {
      if (isNativePage()) {
        return 2;
      }
      return 1;
    },
    getParam: function getParam(key) {
      if (!key) return null;
      var m = location.href.match(new RegExp("(\\?|&amp;)".concat(key, "=([^&amp;]+)")));
      return m ? m[2] : null;
    },
    
    insertAfter: function insertAfter(newElement, targetElement) {
      var parentElement = targetElement.parentNode;
      if (parentElement.lastChild === targetElement) {
        parentElement.appendChild(newElement);
      } else {
        parentElement.insertBefore(newElement, targetElement.nextSibling);
      }
    },
    getInnerHeight: function getInnerHeight() {
      var innerHeightFromApp = window.getInnerHeight &amp;&amp; window.getInnerHeight();
      return innerHeightFromApp || window.innerHeight || document.documentElement.clientHeight;
    },
    getInnerWidth: function getInnerWidth() {
      return window.innerWidth || document.documentElement.clientWidth;
    },
    getScrollTop: function getScrollTop() {
      return document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
    },
    getDocumentHeight: function getDocumentHeight() {
      return document.body.scrollHeight;
    },
    getElementActualTop: function getElementActualTop(element) {
      var elRect = element.getBoundingClientRect();
      var actualTop = elRect.top + this.getScrollTop();
      return actualTop;
    },
    getElementTop: function getElementTop(element) {
      return element.getBoundingClientRect().top;
    },
    getElementHeight: function getElementHeight(element) {
      return element.getBoundingClientRect().height;
    },
    getOrientation: function getOrientation() {
      var _a, _b;
      return (_b = (_a = window.screen.orientation) === null || _a === void 0 ? void 0 : _a.angle) !== null &amp;&amp; _b !== void 0 ? _b : window.orientation;
    },
    getDirection: function getDirection() {
      var orientation = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : utils.getOrientation();
      return (mmversion.isIPad ? [90, 270] : [0, 180]).indexOf(orientation) &gt; -1 ? 'vertical' : 'horizontal';
    },
    listenDirectionChange: function listenDirectionChange(cb) {
      var _a, _b;
      if ((_b = (_a = window.screen) === null || _a === void 0 ? void 0 : _a.orientation) === null || _b === void 0 ? void 0 : _b.addEventListener) {
        directionChangeHandlersMap[directionHandlerId] = function (e) {
          cb === null || cb === void 0 ? void 0 : cb(utils.getDirection(e.target.angle), e.target.angle);
        };
        window.screen.orientation.addEventListener('change', directionChangeHandlersMap[directionHandlerId]);
      } else {
        directionChangeHandlersMap[directionHandlerId] = function () {
          var orientation = utils.getOrientation();
          cb === null || cb === void 0 ? void 0 : cb(utils.getDirection(orientation), orientation);
        };
        window.addEventListener('orientationchange', directionChangeHandlersMap[directionHandlerId]);
      }
      return directionHandlerId++;
    },
    unlistenDirectionChange: function unlistenDirectionChange(handlerId) {
      var _a, _b;
      if ((_b = (_a = window.screen) === null || _a === void 0 ? void 0 : _a.orientation) === null || _b === void 0 ? void 0 : _b.removeEventListener) {
        window.screen.orientation.removeEventListener('change', directionChangeHandlersMap[handlerId]);
      } else {
        window.removeEventListener('orientationchange', directionChangeHandlersMap[handlerId]);
      }
      delete directionChangeHandlersMap[handlerId];
    },
    isScrollEnd: function isScrollEnd(threshold) {
      return this.getScrollTop() + this.getInnerHeight() + threshold &gt;= this.getDocumentHeight();
    },
    
    listenStateChange: function listenStateChange() {
      var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
      stateChangeCb.push(opt.cb);
      try {
        if (parent.window.hasListenStateChange) {
          return;
        }
      } catch (error) {
      }
      JSAPI.on('activity:state_change', function (res) {
        stateChangeCb.forEach(function (callback) {
          callback(res);
        });
      });
      try {
        parent.window.hasListenStateChange = true;
      } catch (error) {
      }
    },
    
    listenMpPageAction: function listenMpPageAction(cb) {
      mpPageActionCb.push(cb);
      try {
        if (parent.window.hasListenMpPageAction) {
          return;
        }
      } catch (error) {
      }
      JSAPI.on('onMPPageAction', function (res) {
        mpPageActionCb.forEach(function (callback) {
          callback(res);
        });
      });
      try {
        parent.window.hasListenMpPageAction = true;
      } catch (error) {
      }
    },
    getIosMainVersion: function getIosMainVersion() {
      var versionInfo = navigator.userAgent.toLowerCase().match(/cpu iphone os (.*?) like mac os/);
      return versionInfo &amp;&amp; versionInfo[1] &amp;&amp; parseInt(versionInfo[1].split('_')[0], 10);
    },
    
    report120081: function report120081(key, times) {
      jsmonitorReport$1.setSum(120081, key, times);
      jsmonitorReport$1.send();
    },
    loadNewPageKeepingHistoryStackIfSecOpen: function loadNewPageKeepingHistoryStackIfSecOpen(url) {
      if (window.__second_open__ &amp;&amp; typeof url === 'string' &amp;&amp; /^https?:\/\/mp.weixin.qq.com\//.test(url)) {
        HistoryLS.set(HistoryKey, location.href, Date.now() + 10000);
      }
      location.href = "".concat(url.replace(/#.*$/, ''), "#wechat_redirect");
    },
    initNewPageHistoryStackFromSecOpen: function initNewPageHistoryStackFromSecOpen() {
      var fromUrl = HistoryLS.get(HistoryKey);
      if (fromUrl &amp;&amp; typeof fromUrl === 'string' &amp;&amp; /^https?:\/\/mp.weixin.qq.com\//.test(fromUrl)) {
        HistoryLS.remove(HistoryKey);
        if (history &amp;&amp; history.replaceState &amp;&amp; history.pushState) {
          var curUrl = location.href;
          try {
            history.replaceState({
              __mock_secopen_history_stack_reload__: 1
            }, '', fromUrl);
            history.pushState({
              __mock_secopen_history_stack_reload__: 1
            }, '', curUrl);
          } catch (e) {
            console.error('[initNewPageHistoryStackFromSecOpen]', e);
          }
        }
      }
      if (!hasListenPopstateForSecOpenReload) {
        hasListenPopstateForSecOpenReload = true;
        window.addEventListener('popstate', function (e) {
          if (e.state &amp;&amp; e.state.__mock_secopen_history_stack_reload__ === 1) {
            location.reload();
          }
        });
      }
    },
    initWebCompt: function initWebCompt(webComptList, callback) {
      var flushCb = function flushCb() {
        while (webComptInitCb.length) {
          var cb = webComptInitCb.shift();
          cb(webComptStatus);
        }
      };
      if (mmversion.isWechat &amp;&amp; !mmversion.isInMiniProgram &amp;&amp; (Device.os.iphone &amp;&amp; Device.os.getNumVersion() &gt;= 10.3 &amp;&amp; (mmversion.gtVersion('7.0.14', 1) &amp;&amp; Device.os.getNumVersion() &lt; 15 || mmversion.gtVersion('8.0.7')) || Device.os.android &amp;&amp; mmversion.gtVersion('7.0.15', 1) &amp;&amp; Device.os.getNumVersion() &gt;= 5 || Device.os.harmony &amp;&amp; mmversion.compareHexVersion('0xf3800c00'))) {
        document.addEventListener('WeixinOpenTagsReady', function () {
          webComptStatus = {
            status: 'ready'
          };
          flushCb();
        });
        document.addEventListener('WeixinOpenTagsError', function (e) {
          webComptStatus = {
            status: 'error',
            error: e &amp;&amp; e.detail &amp;&amp; e.detail.errMsg
          };
          flushCb();
        });
        JSAPI.invoke('handleMPPageAction', {
          action: 'wxConfig',
          appid: 'wxmpfakeid',
          webComptList: webComptList,
          url: location.href
        }, function (res) {
          console.log('wx config web compt result', webComptList, res);
          Log.info('wx config web compt result', webComptList, JSON.stringify(res));
          if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf(':ok') === -1) {
            webComptStatus = {
              status: 'error',
              error: res.err_msg
            };
            flushCb();
          }
          if (typeof callback === 'function') {
            callback(res);
          }
        });
      } else {
        var res = {
          err_msg: 'handleMPPageAction:fail_webcompt unsupported'
        };
        console.log('wx config web compt result', webComptList, res);
        Log.info('wx config web compt result', webComptList, JSON.stringify(res));
        webComptStatus = {
          status: 'error',
          error: res.err_msg
        };
        flushCb();
        if (typeof callback === 'function') {
          callback(res);
        }
      }
    },
    initWebComptForWcSlVideoSharePage: function initWebComptForWcSlVideoSharePage() {
      var initAfterConfWxOpen = function initAfterConfWxOpen(res) {
        if (res.err_msg.indexOf(':ok') !== -1) {
          utils.initNewPageHistoryStackFromSecOpen();
        } else {
          window.__failConfigWxOpen = true;
          Log.info('failed to config wxopen: res not ok');
          jsmonitorReport$1.setSum(221515, Device.os.iphone ? 7 : 8, 1);
          window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; res &amp;&amp; window.WX_BJ_REPORT.BadJs.report('WcSlPlayer:CfgError', (window.__second_open__ ? 'secopen:' : 'h5:') + JSON.stringify(res));
        }
      };
      if (mmversion.isAndroid) {
        var clientVer = mmversion.getInner();
        if (clientVer &gt; '27001037' &amp;&amp; clientVer &lt; '27001060' || clientVer &gt;= '27001100') {
          utils.initWebCompt(['wxOpen' ], initAfterConfWxOpen);
        } else if (mmversion.gtVersion('7.0.15', 1)) {
          window.__failConfigWxOpen = true;
          Log.info('failed to config wxopen: android version check failed (gt 7.0.15)');
        } else {
          window.__failConfigWxOpen = true;
          Log.info('failed to config wxopen: android version check failed');
        }
      } else if (mmversion.isIOS) {
        if (mmversion.gtVersion('7.0.15', 1)) {
          utils.initWebCompt(['wxOpen' ], initAfterConfWxOpen);
        } else {
          window.__failConfigWxOpen = true;
          Log.info('failed to config wxopen: ios version check failed');
        }
      } else {
        window.__failConfigWxOpen = true;
      }
    },
    
    getWebComptStatus: function getWebComptStatus(cb) {
      if (typeof cb !== 'function') {
        return webComptStatus;
      }
      if (webComptStatus.status === 'loading') {
        webComptInitCb.push(cb);
      } else {
        cb(webComptStatus);
      }
      return true;
    },
    
    supportImmersiveMode: mmversion.isWechat &amp;&amp; !mmversion.isInMiniProgram &amp;&amp; (mmversion.isIOS &amp;&amp; mmversion.gtVersion('8.0.9', 1) || mmversion.isAndroid &amp;&amp; mmversion.gtVersion('8.0.9', 1)),
    debounce: debounce,
    
    bindDebounceScrollEvent: function bindDebounceScrollEvent(fn) {
      var scrollEle = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : window;
      var wait = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : 50;
      var useCapture = arguments.length &gt; 3 &amp;&amp; arguments[3] !== undefined ? arguments[3] : false;
      var debounceFn = debounce(fn, wait);
      DomEvent.on(scrollEle, 'scroll', '', debounceFn, useCapture);
    },
    checkIntersect: checkIntersect,
    
    clickRange: function clickRange(evt) {
      var selection = window.getSelection();
      var range = selection.rangeCount &amp;&amp; selection.getRangeAt(0);
      if (!range || range.collapsed || !range.intersectsNode(evt.target)) {
        return false;
      }
      var rangeClientRects = range.getClientRects();
      var targetLineHeight = parseFloat(getComputedStyle(evt.target).lineHeight, 10);
      var targetRect = evt.target.getBoundingClientRect();
      for (var i in rangeClientRects) {
        if (rangeClientRects.hasOwnProperty(i)) {
          var rect = rangeClientRects[i];
          var extraHeight = targetLineHeight ? (targetLineHeight - rect.height) / 2 : 0;
          if (rect.width &amp;&amp; checkIntersect(rect, targetRect) &amp;&amp; evt.clientX &gt;= rect.left &amp;&amp; evt.clientX &lt;= rect.right &amp;&amp; evt.clientY &gt;= rect.top - extraHeight &amp;&amp; evt.clientY &lt;= rect.bottom + extraHeight) {
            return true;
          }
        }
      }
    },
    once: function once(fn) {
      return function () {
        if (fn) {
          for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
            args[_key2] = arguments[_key2];
          }
          var ret = fn.apply(this, args);
          fn = null;
          return ret;
        }
      };
    },
    getRealHeightOfIOSNativePanel: function getRealHeightOfIOSNativePanel(oriHeight, callback) {
      if (mmversion.isIOS) {
        JSAPI.invoke('handleDeviceInfo', {
          action: 'getUIParams'
        }, function (res) {
          var realHeight = oriHeight;
          if (res.isShowBottomBar) {
            realHeight -= res.bottomBarHeight;
          }
          realHeight = Math.max(realHeight, 0);
          typeof callback === 'function' &amp;&amp; callback(realHeight);
        });
      } else {
        typeof callback === 'function' &amp;&amp; callback(oriHeight);
      }
    }
  };
  var getOriginExpVal = function getOriginExpVal(key) {
    var _a, _b, _c;
    return ((_c = (_b = (_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.user_info) === null || _b === void 0 ? void 0 : _b.frontend_exp) === null || _c === void 0 ? void 0 : _c.list) &amp;&amp; window.cgiDataNew.user_info.frontend_exp.list.reduce(function (res, item) {
      if (item.key === key) res = (item === null || item === void 0 ? void 0 : item.value) || '';
      return res;
    }, '');
  };

  mmversion.isIOS &amp;&amp; mmversion.compareHexVersion('18003C31') || mmversion.isAndroid &amp;&amp; mmversion.compareHexVersion('28003E11');
  mmversion.isIOS &amp;&amp; mmversion.compareHexVersion('18003622') || mmversion.isAndroid &amp;&amp; mmversion.compareHexVersion('2800353C') || Device.os.unifiedPC &amp;&amp; mmversion.cpVersion('4.0.6', 1, true, 'unifiedpc') &amp;&amp; getOriginExpVal('unified_share_card_style_pc') !== '0'
;

  var e = {
      d: function d(t, r) {
        for (var i in r) e.o(r, i) &amp;&amp; !e.o(t, i) &amp;&amp; Object.defineProperty(t, i, {
          enumerable: !0,
          get: r[i]
        });
      },
      o: function o(e, t) {
        return Object.prototype.hasOwnProperty.call(e, t);
      }
    },
    t = {};
  e.d(t, {
    A: function A() {
      return s;
    },
    Q: function Q() {
      return a;
    }
  });
  var r = function r(e, t) {
      var r = {};
      for (var i in e) Object.prototype.hasOwnProperty.call(e, i) &amp;&amp; t.indexOf(i) &lt; 0 &amp;&amp; (r[i] = e[i]);
      if (null != e &amp;&amp; "function" == typeof Object.getOwnPropertySymbols) {
        var n = 0;
        for (i = Object.getOwnPropertySymbols(e); n &lt; i.length; n++) t.indexOf(i[n]) &lt; 0 &amp;&amp; Object.prototype.propertyIsEnumerable.call(e, i[n]) &amp;&amp; (r[i[n]] = e[i[n]]);
      }
      return r;
    },
    i = function i(e, t, r) {
      if (r || 2 === arguments.length) for (var i, n = 0, o = t.length; n &lt; o; n++) !i &amp;&amp; n in t || (i || (i = Array.prototype.slice.call(t, 0, n)), i[n] = t[n]);
      return e.concat(i || Array.prototype.slice.call(t));
    },
    n = function n(e) {
      if ("object" == _typeof(e) &amp;&amp; e) return e;
      if ("string" == typeof e) try {
        return JSON.parse(e);
      } catch (e) {
        return;
      }
    },
    o = function o(e) {
      return 173 === e ? 95 : 166 === e ? 147 : [205, 207, 206].includes(e) ? 135 : 78;
    };
  function a(e) {
    var t,
      a,
      s = e.thirdExtParam,
      d = void 0 === s ? "" : s,
      m = e.kvItems,
      p = void 0 === m ? [] : m,
      l = e.sessionKvItems,
      c = void 0 === l ? [] : l,
      u = e.scene,
      x = void 0 === u ? -1 : u,
      y = (e.query, e.parentType),
      h = r(e, ["thirdExtParam", "kvItems", "sessionKvItems", "scene", "query", "parentType"]),
      g = {
        crossExtReqParams: [],
        sessionExtReqParams: [],
        originThirdExtParam: ""
      };
    try {
      if (console.warn("mpThirdExtParamToSearchExtParam init extReqParams:", g), !d) throw new Error("mpThirdExtParamToSearchExtParam thirdExtParam 不存在");
      var _ = JSON.parse(decodeURIComponent(d));
      if (_) {
        if (g.originThirdExtParam = JSON.stringify({
          s1sKeywordsData: null == _ ? void 0 : _.s1sKeywordsData,
          mp_bizuin_msgid_msgidx: null == _ ? void 0 : _.mp_bizuin_msgid_msgidx,
          mp_finger_search_query_pos: null == _ ? void 0 : _.mp_finger_search_query_pos
        }), null == _ ? void 0 : _.s1sKeywordsData) {
          var v = (_ || {}).s1sKeywordsData,
            P = void 0 === v ? {} : v,
            f = P.enterId,
            E = void 0 === f ? 0 : f,
            S = P.s1sContextInfo,
            q = void 0 === S ? "{}" : S,
            T = P.s1sStatInfo,
            I = void 0 === T ? "{}" : T,
            R = P.sessionId,
            O = void 0 === R ? "" : R,
            b = P.postype,
            C = n(decodeURIComponent(q)) || {},
            k = n(decodeURIComponent(I)) || {},
            w = k.bizuin,
            j = void 0 === w ? 0 : w,
            z = k.msgid,
            J = void 0 === z ? 0 : z,
            N = k.msgidx,
            V = void 0 === N ? 0 : N,
            A = C.mixerCommonContext,
            D = void 0 === A ? "" : A,
            U = (C.isNeedUpdateGPTInfo, C.S1SPageType);
          if ([2, 5].includes(void 0 === U ? 1 : U)) return {
            thirdExtParam: d
          };
          g.crossExtReqParams.push({
            key: "parentSearchID",
            textValue: [y || o(x), E || k.enterId, "", "".concat(j, "_").concat(J, "_").concat(V), encodeURIComponent(JSON.stringify({
              enterId: E || k.enterId,
              sessionId: O,
              s1sStatInfo: k,
              postype: b,
              mpBizuinMsgidMsgidx: (null == _ ? void 0 : _.mp_bizuin_msgid_msgidx) || "".concat(j, "_").concat(J, "_").concat(V),
              mpFingerSearchQueryPos: null == _ ? void 0 : _.mp_finger_search_query_pos,
              docid: null == h ? void 0 : h.docid
            }))].join(":").replace(/,/g, ";")
          }), D &amp;&amp; g.crossExtReqParams.push({
            key: "mixerCommonContext",
            textValue: D
          });
        } else g.crossExtReqParams.push({
          key: "parentSearchID",
          textValue: [y || o(x), 0, "", "", encodeURIComponent(JSON.stringify({
            mpBizuinMsgidMsgidx: null == _ ? void 0 : _.mp_bizuin_msgid_msgidx,
            mpFingerSearchQueryPos: null == _ ? void 0 : _.mp_finger_search_query_pos,
            docid: null == h ? void 0 : h.docid
          }))].join(":").replace(/,/g, ";")
        });
        (null == _ ? void 0 : _.mpSelectedContent) &amp;&amp; g.sessionExtReqParams.push({
          key: "mpSelectedContent",
          textValue: _.mpSelectedContent
        }), (null == _ ? void 0 : _.mpSelectActionType) &amp;&amp; g.sessionExtReqParams.push({
          key: "mpSelectActionType",
          textValue: String(_.mpSelectActionType)
        }), (null == _ ? void 0 : _.mp_bizuin_msgid_msgidx) &amp;&amp; g.sessionExtReqParams.push({
          key: "mpBizuinMsgidMsgidx",
          textValue: _.mp_bizuin_msgid_msgidx
        }), (null == _ ? void 0 : _.mp_finger_search_query_context) &amp;&amp; g.sessionExtReqParams.push({
          key: "mpFingerSearchQueryContext",
          textValue: _.mp_finger_search_query_context
        }), (null == _ ? void 0 : _.mp_finger_search_query_pos) &amp;&amp; g.sessionExtReqParams.push({
          key: "mpFingerSearchQueryPos",
          textValue: String(_.mp_finger_search_query_pos)
        }), !(null == _ ? void 0 : _.aiH5Link) &amp;&amp; !(null == _ ? void 0 : _.aiH5Title) || [206].includes(x) || g.sessionExtReqParams.push({
          key: "aiSearchUploadInfo",
          textValue: JSON.stringify({
            uploadFiles: [{
              fileType: 4,
              fileContentDetail: {
                mpContentDetail: {
                  title: null == _ ? void 0 : _.aiH5Title
                }
              },
              url: String(null == _ ? void 0 : _.aiH5Link)
            }],
            contentType: 4,
            allowedContentType: 4
          })
        });
      }
      return (null == p ? void 0 : p.length) &amp;&amp; (t = g.crossExtReqParams).push.apply(t, p), (null == c ? void 0 : c.length) &amp;&amp; (a = g.sessionExtReqParams).push.apply(a, c), h &amp;&amp; Object.keys(h).length &amp;&amp; (g.otherJsApiParams = h), console.warn("mpThirdExtParamToSearchExtParam extReqParams:", g), {
        thirdExtParam: encodeURIComponent(JSON.stringify(g)),
        extReqParams: JSON.stringify(i(i([], g.crossExtReqParams, !0), g.sessionExtReqParams, !0))
      };
    } catch (e) {
      return console.error("mpThirdExtParamToSearchExtParam err:", e), {
        thirdExtParam: d
      };
    }
  }
  var s = {
    mpThirdExtParamToSearchExtParam: a
  };
  t.A;
    t.Q;

  utils.getInnerHeight();
  utils.getInnerWidth();
  (function () {
      var style = document.createElement('style');
      style.innerHTML = '*:not(input):not(textarea):not([contenteditable="true"]) { -webkit-touch-callout: none !important; -webkit-user-select: none !important; -khtml-user-select: none !important; -moz-user-select: none !important; -ms-user-select: none !important; user-select: none !important; }';
      return {
        enableSelect: function enableSelect() {
          document.head.contains(style) &amp;&amp; document.head.removeChild(style);
        },
        disableSelect: function disableSelect() {
          Log.log('disableSelect');
          document.head.appendChild(style);
        }
      };
    })();
  
  var setPubTimeNew = function setPubTimeNew(svrTime, oriCreateTime) {
    var withoutZero = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    var oriTimestamp = oriCreateTime * 1;
    var dateObj = new Date(oriTimestamp * 1000);
    var now = new Date(svrTime * 1000);
    var padStart = function padStart(v) {
      return "0".concat(v).slice(-2);
    };
    var year = dateObj.getFullYear();
    var month = withoutZero ? dateObj.getMonth() + 1 : padStart(dateObj.getMonth() + 1);
    var date = withoutZero ? dateObj.getDate() : padStart(dateObj.getDate());
    var hour = padStart(dateObj.getHours());
    var minute = padStart(dateObj.getMinutes());
    var diffMs = now - dateObj;
    var diffMinutes = Math.floor(diffMs / (1000 * 60));
    var today = new Date(now);
    today.setHours(0, 0, 0, 0);
    var yesterday = new Date(today);
    yesterday.setDate(yesterday.getDate() - 1);
    var yearStart = new Date(now.getFullYear(), 0, 1);
    var showDate = '';
    if (dateObj &gt;= today) {
      if (diffMinutes &lt; 60) {
        if (diffMinutes === 0) {
          showDate = '刚刚';
        } else {
          showDate = "".concat(diffMinutes, "\u5206\u949F\u524D");
        }
      } else {
        showDate = "\u4ECA\u5929".concat(hour, ":").concat(minute);
      }
    } else if (dateObj &gt;= yesterday) {
      showDate = "\u6628\u5929".concat(hour, ":").concat(minute);
    } else if (dateObj &gt;= yearStart) {
      showDate = "".concat(parseInt(month, 10), "\u6708").concat(parseInt(date, 10), "\u65E5").concat(hour, ":").concat(minute);
    } else {
      showDate = "".concat(year, "\u5E74").concat(parseInt(month, 10), "\u6708").concat(parseInt(date, 10), "\u65E5").concat(hour, ":").concat(minute);
    }
    return showDate;
  };

  
  var __setPubTime = function __setPubTime(svrTime, oriCreateTime, createTime, dom, itemShowType) {
    var oriTimestamp = oriCreateTime * 1;
    var dateObj = new Date(oriTimestamp * 1000);
    var padStart = function padStart(v) {
      return "0".concat(v).slice(-2);
    };
    var year = dateObj.getFullYear();
    var month = dateObj.getMonth() + 1;
    var date = dateObj.getDate();
    var hour = padStart(dateObj.getHours());
    var minute = padStart(dateObj.getMinutes());
    var timeString = "".concat(hour, ":").concat(minute);
    var dateString = "".concat(year, "年").concat(month, "月").concat(date, "日");
    var showDate = "".concat(dateString, " ").concat(timeString);

    if (itemShowType == '10' || itemShowType == '8') {
      showDate = setPubTimeNew(svrTime, oriCreateTime, true);
    }
    if (dom) {
      dom.innerText = showDate;
    }
  };
  if (!window.__second_open__) {
    var svrDate = '1780398078';
    var oriCreateTime = '1780125513';
    var createTime = '2026-05-30 15:18';
    var itemShowType = window.a_value_which_never_exists || '0';
    __setPubTime(svrDate, oriCreateTime, createTime, document.getElementById('publish_time'), itemShowType);
    window.__setPubTime = __setPubTime;
  }

  return __setPubTime;

})();
  &lt;/script&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   if (!window.console) window.console = { log: function() {} };
if (typeof getComputedStyle == 'undefined') {
  if (document.body.currentStyle) {
    window.getComputedStyle = function(el) {
      return el.currentStyle;
    }
  } else {
    window.getComputedStyle = {};
  }
}
(function(){
  window.__zoom = 1;

  var ua = navigator.userAgent.toLowerCase();
  var re = new RegExp("msie ([0-9]+[\.0-9]*)");
  var version;
  if (re.exec(ua) != null) {
    version = parseInt(RegExp.$1);
  }
  var isIE = false;
  if (typeof version != 'undefined' &amp;&amp; version &gt;= 6 &amp;&amp; version &lt;= 9) {
    isIE = true;
  }
  var isAccessibilityKey = 'isMpUserAccessibility';
  var isAccessMode = window.localStorage.getItem(isAccessibilityKey);
  var isCarton = isIE || '0' === '1' || '' === '1' || isAccessMode === '1';
  var bodyWidth = '' * 1;
  if (bodyWidth) {
    var styles = getComputedStyle(document.getElementById('page-content'));
    bodyWidth - parseFloat(styles.paddingLeft) - parseFloat(styles.paddingRight);
  }
  var getMaxWith = function () {
    var container = document.getElementById('img-content');
    var max_width = container.offsetWidth;
    !max_width &amp;&amp; bodyWidth &amp;&amp; (max_width = bodyWidth);
    var container_padding = 0;
    var container_style = getComputedStyle(container);
    container_padding = parseFloat(container_style.paddingLeft) + parseFloat(container_style.paddingRight);
    max_width -= container_padding;
    if (!max_width) {
      max_width = window.innerWidth - 30;     
    }
    return max_width;
  };
  var getParentWidth = function (dom) {
    var parent_width = 0;
    var parent = dom.parentNode;
    var outerWidth = 0;
    while (true) {
      if (!parent || parent.nodeType != 1) break;
      var parent_style = getComputedStyle(parent);
      if (!parent_style) break;
      parent_width = parent.clientWidth - parseFloat(parent_style.paddingLeft) - parseFloat(parent_style.paddingRight) - outerWidth;
      if (parent_width &gt; 0) break;
      outerWidth += parseFloat(parent_style.paddingLeft) + parseFloat(parent_style.paddingRight) + parseFloat(parent_style.marginLeft) + parseFloat(parent_style.marginRight) + parseFloat(parent_style.borderLeftWidth) + parseFloat(parent_style.borderRightWidth);
      parent = parent.parentNode;
    }
    return parent_width;
  }
  var getOuterW = function (dom) {
    var style = getComputedStyle(dom),
      w = 0;
    if (!!style) {
      w = parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);
    }
    return w;
  };
  var getOuterH = function (dom) {
    var style = getComputedStyle(dom),
      h = 0;
    if (!!style) {
      h = parseFloat(style.paddingTop) + parseFloat(style.paddingBottom);
    }
    return h;
  };
  var insertAfter = function (dom, afterDom) {
    var _p = afterDom.parentNode;
    if (!_p) {
      return;
    }
    if (_p.lastChild === afterDom) {
      _p.appendChild(dom);
    } else {
      _p.insertBefore(dom, afterDom.nextSibling);
    }
  };
  var getQuery = function (name, url) {
   
    var u = arguments[1] || window.location.search,
      reg = new RegExp("(^|&amp;)" + name + "=([^&amp;]*)(&amp;|$)"),
      r = u.substr(u.indexOf("\?") + 1).match(reg);
    return r != null ? r[2] : "";
  };

  
  function setImgSize(item, widthNum, widthUnit, ratio, breakParentWidth) {
    setTimeout(function () {
      var img_padding_border = getOuterW(item) || 0;
      var img_padding_border_top_bottom = getOuterH(item) || 0;

     
      if (widthNum &gt; getParentWidth(item) &amp;&amp; !breakParentWidth) {
        widthNum = getParentWidth(item);
      }

      var height = (widthNum - img_padding_border) * ratio + img_padding_border_top_bottom;

      if (isCarton) {
        var url = item.getAttribute('data-src');
        item.src = url;

       
        item.style.height = 'auto';
      } else {
       
       
       
       
        widthNum !== 'auto' &amp;&amp; (item.style.cssText += ";width: " + widthNum + widthUnit + " !important;");
        widthNum !== 'auto' &amp;&amp; (item.style.cssText += ";height: " + height + widthUnit + " !important;");
      }
    }, 10);
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 

 
 
 
 
 
 
 
 
 

 
 
 
 
 
 

 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 

 
 
 
 
 
 

 

 
 
 
 
 
 
 
 
 
 
 
 
  window.__videoDefaultRatio = 16 / 9;//默认值是16/9
  window.__getVideoWh = function (dom) {
    var max_width = getMaxWith(),
      width = max_width,
      ratio_ = dom.getAttribute('data-ratio') * 1,//mark16/9
      arr = [4 / 3, 16 / 9],
      ret = arr[0],
      abs = Math.abs(ret - ratio_);
    if (!ratio_) {
      ratio_ = 4 / 3;
    } else {
      for (var j = 1, jl = arr.length; j &lt; jl; j++) {
        var _abs = Math.abs(arr[j] - ratio_);
        if (_abs &lt; abs) {
          abs = _abs;
          ret = arr[j];
        }
      }
      ratio_ = ret;
    }

    var parent_width = getParentWidth(dom) || max_width,
      width = width &gt; parent_width ? parent_width : width,
      outerW = getOuterW(dom) || 0,
      outerH = getOuterH(dom) || 0,
      videoW = width - outerW,
      videoH = videoW / ratio_,
      speedDotH = 12,
      height = videoH + outerH + speedDotH;

    return { w: Math.ceil(width), h: Math.ceil(height), vh: videoH, vw: videoW, ratio: ratio_, sdh: speedDotH };
  };

 
  (function () {
    var iframe = document.getElementsByTagName('iframe');
    for (var i = 0, il = iframe.length; i &lt; il; i++) {
      if (window.__second_open__ &amp;&amp; iframe[i].getAttribute('__sec_open_place_holder__')) {
        continue;
      }
      var a = iframe[i];
      var src_ = a.getAttribute('src') || a.getAttribute('data-src') || "";

      
      var vid = getQuery("vid", src_) || a.getAttribute('data-mpvid');
      if (!vid) {
        continue;
      }
      vid = vid.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "");//清除前后空格
      a.removeAttribute('src');
      a.style.display = "none";
      var obj = window.__getVideoWh(a),
        videoPlaceHolderSpan = document.createElement('span');

      videoPlaceHolderSpan.className = "js_img_placeholder wx_widget_placeholder";
      videoPlaceHolderSpan.setAttribute("data-vid", vid);
      videoPlaceHolderSpan.innerHTML = '&lt;span class="weui-primary-loading"&gt;&lt;span class="weui-primary-loading__dot"&gt;&lt;/span&gt;&lt;/span&gt;';
      videoPlaceHolderSpan.style.cssText = "width: " + obj.w + "px !important;";

      insertAfter(videoPlaceHolderSpan, a);

      

      var mid = "" || "" || "2247512454";
      var biz = "" || "Mzg3NzU0NzIxMA==";
      var sessionid = "" || "svr_e693be7652c";
      var idx = "" || "1";
      var hitInfos = [
              ];

      (function setHitStyle(parentNode, copyIframe, index, vid) {
        var ret = (hitInfos || []).find(function (info) { return info.video_id === vid; } );
        if (!ret) return;
        var ori = ret.ori_status;
        var hit_biz_headimg = ret.hit_biz_headimg + '/64';
        var hit_nickname = ret.hit_nickname;
        var hit_username = ret.hit_username;
        var sourceBiz = ret.hit_bizuin;

        var selfUserName = "gh_b2bc148c1cf8";

        if (ori === 2 &amp;&amp; selfUserName !== hit_username) {
          var videoBar = document.createElement('div');
          var videoBarHtml = '&lt;div class="wx-edui-video_source_link js_wx_tap_highlight wx_tap_card" id="' + (hit_username + index) + '" data-hit-username="' + hit_username + '" data-hit-biz="' + sourceBiz + '"&gt;';
          videoBarHtml += '&lt;div class="wx-edui-video_source_word"&gt;以下视频来源于&lt;/div&gt;';
          videoBarHtml += '&lt;div class="wx-edui-video_account_info"&gt;';
          videoBarHtml += '&lt;div class="wx-edui-video_account_avatar" id="' + (hit_biz_headimg + index) + '" data-src="' + hit_biz_headimg + '"&gt;&lt;/div&gt;';
          videoBarHtml += '&lt;div class="wx-edui-video_account_name"&gt;' + hit_nickname + '&lt;/div&gt;';
          videoBarHtml += '&lt;i class="wx-edui-video_account_arrow"&gt;&lt;/i&gt;';
          videoBarHtml += '&lt;/div&gt;';
          videoBarHtml += '&lt;div class="wx-edui-video_source_link__layer_mask"&gt;&lt;/div&gt;';
          videoBarHtml += '&lt;/div&gt;';
          videoBar.innerHTML = videoBarHtml;
          var spanContainer = document.getElementById('js_mp_video_container_' + index);
          if (spanContainer) {
            spanContainer.parentNode.insertBefore(videoBar, spanContainer);
          } else if (parentNode.contains &amp;&amp; parentNode.contains(copyIframe)) {
            parentNode.insertBefore(videoBar, copyIframe);
          } else {
            parentNode.insertBefore(videoBar, parentNode.firstElementChild);
          }
          var avatorEle = document.getElementById(hit_biz_headimg + index);
          var avatorSrc = avatorEle.dataset.src;
          console.log('avatorSrc' + avatorSrc);
          if (ret.hit_biz_headimg) {
            avatorEle.style.backgroundImage = 'url(' + avatorSrc + ')';
          }
        }
      })(a.parentNode, a, i, vid);

      a.style.cssText += ";width: " + obj.w + "px !important;";
      a.setAttribute("width", obj.w);
      if (window.__zoom != 1) {
        a.style.display = "block";
        videoPlaceHolderSpan.style.display = "none";
        a.setAttribute("_ratio", obj.ratio);
        a.setAttribute("_vid", vid);
      } else {
        videoPlaceHolderSpan.style.cssText += "height: " + (obj.h - obj.sdh) + "px !important;margin-bottom: " + obj.sdh + "px !important;";
        a.style.cssText += "height: " + obj.h + "px !important;";
        a.setAttribute("height", obj.h);
      }
      a.setAttribute("data-vh", obj.vh);
      a.setAttribute("data-vw", obj.vw);
      if (a.getAttribute("data-mpvid")) {
        a.setAttribute("data-src", location.protocol + "//mp.weixin.qq.com/mp/readtemplate?t=pages/video_player_tmpl&amp;auto=0&amp;vid=" + vid);
      } else {
        a.setAttribute("data-src", location.protocol + "//v.qq.com/iframe/player.html?vid=" + vid + "&amp;width=" + obj.vw + "&amp;height=" + obj.vh + "&amp;auto=0");
      }
    }
  })();

  (function () {
    if (window.__zoom != 1) {
      if (!window.__second_open__) {
        document.getElementById('page-content').style.zoom = window.__zoom;
        var a = document.getElementById('activity-name');
        var b = document.getElementById('meta_content');
        if (!!a) {
          a.style.zoom = 1 / window.__zoom;
        }
        if (!!b) {
          b.style.zoom = 1 / window.__zoom;
        }
      }
      var images = document.getElementsByTagName('img');
      for (var i = 0, il = images.length; i &lt; il; i++) {
        if (window.__second_open__ &amp;&amp; images[i].getAttribute('__sec_open_place_holder__')) {
          continue;
        }
        images[i].style.zoom = 1 / window.__zoom;
      }
      var iframe = document.getElementsByTagName('iframe');
      for (var i = 0, il = iframe.length; i &lt; il; i++) {
        if (window.__second_open__ &amp;&amp; iframe[i].getAttribute('__sec_open_place_holder__')) {
          continue;
        }
        var a = iframe[i];
        a.style.zoom = 1 / window.__zoom;
        var src_ = a.getAttribute('data-src') || "";
        if (!/^http(s)*\:\/\/v\.qq\.com\/iframe\/(preview|player)\.html\?/.test(src_)
          &amp;&amp; !/^http(s)*\:\/\/mp\.weixin\.qq\.com\/mp\/readtemplate\?t=pages\/video_player_tmpl/.test(src_)
        ) {
          continue;
        }
        var ratio = a.getAttribute("_ratio");
        var vid = a.getAttribute("_vid");
        a.removeAttribute("_ratio");
        a.removeAttribute("_vid");
        var vw = a.offsetWidth - (getOuterW(a) || 0);
        var vh = vw / ratio;
        var h = vh + (getOuterH(a) || 0)
        a.style.cssText += "height: " + h + "px !important;"
        a.setAttribute("height", h);
        if (/^http(s)*\:\/\/v\.qq\.com\/iframe\/(preview|player)\.html\?/.test(src_)) {
          a.setAttribute("data-src", location.protocol + "//v.qq.com/iframe/player.html?vid=" + vid + "&amp;width=" + vw + "&amp;height=" + vh + "&amp;auto=0");
        }
        a.style.display = "none";
        var parent = a.parentNode;
        if (!parent) {
          continue;
        }
        for (var j = 0, jl = parent.children.length; j &lt; jl; j++) {
          var child = parent.children[j];
          if (child.className.indexOf("js_img_placeholder") &gt;= 0 &amp;&amp; child.getAttribute("data-vid") == vid) {
            child.style.cssText += "height: " + h + "px !important;";
            child.style.display = "";
          }
        }
      }
    }
  })();
})();
var anchor_tree_msg = '';
  &lt;/script&gt;
  &lt;script h5only="" nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   var __INLINE_SCRIPT__ = (function (exports, o$7) {
  'use strict';

  function _interopDefaultLegacy (e) { return e &amp;&amp; typeof e === 'object' &amp;&amp; 'default' in e ? e : { 'default': e }; }

  var o__default = _interopDefaultLegacy(o$7);
  var setImmersiveMode = function setImmersiveMode(itemShowType) {
    var envStr = window.__wxWebEnv &amp;&amp; typeof window.__wxWebEnv.getEnv === 'function' &amp;&amp; window.__wxWebEnv.getEnv();
    if (!envStr) return;
    var envObj = {};
    if (!envStr) return;
    try {
      envObj = JSON.parse(envStr);
    } catch (err) {
      console.info(err);
    }
    var immersiveListMode = envObj.immersiveListMode || 0;
    window.__immersiveListMode = Number(immersiveListMode) === 1 ? 1 : 0;
    window.__test_immersive_list = 0;
    if (window.__test_immersive_list) {
      window.__immersiveListMode = 1;
    }
    var wxExpandArticleEle = document.getElementById('wx_expand_article');
    document.getElementById('js_article');
    var bottomLoadingTip = document.getElementById('js_network_msg_wrp');
    if (!itemShowType &amp;&amp; itemShowType !== 0) {
      itemShowType = window.item_show_type;
    }
    itemShowType = Number(itemShowType);

    if (window.__immersiveListMode) {
      try {
        var immersiveSafeBottom = localStorage.getItem('__immersivefeed_safe_bottom__');
        if (immersiveSafeBottom) {
          document.documentElement.style.setProperty('--immersive-safe-bottom', immersiveSafeBottom);
        }
      } catch (error) {
        console.log(error);
      }
      if (wxExpandArticleEle) {
        wxExpandArticleEle.style.display = 'block';
      }
      if (bottomLoadingTip) {
        bottomLoadingTip.style.display = 'none';
      }
      if (itemShowType === 10 || itemShowType === 7) {
        document.body.classList.add('ellapse_short_content');
      } else {
        document.body.classList.add('ellapse_stream_article');
      }
      if (itemShowType === 0) {
        document.body.classList.add('article_extensive_background');
      } else {
        document.body.classList.add('media_content_extensive_background');
      }
      var interactionPlaceholderEle = document.getElementById('js_interaction_placeholder');
      if (interactionPlaceholderEle) {
        interactionPlaceholderEle.style.display = 'block';
      }
    }
  };

  function _typeof$3(obj) {
    "@babel/helpers - typeof";

    return _typeof$3 = "function" == typeof Symbol &amp;&amp; "symbol" == typeof Symbol.iterator ? function (obj) {
      return typeof obj;
    } : function (obj) {
      return obj &amp;&amp; "function" == typeof Symbol &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj;
    }, _typeof$3(obj);
  }

  function asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, key, arg) {
    try {
      var info = gen[key](arg);
      var value = info.value;
    } catch (error) {
      reject(error);
      return;
    }
    if (info.done) {
      resolve(value);
    } else {
      Promise.resolve(value).then(_next, _throw);
    }
  }
  function _asyncToGenerator$1(fn) {
    return function () {
      var self = this,
        args = arguments;
      return new Promise(function (resolve, reject) {
        var gen = fn.apply(self, args);
        function _next(value) {
          asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, "next", value);
        }
        function _throw(err) {
          asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, "throw", err);
        }
        _next(undefined);
      });
    };
  }

  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" &amp;&amp; o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$2(o)) || allowArrayLike &amp;&amp; o &amp;&amp; typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i &gt;= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion &amp;&amp; it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
  function _unsupportedIterableToArray$2(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$2(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$2(o, minLen); }
  function _arrayLikeToArray$2(arr, len) { if (len == null || len &gt; arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i]; return arr2; }
  
  
  var ua$1 = navigator.userAgent;
  var is_ios = /(iPhone|iPad|iPod|iOS)/i.test(ua$1);
  var is_wp = /Windows\sPhone/i.test(ua$1);
  var is_android$1 = /(Android)/i.test(ua$1);
  var is_wechat = /MicroMessenger\/([\d\.]+)/i.test(ua$1);
  var is_mac = /mac\sos/i.test(ua$1) &amp;&amp; !is_ios;
  var is_windows = /windows\snt/i.test(ua$1) &amp;&amp; !is_wp;
  var is_mpapp = /MPAPP\/([\d\.]+)/i.test(ua$1);
  var is_ipad = /iPad/i.test(ua$1);
  var is_windows_wechat = /WindowsWechat/i.test(ua$1);
  var is_mac_wechat = /MacWechat/i.test(ua$1) || /wechat.*mac os/i.test(ua$1);
  var is_prefetch = is_wechat &amp;&amp; window.WeixinPrefecherJSBridge;
  var is_donut_app = /SAAASDK/i.test(ua$1);
  var is_harmony = /OpenHarmony|ArkWeb/i.test(ua$1);
  var is_linux = /Linux\s/i.test(ua$1);
  var xweb_match = ua$1.match(/XWEB\/([\d.]+)/i);
  var xweb_version = xweb_match &amp;&amp; xweb_match[1] ? parseInt(xweb_match[1], 10) : 0;
  var is_unified_pc_wechat = /UnifiedPC\w+Wechat/i.test(ua$1);
  var is_in_miniProgram = is_android$1 &amp;&amp; /miniprogram/.test(ua$1.toLowerCase()) || window.__wxjs_environment == 'miniprogram';
  var is_wx_work = /wxwork/i.test(ua$1);
  function getUrlParams() {
    var vars = location.search.substring(1).split('&amp;');
    var params = {};
    var _iterator = _createForOfIteratorHelper(vars),
      _step;
    try {
      for (_iterator.s(); !(_step = _iterator.n()).done;) {
        var ele = _step.value;
        var pair = ele.split('=');
        var key = decodeURIComponent(pair[0]);
        if (typeof params[key] === 'undefined') {
          params[key] = decodeURIComponent(pair[1]);
        }
      }
    } catch (err) {
      _iterator.e(err);
    } finally {
      _iterator.f();
    }
    return params;
  }
  function get() {
    var reg = /MicroMessenger\/([\d\.]+)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMac() {
    var reg = /MacWechat\/([\d\.]+)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMacOS() {
    var reg = /Mac OS X ([\d_]+)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1].replace(/_/g, '.');
    }
    return false;
  }
  function getWindows() {
    var reg = /WindowsWechat\(0x(.+?)\)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getWxWork() {
    var reg = /wxwork\/([\d\.]+)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMpApp() {
    var appVersion = [2, 4, 5];
    var match = navigator.userAgent.match(/MPAPP\/(\d+(\.\d+)*)/);
    if (match) {
      appVersion = match[1].split('.').map(function (v) {
        return Number(v);
      });
    }
    return appVersion.join('.');
  }
  function getUnifiedPcVer() {
    var versionInfo = navigator.userAgent.match(/UnifiedPC\w+Wechat\(0xf\w{2}(\w+?)\w{2}\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(0, 1));
      var subVersion = getVersionNumber(version.slice(1, 2));
      var subVersion2 = getVersionNumber(version.slice(2, 3));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
  }
  function getVersionNumber(hexStr) {
    return Number(Number("0x".concat(hexStr)).toString(10));
  }
  function getWindowsVersionFormat() {
    var versionInfo = navigator.userAgent.match(/WindowsWechat\(0x(\w+?)\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(1, 2));
      var subVersion = getVersionNumber(version.slice(2, 4));
      var subVersion2 = getVersionNumber(version.slice(4, 6));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
    return false;
  }
  function getInner() {
    var reg = /MicroMessenger\/[\d\.]+\(0x(.+?)\)/i;
    var ret = ua$1.match(reg);
    if (ret &amp;&amp; ret[1] &amp;&amp; ret[1] != null) {
      return ret[1];
    }
    if (!ret &amp;&amp; /MicroMessenger\/[\d\.]+/i.test(ua$1)) {
      var urlParams = getUrlParams();
      if (urlParams.version) {
        return urlParams.version;
      }
    }
    return false;
  }
  var opfunc = {
    'cp-1': function cp1(a, b) {
      return a &lt; b;
    },
    cp0: function cp0(a, b) {
      return a === b;
    },
    cp1: function cp1(a, b) {
      return a &gt; b;
    }
  };
  function cpVersion(ver, op, canEq, type) {
    var mmver = false;
    switch (type) {
      case 'mac':
        mmver = getMac();
        break;
      case 'windows':
        mmver = getWindowsVersionFormat();
        break;
      case 'wxwork':
        mmver = getWxWork();
        break;
      case 'mpapp':
        mmver = getMpApp();
        break;
      case 'unifiedpc':
        mmver = getUnifiedPcVer();
        break;
      default:
        mmver = get();
        break;
    }
    if (!mmver) {
      return;
    }
    var mmversion = mmver.split('.');
    var version = ver.split('.');
    if (!/\d+/g.test(mmversion[mmversion.length - 1])) {
      mmversion.pop();
    }
    for (var i = 0, len = Math.max(mmversion.length, version.length); i &lt; len; ++i) {
      var mmv = mmversion[i] || '';
      var v = version[i] || '';
      var mmvn = parseInt(mmv, 10) || 0;
      var vn = parseInt(v, 10) || 0;
      var eq = opfunc.cp0(mmvn, vn);
      if (eq) {
        continue;
      }
      var cp = opfunc["cp".concat(op)];
      return cp(mmvn, vn);
    }
    return canEq || op === 0;
  }
  function eqVersion(version) {
    return cpVersion(version, 0);
  }
  function gtVersion(version, canEq) {
    return cpVersion(version, 1, canEq);
  }
  function ltVersion(version, canEq) {
    return cpVersion(version, -1, canEq);
  }
  function getPlatform() {
    if (is_ios) {
      return 'ios';
    }
    if (is_android$1) {
      return 'android';
    }
    if (is_mac) {
      return 'mac_os';
    }
    if (is_windows) {
      return 'windows';
    }
    return 'unknown';
  }
  var is_google_play = false;
  var inner_ver_for_google_play_check = getInner();
  if (is_android$1 &amp;&amp; inner_ver_for_google_play_check) {
    var v$4 = "0x".concat(inner_ver_for_google_play_check.substr(-2));
    if (parseInt(v$4) &gt;= 64 &amp;&amp; parseInt(v$4) &lt;= 79) {
      is_google_play = true;
    }
  }
  function compareHexVersion(hexNum) {
    var innerVersion = getInner();
    if (innerVersion &amp;&amp; hexNum) {
      if (typeof hexNum === 'string') {
        hexNum = parseInt(hexNum, 16);
      }
      var version = parseInt(innerVersion, 16);
      return version &gt;= hexNum;
    }
    return false;
  }
  var MMVersion = {
    get: get,
    getMac: getMac,
    getMacOS: getMacOS,
    getWindows: getWindows,
    getInner: getInner,
    getWxWork: getWxWork,
    getMpApp: getMpApp,
    cpVersion: cpVersion,
    eqVersion: eqVersion,
    gtVersion: gtVersion,
    ltVersion: ltVersion,
    getPlatform: getPlatform,
    getVersionNumber: getVersionNumber,
    isWp: is_wp,
    isIOS: is_ios,
    isAndroid: is_android$1,
    isHarmony: is_harmony,
    isHarmonyWechat: is_harmony &amp;&amp; is_wechat &amp;&amp; cpVersion('1.0.0', 1, true),
    isInMiniProgram: is_in_miniProgram,
    isWechat: is_wechat,
    isMac: is_mac,
    isWindows: is_windows,
    isLinux: is_linux,
    isMacWechat: is_mac_wechat,
    isWindowsWechat: is_windows_wechat,
    isWxWork: is_wx_work,
    isOnlyWechat: is_wechat &amp;&amp; !is_wx_work,
    isMpapp: is_mpapp,
    isNewMpApp: false,
    isIPad: is_ipad,
    isGooglePlay: is_google_play,
    isPrefetch: is_prefetch,
    isDonutAPP: is_donut_app,
    compareHexVersion: compareHexVersion,
    isPcWechat: is_windows_wechat || is_mac_wechat,
    xwebVersion: xweb_version,
    isUnifiedPcWechat: is_unified_pc_wechat
  };

  var initJsBridge = false;
  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }
  function connectWebViewJavascriptBridge(callback) {
    if (window.WebViewMPapp || window.WebViewJavascriptBridge) {
      return callback(window.WebViewMPapp || window.WebViewJavascriptBridge);
    }
    if (window.WVJBCallbacks) {
      return window.WVJBCallbacks.push(callback);
    }
    window.WVJBCallbacks = [callback];
    if (!MMVersion.isMpapp) {
      return false;
    }
    if (!initJsBridge) {
      initJsBridge = true;
      var WVJBIframe = document.createElement('iframe');
      WVJBIframe.style.display = 'none';
      WVJBIframe.src = 'https://__bridge_loaded__';
      document.body.appendChild(WVJBIframe);
      setTimeout(function () {
        initJsBridge = false;
        document.body.removeChild(WVJBIframe);
      }, 0);
    }
    return false;
  }
  function invoke$1(jsapiName, opt, callback) {
    connectWebViewJavascriptBridge(function (bridge) {
      try {
        if (typeof opt === 'function') {
          callback = opt;
        }
        if (_typeof$3(opt) !== 'object' &amp;&amp; typeof opt !== 'string') {
          opt = {};
        }
        bridge.callHandler(jsapiName, opt, function (res) {
          try {
            var ret = _typeof$3(res) === 'object' ? res : JSON.parse(res);
            var errMsg = ret.err_msg || ret.errMsg;
            console.info("[mpapp jsapi] invoke-&gt;".concat(jsapiName, " ").concat(opt.action || '', " ").concat(errMsg));
            typeof callback === 'function' &amp;&amp; callback(ret);
          } catch (e) {
            window.WX_BJ_REPORT.BadJs.report('invoke', "callback ".concat(jsapiName, " error:"), {
              mid: 'mmbizwebapp:js_brridge',
              _info: e
            });
            console.error("[mpapp jsapi] ".concat(jsapiName, " ").concat(opt.action || ''), e, res);
          }
        });
      } catch (e) {
        window.WX_BJ_REPORT.BadJs.report('invoke', 'callback error:', {
          mid: 'mmbizwebapp:js_brridge',
          _info: e
        });
        console.error('[mpapp jsapi]', e);
      }
    });
  }

  function _regeneratorRuntime$6() {  _regeneratorRuntime$6 = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof$3(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof$3(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  var doc$1 = {};
  var isAcrossOrigin$1 = false;
  var notFoundedMPPageAction = [];
  var __moon_report$1 = window.__moon_report || function () {};
  var MOON_JSAPI_KEY_OFFSET = 8;
  try {
    doc$1 = top.window.document;
  } catch (e) {
    isAcrossOrigin$1 = true;
  }
  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }
  function ready(onBridgeReady) {
    var bridgeReady = function bridgeReady() {
      try {
        if (onBridgeReady) {
          window.onBridgeReadyTime = window.onBridgeReadyTime || Date.now();
          onBridgeReady();
        }
      } catch (e) {
        __moon_report$1([{
          offset: MOON_JSAPI_KEY_OFFSET,
          log: 'ready',
          e: e
        }]);
        throw e;
      }
      window.jsapiReadyTime = Date.now();
    };
    if (!isAcrossOrigin$1 &amp;&amp; (typeof top.window.WeixinJSBridge === 'undefined' || !top.window.WeixinJSBridge.invoke)) {
      if (doc$1.addEventListener) {
        doc$1.addEventListener('WeixinJSBridgeReady', bridgeReady, false);
      } else if (doc$1.attachEvent) {
        doc$1.attachEvent('WeixinJSBridgeReady', bridgeReady);
        doc$1.attachEvent('onWeixinJSBridgeReady', bridgeReady);
      }
    } else {
      bridgeReady();
    }
  }
  var invokeNotWaitA8key = ['notifyPageInfo', 'updatePageAuth'
  ];
  var checkNotFoundedInvoke = function checkNotFoundedInvoke(methodName, args) {
    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; notFoundedMPPageAction.includes(args === null || args === void 0 ? void 0 : args.action)) {
      return true;
    }
    return false;
  };
  function invoke(_x, _x2, _x3) {
    return _invoke.apply(this, arguments);
  }
  function _invoke() {
    _invoke = _asyncToGenerator$1( _regeneratorRuntime$6().mark(function _callee(methodName, args, callback) {
      return _regeneratorRuntime$6().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__ &amp;&amp; !invokeNotWaitA8key.includes(methodName))) {
              _context.next = 3;
              break;
            }
            _context.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin$1) return false;
              if (_typeof$3(top.window.WeixinJSBridge) !== 'object') {
                alert('请在微信中打开此链接');
                return false;
              }
              if (checkNotFoundedInvoke(methodName, args)) {
                setTimeout(function () {
                  if (callback) {
                    callback.apply(window, [{
                      err_msg: "".concat(methodName, ":fail"),
                      err_desc: 'action isn\'t supported'
                    }]);
                  }
                }, 0);
              } else {
                top.window.WeixinJSBridge.invoke(methodName, args, function () {
                  try {
                    for (var _len2 = arguments.length, rets = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
                      rets[_key2] = arguments[_key2];
                    }
                    var ret = rets[0];
                    var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
                    if (['handleMPPageAction', 'handleVideoAction', 'handleHaokanAction'].indexOf(methodName) !== -1) {
                      var action = (args === null || args === void 0 ? void 0 : args.action) || '';
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName, ", action-&gt;").concat(action).concat(errMsg));
                    } else {
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName).concat(errMsg));
                    }
                    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; ((ret === null || ret === void 0 ? void 0 : ret.err_desc) === 'action isn\'t supported' || (ret === null || ret === void 0 ? void 0 : ret.err_msg) === 'handleMPPageAction:fail action is not supported')) {
                      notFoundedMPPageAction.push(args === null || args === void 0 ? void 0 : args.action);
                    }
                    if (callback) {
                      callback.apply(window, rets);
                    }
                  } catch (e) {
                    __moon_report$1([{
                      offset: MOON_JSAPI_KEY_OFFSET,
                      log: "invoke;methodName:".concat(methodName),
                      e: e
                    }]);
                    throw e;
                  }
                });
              }
            });
          case 4:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return _invoke.apply(this, arguments);
  }
  function call(_x4) {
    return _call.apply(this, arguments);
  }
  function _call() {
    _call = _asyncToGenerator$1( _regeneratorRuntime$6().mark(function _callee2(methodName) {
      return _regeneratorRuntime$6().wrap(function _callee2$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__)) {
              _context2.next = 3;
              break;
            }
            _context2.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin$1) return false;
              if (_typeof$3(top.window.WeixinJSBridge) !== 'object') {
                return false;
              }
              try {
                top.window.WeixinJSBridge.call(methodName);
              } catch (e) {
                __moon_report$1([{
                  offset: MOON_JSAPI_KEY_OFFSET,
                  log: "call;methodName:".concat(methodName),
                  e: e
                }]);
                throw e;
              }
            });
          case 4:
          case "end":
            return _context2.stop();
        }
      }, _callee2);
    }));
    return _call.apply(this, arguments);
  }
  function on$2(eventName, callback) {
    ready(function () {
      if (isAcrossOrigin$1) return false;
      if (_typeof$3(top.window.WeixinJSBridge) !== 'object' || !top.window.WeixinJSBridge.on) {
        return false;
      }
      if (!window.JSAPIEventCallbackMap[eventName]) {
        window.JSAPIEventCallbackMap[eventName] = [];
      }
      window.JSAPIEventCallbackMap[eventName].push(callback);
      if (window.JSAPIEventCallbackMap[eventName].length &gt; 1) {
        return false;
      }
      top.window.WeixinJSBridge.on(eventName, function () {
        try {
          for (var _len = arguments.length, rets = new Array(_len), _key = 0; _key &lt; _len; _key++) {
            rets[_key] = arguments[_key];
          }
          var ret = rets[0];
          var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
          console.info('[system]', "[jsapi] event-&gt;".concat(eventName).concat(errMsg));
          if (window.JSAPIEventCallbackMap[eventName] &amp;&amp; window.JSAPIEventCallbackMap[eventName].length) {
            var result;
            for (var i = 0; i &lt; window.JSAPIEventCallbackMap[eventName].length; i++) {
              result = window.JSAPIEventCallbackMap[eventName][i].apply(window, rets);
            }
            return result;
          }
        } catch (e) {
          __moon_report$1([{
            offset: MOON_JSAPI_KEY_OFFSET,
            log: "on;eventName:".concat(eventName),
            e: e
          }]);
          throw e;
        }
      });
    });
  }
  function remove$1(eventName, callback) {
    ready(function () {
      if (!window.JSAPIEventCallbackMap[eventName]) {
        return false;
      }
      var result = false;
      for (var i = window.JSAPIEventCallbackMap[eventName].length - 1; i &gt;= 0; i--) {
        if (window.JSAPIEventCallbackMap[eventName][i] === callback) {
          window.JSAPIEventCallbackMap[eventName].splice(i, 1);
          result = true;
        }
      }
      return result;
    });
  }
  var R$4 = {
    ready: ready,
    invoke: invoke,
    call: call,
    on: on$2,
    remove: remove$1
  };

  function initBodyStyle() {
    window.scrollTo({
      top: 0,
      behavior: 'smooth'
    });
    setTimeout(function () {
      document.body.scrollTop = document.documentElement.scrollTop = 0;
      document.body.style.overflow = 'hidden';
    }, 100);
  }
  var setRowImmersiveMode = function setRowImmersiveMode(itemShowType) {
    var envStr = window.__wxWebEnv &amp;&amp; typeof window.__wxWebEnv.getEnv === 'function' &amp;&amp; window.__wxWebEnv.getEnv();
    if (!envStr) return;
    var envObj = {};
    try {
      envObj = JSON.parse(envStr);
    } catch (err) {
      console.info(err);
    }
    var immersiveListMode = envObj.immersiveListMode || 0;
    window.__immersiveListMode = Number(immersiveListMode) === 1 ? 1 : 0;
    window.__rowImmersiveStream = Number(immersiveListMode) === 2 ? 1 : 0;
    console.log("iiiiiiimmersiveListMode", immersiveListMode, window.__immersiveListMode, window.__rowImmersiveStream);
    window.__test_row_immersive_list = 0;
    if (window.__test_row_immersive_list) {
      window.__rowImmersiveStream = 1;
    }
    if (window.__rowImmersiveStream) {
      initBodyStyle();
      var rowImmersiveStreamWrap = document.getElementById('js_row_immersive_stream_wrap');
      if (rowImmersiveStreamWrap) {
        rowImmersiveStreamWrap.style.display = 'block';
      }
      var bottomBar = document.getElementById('js_article_bottom_bar');
      if (bottomBar) {
        bottomBar.classList.add('row_immersive_bottom_bar');
      }
      var immersiveStreamMask = document.getElementById('js_row_immersive_stream_mask');
      var enterBigWebview = function enterBigWebview() {
        immersiveStreamMask.style.display = 'none';
        document.body.style.overflow = 'auto';
        if (bottomBar) {
          bottomBar.classList.add('row_immersive_bigview_bottom_bar');
        }
      };
      var exitBigWebview = function exitBigWebview() {
        initBodyStyle();
        immersiveStreamMask.style.display = 'block';
        if (bottomBar) {
          bottomBar.classList.remove('row_immersive_bigview_bottom_bar');
        }
      };
      immersiveStreamMask.addEventListener('click', function (e) {
        e.preventDefault();
        e.stopPropagation();
        R$4.invoke('handleImmersiveStream', {
          action: 'enterFullArticle',
          params: {
            enterTime: Date.now()
          }
        }, function (res) {
          console.log("[immersive] handleImmersiveStream:", res);
          if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.includes('ok')) {
            enterBigWebview();
          }
          if (window.__test_row_immersive_list) {
            setTimeout(function () {
              console.log("xxxxx ok");
              enterBigWebview();
            }, 2000);
          }
        });
      });
      R$4.on('immersiveStreamExposeArticle', function (res) {
        console.log("[immersive] immersiveStreamExposeArticle", res);
      });
      R$4.on('immersiveStreamExitFullArticle', function (res) {
        console.log("[immersive] immersiveStreamExitFullArticle", res);
        exitBigWebview();
      });
      R$4.on('immersiveStreamEnterFullArticle', function (res) {
        console.log("[immersive] immersiveStreamEnterFullArticle", res);
        enterBigWebview();
      });
      R$4.on('immersiveStreamSlideOutArticle', function (res) {
        console.log("[immersive] immersiveStreamSlideOutArticle", res);
        exitBigWebview();
      });
    }
  };

  

  

  var getIpWoridng = function getIpWoridng(ipConfig) {
    var ipWording = '';
    if (parseInt(ipConfig.countryId, 10) === 156) {
      ipWording = ipConfig.provinceName;
    } else if (ipConfig.countryId) {
      ipWording = ipConfig.countryName;
    }
    return ipWording;
  };
  var __setIpWording = function __setIpWording(ipConfig, userInfo, itemShowType) {
    var ipWrp = document.getElementById('js_ip_wording_wrp');
    var ipWording = document.getElementById('js_ip_wording');
    if (ipConfig) {
      window.ip_wording = {
        countryName: ipConfig.country_name,
        countryId: ipConfig.country_id,
        provinceName: ipConfig.province_name
      };
    }
    if (userInfo &amp;&amp; userInfo.isoversea) {
      window.is_over_sea = parseInt(userInfo.isoversea, 10);
    }
    if (window.ip_wording &amp;&amp; ipWrp &amp;&amp; ipWording &amp;&amp; window.is_over_sea !== 1) {
      var ipWordingDisplay = getIpWoridng(window.ip_wording);
      if (ipWordingDisplay !== '') {
        ipWording.innerHTML = ipWordingDisplay;
        ipWrp.setAttribute('aria-label', ipWordingDisplay);
        ipWrp.style.display = 'inline-block';
      }
    }
    if (+itemShowType === 0) ipWrp &amp;&amp; ipWrp.style.display == 'none' &amp;&amp; ipWrp.parentNode.removeChild(ipWrp);
  };

  
  var __setTitleModify = function __setTitleModify(isTitleModified) {
    var wrp = document.getElementById('js_title_modify_wrp');
    var titleModifyNode = document.getElementById('js_title_modify');
    if (!wrp) return;
    if (isTitleModified || window.is_title_modified) {
      titleModifyNode.innerHTML = '标题已修改';
      wrp.style.display = 'inline-block';
    } else {
      wrp.parentNode.removeChild(wrp);
    }
  };
  function setProfileName() {
    var ua = window.navigator.userAgent;
    if (/wxwork/i.test(ua)) {
      var profileName = document.getElementById('js_name');
      var authorName = document.getElementById('js_author_name');
      var accountNames = document.getElementsByClassName('account_nickname_inner');
      if (profileName) {
        profileName.classList.add('tips_global_primary');
      }
      if (authorName) {
        authorName.classList.add('tips_global_primary');
      }
      if (accountNames &amp;&amp; accountNames.length) {
        accountNames[0].classList.add('tips_global_primary');
      }
    }
  }

  

  

  var __setTitle = function __setTitle(showTitle, itemShowType) {
    var dom = document.getElementById('activity-name');
    if (+itemShowType === 5) dom = document.getElementById('js_video_page_title');else if (+itemShowType === 7) dom = document.getElementById('js_audio_title');else if (+itemShowType === 10) dom = document.getElementById('js_text_title');
    if (!dom) return;
    var title = showTitle;
    if (showTitle.indexOf('——') &gt; -1) {
      var replaceHtml = '&lt;span style="letter-spacing:normal"&gt;——&lt;/span&gt;';
      showTitle = showTitle.replace(/——/g, replaceHtml);
    }
    if (typeof window.__emojiFormat === 'function') {
      var emojiTitle = window.__emojiFormat(showTitle);
      showTitle = emojiTitle;
    }
    if (dom) {
      if (dom.innerHTML) dom.innerHTML = dom.innerHTML.replace(title, showTitle);else dom.innerHTML = showTitle;
    }
  };
  var getOriginExpVal = function getOriginExpVal(key) {
    var _a, _b, _c;
    return ((_c = (_b = (_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.user_info) === null || _b === void 0 ? void 0 : _b.frontend_exp) === null || _c === void 0 ? void 0 : _c.list) &amp;&amp; window.cgiDataNew.user_info.frontend_exp.list.reduce(function (res, item) {
      if (item.key === key) res = (item === null || item === void 0 ? void 0 : item.value) || '';
      return res;
    }, '');
  };

  
  var parseCardWording = function parseCardWording(val) {
    if (!val) return null;
    var idx = val.indexOf('|');
    if (idx === -1) return {
      title: val,
      subtitle: ''
    };
    return {
      title: val.slice(0, idx),
      subtitle: val.slice(idx + 1)
    };
  };
  var __isNewNovelCardStyle = function __isNewNovelCardStyle() {
    return true;
  };
  var __setNovelCard = function __setNovelCard(novelCardInfo, userInfo, uin) {
    var dom = document.getElementById('js_novel_card');
    if (!dom) return;
    try {
      var cardData;
      if (typeof novelCardInfo === 'string') {
        cardData = JSON.parse(novelCardInfo);
      } else {
        cardData = novelCardInfo;
      }
      if (!cardData || cardData.is_wxa_novel === 0 || cardData.is_wxa_novel === 'false' || !userInfo.show_novel_link) {
        dom.style.display = 'none';
        return;
      }
      var _titleDom, _coverDom; if (__isNewNovelCardStyle(uin)) {
        var titleDom = dom.querySelector('#js_novel_title');
        var subtitleDom = dom.querySelector('#js_novel_subtitle');
        var expCopy = parseCardWording(getOriginExpVal('novel_card_wording'));
        if (expCopy &amp;&amp; expCopy.title) {
          var _window$cgiDataNew;
          if (titleDom) titleDom.textContent = expCopy.title;
          if (subtitleDom) subtitleDom.textContent = expCopy.subtitle || (((_window$cgiDataNew = window.cgiDataNew) === null || _window$cgiDataNew === void 0 ? void 0 : _window$cgiDataNew.title) || '').htmlDecode();
        } else if (subtitleDom) {
          var _window$cgiDataNew2;
          subtitleDom.textContent = (((_window$cgiDataNew2 = window.cgiDataNew) === null || _window$cgiDataNew2 === void 0 ? void 0 : _window$cgiDataNew2.title) || '').htmlDecode();
        }
        var coverDom = dom.querySelector('#js_novel_cover img');
        if (coverDom) {
          coverDom.src = cardData.novel_cover;
        }
      }
      dom.style.display = 'flex';
    } catch (error) {
      console.error('设置小说卡片失败:', error);
      dom.style.display = 'none';
    }
  };

  var _Speed = {};
  var _userDefine;
  var _imgurl = 'https://badjs.weixinbridge.com/frontend/reportspeed?';
  function saveSpeeds$1(obj) {
    if (!obj.pid || !obj.speeds) {
      return -1;
    }
    if (!Array.isArray(obj.speeds)) {
      obj.speeds = [obj.speeds];
    }
    if (obj.user_define) {
      _userDefine = obj.user_define;
    }
    var pid_uin_rid = _conbinUPRid(obj);
    for (var i = 0; i &lt; obj.speeds.length; i++) {
      var os = obj.speeds[i];
      os.time = Math.floor(+os.time);
      if (os.sid &gt; 20 &amp;&amp; os.time &gt;= 0) _setSidTime(pid_uin_rid, os.sid, os.time);
    }
  }
  function send$1() {
    _doFunc(function () {
      setTimeout(function () {
        for (var item in _Speed) {
          _get({
            pid_uin_rid: item,
            speeds: _Speed[item],
            user_define: _userDefine
          }, _imgurl);
        }
        _Speed = {};
      }, 100);
    });
  }
  function setFirstViewTime(obj) {
    _doFunc(function () {
      if (!obj.pid || !obj.time) return -1;
      var pid_uin_rid = _conbinUPRid(obj);
      _setSidTime(pid_uin_rid, 9, obj.time);
    });
  }
  function setBasicTime$1(obj) {
    _doFunc(function () {
      var pid_uin_rid = _conbinUPRid(obj);
      if (!_Speed[pid_uin_rid]) _Speed[pid_uin_rid] = [];
      var performance = window.performance || window.msPerformance || window.webkitPerformance || {};
      if (!!performance &amp;&amp; !!performance.timing) {
        var timing = performance.timing || {};
        _setSidTime(pid_uin_rid, 1, timing.domainLookupEnd - timing.domainLookupStart);
        _setSidTime(pid_uin_rid, 2, location.protocol == "https:" &amp;&amp; timing.secureConnectionStart != 0 ? timing.connectEnd - timing.secureConnectionStart : 0);
        _setSidTime(pid_uin_rid, 3, timing.connectEnd - timing.connectStart);
        _setSidTime(pid_uin_rid, 4, timing.responseStart - timing.requestStart);
        _setSidTime(pid_uin_rid, 5, timing.responseEnd - timing.responseStart);
        _setSidTime(pid_uin_rid, 6, timing.domContentLoadedEventStart - timing.domLoading);
        _setSidTime(pid_uin_rid, 7, timing.domComplete == 0 ? 0 : timing.domComplete - timing.domLoading);
        _setSidTime(pid_uin_rid, 8, timing.loadEventEnd == 0 ? 0 : timing.loadEventEnd - timing.loadEventStart);
        (function (_Speed) {
          setTimeout(function () {
            if (timing.loadEventEnd) {
              _setSidTime(pid_uin_rid, 7, timing.domComplete == 0 ? 0 : timing.domComplete - timing.domLoading);
              _setSidTime(pid_uin_rid, 8, timing.loadEventEnd == 0 ? 0 : timing.loadEventEnd - timing.loadEventStart);
            }
          }, 0);
        })();
        if (!_Speed[pid_uin_rid][9])
          _setSidTime(pid_uin_rid, 9, timing.domContentLoadedEventStart - timing.navigationStart);
        _setSidTime(pid_uin_rid, 10, timing.redirectEnd - timing.redirectStart);
        _setSidTime(pid_uin_rid, 11, timing.domainLookupStart - timing.fetchStart);
        _setSidTime(pid_uin_rid, 12, timing.domLoading - timing.responseStart);
      }
    });
  }
  function _setSidTime(pid_uin_rid, sid, time) {
    _Speed[pid_uin_rid] = _Speed[pid_uin_rid] || [];
    _Speed[pid_uin_rid][sid] = _Speed[pid_uin_rid][sid] || [];
    if (time &lt; 0) return;
    if (sid &lt; 21) _Speed[pid_uin_rid][sid][0] = time;else _Speed[pid_uin_rid][sid].push(time);
  }
  function _conbinUPRid(obj) {
    if (!obj || !obj.pid) {
      console &amp;&amp; console.error('Must provide a pid');
      return '';
    }
    return "".concat(obj.pid, "_").concat(obj.uin || 0, "_").concat(obj.rid || 0);
  }
  function _get(obj, url) {
    var apur = obj.pid_uin_rid.split('_');
    var spur = '';
    if (apur.length == 3) {
      spur = "pid=".concat(apur[0], "&amp;uin=").concat(apur[1], "&amp;rid=").concat(apur[2]);
    } else {
      console &amp;&amp; console.error('pid,uin,rid, invalid args');
      return;
    }
    if (obj.user_define) {
      spur += "&amp;user_define=".concat(obj.user_define);
    }
    var url1 = "".concat(url + spur, "&amp;speeds=");
    var url2 = '';
    var urlarr = [];
    for (var i = 1; i &lt; obj.speeds.length; i++) {
      if (obj.speeds[i]) {
        for (var j = 0; j &lt; obj.speeds[i].length; j++) {
          var s = "".concat(i, "_").concat(obj.speeds[i][j]);
          if (url1.length + url2.length + s.length &lt; 1024) {
            url2 = "".concat(url2 + s, ";");
          } else {
            if (url2.length)
              urlarr.push(url1 + url2.substring(0, url2.length - 1));
            url2 = "".concat(s, ";");
          }
        }
        if (i == obj.speeds.length - 1) {
          urlarr.push(url1 + url2.substring(0, url2.length - 1));
        }
      }
    }
    for (var _i = 0; _i &lt; urlarr.length; _i++) {
      new Image().src = urlarr[_i];
    }
  }
  var cblist = [];
  function _doFunc(fnc) {
    if (document.readyState == "complete") {
      fnc();
    } else {
      cblist.push(fnc);
    }
  }
  window.addEventListener('load', onLoad, false);
  function onLoad() {
    for (var i = 0; i &lt; cblist.length; i++) {
      cblist[i]();
    }
    cblist = [];
  }
  var wxgsdk = {
    saveSpeeds: saveSpeeds$1,
    send: send$1,
    setFirstViewTime: setFirstViewTime,
    setBasicTime: setBasicTime$1
  };

  
  
  var reportLogs = [];
  var reportExtraLogs = [];
  var sendUrl = '/mp/jsmonitor?#wechat_redirect';
  var monitor = {};
  monitor._reportOptions = {
    idkey: {}
  };
  function ObjWithoutProperty(source, exclude) {
    if (source === null) return {};
    var target = {};
    var sourceKeys = Object.keys(source);
    for (var i = 0; i &lt; sourceKeys.length; i++) {
      var key = sourceKeys[i];
      if (exclude.indexOf(key) &gt;= 0) continue;
      target[key] = source[key];
    }
    return target;
  }
  function formatDataToString(data) {
    var reportData = [];
    for (var key in data) {
      if (Object.prototype.hasOwnProperty.call(data, key)) {
        reportData.push(key + '=' + encodeURIComponent(data[key]));
      }
    }
    return reportData.join('&amp;');
  }
  monitor.getReportData = function (opt) {
    opt = opt || {};
    var idkey = monitor._reportOptions.idkey || {};
    var key = null;
    var reportData = {};
    var nextKey;
    try {
      for (key in idkey) {
        if (Object.prototype.hasOwnProperty.call(idkey, key) &amp;&amp; idkey[key]) {
          reportLogs.push(key + '_' + idkey[key]);
        }
      }
    } catch (e) {
      return false;
    }
    if (reportLogs.length === 0) {
      return false;
    }
    if (reportExtraLogs.length) {
      reportData.lc = reportExtraLogs.length;
      reportExtraLogs.forEach(function (extraLog, index) {
        reportData["log".concat(index)] = extraLog;
      });
    }
    try {
      var reportOptions = monitor._reportOptions;
      if (reportOptions !== null &amp;&amp; reportOptions !== undefined) {
        for (nextKey in reportOptions) {
          if (Object.prototype.hasOwnProperty.call(reportOptions, nextKey)) {
            reportData[nextKey] = reportOptions[nextKey];
          }
        }
      }
    } catch (e) {
      reportData = {};
    }
    reportData.idkey = reportLogs.join(';');
    reportData.t = Math.random();
    if (opt.remove !== false) {
      reportLogs = [];
      reportExtraLogs = [];
      monitor._reportOptions = {
        idkey: {}
      };
    }
    return reportData;
  };
  monitor.setLogs = function (opt) {
    var id = opt.id;
    var key = opt.key;
    var value = opt.value;
    var extraLog = opt.log;
    var others = ObjWithoutProperty(opt, ['id', 'key', 'value', 'log']);
    var idkey = monitor._reportOptions.idkey || {};
    var param = id + '_' + key;
    if (idkey[param]) {
      idkey[param] += value;
    } else {
      idkey[param] = value;
    }
    monitor._reportOptions.idkey = idkey;
    if (extraLog) {
      reportExtraLogs.push(extraLog);
    }
    try {
      if (others !== null &amp;&amp; others !== undefined) {
        for (var otherKey in others) {
          if (Object.prototype.hasOwnProperty.call(others, otherKey)) {
            monitor._reportOptions[otherKey] = others[otherKey];
          }
        }
      }
    } catch (e) {
      console.log(e);
    }
    return monitor;
  };
  monitor.setAvg = function (id, key, value) {
    var idkey = monitor._reportOptions.idkey || {};
    var param1 = id + '_' + key;
    var param2 = id + '_' + (key - 1);
    if (idkey[param1]) {
      idkey[param1] += value;
    } else {
      idkey[param1] = value;
    }
    if (idkey[param2]) {
      idkey[param2] += 1;
    } else {
      idkey[param2] = 1;
    }
    monitor._reportOptions.idkey = idkey;
    return monitor;
  };
  monitor.setSum = function (id, key) {
    var value = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : 1;
    var idkey = monitor._reportOptions.idkey;
    var param = id + '_' + key;
    if (idkey[param]) {
      idkey[param] += value;
    } else {
      idkey[param] = value;
    }
    monitor._reportOptions.idkey = idkey;
    return monitor;
  };
  monitor.send = function (async, ajax, origin) {
    if (async !== false) {
      async = true;
    }
    var data = monitor.getReportData();
    origin = origin || '';
    if (!data) {
      return;
    }
    if (!!ajax &amp;&amp; ajax instanceof Function) {
      ajax({
        url: origin + sendUrl,
        type: 'POST',
        mayAbort: true,
        data: data,
        async: async,
        timeout: 2000,
        dontReport: true
      });
    } else {
      new Image().src = origin + '/mp/jsmonitor?' + formatDataToString(data) + '#wechat_redirect';
    }
  };
  if (typeof window !== 'undefined' &amp;&amp; window.__monitor) {
    monitor = window.__monitor;
  } else {
    typeof window !== 'undefined' &amp;&amp; (window.__monitor = monitor);
  }
  var monitor$1 = monitor;

  function _toPrimitive(input, hint) {
    if (_typeof$3(input) !== "object" || input === null) return input;
    var prim = input[Symbol.toPrimitive];
    if (prim !== undefined) {
      var res = prim.call(input, hint || "default");
      if (_typeof$3(res) !== "object") return res;
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return (hint === "string" ? String : Number)(input);
  }

  function _toPropertyKey(arg) {
    var key = _toPrimitive(arg, "string");
    return _typeof$3(key) === "symbol" ? key : String(key);
  }

  function _defineProperty$1(obj, key, value) {
    key = _toPropertyKey(key);
    if (key in obj) {
      Object.defineProperty(obj, key, {
        value: value,
        enumerable: true,
        configurable: true,
        writable: true
      });
    } else {
      obj[key] = value;
    }
    return obj;
  }

  
  
  var Device = {};
  function detect(ua) {
    var MQQBrowser = ua.match(/MQQBrowser\/(\d+\.\d+)/i);
    var MQQClient = ua.match(/QQ\/(\d+\.(\d+)\.(\d+)\.(\d+))/i) || ua.match(/V1_AND_SQ_([\d\.]+)/);
    var WeChat = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/) || ua.match(/MicroMessenger\/((\d+)\.(\d+))/);
    var MacOS = ua.match(/Mac\sOS\sX\s(\d+[\.|_]\d+)/);
    var WinOS = ua.match(/Windows(\s+\w+)?\s+?(\d+\.\d+)/);
    var Linux = ua.match(/Linux\s/);
    var MiuiBrowser = ua.match(/MiuiBrowser\/(\d+\.\d+)/i);
    var M1 = ua.match(/MI-ONE/);
    var MIPAD = ua.match(/MI PAD/);
    var UC = ua.match(/UCBrowser\/(\d+\.\d+(\.\d+\.\d+)?)/) || ua.match(/\sUC\s/);
    var IEMobile = ua.match(/IEMobile(\/|\s+)(\d+\.\d+)/) || ua.match(/WPDesktop/);
    var ipod = ua.match(/(ipod).*\s([\d_]+)/i);
    var ipad = ua.match(/(ipad).*\s([\d_]+)/i);
    var iphone = ua.match(/(iphone)\sos\s([\d_]+)/i);
    var Chrome = ua.match(/Chrome\/(\d+\.\d+)/);
    var AndriodBrowser = ua.match(/Mozilla.*Linux.*Android.*AppleWebKit.*Mobile Safari/);
    var android = ua.match(/(android)\s([\d\.]+)/i);
    var harmony = ua.match(/(OpenHarmony)\s([\d\.]+)/i);
    Device.browser = Device.browser || {}, Device.os = Device.os || {};
    Device.os.type = -1;
    Device.os.unifiedPC = ua.match(/UnifiedPC/);
    Device.os.unifiedMac = /UnifiedPCMac/i.test(ua);
    Device.os.unifiedWindows = /UnifiedPCWindows/i.test(ua);
    if (window.ActiveXObject) {
      var vie = 6;
      (window.XMLHttpRequest || ua.indexOf('MSIE 7.0') &gt; -1) &amp;&amp; (vie = 7);
      (window.XDomainRequest || ua.indexOf('Trident/4.0') &gt; -1) &amp;&amp; (vie = 8);
      ua.indexOf('Trident/5.0') &gt; -1 &amp;&amp; (vie = 9);
      ua.indexOf('Trident/6.0') &gt; -1 &amp;&amp; (vie = 10);
      Device.browser.ie = true, Device.browser.version = vie;
    } else if (ua.indexOf('Trident/7.0') &gt; -1) {
      Device.browser.ie = true, Device.browser.version = 11;
    }
    if (android) {
      Device.os.android = true;
      Device.os.version = android[2];
      Device.os.type = 2;
    }
    if (harmony) {
      Device.os.harmony = true;
      Device.os.version = harmony[2];
      Device.os.type = 42;
    }
    if (ipod) {
      Device.os.ios = Device.os.ipod = true;
      Device.os.version = ipod[2].replace(/_/g, '.');
    }
    if (ipad) {
      Device.os.ios = Device.os.ipad = true;
      Device.os.version = ipad[2].replace(/_/g, '.');
      Device.os.type = 13;
    }
    if (iphone) {
      Device.os.iphone = Device.os.ios = true;
      Device.os.version = iphone[2].replace(/_/g, '.');
      Device.os.type = 1;
    }
    if (WinOS) Device.os.windows = true, Device.os.version = WinOS[2], Device.os.type = 15;
    if (MacOS) Device.os.Mac = true, Device.os.version = MacOS[1], Device.os.type = 14;
    if (Linux) Device.os.Linux = true, Device.os.type = 33;
    if (ua.indexOf('lepad_hls') &gt; 0) Device.os.LePad = true;
    if (MIPAD) Device.os.MIPAD = true;
    if (MQQBrowser) Device.browser.MQQ = true, Device.browser.version = MQQBrowser[1];
    if (MQQClient) Device.browser.MQQClient = true, Device.browser.version = MQQClient[1];
    if (WeChat) Device.browser.WeChat = true, Device.browser.mmversion = Device.browser.version = WeChat[1];
    if (MiuiBrowser) Device.browser.MIUI = true, Device.browser.version = MiuiBrowser[1];
    if (UC) Device.browser.UC = true, Device.browser.version = UC[1] || NaN;
    if (IEMobile) Device.browser.IEMobile = true, Device.browser.version = IEMobile[2];
    if (AndriodBrowser) {
      Device.browser.AndriodBrowser = true;
    }
    if (M1) {
      Device.browser.M1 = true;
    }
    if (Chrome) {
      Device.browser.Chrome = true, Device.browser.version = Chrome[1];
    }
    if (Device.os.windows) {
      if (typeof navigator.platform !== "undefined" &amp;&amp; navigator.platform.toLowerCase() == "win64") {
        Device.os.win64 = true;
      } else {
        Device.os.win64 = false;
      }
    }
    if (Device.os.Mac || Device.os.windows || Device.os.Linux || Device.os.unifiedPC || /OpenHarmony/i.test(ua) &amp;&amp; /pc/i.test(ua)) {
      Device.os.pc = true;
    }
    var osType = {
      iPad7: 'iPad; CPU OS 7',
      LePad: 'lepad_hls',
      XiaoMi: 'MI-ONE',
      SonyDTV: "SonyDTV",
      SamSung: 'SAMSUNG',
      HTC: 'HTC',
      VIVO: 'vivo'
    };
    for (var os in osType) {
      Device.os[os] = ua.indexOf(osType[os]) !== -1;
    }
    Device.os.phone = Device.os.phone || /windows phone/i.test(ua);
    Device.os.getNumVersion = function () {
      return parseFloat(Device.os.version);
    };
    Device.os.hasTouch = 'ontouchstart' in window;
    if (Device.os.hasTouch &amp;&amp; Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 6) {
      Device.os.hasTouch = false;
    }
    if (Device.browser.WeChat &amp;&amp; Device.browser.version &lt; 5.0) {
      Device.os.hasTouch = false;
    }
    Device.browser.getNumVersion = function () {
      return parseFloat(Device.browser.version);
    };
    Device.browser.isFFCanOcx = function () {
      return !!Device.browser.firefox &amp;&amp; Device.browser.getNumVersion() &gt;= 3.0;
    };
    Device.browser.isCanOcx = function () {
      return !!Device.os.windows &amp;&amp; (!!Device.browser.ie || Device.browser.isFFCanOcx() || !!Device.browser.webkit);
    };
    Device.browser.isNotIESupport = function () {
      return !!Device.os.windows &amp;&amp; (!!Device.browser.webkit || Device.browser.isFFCanOcx());
    };
    Device.userAgent = {};
    Device.userAgent.browserVersion = Device.browser.version;
    Device.userAgent.osVersion = Device.os.version;
    if (Device.os.unifiedPC) {
      if (Device.os.unifiedWindows) Device.os.type = 37;else if (Device.os.unifiedMac) Device.os.type = 38;else Device.os.type = 39;
    }
    delete Device.userAgent.version;
  }
  detect(window.navigator.userAgent);
  function canSupportH5Video() {
    var ua = window.navigator.userAgent,
      m = null;
    if (!!Device.os.android) {
      if (Device.browser.MQQ &amp;&amp; Device.browser.getNumVersion() &gt;= 4.2) {
        return true;
      }
      if (ua.indexOf('MI2') != -1) {
        return true;
      }
      if (Device.os.version &gt;= '4' &amp;&amp; (m = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/))) {
        if (parseFloat(m[1]) &gt;= 4.2) {
          return true;
        }
      }
      if (Device.os.version &gt;= '4.1') {
        return true;
      }
    }
    return false;
  }
  function canSupportVideoMp4() {
    var video = document.createElement('video');
    if (typeof video.canPlayType === 'function') {
      if (video.canPlayType('video/mp4; codecs="mp4v.20.8"') === 'probably') {
        return true;
      }
      if (video.canPlayType('video/mp4; codecs="avc1.42E01E"') === 'probably' || video.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"') === 'probably') {
        return true;
      }
    }
    return false;
  }
  function canSupportAutoPlay() {
    if (Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 10) {
      return false;
    }
    return true;
  }
  function isLockdownMode() {
    if (!Device.os.ios || Device.os.getNumVersion() &lt; 16) {
      return false;
    }
    if (typeof WebAssembly === 'undefined' &amp;&amp; typeof OfflineAudioContext === 'undefined' &amp;&amp; typeof WebGLRenderingContext === 'undefined') {
      return true;
    }
    return false;
  }
  Device.canSupportVideo = canSupportVideoMp4 || canSupportH5Video;
  Device.canSupportVideoMp4 = canSupportVideoMp4;
  Device.canSupportH5Video = canSupportH5Video;
  Device.canSupportAutoPlay = canSupportAutoPlay;
  Device.isLockdownMode = isLockdownMode;
  
  Device.cpVersion = function (version) {
    var cp = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 0;
    var canEqual = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    var nowVersionStr = Device.os.version;
    if (!nowVersionStr) return false;
    var versionArr = version.split('.');
    var nowVersionArr = nowVersionStr.split('.');
    for (var i = 0; i &lt; Math.max(nowVersionArr.length, versionArr.length); i++) {
      var vi = +versionArr[i];
      var nvi = +nowVersionArr[i];
      if (vi === nvi) continue;
      if (cp &gt; 0) return vi &gt; nvi;
      if (cp &lt; 0) return vi &lt; nvi;
    }
    return canEqual || cp === 0;
  };

  
  function _log(level, msg) {
    if (level === 'log') {
      level = 'info';
      msg = "[WechatFe]".concat(msg);
    } else {
      var prefix = "__wap__".concat(window.__second_open__ ? ' (sec)' : '');
      msg = "".concat(prefix, " ").concat(msg, " location:[").concat(location.href, "]");
    }
    msg += new Error().stack;
    if (MMVersion.isMpapp) {
      invoke$1('WNNativeCallbackLog', msg);
    } else if (MMVersion.isWechat) {
      if (MMVersion.isAndroid) {
        console.warn('[system]', "[MicroMsg.JsApiLog][".concat(level, "] jslog : ").concat(msg));
      } else if (MMVersion.isIOS) {
        R$4.invoke('writeLog', {
          level: level,
          msg: msg
        });
      } else {
        R$4.invoke('log', {
          level: level,
          msg: msg
        });
      }
    }
  }
  var Log = {
    info: function info() {
      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key &lt; _len; _key++) {
        args[_key] = arguments[_key];
      }
      _log('info', args.join(' '));
    },
    warn: function warn() {
      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
        args[_key2] = arguments[_key2];
      }
      _log('warn', args.join(' '));
    },
    error: function error() {
      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 &lt; _len3; _key3++) {
        args[_key3] = arguments[_key3];
      }
      _log('error', args.join(' '));
    },
    debug: function debug() {
      for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 &lt; _len4; _key4++) {
        args[_key4] = arguments[_key4];
      }
      _log('debug', args.join(' '));
    },
    log: function log() {
      for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 &lt; _len5; _key5++) {
        args[_key5] = arguments[_key5];
      }
      _log('info', args.join(' '));
    }
  };

  
  var logList = [];
  var log = function log(msg) {
    logList.push(msg);
  };
  var printLog = function printLog() {
    for (var i = 0, len = logList.length; i &lt; len; ++i) {
      console.log("[RespType]".concat(logList[i]));
    }
  };
  var isArray = function isArray(val) {
    return Object.prototype.toString.call(val) === '[object Array]';
  };
  var getValueType = function getValueType(value) {
    if (isArray(value)) {
      return 'array';
    }
    return _typeof$3(value);
  };
  var parseRtDesc = function parseRtDesc(rtDesc, k) {
    var type = 'mix';
    var isRequired = false;
    var key = k;
    if (k) {
      var requireKeyWord = '_R';
      var pos = k.indexOf(requireKeyWord);
      var len = k.length - requireKeyWord.length;
      isRequired = pos !== -1 &amp;&amp; pos === len;
      key = isRequired ? k.substring(0, len) : k;
    }
    if (typeof rtDesc === 'string') {
      type = rtDesc;
    } else if (isArray(rtDesc)) {
      type = 'array';
    } else if (_typeof$3(rtDesc) === 'object') {
      type = 'object';
    }
    return {
      key: key,
      type: type,
      isRequired: isRequired
    };
  };
  var checkForArrayRtDesc = function checkForArrayRtDesc(arr, rtDescs) {
    if (!isArray(arr)) {
      return false;
    }
    for (var i = 0, len = arr.length; i &lt; len; ++i) {
      var value = arr[i];
      var rtDesc = void 0;
      var j = 0;
      var flag = rtDescs.length === 0;
      while (rtDesc = rtDescs[j++]) {
        if (checkForRtDesc(value, rtDesc)) {
          flag = true;
          break;
        }
      }
      if (!flag) {
        return false;
      }
    }
    return true;
  };
  var checkForStringRtDesc = function checkForStringRtDesc(value, rtDesc) {
    var valueType = getValueType(value);
    var desc = parseRtDesc(rtDesc);
    var ret = desc.type === valueType;
    if (!ret) {
      log("miss match type : ".concat(valueType, " !== ").concat(desc.type));
    }
    return ret;
  };
  var checkForObjectRtDesc = function checkForObjectRtDesc(json, rtDesc) {
    if (_typeof$3(json) !== 'object' || isArray(json)) {
      log('must be object');
      return false;
    }
    var rootJson = json;
    var nowCheckValue = json;
    for (var k in rtDesc) {
      if (rtDesc.hasOwnProperty(k)) {
        var nowCheckDesc = rtDesc[k];
        var desc = parseRtDesc(nowCheckDesc, k);
        var key = desc.key;
        nowCheckValue = rootJson[key];
        var valueType = getValueType(nowCheckValue);
        if (desc.isRequired &amp;&amp; nowCheckValue === undefined) {
          log("is required @key=".concat(key));
          return false;
        }
        if (nowCheckValue !== undefined) {
          if (valueType !== desc.type &amp;&amp; desc.type !== 'mix') {
            log("miss match type : ".concat(valueType, " !== ").concat(desc.type, " @key=").concat(key));
            return false;
          }
          if ((valueType === 'array' || valueType === 'object') &amp;&amp; desc.type !== 'mix') {
            if (!checkForRtDesc(nowCheckValue, nowCheckDesc)) {
              return false;
            }
          }
        }
      }
    }
    return true;
  };
  var checkForRtDesc = function checkForRtDesc(json, rtDesc) {
    if (isArray(rtDesc)) {
      return checkForArrayRtDesc(json, rtDesc);
    }
    if (_typeof$3(rtDesc) === 'object') {
      return checkForObjectRtDesc(json, rtDesc);
    }
    if (typeof rtDesc === 'string') {
      return checkForStringRtDesc(json, rtDesc);
    }
    return false;
  };
  var _check = function check(json, rtDescs) {
    if (typeof json === 'string') {
      try {
        json = eval("(".concat(json, ")"));
      } catch (e) {
        log('parse json error');
        return false;
      }
    }
    if (_typeof$3(json) !== 'object') {
      log('must be object');
      return false;
    }
    if (!isArray(rtDescs)) {
      rtDescs = [rtDescs];
    }
    var rtDesc;
    var i = 0;
    while (rtDesc = rtDescs[i++]) {
      if (checkForRtDesc(json, rtDesc)) {
        return true;
      }
    }
    return false;
  };
  var RespTypes = {
    check: function check(json, rtDesc) {
      logList = [];
      try {
        var ret = _check(json, rtDesc);
        if (!ret) {
          printLog();
        }
        return ret;
      } catch (e) {
        logList.push("[rtException]".concat(e.toString()));
        printLog();
        return false;
      }
    },
    getMsg: function getMsg() {
      return logList.join(';');
    }
  };

  function _arrayWithHoles$1(arr) {
    if (Array.isArray(arr)) return arr;
  }

  function _iterableToArrayLimit$1(arr, i) {
    var _i = null == arr ? null : "undefined" != typeof Symbol &amp;&amp; arr[Symbol.iterator] || arr["@@iterator"];
    if (null != _i) {
      var _s,
        _e,
        _x,
        _r,
        _arr = [],
        _n = !0,
        _d = !1;
      try {
        if (_x = (_i = _i.call(arr)).next, 0 === i) {
          if (Object(_i) !== _i) return;
          _n = !1;
        } else for (; !(_n = (_s = _x.call(_i)).done) &amp;&amp; (_arr.push(_s.value), _arr.length !== i); _n = !0);
      } catch (err) {
        _d = !0, _e = err;
      } finally {
        try {
          if (!_n &amp;&amp; null != _i["return"] &amp;&amp; (_r = _i["return"](), Object(_r) !== _r)) return;
        } finally {
          if (_d) throw _e;
        }
      }
      return _arr;
    }
  }

  function _arrayLikeToArray$1(arr, len) {
    if (len == null || len &gt; arr.length) len = arr.length;
    for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i];
    return arr2;
  }

  function _unsupportedIterableToArray$1(o, minLen) {
    if (!o) return;
    if (typeof o === "string") return _arrayLikeToArray$1(o, minLen);
    var n = Object.prototype.toString.call(o).slice(8, -1);
    if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name;
    if (n === "Map" || n === "Set") return Array.from(o);
    if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen);
  }

  function _nonIterableRest$1() {
    throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }

  function _slicedToArray$1(arr, i) {
    return _arrayWithHoles$1(arr) || _iterableToArrayLimit$1(arr, i) || _unsupportedIterableToArray$1(arr, i) || _nonIterableRest$1();
  }

  function _classCallCheck$1(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  function _defineProperties$1(target, props) {
    for (var i = 0; i &lt; props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor) descriptor.writable = true;
      Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
    }
  }
  function _createClass$1(Constructor, protoProps, staticProps) {
    if (protoProps) _defineProperties$1(Constructor.prototype, protoProps);
    if (staticProps) _defineProperties$1(Constructor, staticProps);
    Object.defineProperty(Constructor, "prototype", {
      writable: false
    });
    return Constructor;
  }

  
  var prefix = '__WXLS__';
  var localStorage$1 = window.localStorage || {
    getItem: function getItem() {},
    setItem: function setItem() {},
    removeItem: function removeItem() {},
    key: function key() {},
    clear: function clear() {
      var _a, _b;
      (_b = (_a = window.localStorage) === null || _a === void 0 ? void 0 : _a.clear) === null || _b === void 0 ? void 0 : _b.call(_a);
    },
    length: 0
  };
  var evictionPolicies = {
    noeviction: function noeviction(data) {
      return data;
    },
    'allkeys-random': function allkeysRandom(data, size) {
      var keys = Object.keys(data);
      var memCnt = 0;
      while (memCnt &lt; size) {
        var len = keys.length;
        var randomKeyIdx = Math.floor(Math.random() * len);
        var randomKey = keys[randomKeyIdx];
        memCnt += JSON.stringify(data[randomKey]).length;
        delete data[randomKey];
        keys = Object.keys(data);
      }
      return data;
    },
    'volatile-ttl': function volatileTtl(data, size) {
      var keys = Object.keys(data);
      keys = keys.sort(function (key1, key2) {
        var d1 = data[key1];
        var d2 = data[key2];
        if (d1.exp &lt; d2.exp) return -1;
        if (d1.exp &gt; d2.exp) return 1;
        return 0;
      });
      var memCnt = 0;
      for (var i = 0; i &lt; keys.length; i++) {
        if (memCnt &gt;= size) break;
        var key = keys[i];
        memCnt += JSON.stringify(data[key]).length;
        delete data[key];
      }
      return data;
    },
    'clear-all': function clearAll() {
      localStorage$1.clear();
      return {};
    }
  };
  function formatLogMsg(str) {
    return "[WXLS] ".concat(str);
  }
  
  var LS = function () {
    function LS(func, evictionPolicy, logger) {
      _classCallCheck$1(this, LS);
      this.logger = function () {};
      if (!func) throw 'require function name.';
      this.evictionPolicy = 'noeviction';
      this.key = func;
      if (typeof logger === 'function') {
        this.logger = function (str, type) {
          return logger(formatLogMsg(str), type);
        };
      }
      if (evictionPolicy &amp;&amp; Object.keys(evictionPolicies).indexOf(evictionPolicy) !== -1) {
        this.evictionPolicy = evictionPolicy;
      }
      this.init();
    }
    _createClass$1(LS, [{
      key: "init",
      value: function init() {
        var _a, _b;
        this.check();
        if (Math.random() * 1000 &lt; 1) {
          (_a = this.logger) === null || _a === void 0 ? void 0 : _a.call(this, "LSlen: ".concat(((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length) || localStorage$1.length), 'report');
        }
      }
    }, {
      key: "getData",
      value: function getData() {
        var data = LS.getItem(this.key) || '{}';
        try {
          data = JSON.parse(data);
        } catch (e) {
          this.logger("getData error: ".concat(e), 'error');
          localStorage$1.removeItem(prefix + this.key);
          data = {};
        }
        return data;
      }
    }, {
      key: "check",
      value: function check(isReturn) {
        var data = this.getData();
        var temp = {};
        var now = +new Date();
        var key;
        var val;
        for (key in data) {
          val = data[key];
          if (+val.exp &gt; now) {
            temp[key] = val;
          }
        }
        this.logger("check info: isReturn:".concat(isReturn, " data:").concat(JSON.stringify(temp)), 'info');
        if (isReturn) return temp;
        LS.setItem(this.key, JSON.stringify(temp), this.logger);
      }
    }, {
      key: "set",
      value: function set(key, val, exp) {
        var _a, _b;
        var data = this.check(true);
        data[key] = {
          val: val,
          exp: exp || +new Date()
        };
        try {
          if (localStorage$1.getItem(prefix + this.key)) localStorage$1.removeItem(prefix + this.key);
          localStorage$1.setItem(prefix + this.key, JSON.stringify(data));
          this.logger("first set success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data)), 'success');
        } catch (e) {
          this.logger("first set error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data), " k:").concat(key, " v:").concat(val, " exp:").concat(exp), 'error');
          localStorage$1.clear();
          LS.setItem(this.key, JSON.stringify(_defineProperty$1({}, key, {
            val: val,
            exp: exp || +new Date()
          })), this.logger);
        }
      }
    }, {
      key: "get",
      value: function get(key) {
        var data = this.getData();
        data = data[key];
        return data ? data.val || null : null;
      }
    }, {
      key: "remove",
      value: function remove(key) {
        var data = this.getData();
        if (data[key]) delete data[key];
        LS.setItem(this.key, JSON.stringify(data), this.logger);
      }
    }], [{
      key: "getItem",
      value: function getItem(key) {
        key = prefix + key;
        return localStorage$1.getItem(key);
      }
    }, {
      key: "setItem",
      value: function setItem(key, val, logger) {
        var _a, _b;
        key = prefix + key;
        var n = 3;
        while (n--) {
          try {
            if (localStorage$1.getItem(key)) localStorage$1.removeItem(key);
            localStorage$1.setItem(key, val);
            typeof logger === 'function' &amp;&amp; logger("setItem success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(key, " val:").concat(val), 'success');
            break;
          } catch (e) {
            typeof logger === 'function' &amp;&amp; logger("setItem error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(key, " val:").concat(val), 'error');
            LS.clear();
          }
        }
      }
    }, {
      key: "clear",
      value: function clear() {
        var i;
        var k;
        for (i = localStorage$1.length - 1; i &gt;= 0; i--) {
          k = localStorage$1.key(i);
          if (k.indexOf(prefix) == 0) {
            localStorage$1.removeItem(k);
          }
        }
      }
    }, {
      key: "getSupportEvicationPolicy",
      value: function getSupportEvicationPolicy() {
        return Object.keys(evictionPolicies);
      }
    }]);
    return LS;
  }();
  var innerVersion = (MMVersion.getInner() || '').toUpperCase();
  var getBizLS = new LS('get_biz_result');
  var bizMap = {};
  var isGetBizSupported = MMVersion.isOnlyWechat &amp;&amp; MMVersion.isIOS &amp;&amp; innerVersion &gt;= '18003C2A' || MMVersion.isOnlyWechat &amp;&amp; MMVersion.isAndroid &amp;&amp; innerVersion &gt;= '28003D3C' || MMVersion.isUnifiedPcWechat &amp;&amp; MMVersion.cpVersion('4.1.10', 1, true, 'unifiedpc');
  MMVersion.isOnlyWechat &amp;&amp; MMVersion.isIOS || MMVersion.isOnlyWechat &amp;&amp; MMVersion.isAndroid || MMVersion.isUnifiedPcWechat &amp;&amp; MMVersion.cpVersion('4.1.10', 1, true, 'unifiedpc');
  function getBiz(needCheckBiz, bizType) {
    var _a;
    if (needCheckBiz === void 0) {
      needCheckBiz = false;
    }
    if (bizType === void 0) {
      bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
    }
    return new Promise(function (resolve, reject) {
      if (needCheckBiz || bizMap[bizType] === undefined) {
        if (!isGetBizSupported) {
          reject('Not support');
        } else {
          R$4.invoke('handleMPPageAction', {
            action: 'getBiz',
            needCheckBiz: needCheckBiz,
            bizType: bizType
          }, function (res) {
            console.log("getBiz with needCheckBiz=".concat(needCheckBiz, " res: ").concat(JSON.stringify(res)));
            if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf('ok') &gt; -1) {
              bizMap[bizType] = res.biz;
              resolve(res.biz);
              getBizLS.set("".concat(bizType, "_get_biz_result"), res.biz, +new Date() + 3 * 24 * 60 * 60 * 1000);
            } else {
              reject('Failed to get biz');
            }
          });
        }
      } else {
        resolve(bizMap[bizType]);
      }
    });
  }
  var getIsAuthor = function getIsAuthor(cb, bizuin, needCheckBiz, bizType) {
    var _a;
    if (bizuin === void 0) {
      bizuin = window.biz;
    }
    if (needCheckBiz === void 0) {
      needCheckBiz = false;
    }
    if (bizType === void 0) {
      bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
    }
    getBiz(needCheckBiz, bizType).then(function (biz) {
      cb(biz &amp;&amp; biz === bizuin);
    })["catch"](function () {
      cb(false);
    });
  };

  function parseUrl$1(url) {
    var len = url.length;
    var ques_pos = url.indexOf('?');
    var hash_pos = url.indexOf('#');
    hash_pos = hash_pos == -1 ? len : hash_pos;
    ques_pos = ques_pos == -1 ? hash_pos : ques_pos;
    var host = url.substring(0, ques_pos);
    var query_str = url.substring(ques_pos + 1, hash_pos);
    var hash = url.substring(hash_pos + 1);
    return {
      host: host,
      query_str: query_str,
      hash: hash
    };
  }
  function join(url, args, noEncode) {
    var ret = parseUrl$1(url);
    var query_str = ret.query_str;
    var args_arr = [];
    if (_typeof$3(args) === 'object') {
      for (var key in args) {
        if (args.hasOwnProperty(key)) {
          args_arr.push("".concat(key, "=").concat(noEncode ? args[key] : encodeURIComponent(args[key])));
        }
      }
    } else {
      args_arr.push(noEncode ? args : encodeURIComponent(args));
    }
    if (args_arr.length &gt; 0) {
      query_str += (query_str !== "" ? "&amp;" : "") + args_arr.join("&amp;");
    }
    return ret.host + (query_str !== "" ? "?".concat(query_str) : "") + (ret.hash !== "" ? "#".concat(ret.hash) : "");
  }
  
  function addParam(url, param, value, forceReplace) {
    url = url || location.href;
    var firstAndPos = url.indexOf("&amp;");
    var len = url.length;
    var reverseUrl = url.replace(/^[\w\d]+:[/\\]+/g, "").split("").reverse();
    if (!Array.prototype.indexOf) {
      Array.prototype.indexOf = function (searchElement, fromIndex) {
        var k;
        if (this == null) {
          throw new TypeError('"this" is null or not defined');
        }
        var O = Object(this);
        var len = O.length &gt;&gt;&gt; 0;
        if (len === 0) {
          return -1;
        }
        var n = fromIndex || 0;
        if (Math.abs(n) === Infinity) {
          n = 0;
        }
        if (n &gt;= len) {
          return -1;
        }
        k = Math.max(n &gt;= 0 ? n : len - Math.abs(n), 0);
        while (k &lt; len) {
          if (k in O &amp;&amp; O[k] === searchElement) {
            return k;
          }
          k++;
        }
        return -1;
      };
    }
    var lastSlashPos = len - 1 - reverseUrl.indexOf("/");
    if (firstAndPos !== -1 &amp;&amp; url.indexOf("?") == -1 &amp;&amp; firstAndPos &gt; lastSlashPos) {
      url = url.replace("&amp;", "?");
    }
    var reg = new RegExp("([\\?&amp;]".concat(param, "=)[^&amp;#]*"));
    if (!url.match(reg)) {
      var urlInfo = parseUrl$1(url);
      var hash = urlInfo.hash ? '#' + urlInfo.hash : '';
      url = url.replace(hash, '');
      var _pos = url.indexOf("?");
      if (_pos == -1) {
        return "".concat(url, "?").concat(param, "=").concat(value).concat(hash);
      }
      if (_pos == url.length - 1) {
        return "".concat(url + param, "=").concat(value).concat(hash);
      }
      return "".concat(url, "&amp;").concat(param, "=").concat(value).concat(hash);
    }
    if (forceReplace === true) {
      return url.replace(reg, "$1".concat(value));
    }
    return url;
  }
  function addWxfrom(src, wxfrom) {
    var offset = window.service_type === 1 ? 10000 : 0;
    return addParam(src, 'wxfrom', offset + Number(wxfrom), true);
  }
  function removeParam(url, param) {
    var _URL = new URL(url),
      protocol = _URL.protocol,
      host = _URL.host,
      pathname = _URL.pathname,
      search = _URL.search,
      hash = _URL.hash;
    var queryParams = new URLSearchParams(search);
    queryParams["delete"](param);
    var newSearch = queryParams.toString();
    var newUrl = new URL("".concat(protocol, "//").concat(host).concat(pathname).concat(newSearch ? "?".concat(decodeURIComponent(newSearch)) : "").concat(hash));
    return newUrl.toString();
  }
  function getQuery$1(name, url) {
    var u = url || window.location.search;
    var reg = new RegExp("(^|&amp;)".concat(name, "=([^&amp;]*)(&amp;|$)"));
    var r = u.substring(u.indexOf('?') + 1).match(reg);
    return r !== null ? r[2] : '';
  }
  function encodeBase64(value) {
    try {
      return window.btoa(value);
    } catch (e) {
      return '';
    }
  }
  function decodeBase64(value) {
    try {
      return window.atob(value);
    } catch (e) {
      return '';
    }
  }
  function joinUrl$1(url) {
    var obj = {};
    if (typeof window.uin !== 'undefined') {
      obj.uin = window.uin;
    }
    if (typeof window.key !== 'undefined') {
      obj.key = window.key;
    }
    if (typeof window.pass_ticket !== 'undefined') {
      obj.pass_ticket = window.pass_ticket;
    }
    if (typeof window.wxtoken !== 'undefined') {
      obj.wxtoken = window.wxtoken;
    }
    if (typeof window.devicetype !== 'undefined') {
      obj.devicetype = window.devicetype;
    }
    if (typeof window.clientversion !== 'undefined') {
      obj.clientversion = window.clientversion || MMVersion.getInner();
    }
    obj.version = obj.clientversion;
    if (window.biz) {
      obj.__biz = window.biz;
    }
    if (getQuery$1('enterid')) {
      obj.enterid = getQuery$1('enterid');
    }
    if (typeof window.appmsg_token !== 'undefined') {
      obj.appmsg_token = window.appmsg_token;
    } else if (url.indexOf('advertisement_report') &gt; -1) {
      new Image().src = "".concat(location.protocol, "//mp.weixin.qq.com/mp/jsmonitor?idkey=68064_13_1&amp;r=").concat(Math.random());
    }
    obj.x5 = navigator.userAgent.indexOf('TBS/') !== -1 ? '1' : '0';
    obj.f = 'json';
    return join(url, obj);
  }
  function joinUserArticleRole(url, notJoin, cb) {
    var bizuin = arguments.length &gt; 3 &amp;&amp; arguments[3] !== undefined ? arguments[3] : window.biz;
    var needCheckBiz = arguments.length &gt; 5 &amp;&amp; arguments[5] !== undefined ? arguments[5] : false;
    if (notJoin) {
      cb(url);
    } else {
      getIsAuthor(function (isAuthor) {
        cb(addParam(url, 'user_article_role', isAuthor ? 1 : 0, true));
      }, bizuin, needCheckBiz);
    }
  }
  function getA8keyQuery(name, url) {
    return new Promise(function (resolve) {
      if (window.__secPageAuthPromise) {
        window.__secPageAuthPromise.then(function () {
          resolve(getQuery$1(name, url));
        });
      } else {
        resolve(getQuery$1(name, url));
      }
    });
  }
  function addHash(url, hash) {
    var isReplace = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    if (isReplace) {
      return "".concat(url.split('#')[0]).concat(hash);
    }
    return "".concat(url).concat(url.indexOf('#') === -1 ? '#' : '').concat(hash);
  }
  function decodeUrl(url) {
    var _url = url;
    while (_url.indexOf('&amp;amp;') !== -1) {
      _url = _url.htmlDecode();
    }
    return _url;
  }
  var Url = {
    parseUrl: parseUrl$1,
    join: join,
    addParam: addParam,
    addWxfrom: addWxfrom,
    addHash: addHash,
    getQuery: getQuery$1,
    getA8keyQuery: getA8keyQuery,
    encodeBase64: encodeBase64,
    decodeBase64: decodeBase64,
    joinUrl: joinUrl$1,
    joinUserArticleRole: joinUserArticleRole,
    removeParam: removeParam,
    decodeUrl: decodeUrl
  };

  var _a;
  var doc;
  var isAcrossOrigin = false;
  try {
    doc = (_a = window.top) === null || _a === void 0 ? void 0 : _a.window.document;
  } catch (e) {
    isAcrossOrigin = true;
  }
  var StatusTextMap = {
    200: 'OK',
    302: 'Found',
    400: 'Bad Request',
    500: 'Internal Server Error'
  };
  function getIsAcrossOrigin() {
    return isAcrossOrigin;
  }
  function networkStartLog(item) {
    var _a, _b, _c, _d, _e;
    console.log('[system]', "&lt; [request ".concat(item.requestType, "]"), item.url, item.method, item);
    var rdevRequestId;
    var requestTime = performance.now() / 1000;
    if ((_b = (_a = window.RemoteDevSdk) === null || _a === void 0 ? void 0 : _a.instance) === null || _b === void 0 ? void 0 : _b.Network) {
      try {
        var willBeSentOptions = {
          url: item.url,
          method: item.method,
          requestHeaders: Object.assign({}, item.requestHeader || {}, {
            RDEV_REQUEST_TYPE: item.requestType
          }),
          requestBody: item.postData,
          requestTime: requestTime
        };
        rdevRequestId = window.RemoteDevSdk.instance.Network.customRequestWillBeSent(willBeSentOptions);
      } catch (err) {}
    }
    if ((_c = window.vConsole) === null || _c === void 0 ? void 0 : _c.network) {
      try {
        var vconsoleNetworkItem = (_e = (_d = window.vConsole.network).add) === null || _e === void 0 ? void 0 : _e.call(_d, Object.assign({}, item, {
          startTime: Date.now(),
          endTime: Date.now(),
          status: 0,
          readyState: 2,
          response: ''
        }));
        vconsoleNetworkItem.rdevRequestId = rdevRequestId;
        vconsoleNetworkItem.requestTime = requestTime;
        return vconsoleNetworkItem;
      } catch (err) {}
    }
    if (rdevRequestId) {
      return Object.assign(Object.assign({}, item), {
        id: '__only_rdev_log__',
        rdevRequestId: rdevRequestId,
        requestTime: requestTime
      });
    }
    return Object.assign({}, item, {
      id: '__system_log__'
    });
  }
  function networkEndLog(item) {
    var _a, _b, _c, _d, _e;
    console.log('[system]', "&gt; [response ".concat(item.requestType, "]"), item.url, item.response, item);
    if (item.rdevRequestId &amp;&amp; ((_b = (_a = window.RemoteDevSdk) === null || _a === void 0 ? void 0 : _a.instance) === null || _b === void 0 ? void 0 : _b.Network) &amp;&amp; item.id !== '__system_log__') {
      try {
        var finishedOptions = {
          requestId: item.rdevRequestId,
          url: item.url,
          status: +(item.status || '500'),
          statusText: StatusTextMap[+(item.status || '500')] || 'Error',
          responseHeaders: {
            RDEV_RESPONSE_TYPE: item.requestType
          },
          responseBody: item.response,
          requestTime: item.requestTime || 0,
          duration: item.costTime || (item.endTime &amp;&amp; item.startTime ? item.endTime - item.startTime : performance.now() / 1000 - (item.requestTime || 0))
        };
        window.RemoteDevSdk.instance.Network.customRequestFinished(finishedOptions);
      } catch (err) {}
    }
    if (((_c = window.vConsole) === null || _c === void 0 ? void 0 : _c.network) &amp;&amp; item.id !== '__system_log__') {
      try {
        item.statusText = "".concat(item.status);
        item.responseSize = item.response.length;
        item.responseSizeText = "".concat(item.response.length);
        return (_e = (_d = window.vConsole.network).update) === null || _e === void 0 ? void 0 : _e.call(_d, item.id, Object.assign({}, item, {
          readyState: 4
        }));
      } catch (err) {}
    }
  }
  function reqType(obj, path) {
    return obj.url.indexOf(path) &gt; -1 &amp;&amp; obj.url.indexOf('action=') === -1 &amp;&amp; (!obj.data || !obj.data.action);
  }
  function findAjaxScopeByConfig(url, config) {
    var pathname = new URL(url, location.href).pathname || '';
    var scope = config[pathname.slice(1)];
    if (scope) {
      return scope;
    }
  }
  function getAjaxScope(ajaxUrl) {
    if (Url.getQuery('no_transfer', location.href) !== '1' &amp;&amp; MMVersion.isWechat &amp;&amp; !MMVersion.isInMiniProgram &amp;&amp; !MMVersion.isWxWork &amp;&amp; !MMVersion.isMpapp &amp;&amp; !isAcrossOrigin &amp;&amp; window.__ajaxTransferConfig &amp;&amp; _typeof$3(window.__ajaxTransferConfig) === 'object' &amp;&amp; (
    MMVersion.isIOS &amp;&amp; MMVersion.compareHexVersion('1800282F') || MMVersion.isAndroid &amp;&amp; MMVersion.compareHexVersion('28002234') || MMVersion.isWindowsWechat &amp;&amp; MMVersion.cpVersion('3.9.5', 1, true, 'windows') || MMVersion.isMacWechat &amp;&amp; MMVersion.cpVersion('3.8.4', 1, true, 'mac') || MMVersion.isHarmonyWechat &amp;&amp; MMVersion.compareHexVersion('0xf3100b00') &amp;&amp; !MMVersion.compareHexVersion('0xf3100c00') || MMVersion.compareHexVersion('0xf3800b00'))) {
      try {
        return findAjaxScopeByConfig(ajaxUrl, window.__ajaxTransferConfig);
      } catch (err) {
        
      }
    }
  }
  function getActionByData(data) {
    var _a, _b;
    if (_typeof$3(data) === 'object' &amp;&amp; !(data instanceof Blob)) {
      if (data.hasOwnProperty('data') &amp;&amp; typeof data.data === 'string') {
        try {
          var workedData = JSON.parse(data.data);
          return workedData.action || '';
        } catch (e) {}
      }
      return data.action || '';
    }
    if (typeof data === 'string') {
      return ((_b = (_a = data.split(/[?&amp;]/).find(function (x) {
        return x.indexOf('action=') &gt;= 0;
      })) === null || _a === void 0 ? void 0 : _a.split('=')) === null || _b === void 0 ? void 0 : _b[1]) || '';
    }
    return '';
  }

  var METHOD_ENUM = {
    GET: 0,
    POST: 1
  };
  var __moon_report = window.__moon_report || function () {};
  var MOON_AJAX_SUCCESS_OFFSET = 3;
  var MOON_AJAX_NETWORK_OFFSET = 4;
  var MOON_AJAX_ERROR_OFFSET = 5;
  var MOON_AJAX_TIMEOUT_OFFSET = 6;
  var MOON_AJAX_COMPLETE_OFFSET = 7;
  var LENGTH_LIMIT = 4096;
  function reportRtError(type, id, key, content) {
    var log = '';
    var prefix = type === 'rt' ? 'rtCheckError' : 'Ajax Length Limit';
    if (content === null || content === void 0 ? void 0 : content.length) {
      var loglen = 1000;
      var len = content.length;
      var lc = Math.ceil(len / loglen);
      log = ["&amp;lc=".concat(lc)];
      for (var i = 0; i &lt; lc; ++i) {
        log.push("&amp;log".concat(i, "=") + "[".concat(prefix, "][").concat(i, "]").concat(encodeURIComponent(content.substring(i * loglen, i * loglen + loglen))));
      }
      log = log.join('');
    }
    var data = "idkey=".concat(id, "_").concat(key, "_1").concat(log, "&amp;r=").concat(Math.random());
    var xmlobj = new XMLHttpRequest();
    xmlobj.open('POST', "".concat(location.protocol, "//").concat(location.host, "/mp/jsmonitor?"), true);
    xmlobj.setRequestHeader('cache-control', 'no-cache');
    xmlobj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    xmlobj.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    xmlobj.send(data);
    if (type === 'ajaxLen') {
      monitor$1.setLogs({
        id: id,
        key: key,
        value: 1,
        log: log
      });
    }
  }
  function reportRt(id, key, content) {
    reportRtError('rt', id, key, content);
  }
  function reportAjaxLength(id, key, content) {
    reportRtError('ajaxLen', id, key, content);
  }
  function setXhrHeader(xhr, type, opt) {
    if (opt.contentType) {
      xhr.setRequestHeader('Content-Type', opt.contentType);
    } else if (type === 'POST') {
      xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    }
    if (!opt.noXRequestedWidthHeader) {
      xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    }
  }
  function Ajax(obj) {
    var report36408 = typeof obj.report36408 === 'function' ? obj.report36408 : function () {};
    if (obj.usePb) {
      obj.type = 'POST';
      obj.data = {
        data: JSON.stringify(obj.data)
      };
    }
    var ajaxScope = getAjaxScope(obj.url);
    var type = (obj.type || 'GET').toUpperCase();
    var timer;
    var _url;
    if (obj.notJoinUrl) {
      _url = obj.url;
    } else {
      _url = Url.joinUrl(obj.url);
    }
    Url.joinUserArticleRole(_url, !!obj.notJoinUrl, function (url) {
      var urlObj = new URL(url, location.origin);
      if (obj.f === 'html') {
        url = url.replace('&amp;f=json', '');
      }
      var data = null;
      if (obj.data instanceof Blob) {
        data = obj.data;
      } else if (_typeof$3(obj.data) === 'object') {
        var d = obj.data;
        var ds = [];
        for (var k in d) {
          if (d.hasOwnProperty(k)) {
            ds.push("".concat(k, "=").concat(encodeURIComponent(d[k])));
          }
        }
        data = ds.join('&amp;');
      } else {
        data = typeof obj.data === 'string' ? obj.data : null;
      }
      var beginTs;
      var beforeReq = function beforeReq() {
        if (reqType(obj, '/mp/getappmsgext')) {
          window.startGetAppmsgExtTime = Date.now();
          Log.log('start get appmsgext, url: ', obj.url);
        }
        if (reqType(obj, '/mp/getappmsgad')) {
          window.startGetAppmsgAdTime = Date.now();
          Log.log('start get appmsgad, url: ', obj.url);
        }
        beginTs = Date.now();
      };
      var beforeResp = function beforeResp(xhr) {
        if (reqType(obj, '/mp/getappmsgext')) {
          window.receiveGetAppmsgExt = "".concat(xhr.status, "|").concat(Date.now());
          Log.log("receive appmsgext response, status: ".concat(xhr.status));
        }
        if (reqType(obj, '/mp/getappmsgad')) {
          window.receiveGetAppmsgAd = "".concat(xhr.status, "|").concat(Date.now());
          Log.log("receive appmsgad response, status: ".concat(xhr.status));
        }
        if (Math.random() &lt; 0.001 &amp;&amp; window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs) {
          try {
            var key = ajaxScope ? 'transfer' : 'xhr';
            var interval = 250;
            var time = Date.now() - beginTs;
            var range = Math.floor(time / interval) * interval;
            var pathname = new URL(obj.url, location.href).pathname || '';
            window.WX_BJ_REPORT.BadJs.report("".concat(key, "_perf:").concat(pathname), JSON.stringify({
              status: xhr.status,
              time: "[".concat(range, "-").concat(range + interval, ")")
            }), {
              mid: 'mmbizwap:ajaxtransfer',
              view: 'wap_business'
            });
          } catch (err) {}
        }
      };
      var handleRespSucc = function handleRespSucc(xhr, requestType) {
        var _a, _b, _c, _d;
        try {
          var responseText = xhr.responseText;
          var resp = responseText;
          if (obj.dataType === 'json') {
            try {
              if (JSON &amp;&amp; JSON.parse) {
                resp = JSON.parse(resp);
              } else {
                resp = eval("(".concat(resp, ")"));
                monitor$1.setSum(523105, 127, 1).send();
              }
              var rtId = obj.rtId;
              var rtKey = obj.rtKey || 0;
              var rtDesc = obj.rtDesc;
              if (rtId &amp;&amp; rtDesc &amp;&amp; RespTypes &amp;&amp; !RespTypes.check(resp, rtDesc)) {
                reportRt(+rtId, +rtKey, "".concat(RespTypes.getMsg(), "[detail]").concat(responseText, ";").concat(obj.url));
              }
              if (resp &amp;&amp; resp.base_resp &amp;&amp; ((_a = resp.base_resp) === null || _a === void 0 ? void 0 : _a.ret) !== 0 &amp;&amp; typeof window.WX_BJ_REPORT !== 'undefined' &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; Math.random() &lt; 0.001) {
                var reportUrl = url;
                if (url.indexOf('?') !== -1) {
                  reportUrl = url.substring(0, url.indexOf('?'));
                  if (Url.getQuery('action', url)) {
                    reportUrl = "".concat(reportUrl, "?action=").concat(Url.getQuery('action', url));
                  }
                }
                if (!((reportUrl === '/mp/getappmsgext' || reportUrl === '/mp/getappmsgad') &amp;&amp; typeof resp.base_resp.ret === 'undefined')) {
                  window.WX_BJ_REPORT.BadJs.report(reportUrl, "ret=".concat(resp.base_resp.ret), {
                    mid: window.PAGE_MID,
                    view: 'wap_retcode'
                  });
                }
              }
            } catch (e) {
              obj.error &amp;&amp; obj.error(xhr, {
                type: 1,
                error: e,
                status: xhr.status
              });
              if (!obj.dontReport) {
                report36408({
                  CgiPath: urlObj.pathname || '',
                  Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                  Query: urlObj.search || '',
                  PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                  Method: type || '',
                  RequestType: requestType || 0,
                  RetType: 1,
                  HttpCode: xhr.status || 0,
                  Ret: 0
                });
              }
              return;
            }
          }
          if (_typeof$3(resp) === 'object' &amp;&amp; ((_b = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _b === void 0 ? void 0 : _b.ret) !== 0) {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                Method: type || '',
                RequestType: requestType || 0,
                RetType: 4,
                HttpCode: xhr.status || 0,
                Ret: ((_c = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _c === void 0 ? void 0 : _c.ret) || 0
              });
            }
          } else {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                Method: type || '',
                RequestType: requestType || 0,
                RetType: 0,
                HttpCode: xhr.status || 0,
                Ret: ((_d = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _d === void 0 ? void 0 : _d.ret) || 0
              });
            }
          }
          obj.success &amp;&amp; obj.success(resp);
        } catch (e) {
          __moon_report({
            offset: MOON_AJAX_SUCCESS_OFFSET,
            e: e
          });
          throw e;
        }
      };
      var handleRespErr = function handleRespErr(xhr, error, requestType) {
        try {
          obj.error &amp;&amp; obj.error(xhr, {
            type: 2,
            error: error,
            status: xhr.status
          });
          if (!obj.dontReport) {
            report36408({
              CgiPath: urlObj.pathname || '',
              Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
              Query: urlObj.search || '',
              PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
              Method: type,
              RequestType: requestType,
              RetType: 2,
              HttpCode: xhr.status,
              Ret: 0
            });
          }
        } catch (e) {
          __moon_report({
            offset: MOON_AJAX_ERROR_OFFSET,
            e: e
          });
          throw e;
        }
      };
      var handleRespComplete = function handleRespComplete() {
        clearTimeout(timer);
        try {
          obj.complete &amp;&amp; obj.complete();
        } catch (e) {
          __moon_report({
            offset: MOON_AJAX_COMPLETE_OFFSET,
            e: e
          });
          throw e;
        }
        obj.complete = null;
      };
      var handleReqTimeout = function handleReqTimeout(xhr) {
        if (typeof obj.timeout !== 'undefined') {
          timer = setTimeout(function () {
            xhr.abort();
            try {
              obj.complete &amp;&amp; obj.complete();
            } catch (e) {
              __moon_report({
                offset: MOON_AJAX_COMPLETE_OFFSET,
                e: e
              });
              throw e;
            }
            obj.complete = null;
            __moon_report({
              offset: MOON_AJAX_TIMEOUT_OFFSET,
              log: "ajax_timeout_error: ".concat(url),
              e: ''
            });
          }, obj.timeout);
        }
      };
      var retryXhrFn = function retryXhrFn(res, isTimeout, reqLogItem) {
        var retryXhr = new XMLHttpRequest();
        try {
          retryXhr._noVConsole = true;
        } catch (err) {}
        retryXhr.open(type, url);
        retryXhr.onreadystatechange = function () {
          if (isTimeout) return;
          if (retryXhr.readyState === 3) {
            obj.received &amp;&amp; obj.received(retryXhr);
          }
          if (retryXhr.readyState === 4) {
            beforeResp(retryXhr);
            var retryStatus = retryXhr.status;
            if (retryStatus &gt;= 200 &amp;&amp; retryStatus &lt; 400) {
              handleRespSucc(retryXhr, 1);
            } else {
              handleRespErr(retryXhr, res, 1);
              window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; window.WX_BJ_REPORT.BadJs.report('req_failure', JSON.stringify({
                retryXhrStatus: retryStatus,
                transferRes: res
              }), {
                mid: 'mmbizwap:ajaxtransfer',
                view: 'wap_business'
              });
            }
            reqLogItem.status = retryStatus;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = retryXhr.responseText;
            handleRespComplete();
            networkEndLog(reqLogItem);
          }
        };
        setXhrHeader(retryXhr, type, obj);
        retryXhr.send(data);
      };
      if (ajaxScope &amp;&amp; !obj.pureHttp) {
        var header = {
          'User-Agent': navigator.userAgent,
          'Cookie': (window.__test_env__ ? 'uniproxy_route=1; ' : '') + document.cookie,
          'Referer': location.href
        };
        if (obj.contentType) {
          header['Content-Type'] = obj.contentType;
        } else if (type === 'POST') {
          header['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
        }
        if (!obj.noXRequestedWidthHeader) {
          header['X-Requested-With'] = 'XMLHttpRequest';
        }
        var reqUrl = new URL(url, location.href).href;
        var method = METHOD_ENUM[type] || 0;
        var params = Device.os.pc ? {
          url: reqUrl,
          req_json: data || '',
          scope: ajaxScope,
          webcgi_method: method,
          webcgi_header: Object.keys(header).map(function (headerItemKey) {
            return Device.os.Mac ? _defineProperty$1({}, headerItemKey, header[headerItemKey]) : {
              key: headerItemKey,
              value: header[headerItemKey]
            };
          }),
          cgi_type: 1
        } : {
          reqUrl: reqUrl,
          reqBody: data,
          scope: ajaxScope,
          method: method,
          header: header
        };
        var reqLogItem = networkStartLog({
          method: type,
          url: url,
          postData: obj.data || {},
          requestHeader: header,
          requestType: 'transfer',
          startTime: Date.now(),
          responseType: url.indexOf('f=json') &gt; 0 ? 'json' : undefined
        });
        var isTimeout = false;
        handleReqTimeout({
          abort: function abort() {
            isTimeout = true;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = 'timeout';
            networkEndLog(reqLogItem);
          }
        });
        Device.os.pc &amp;&amp; monitor$1.setSum(115849, 69, 1);
        R$4.invoke(Device.os.pc ? 'H5ExtTransfer' : 'webTransfer', params, function (res) {
          var _a, _b, _c, _d, _e, _f;
          if (isTimeout) return;
          var status = 400;
          var result = '';
          if (Device.os.pc) {
            try {
              var retFlag = res.base_resp.ret === 0 &amp;&amp; res.jsapi_resp.ret === 0 &amp;&amp; res.err_msg.indexOf(':ok') &gt; -1;
              var respJsonFlag = res.jsapi_resp.resp_json;
              status = retFlag &amp;&amp; respJsonFlag ? 200 : 400;
              result = res.jsapi_resp.resp_json;
            } catch (err) {
              console.error(err);
            }
          } else {
            status = res &amp;&amp; res.errCode * 1 === 0 &amp;&amp; typeof res.result === 'string' &amp;&amp; res.result ? 200 : 400;
            result = res.result;
          }
          try {
            Log.log("ajax transfer, status: ".concat(status, ", reqUrl: ").concat(reqUrl));
          } catch (err) {
            console.error(err);
          }
          if (status &gt;= 200 &amp;&amp; status &lt; 400) {
            obj.received &amp;&amp; obj.received(null);
            beforeResp({
              status: status
            });
            handleRespSucc({
              status: status,
              responseText: result
            }, 10);
            reqLogItem.status = status;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = result;
            handleRespComplete();
            networkEndLog(reqLogItem);
          } else if (window.__second_open__) {
            R$4.invoke('request', {
              url: reqUrl,
              method: type,
              data: data,
              header: header
            }, function (retryRes) {
              try {
                Log.log("ajax retry request, retryStatus: ".concat((retryRes === null || retryRes === void 0 ? void 0 : retryRes.statusCode) || '', ", reqUrl: ").concat(reqUrl));
              } catch (err) {
                console.error(err);
              }
              if (isTimeout) return;
              var retryStatus = retryRes.statusCode;
              obj.received &amp;&amp; obj.received(null);
              beforeResp({
                status: retryStatus
              });
              if (retryRes.err_msg.indexOf(':ok') &gt; -1 &amp;&amp; retryStatus &gt;= 200 &amp;&amp; retryStatus &lt; 400) {
                handleRespSucc({
                  status: retryStatus,
                  responseText: retryRes.data
                }, 20);
              } else {
                retryXhrFn(res, isTimeout, reqLogItem);
                handleRespErr({
                  status: retryStatus
                }, res, 20);
                window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; window.WX_BJ_REPORT.BadJs.report('req_failure_sec_open', JSON.stringify({
                  retryReqJsapiRes: retryRes,
                  transferRes: res,
                  url: reqUrl
                }), {
                  mid: 'mmbizwap:ajaxtransfer',
                  view: 'wap_business'
                });
              }
              reqLogItem.status = retryStatus;
              reqLogItem.endTime = Date.now();
              reqLogItem.response = retryRes.data;
              handleRespComplete();
              networkEndLog(reqLogItem);
            });
          } else {
            retryXhrFn(res, isTimeout, reqLogItem);
          }
          if (Device.os.pc) {
            if (!res.err_msg.includes(':ok')) {
              (_b = (_a = window.WX_BJ_REPORT) === null || _a === void 0 ? void 0 : _a.BadJs) === null || _b === void 0 ? void 0 : _b.report("pc transfer res no ok: ".concat(res.err_msg), params.url || '', {
                mid: window.PAGE_MID,
                _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
              });
            }
            try {
              if (res.jsapi_resp.resp_json &amp;&amp; JSON.parse(res.jsapi_resp.resp_json).base_resp.ret !== 0 &amp;&amp; JSON.parse(res.jsapi_resp.resp_json).base_resp.ret !== 190001 || res.base_resp.ret !== 0 || res.jsapi_resp.ret !== 0) {
                (_d = (_c = window.WX_BJ_REPORT) === null || _c === void 0 ? void 0 : _c.BadJs) === null || _d === void 0 ? void 0 : _d.report("pc transfer res invalid ret", params.url || '', {
                  mid: window.PAGE_MID,
                  _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
                });
              }
            } catch (err) {}
          } else {
            try {
              if (res.errCode !== 0) {
                (_f = (_e = window.WX_BJ_REPORT) === null || _e === void 0 ? void 0 : _e.BadJs) === null || _f === void 0 ? void 0 : _f.report("mobile transfer res invalid ret", params.url || '', {
                  mid: window.PAGE_MID,
                  _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
                });
              }
            } catch (err) {}
          }
        });
        beforeReq();
        return;
      }
      var xhr = new XMLHttpRequest();
      var mayAbort = !!obj.mayAbort;
      var async = typeof obj.async === 'undefined' ? true : obj.async;
      var _onreadystatechange = xhr.onreadystatechange;
      xhr.open(type, url, async);
      xhr.onreadystatechange = function () {
        if (typeof _onreadystatechange === 'function') {
          _onreadystatechange.apply(xhr);
        }
        if (xhr.readyState === 3) {
          obj.received &amp;&amp; obj.received(xhr);
        }
        if (xhr.readyState === 4) {
          beforeResp(xhr);
          xhr.onreadystatechange = null;
          var status = xhr.status;
          if (status &gt;= 200 &amp;&amp; status &lt; 400) {
            handleRespSucc(xhr, 1);
          } else {
            handleRespErr(xhr, 'status error', 1);
            if (!!status || !mayAbort) {
              var __ajaxtest = window.__ajaxtest || '0';
              __moon_report({
                offset: MOON_AJAX_NETWORK_OFFSET,
                log: "ajax_network_error[".concat(status, "][").concat(__ajaxtest, "]: ").concat(url, ";host:").concat(location.host),
                e: ''
              });
            }
          }
          handleRespComplete();
        }
      };
      setXhrHeader(xhr, type, obj);
      handleReqTimeout(xhr);
      try {
        xhr.send(data);
        try {
          if (url &amp;&amp; url.length &gt; LENGTH_LIMIT) {
            reportAjaxLength(27613, 17, "ajax get limit[length: ".concat(url.length, "]").concat(url.substring(0, 1024)));
          }
          if (data &amp;&amp; !(data instanceof Blob) &amp;&amp; data.length &gt; LENGTH_LIMIT) {
            reportAjaxLength(27613, 18, "ajax post limit[length: ".concat(data.length, "]").concat(data.substring(0, 1024)));
          }
          if (data &amp;&amp; data instanceof Blob &amp;&amp; data.size &gt; LENGTH_LIMIT) {
            reportAjaxLength(27613, 18, "ajax post limit[length: ".concat(data.size, "]blob"));
          }
        } catch (e) {
        }
      } catch (e) {
        obj.error &amp;&amp; obj.error(xhr, {
          type: 3,
          error: e,
          status: 0
        });
      }
      beforeReq();
    });
  }

  
  var photoAccountsEnv = null;
  var getEnv = function getEnv() {
    var forceUpdate = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : false;
    if (window.__wxWebEnv &amp;&amp; (!photoAccountsEnv || forceUpdate)) {
      try {
        photoAccountsEnv = window.__wxWebEnv &amp;&amp; typeof window.__wxWebEnv.getEnv === 'function' &amp;&amp; window.__wxWebEnv.getEnv();
        photoAccountsEnv = photoAccountsEnv ? JSON.parse(photoAccountsEnv) : undefined;
      } catch (error) {
        photoAccountsEnv = undefined;
        console.error('photo accounts env error', error);
      }
    }
    return photoAccountsEnv;
  };
  var isPcDebugVersion = MMVersion.isWindowsWechat &amp;&amp; MMVersion.compareHexVersion('0xf2550000') || MMVersion.isMacWechat &amp;&amp; MMVersion.compareHexVersion('0xf2650000');
  var photoAccountsEnableforC = function photoAccountsEnableforC() {
    var _a, _b, _c, _d;
    return ((_b = (_a = getEnv()) === null || _a === void 0 ? void 0 : _a.photoAccount) === null || _b === void 0 ? void 0 : _b.supportViewPhotoAcct) === 1 || MMVersion.isPcWechat &amp;&amp; ((_d = (_c = window.cgiDataNew) === null || _c === void 0 ? void 0 : _c.user_info) === null || _d === void 0 ? void 0 : _d.support_view_photo_acct) || isPcDebugVersion || MMVersion.isWxWork;
  };
  var photoAccountsEnableProfileExt = function photoAccountsEnableProfileExt() {
    var _a, _b, _c, _d;
    return ((_b = (_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.user_info) === null || _b === void 0 ? void 0 : _b.support_view_photo_profileext) || ((_d = (_c = window.cgiData) === null || _c === void 0 ? void 0 : _c.user_info) === null || _d === void 0 ? void 0 : _d.support_view_photo_profileext) || MMVersion.isWxWork;
  };
  var notSupportPhotoAccountsToast = function notSupportPhotoAccountsToast() {
    R$4.invoke('openUrlWithExtraWebview', {
      url: 'https://mp.weixin.qq.com/mp/readtemplate?t=wxversion/index&amp;for=photoAccount#wechat_redirect',
      openType: 1
    });
  };
  var supportPhotoAccounts = function supportPhotoAccounts() {
    var needTips = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : true;
    if (photoAccountsEnableforC()) {
      return true;
    } else {
      needTips &amp;&amp; notSupportPhotoAccountsToast();
      return false;
    }
  };

  
  var getBizAttrName = function getBizAttrName(serviceType, platform, phAccountDefault) {
    var _a;
    if (serviceType === void 0) {
      serviceType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.new_service_type) || 0;
    }
    if (platform === void 0) {
      platform = 'wechat';
    }
    if (serviceType === 8) {
      if (platform === 'wechat') {
        return '贴图号' ;
      } else {
        return '贴图号';
      }
    }
    if (serviceType === 2) return '服务号';
    return '公众号';
  };
  
  var getBrandServiceType = function getBrandServiceType() {
    var serviceType = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : window.service_type;
    var _a, _b;
    var brandServiceType = 0;
    if (serviceType !== undefined) brandServiceType = serviceType + 1;
    if (((_b = (_a = window.cgiData) === null || _a === void 0 ? void 0 : _a.trans_appmsg_info) === null || _b === void 0 ? void 0 : _b.trans_type) * 1 === 1) brandServiceType = 3;
    return brandServiceType;
  };

  function setCurrentMpInfo(ifShow) {
    var supportNewTopBar = MMVersion.isIOS &amp;&amp; MMVersion.gtVersion('7.0.10', true) || MMVersion.isAndroid &amp;&amp; MMVersion.gtVersion('7.0.12', true);
    var supportLiveStatus = MMVersion.isIOS &amp;&amp; MMVersion.gtVersion('8.0.46', true) || MMVersion.isAndroid &amp;&amp; MMVersion.gtVersion('8.0.46', true);
    R$4.invoke('currentMpInfo', {
      userName: window.user_name,
      brandName: !!supportNewTopBar &amp;&amp; window.nickname === '' ? '未命名账号' : window.title,
      title: window.msg_title || '',
      brandIcon: window.hd_head_img.replace(/\/0$/, '/132'),
      itemShowType: window.item_show_type,
      isPaySubscribe: window.isPaySubscribe,
      topBarStyle: supportNewTopBar ? 1 : 0,
      topBarShowed: ifShow,
      disableShowFinderLiveTopBar: !ifShow &amp;&amp; supportLiveStatus ? 1 : 0,
      brandServiceType: getBrandServiceType()
    }, function () {});
  }
  function AjaxWx(obj) {
    var report36408 = typeof obj.report36408 === 'function' ? obj.report36408 : function () {};
    obj.url += obj.url.indexOf('?') === -1 ? '?fasttmplajax=1' : '&amp;fasttmplajax=1';
    if (getAjaxScope(obj.url)) {
      Ajax(obj);
      return;
    }
    if (obj.usePb) {
      obj.type = 'POST';
      obj.data = {
        data: JSON.stringify(obj.data)
      };
    }
    if (!/^(http:\/\/|https:\/\/|\/\/)/.test(obj.url)) {
      obj.url = "https://mp.weixin.qq.com/".concat(obj.url.replace(/^\//, ''));
    } else if (/^\/\//.test(obj.url)) {
      obj.url = "https:".concat(obj.url);
    }
    if (obj.f !== 'html' &amp;&amp; (obj.url.indexOf('?f=json') === -1 || obj.url.indexOf('&amp;f=json') === -1)) {
      obj.url += '&amp;f=json';
    }
    if (!obj.notJoinUrl &amp;&amp; obj.f !== 'html') {
      obj.url = Url.joinUrl(obj.url);
    }
    Url.joinUserArticleRole(obj.url, !!obj.notJoinUrl, function (url) {
      obj.url = url;
      var urlObj = new URL(url, location.origin);
      var data = null;
      if (_typeof$3(obj.data) === 'object') {
        var d = obj.data;
        var ds = [];
        for (var k in d) {
          if (d.hasOwnProperty(k)) {
            ds.push("".concat(k, "=").concat(encodeURIComponent(d[k])));
          }
        }
        data = ds.join('&amp;');
      } else {
        data = typeof obj.data === 'string' ? obj.data : null;
      }
      var header = {
        Cookie: document.cookie,
        referer: location.href
      };
      if (obj.contentType) {
        header['Content-Type'] = obj.contentType;
      } else if ((obj.type || 'GET').toUpperCase() === 'POST') {
        header['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
      }
      var reqLogItem = networkStartLog({
        method: obj.type || 'GET',
        url: obj.url,
        postData: obj.data || {},
        requestHeader: header,
        requestType: 'jsapi',
        startTime: Date.now()
      });
      var retryTime = 1;
      var jsapiRequest = function jsapiRequest(obj, data) {
        return R$4.invoke('request', {
          url: obj.url,
          method: obj.type,
          data: data,
          header: header
        }, function (res) {
          var _a, _b, _c, _d, _e, _f;
          if (res.err_msg.indexOf(':ok') &gt; -1 &amp;&amp; (!res.statusCode || res.statusCode &gt;= 200 &amp;&amp; res.statusCode &lt; 400)) {
            if (reqType(obj, '/mp/getappmsgext')) {
              window.receiveGetAppmsgExt = "".concat(res.statusCode, "|").concat(Date.now());
            }
            if (reqType(obj, '/mp/getappmsgad')) {
              window.receiveGetAppmsgAd = "".concat(res.statusCode, "|").concat(Date.now());
            }
            if (retryTime === 1) {
              obj.received &amp;&amp; obj.received(null);
            }
            var resData = {};
            if (res.data) {
              try {
                if (obj.dataType === 'json') {
                  resData = JSON.parse(res.data);
                } else {
                  resData = res.data;
                }
                if (resData &amp;&amp; resData.base_resp &amp;&amp; ((_a = resData.base_resp) === null || _a === void 0 ? void 0 : _a.ret) !== 0 &amp;&amp; typeof window.WX_BJ_REPORT !== 'undefined' &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; Math.random() &lt; 0.001) {
                  var reportUrl = obj.url;
                  if (obj.url.indexOf('?') !== -1) {
                    reportUrl = obj.url.substring(0, obj.url.indexOf('?'));
                    if (Url.getQuery('action', obj.url)) {
                      reportUrl = "".concat(reportUrl, "?action=").concat(Url.getQuery('action', obj.url));
                    }
                  }
                  if (!((reportUrl === '/mp/getappmsgext' || reportUrl === '/mp/getappmsgad') &amp;&amp; typeof resData.base_resp.ret === 'undefined')) {
                    window.WX_BJ_REPORT.BadJs.report(reportUrl, "ret=".concat(resData.base_resp.ret), {
                      mid: window.PAGE_MID,
                      view: 'wap_retcode'
                    });
                  }
                }
              } catch (e) {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 1,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_b = resData === null || resData === void 0 ? void 0 : resData.base_resp) === null || _b === void 0 ? void 0 : _b.ret) || 0
                  });
                }
                console.error(e);
                obj.error &amp;&amp; obj.error(null, {
                  type: 1,
                  error: e,
                  status: res.statusCode
                });
                obj.complete &amp;&amp; obj.complete();
                reqLogItem.endTime = Date.now();
                reqLogItem.response = res;
                networkEndLog(reqLogItem);
                return;
              }
            }
            var tmpResData = {};
            try {
              tmpResData = JSON.parse(res.data);
            } catch (e) {}
            if (tmpResData &amp;&amp; tmpResData.base_resp &amp;&amp; tmpResData.base_resp.ret === -3 &amp;&amp; retryTime &lt; 2 &amp;&amp; (MMVersion.isIOS || MMVersion.isAndroid &amp;&amp; MMVersion.getInner() &gt; '27000600')) {
              if (!obj.dontReport) {
                report36408({
                  CgiPath: urlObj.pathname || '',
                  Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                  Query: urlObj.search || '',
                  PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                  Method: obj.type || '',
                  RequestType: 20,
                  RetType: 1,
                  HttpCode: res.statusCode || 0,
                  Ret: ((_c = resData === null || resData === void 0 ? void 0 : resData.base_resp) === null || _c === void 0 ? void 0 : _c.ret) || 0
                });
              }
              var _retryTime = retryTime++;
              R$4.invoke('updatePageAuth', {}, function (res) {
                console.log('[skeleton] updatePageAuth', res);
                monitor$1.setSum(112287, 3, 1);
                if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf(':ok') &gt; -1) {
                  window.top.pass_ticket = encodeURIComponent(Url.getQuery('pass_ticket', res.fullUrl).html(false).replace(/\s/g, '+'));
                  if (obj.pass_ticket) {
                    obj.pass_ticket = window.top.pass_ticket;
                  }
                  console.warn('[skeleton] updatePageAuth resetTopbar');
                  var supportNewTopBar = MMVersion.isIOS &amp;&amp; MMVersion.gtVersion('7.0.10', true);
                  var showBottomBar = !!window.is_login;
                  if (window.top.item_show_type === '0' &amp;&amp; supportNewTopBar) {
                    var top = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop || 0;
                    setCurrentMpInfo(top &gt; 40 &amp;&amp; !showBottomBar);
                  }
                  try {
                    obj.url = Url.addParam(obj.url, 'retry', _retryTime, true);
                  } catch (err) {
                    console.error(err);
                  }
                  jsapiRequest(obj, data);
                  monitor$1.setSum(112287, 4, 1);
                } else {
                  obj.success &amp;&amp; obj.success(resData);
                  obj.complete &amp;&amp; obj.complete();
                  if (MMVersion.isIOS) {
                    monitor$1.setSum(112287, 35, 1);
                  } else {
                    monitor$1.setSum(112287, 36, 1);
                  }
                  reqLogItem.status = 200;
                  reqLogItem.endTime = Date.now();
                  reqLogItem.response = resData;
                  networkEndLog(reqLogItem);
                }
              });
            } else {
              if (((_d = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _d === void 0 ? void 0 : _d.ret) !== 0) {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 4,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_e = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _e === void 0 ? void 0 : _e.ret) || 0
                  });
                }
              } else {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 0,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_f = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _f === void 0 ? void 0 : _f.ret) || 0
                  });
                }
              }
              obj.success &amp;&amp; obj.success(resData);
              obj.complete &amp;&amp; obj.complete();
              reqLogItem.status = 200;
              reqLogItem.endTime = Date.now();
              reqLogItem.response = resData;
              networkEndLog(reqLogItem);
            }
          } else if (res.err_msg.indexOf('no permission') &gt; -1 || !MMVersion.isOnlyWechat) {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                Method: obj.type || '',
                RequestType: 20,
                RetType: 1,
                HttpCode: res.statusCode || 0,
                Ret: 0
              });
            }
            Ajax(obj);
            if (res.err_msg.indexOf('no permission') &gt; -1) {
              console.warn('[JSAPI Request] No permission');
              monitor$1.setSum(112287, 31, 1);
            }
            reqLogItem.status = 302;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = res;
            networkEndLog(reqLogItem);
          } else {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                Method: obj.type || '',
                RequestType: 20,
                RetType: 2,
                HttpCode: res.statusCode || 0,
                Ret: 0
              });
            }
            obj.error &amp;&amp; obj.error(null, {
              type: 3,
              error: res,
              status: 0
            });
            obj.complete &amp;&amp; obj.complete();
            monitor$1.setSum(112287, 32, 1);
            var sample = 0.001;
            if (Math.random() &lt; sample) {
              var msg = "request: ".concat(JSON.stringify(obj.type), " ").concat(JSON.stringify(obj.url), " ;;;; cookie: ").concat(JSON.stringify(document.cookie), " ;;;; data: ").concat(JSON.stringify(data), " ;;;; resp: ").concat(JSON.stringify(res));
              if (window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs) {
                window.WX_BJ_REPORT.BadJs.report('ajax_wx_request_error', msg, {
                  mid: 'mmbizwap:Monitor'
                });
              }
            }
            reqLogItem.status = 400;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = res;
            networkEndLog(reqLogItem);
          }
        });
      };
      if (reqType(obj, '/mp/getappmsgext')) {
        window.startGetAppmsgExtTime = Date.now();
      }
      if (reqType(obj, '/mp/getappmsgad')) {
        window.startGetAppmsgAdTime = Date.now();
      }
      jsapiRequest(obj, data);
    });
  }

  function _regeneratorRuntime$5() {  _regeneratorRuntime$5 = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof$3(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof$3(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  var AjaxRouter = function () {
    var _ref = _asyncToGenerator$1( _regeneratorRuntime$5().mark(function _callee(obj) {
      return _regeneratorRuntime$5().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            if (!window.__secPageAuthPromise) {
              _context.next = 3;
              break;
            }
            _context.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            if (!(!MMVersion.isWxWork &amp;&amp; (window.__second_open__ || !getIsAcrossOrigin() &amp;&amp; top.window.__second_open__) &amp;&amp; window.__is_page_auth_return__ &amp;&amp; !obj.pureHttp)) {
              _context.next = 5;
              break;
            }
            return _context.abrupt("return", AjaxWx(obj));
          case 5:
            return _context.abrupt("return", Ajax(obj));
          case 6:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return function AjaxRouter(_x) {
      return _ref.apply(this, arguments);
    };
  }();

  var html$1 = function html(_str, encode) {
    if (!_str) return '';
    var replace = ['&amp;#96;', '`', '&amp;#39;', '\'', '&amp;quot;', '"', '&amp;nbsp;', ' ', '&amp;gt;', '&gt;', '&amp;lt;', '&lt;', '&amp;yen;', '¥', '&amp;amp;', '&amp;', '&amp;#60;', '&lt;', '&amp;#62;', '&gt;'];
    
    var replaceReverse = ['&amp;', '&amp;amp;', '¥', '&amp;yen;', '&lt;', '&amp;lt;', '&gt;', '&amp;gt;', ' ', '&amp;nbsp;', '"', '&amp;quot;', '\'', '&amp;#39;', '`', '&amp;#96;'];
    var str = _str;
    var target;
    if (encode) {
      target = replaceReverse;
    } else {
      target = replace;
    }
    for (var i = 0; i &lt; target.length; i += 2) {
      str = str.replace(new RegExp(target[i], 'g'), target[i + 1]);
    }
    return str;
  };
  var htmlLite = function htmlLite(_str, encode) {
    if (!_str) return '';
    var replace = ['&amp;#96;', '`', '&amp;#39;', '\'', '&amp;quot;', '"', '&amp;gt;', '&gt;', '&amp;lt;', '&lt;', '&amp;amp;', '&amp;'];
    
    var replaceReverse = ['&amp;', '&amp;amp;', '&lt;', '&amp;lt;', '&gt;', '&amp;gt;', '"', '&amp;quot;', '\'', '&amp;#39;', '`', '&amp;#96;'];
    var str = _str;
    var target;
    if (encode) {
      target = replaceReverse;
    } else {
      target = replace;
    }
    for (var i = 0; i &lt; target.length; i += 2) {
      str = str.replace(new RegExp(target[i], 'g'), target[i + 1]);
    }
    return str;
  };
  var htmlEncode = function htmlEncode(str) {
    return html$1(str, true);
  };
  var htmlDecode$1 = function htmlDecode(str) {
    return html$1(str, false);
  };
  var htmlEncodeLite = function htmlEncodeLite(str) {
    return htmlLite(str, true);
  };
  var htmlDecodeLite = function htmlDecodeLite(str) {
    return htmlLite(str, false);
  };
  String.prototype.html = function (encode) {
    return html$1(this.toString(), encode);
  };
  String.prototype.htmlEncode = function () {
    return htmlEncode(this.toString());
  };
  String.prototype.htmlDecode = function () {
    return htmlDecode$1(this.toString());
  };
  String.prototype.htmlLite = function (encode) {
    return htmlLite(this.toString(), encode);
  };
  String.prototype.htmlEncodeLite = function () {
    return htmlEncodeLite(this.toString());
  };
  String.prototype.htmlDecodeLite = function () {
    return htmlDecodeLite(this.toString());
  };

  var isx5 = navigator.userAgent.indexOf('TBS/') !== -1;
  var getDataFunc = [];
  var reportData = [];
  
  var specificData = {};
  function joinUrl(url) {
    var obj = {};
    if (typeof window.uin !== 'undefined') {
      obj.uin = window.uin;
    }
    if (typeof window.key !== 'undefined') {
      obj.key = window.key;
    }
    if (typeof window.pass_ticket !== 'undefined') {
      obj.pass_ticket = window.pass_ticket;
    }
    if (typeof window.wxtoken !== 'undefined') {
      obj.wxtoken = window.wxtoken;
    }
    if (typeof window.devicetype !== 'undefined') {
      obj.devicetype = window.devicetype;
    }
    if (typeof window.clientversion !== 'undefined') {
      obj.clientversion = window.clientversion;
    }
    if (typeof window.appmsg_token !== 'undefined') {
      obj.appmsg_token = window.appmsg_token;
    } else if (url.indexOf('advertisement_report') &gt; -1) {
      new Image().src = "".concat(location.protocol, "//mp.weixin.qq.com/mp/jsmonitor?idkey=68064_13_1&amp;r=").concat(Math.random());
    }
    obj.x5 = isx5 ? '1' : '0';
    obj.f = 'json';
    return Url.join(url, obj);
  }
  function isObj(obj) {
    return obj &amp;&amp; _typeof$3(obj) === 'object';
  }
  function assign(target, source) {
    if (isObj(target) &amp;&amp; isObj(source)) {
      for (var key in source) {
        if (Object.prototype.hasOwnProperty.call(source, key)) {
          target[key] = source[key];
        }
      }
    }
  }
  function assembleReportData(initiative) {
    var leaveReportLog = [];
    leaveReportLog.push({
      content: "[LeaveReport] specificData keys: ".concat(Object.keys(specificData)),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] specificData keys: ".concat(Object.keys(specificData)));
    console.log("[LeaveReport] specificData keys: ".concat(Object.keys(specificData)));
    var allReportData = {};
    for (var reportField in specificData) {
      if (!allReportData[reportField]) {
        allReportData[reportField] = {};
      }
      for (var i = 0; i &lt; specificData[reportField].length; i++) {
        var param = specificData[reportField][i];
        if (typeof param === 'function') {
          try {
            assign(allReportData[reportField], param(initiative));
          } catch (err) {
            leaveReportLog.push({
              content: "[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)),
              timestamp: Date.now()
            });
            Log.error("[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)));
            console.error("[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)));
          }
        } else if (isObj(param)) {
          assign(allReportData[reportField], param);
        }
      }
    }
    leaveReportLog.push({
      content: "[LeaveReport] reportData.length: ".concat(reportData.length),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] reportData.length: ".concat(reportData.length));
    console.log("[LeaveReport] reportData.length: ".concat(reportData.length));
    leaveReportLog.push({
      content: "[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length));
    console.log("[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length));
    for (var _i = 0; _i &lt; getDataFunc.length; _i++) {
      try {
        var data = getDataFunc[_i](initiative);
        if (isObj(data)) {
          reportData.push(data);
        }
      } catch (err) {
        leaveReportLog.push({
          content: "[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)),
          timestamp: Date.now()
        });
        Log.error("[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)));
        console.error("[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)));
      }
    }
    for (var _i2 = 0; _i2 &lt; reportData.length; _i2++) {
      if (reportData[_i2].reportUrl) {
        reportData[_i2].reportUrl = joinUrl(reportData[_i2].reportUrl);
      }
    }
    allReportData.data = {
      'requestList': reportData
    };
    leaveReportLog.push({
      content: "[LeaveReport] final reportData.length: ".concat(reportData.length, ", data=").concat(JSON.stringify(reportData)),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] final reportData.length: ".concat(reportData.length));
    console.log("[LeaveReport] final reportData.length: ".concat(reportData.length));
    allReportData.info = leaveReportLog;
    return allReportData;
  }
  function addReport(param) {
    if (typeof param === 'function') {
      getDataFunc.push(param);
    } else if (isObj(param)) {
      reportData.push(param);
    }
  }
  
  function addSpecificReport(reportField, param) {
    if (!specificData[reportField]) {
      specificData[reportField] = [];
    }
    specificData[reportField].push(param);
  }
  
  function reportNow(callback) {
    var allReportData = assembleReportData(true);
    R$4.invoke('handleMPPageAction', {
      action: 'reportByLeaveForMPGateway',
      reportData: allReportData
    }, function (res) {
      if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf(':ok') !== -1) {
        getDataFunc = [];
        reportData = [];
        specificData = {};
        typeof callback === 'function' &amp;&amp; callback(res);
      } else {
        getDataFunc = [];
        reportData = [];
        var len = allReportData.data.requestList.length;
        allReportData.data.requestList.forEach(function (req) {
          if (req.reportUrl) {
            AjaxRouter({
              type: req.method || 'GET',
              url: req.reportUrl,
              data: req.reportData,
              async: false,
              success: function success(resp) {
                if (--len &lt; 0) {
                  typeof callback === 'function' &amp;&amp; callback({
                    err_msg: 'handleMPPageAction:ok',
                    fallback: true,
                    resp: resp
                  });
                }
              },
              error: function error(xhr, err) {
                if (--len &lt; 0) {
                  typeof callback === 'function' &amp;&amp; callback({
                    err_msg: 'handleMPPageAction:fail',
                    fallback: true,
                    err: err
                  });
                }
              }
            });
          }
        });
      }
    });
  }
  var leaveReport = {
    reportNow: reportNow,
    addReport: addReport,
    addSpecificReport: addSpecificReport
  };
  var _leaveReport = (function () {
    var doc = {};
    var isCrossOrigin = false;
    try {
      doc = top.window.document;
    } catch (e) {
      isCrossOrigin = true;
    }
    if (!isCrossOrigin &amp;&amp; top.window.__leaveReport) {
      return top.window.__leaveReport;
    }
    if (window.__leaveReport) {
      return window.__leaveReport;
    }
    R$4.on('reportOnLeaveForMP', function () {
      return assembleReportData(false);
    });
    return window.__leaveReport = leaveReport;
  })();

  var getReportJson = function getReportJson(logId, rawData) {
    var data = JSON.parse(JSON.stringify(rawData));
    data.log_id = Number(logId);
    data.TimeStamp = Math.round(Date.now() / 1000);
    console.log('[comm_report] reportjson: ', data);
    return JSON.stringify(data);
  };
  var getSuccessHandler = function getSuccessHandler(logId, data, opt) {
    return function (res) {
      if (res &amp;&amp; res.err_code !== 0) {
        console.warn("[comm_report] report ".concat(logId, " fail: "), res.err_msg, data);
      }
      if (typeof opt.success === 'function') {
        opt.success(res);
      }
    };
  };
  var getErrorHandler = function getErrorHandler(logId, data, opt) {
    return function (xhr, info) {
      console.error("[comm_report] report ".concat(logId, " error: "), info, data);
      if (typeof opt.error === 'function') {
        opt.error(xhr, info);
      }
    };
  };
  var batchReportDataArr = [];
  var blackLogId = [25587, 18832, 28208, 25574, 29139, 10945];
  var BATCH_SIZE = 4;
  var BATCH_TIME = 1000;
  var getRepeatedReportJson = function getRepeatedReportJson() {
    if (!batchReportDataArr || !batchReportDataArr.length) return false;
    var reportData = {
      count: 0
    };
    reportData.count = batchReportDataArr.length;
    batchReportDataArr.forEach(function (data, index) {
      reportData["reportjson".concat(index)] = data;
    });
    batchReportDataArr = [];
    console.log('[reportData]: ', reportData);
    return reportData;
  };
  var timeOutId;
  function batchReport() {
    if (!batchReportDataArr || !batchReportDataArr.length) return;
    var repeatedReportJson = getRepeatedReportJson();
    if (!repeatedReportJson) return;
    AjaxRouter({
      type: 'POST',
      dataType: 'json',
      url: '/mp/wapcommreport?action=batch_report',
      data: repeatedReportJson,
      dontReport: true,
      success: function success(res) {
        if (res &amp;&amp; res.err_code) {
          console.warn("[comm_report] batch report fail: ", res.err_msg, batchReportDataArr);
        }
      },
      error: function error(xhr, info) {
        console.error("[comm_report] batch report error: ", info, batchReportDataArr);
      }
    });
  }
  function batchReportThrottle(logId, rawData) {
    var reportJsonData = getReportJson(logId, rawData);
    if (!reportJsonData) return;
    batchReportDataArr.push(reportJsonData);
    if (batchReportDataArr.length &gt;= BATCH_SIZE) {
      batchReport();
    } else {
      if (!timeOutId) {
        timeOutId = setTimeout(function () {
          batchReport();
          clearTimeout(timeOutId);
          timeOutId = null;
        }, BATCH_TIME);
      }
    }
  }
  _leaveReport.addReport(function () {
    var repeatedReportJson = getRepeatedReportJson();
    if (!repeatedReportJson) return false;
    var reportData = [];
    for (var _i = 0, _Object$entries = Object.entries(repeatedReportJson); _i &lt; _Object$entries.length; _i++) {
      var _Object$entries$_i = _slicedToArray$1(_Object$entries[_i], 2),
        key = _Object$entries$_i[0],
        value = _Object$entries$_i[1];
      reportData.push("".concat(key, "=").concat(encodeURIComponent(value)));
    }
    return {
      reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport?action=batch_report',
      reportData: reportData.join('&amp;'),
      method: 'POST'
    };
  });
  var w$5 = {
    report: function report(logId, rawData, rawOpt) {
      var opt = rawOpt || {};
      if (!opt.realTime &amp;&amp; !blackLogId.includes(logId)) {
        batchReportThrottle(logId, rawData);
      } else {
        AjaxRouter({
          type: 'POST',
          dataType: 'json',
          url: '/mp/wapcommreport',
          data: {
            reportjson: getReportJson(logId, rawData)
          },
          async: opt.async,
          success: getSuccessHandler(logId, rawData, opt),
          error: getErrorHandler(logId, rawData, opt)
        });
      }
    },
    leaveReport: function leaveReport(logId, rawData) {
      _leaveReport.addReport(function () {
        var data = typeof rawData === 'function' ? rawData() : rawData;
        if (!data) {
          return false;
        }
        return {
          reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport',
          reportData: "reportjson=".concat(encodeURIComponent(getReportJson(logId, data))),
          method: 'POST'
        };
      });
    },
    reportByBeacon: function reportByBeacon(logId, rawData) {
      try {
        if (!Device.os.android &amp;&amp; !Device.os.ios) {
          var data = typeof rawData === 'function' ? rawData() : rawData;
          if (!data) {
            return false;
          }
          var url = '/mp/wapcommreport';
          var reportJsonData = encodeURIComponent(getReportJson(logId, data));
          console.log("reportByBeacon", JSON.stringify(reportJsonData));
          navigator.sendBeacon(Url.joinUrl(url), "reportjson=".concat(reportJsonData));
        } else {
          _leaveReport.addReport(function () {
            var data = typeof rawData === 'function' ? rawData() : rawData;
            if (!data) {
              return false;
            }
            return {
              reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport',
              reportData: "reportjson=".concat(encodeURIComponent(getReportJson(logId, data))),
              method: 'POST'
            };
          });
        }
      } catch (error) {
        console.log(error);
      }
    }
  };

  function getCommonReportData() {
    return {
      Referer: location.href,
      UserAgent: navigator.userAgent,
      Protocol: location.protocol || '',
      Origin: location.host || ''
    };
  }
  var report36408 = function report36408(data) {
    w$5.report(36408, Object.assign(Object.assign({}, data), getCommonReportData()));
  };

  
  var ajax = function ajax(obj) {
    obj.report36408 = report36408;
    AjaxRouter(obj);
  };

  
  var timer = null;
  var jsmonitorReport = {
    setSum: function setSum(id, key, value) {
      throw new Error('Function not implemented.');
    },
    setAvg: function setAvg(id, key, value) {
      throw new Error('Function not implemented.');
    },
    setLogs: function setLogs(opt) {
      throw new Error('Function not implemented.');
    },
    send: function send(async) {
      throw new Error('Function not implemented.');
    }
  };
  window.__monitor_unload_has_done__ = false;
  jsmonitorReport.setSum = function (id, key, value) {
    monitor$1.setSum(id, key, value);
    return jsmonitorReport;
  };
  jsmonitorReport.setAvg = function (id, key, value) {
    monitor$1.setAvg(id, key, value);
    return jsmonitorReport;
  };
  jsmonitorReport.setLogs = function (opt) {
    monitor$1.setLogs(opt);
    return jsmonitorReport;
  };
  jsmonitorReport.send = function (async) {
    if (async !== false) {
      async = true;
    }
    monitor$1.send(async, ajax);
    return jsmonitorReport;
  };
  function reportInterval(fn, delay) {
    timer = window.setTimeout(function () {
      fn();
      reportInterval(fn, delay);
    }, delay);
  }
  reportInterval(function () {
    jsmonitorReport.send();
  }, 1 * 1000);
  window.addEventListener('unload', function () {
    if (window.__monitor_report_has_done__) return;
    window.__ajaxtest = '2';
    if (timer) {
      window.clearTimeout(timer);
      timer = null;
    }
    jsmonitorReport.send(false);
    window.__monitor_unload_has_done__ = true;
  }, false);
  if (window.__jsmonitorReport) {
    jsmonitorReport = window.__jsmonitorReport;
  } else {
    window.__jsmonitorReport = jsmonitorReport;
  }
  var jsmonitorReport$1 = jsmonitorReport;
  
  function saveSpeeds(opt) {
    var sample = 0.001;
    if (typeof opt.sample === 'number') {
      sample = opt.sample;
    }
    var rand = Math.random();
    if (rand &lt; sample) {
      wxgsdk.saveSpeeds(opt);
    }
  }
  function setBasicTime(opt) {
    var sample = opt.sample || 0.001;
    var rand = Math.random();
    if (rand &lt; sample) {
      wxgsdk.setBasicTime(opt);
    }
  }
  function send() {
    wxgsdk.send();
  }
  function jsmonitor(opt) {
    opt = opt || [];
    if (!Array.isArray(opt)) {
      var item = opt;
      opt = [];
      opt.push(item);
    }
    for (var i = 0; i &lt; opt.length; i++) {
      var _item = opt[i];
      var id = _item.id;
      var key = _item.key;
      var value = _item.value || 1;
      if (id !== undefined &amp;&amp; key !== undefined) {
        jsmonitorReport$1.setSum(id, key, value);
      }
    }
  }
  var wxgspeedsdk = {
    saveSpeeds: saveSpeeds,
    setBasicTime: setBasicTime,
    send: send,
    jsmonitor: jsmonitor
  };

  function _arrayWithoutHoles$1(arr) {
    if (Array.isArray(arr)) return _arrayLikeToArray$1(arr);
  }

  function _iterableToArray$1(iter) {
    if (typeof Symbol !== "undefined" &amp;&amp; iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
  }

  function _nonIterableSpread$1() {
    throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }

  function _toConsumableArray$1(arr) {
    return _arrayWithoutHoles$1(arr) || _iterableToArray$1(arr) || _unsupportedIterableToArray$1(arr) || _nonIterableSpread$1();
  }

  var uuid = function uuid() {
    return ((1 + Math.random()) * 0x10000 | 0).toString(16).substring(1);
  };

  var WRAP_TAG = 'span';
  var IMG_TAG = 'IMG';
  var NODE_TYPE = {
    text: 1,
    img: 2
  };
  var blockEleTagName = ['P', 'DIV', 'SECTION', 'LI', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'TABLE', 'PRE', 'BLOCKQUOTE'];
  var exceptEleClassName = ['js_product_container', 'js_blockquote_wrap'];
  var ignoreTagName = ['IFRAME', 'VIDEO', 'MPVOICE', 'MPGONGYI', 'QQMUSIC', 'MPSHOP', 'MP-WEAPP', 'MP-MINIPROGRAM', 'MPPRODUCT', 'MPCPS'];
  var ignoreEleId = ['js_mpvideo'];
  var ignoreEleClassName = ['js_product_container'];
  var TEMP_NODES = {};

  var childNodesHasEle = function childNodesHasEle(element) {
    var tagNameList = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : blockEleTagName;
    if (!element || element.nodeType !== 1) {
      return false;
    }
    for (var i = 0; i &lt; element.children.length; i++) {
      if (tagNameList.indexOf(element.children[i].tagName) !== -1) {
        return true;
      }
    }
    return false;
  };
  function eleHasAttr(ele) {
    var attr = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 'className';
    var AttrList = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : exceptEleClassName;
    for (var i = 0; i &lt; AttrList.length; i++) {
      if (ele[attr] &amp;&amp; typeof ele[attr] === 'string' &amp;&amp; ele[attr].indexOf(AttrList[i]) &gt; -1) {
        return true;
      }
    }
    return false;
  }
  var removeChildMedia = function removeChildMedia(element) {
    var parentNode = element.parentNode;
    element.parentNode.removeChild(element);
    if (parentNode.children &amp;&amp; parentNode.children.length) {
      return false;
    }
    return true;
  };

  
  var getParaList = function getParaList(element, _ref) {
    var _ref$getNestedStructu = _ref.getNestedStructure,
      getNestedStructure = _ref$getNestedStructu === void 0 ? true : _ref$getNestedStructu,
      _ref$removeIgoreEle = _ref.removeIgoreEle,
      removeIgoreEle = _ref$removeIgoreEle === void 0 ? false : _ref$removeIgoreEle;
    var paraList = function getParaListWithIndex(ele, getNested) {
      var childNodes = ele.children;
      if (!childNodes) return [];
      if (!childNodes.length) {
        return childNodes;
      }
      var child;
      var paragraphList = [];
      for (var i = 0; i &lt; childNodes.length; i++) {
        child = childNodes[i];
        if (eleHasAttr(child, 'id', ignoreEleId) || eleHasAttr(child, 'className', ignoreEleClassName)) {
          if (removeIgoreEle) {
            child.parentNode.removeChild(child);
            i -= 1;
          }
          continue;
        }
        if (childNodesHasEle(child, ignoreTagName)) {
          if (removeIgoreEle) {
            removeChildMedia(child);
            i -= 1;
          }
          continue;
        }
        if (childNodesHasEle(child, blockEleTagName) &amp;&amp; !eleHasAttr(child)) {
          paragraphList = paragraphList.concat(getParaListWithIndex(child, getNested));
          if (getNested) {
            if (!child.getAttribute('data-index')) {
              paragraphList.push(child);
            }
          }
        } else {
          if (!child.getAttribute('data-index')) {
            paragraphList.push(child);
          }
        }
      }
      return paragraphList;
    }(element, getNestedStructure);
    return [].slice.call(paraList);
  };
  getParaList.paragraphStartIdx = 1000000;

  
  var getSplitTextNode = function getSplitTextNode($textNode, startOffset, endOffset, paraIndex) {
    try {
      $textNode.splitText(startOffset);
    } catch (err) {
      if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
        WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'splitText Error', {
          mid: 'mmbizwap:articlemask_Monitor',
          view: 'wap_business',
          _info: {
            type: 'getSplitTextNode textnode',
            startOffset: startOffset,
            endOffset: endOffset
          }
        });
      }
    }
    var selectedNode = $textNode.nextSibling;
    try {
      selectedNode.splitText(endOffset - startOffset);
    } catch (e) {
      if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
        WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'splitText Error', {
          mid: 'mmbizwap:articlemask_Monitor',
          view: 'wap_business',
          _info: {
            type: 'getSplitTextNode nextSibling',
            startOffset: startOffset,
            endOffset: endOffset
          }
        });
      }
    }
    return [{
      $node: selectedNode,
      type: NODE_TYPE.text,
      idx: paraIndex
    }];
  };

  
  var getBlockNode = function getBlockNode($node) {
    if (blockEleTagName.indexOf($node.tagName) !== -1 &amp;&amp; typeof $node.dataset.index !== 'undefined') {
      return $node;
    }
    return getBlockNode($node.parentNode);
  };

  
  var getPureBlockNode = function getPureBlockNode($node) {
    if (!$node) return $node;
    if (blockEleTagName.indexOf($node.tagName) !== -1) {
      return $node;
    }
    return getPureBlockNode($node.parentNode);
  };

  
  var getNodesByDFS = function getNodesByDFS(range) {
    var start = range.start,
      end = range.end,
      $container = range.$container;
    var $startNode = start.$node,
      startOffset = start.offset;
    var $endNode = end.$node,
      endOffset = end.offset;
    var queue = [];
    var result = [];
    var withinSelectRange = false;
    var achiveSelectRangeEnd = false;
    var paraIndex = 0;
    queue.push($container);
    while (queue.length &gt; 0) {
      var item = queue.pop();
      var nodeType = item.nodeType,
        tagName = item.tagName;
      if (item.dataset &amp;&amp; item.dataset.index) {
        paraIndex = +item.dataset.index;
      }
      if (withinSelectRange &amp;&amp; !achiveSelectRangeEnd) {
        if (nodeType === 3) {
          result.push({
            $node: item,
            type: NODE_TYPE.text,
            idx: paraIndex
          });
        }
        if (tagName === IMG_TAG) {
          result.push({
            $node: item,
            type: NODE_TYPE.img,
            idx: paraIndex
          });
        }
      }
      if (item === $startNode) {
        if (nodeType === 3) {
          try {
            item.splitText(startOffset);
          } catch (e) {
            WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'splitText Error', {
              mid: 'mmbizwap:articlemask_Monitor',
              view: 'wap_business',
              _info: {
                type: 'getNodes startNode',
                startOffset: startOffset,
                endOffset: endOffset
              }
            });
          }
          var $startTextNode = item.nextSibling;
          result.push({
            $node: $startTextNode,
            type: NODE_TYPE.text,
            idx: paraIndex
          });
        } else if (tagName === IMG_TAG) {
          result.push({
            $node: item,
            type: NODE_TYPE.img,
            idx: paraIndex
          });
        } else {
          result.push({
            $node: item,
            type: NODE_TYPE.text,
            idx: paraIndex
          });
        }
        withinSelectRange = true;
      }
      if (item === $endNode || achiveSelectRangeEnd) {
        if (!achiveSelectRangeEnd) {
          achiveSelectRangeEnd = true;
        }
        if (item === $endNode) result.pop();
        if (nodeType === 3) {
          try {
            item.splitText(endOffset);
          } catch (e) {
            if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
              WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'splitText Error', {
                mid: 'mmbizwap:articlemask_Monitor',
                view: 'wap_business',
                _info: {
                  type: 'getSplitTextNode endNode',
                  startOffset: startOffset,
                  endOffset: endOffset
                }
              });
            }
          }
          result.push({
            $node: item,
            type: NODE_TYPE.text,
            idx: paraIndex
          });
          break;
        } else if (tagName === IMG_TAG) {
          result.push({
            $node: item,
            type: NODE_TYPE.img,
            idx: paraIndex
          });
          break;
        } else {
          var _children = item.childNodes;
          for (var i = _children.length - 1; i &gt;= 0; i--) {
            queue.push(_children[i]);
          }
        }
      }
      var children = item.childNodes;
      for (var _i = children.length - 1; _i &gt;= 0; _i--) {
        queue.push(children[_i]);
      }
    }
    return result;
  };

  
  var getSelectedNodes = function getSelectedNodes(range) {
    var start = range.start,
      end = range.end;
    var $startNode = start.$node,
      startOffset = start.offset;
    var $endNode = end.$node,
      endOffset = end.offset;
    if ($startNode === $endNode &amp;&amp; $startNode instanceof Text) {
      return getSplitTextNode($startNode, startOffset, endOffset, start.paraIndex);
    }
    return getNodesByDFS(range);
  };

  
  var checkTextNode = function checkTextNode($node) {
    return $node &amp;&amp; ($node.nodeValue || $node.innerText);
  };
  var connectSiblingText = function connectSiblingText(prev, next, target) {
    var $delete = target === prev ? next : prev;

    
    if (!checkTextNode(prev) || !checkTextNode(next)) {
      return $delete;
    }
    var text = (prev.nodeValue || prev.innerText) + (next.nodeValue || next.innerText);
    target.nodeValue = text;
    target.parentNode.removeChild($delete);
    return target;
  };

  
  var getTextNodeByOffset = function getTextNodeByOffset($parentNode, offset) {
    var queue = [];
    var curOffset = 0;
    var startOffset = 0;
    var $curNode;
    queue.push($parentNode);
    while (queue.length &gt; 0) {
      $curNode = queue.pop();
      if ($curNode.nodeType === 3) {
        startOffset = offset - curOffset;
        curOffset += $curNode.textContent.length;
        if (curOffset &gt;= offset) {
          break;
        }
      }
      var children = $curNode.childNodes;
      for (var i = children.length - 1; i &gt;= 0; i--) {
        queue.push(children[i]);
      }
    }
    return {
      $parentNode: $parentNode,
      $node: $curNode,
      offset: startOffset
    };
  };

  
  function getBlockOffset(_ref2) {
    var $blockNode = _ref2.$blockNode,
      $node = _ref2.$node;
    if ($blockNode === null) {
      return null;
    }
    var queue = [];
    var offset = 0;
    queue.push($blockNode);
    while (queue.length &gt; 0) {
      var item = queue.pop();
      if (item.nodeType === 3 &amp;&amp; item.nodeValue !== $node.nodeValue) {
        offset += item.textContent.length;
      } else if (item.nodeType === 1) {
        offset += 1;
        if (item === $node) break;
      } else if (item.nodeValue === $node.nodeValue) {
        offset += item.textContent.length;
        break;
      }
      var children = item.childNodes;
      for (var i = children.length - 1; i &gt;= 0; i--) {
        queue.push(children[i]);
      }
    }
    return offset;
  }

  
  var getDomMeta = function getDomMeta(selection) {
    selection.$node;
      var $parentNode = selection.$parentNode;
    var parentIndex = Number($parentNode.dataset.index);
    var offset = getBlockOffset($parentNode);
    return {
      parentIndex: parentIndex,
      fromParentoffset: offset
    };
  };
  function nodeToSelection($node) {
    var $blockNode = getBlockNode($node);
    var paraIndex = +$blockNode.dataset.index;
    var offset = 0;
    var item = {
      $blockNode: $blockNode,
      $node: $node,
      paraIndex: paraIndex,
      offset: offset
    };
    var id = uuid();
    return {
      start: item,
      end: item,
      id: id
    };
  }

  
  var getSelection = function getSelection() {
    var selection = window.getSelection();
    if (selection.anchorNode === null) {
      return null;
    }
    var selectionRange = selection.getRangeAt(0);
    if (!selectionRange || !selection.toString()) {
      return null;
    }
    var startContainer = selectionRange.startContainer,
      endContainer = selectionRange.endContainer,
      commonAncestorContainer = selectionRange.commonAncestorContainer,
      startOffset = selectionRange.startOffset,
      endOffset = selectionRange.endOffset;
    var $startBlockNode = getBlockNode(startContainer);
    var $endBlockNode = getBlockNode(endContainer);
    var startIndex = $startBlockNode &amp;&amp; $startBlockNode.dataset.index;
    var endIndex = $endBlockNode &amp;&amp; $endBlockNode.dataset.index;
    var start = {
      $blockNode: $startBlockNode,
      $node: startContainer,
      offset: startOffset,
      paraIndex: Number(startIndex)
    };
    var end = {
      $blockNode: $endBlockNode,
      $node: endContainer,
      offset: endOffset,
      paraIndex: Number(endIndex)
    };
    var $container = typeof commonAncestorContainer === 'string' ? commonAncestorContainer.parentNode : commonAncestorContainer;
    var id = uuid();
    return {
      start: start,
      end: end,
      $container: $container,
      id: id
    };
  };

  
  var transferTextToElement = function transferTextToElement($node, id) {
    if (!$node) return null;
    if ($node.nodeType === 3) {
      var $wrap = document.createElement(WRAP_TAG);
      $wrap.setAttribute('data-splitid', id);
      $wrap.appendChild($node.cloneNode(false));
      if ($node.parentNode) {
        $node.parentNode.replaceChild($wrap, $node);
      }
      return $wrap;
    }
    return $node;
  };

  
  var serialize = function serialize(selectionRange) {
    var start = selectionRange.start,
      end = selectionRange.end,
      id = selectionRange.id;
    var startParaOffset = getBlockOffset(start);
    var endParaOffset = start.$node === end.$node ? end.offset - start.offset + startParaOffset : getBlockOffset(end);
    var meta = {
      id: id,
      start: {
        para_offset: startParaOffset,
        para_index: start.paraIndex
      },
      end: {
        para_offset: endParaOffset,
        para_index: end.paraIndex
      }
    };
    return meta;
  };
  var mapMetaToLocal = function mapMetaToLocal(paraList) {
    return function (meta) {
      var paraOffset = meta.para_offset,
        paraIndex = meta.para_index;
      var $blockNode = paraList[paraIndex];
      var queue = [];
      var curOffset = 0;
      var offset = 0;
      var $curNode;
      queue.push($blockNode);
      while (queue.length &gt; 0) {
        $curNode = queue.pop();
        if ($curNode.nodeType === 3) {
          offset = paraOffset - curOffset;
          curOffset += $curNode.textContent.length;
          if (curOffset &gt;= paraOffset) {
            break;
          }
        }
        if ($curNode.nodeType === 1) {
          offset = paraOffset - curOffset;
          curOffset += 1;
          if (curOffset &gt;= paraOffset) {
            break;
          }
        }
        var children = $curNode.childNodes;
        for (var i = children.length - 1; i &gt;= 0; i--) {
          queue.push(children[i]);
        }
      }
      return {
        $blockNode: $blockNode,
        $node: $curNode,
        offset: offset,
        paraIndex: paraIndex
      };
    };
  };
  
  var deSerialize = function deSerialize(meta, paraList, $container) {
    var desparaList = mapMetaToLocal(paraList);
    return {
      start: desparaList(meta.start),
      end: desparaList(meta.end),
      id: meta.id,
      $container: $container
    };
  };
  function getTextNode($node) {
    if ($node.tagName === IMG_TAG || $node.nodeType === 3) {
      return $node;
    }
    return $node.childNodes[0];
  }
  var resetRange = function resetRange(selectionRange) {
    window.getSelection().removeAllRanges();
    var selection = window.getSelection();
    var range = document.createRange();
    var $startnode = getTextNode(TEMP_NODES.start);
    var $endnode = getTextNode(TEMP_NODES.end);
    range.setStart($startnode, selectionRange.start.offset);
    range.setEnd($endnode, selectionRange.end.offset);
    selection.addRange(range);
  };
  var getNodeIndex = function getNodeIndex($block, $node) {
    var queue = [];
    var index = 0;
    queue.push($block);
    while (queue.length &gt; 0) {
      var $item = queue.pop();
      if ($item === $node) break;
      index++;
      var children = $item.children;
      for (var i = 0; i &lt; children.length; i++) {
        queue.push(children[i]);
      }
    }
    return index;
  };
  var getNodeByIndex = function getNodeByIndex($block, index) {
    var queue = [];
    var cursor = 0;
    var $result = null;
    queue.push($block);
    while (queue.length &gt; 0) {
      var $item = queue.pop();
      if (cursor === index) {
        $result = $item;
        break;
      }
      cursor++;
      var children = $item.children;
      for (var i = 0; i &lt; children.length; i++) {
        queue.push(children[i]);
      }
    }
    return $result;
  };
  var hasClass = function hasClass(cls, className) {
    if (cls &amp;&amp; typeof cls === 'string' &amp;&amp; cls.indexOf(className) !== -1) {
      return true;
    }
    return false;
  };
  var inWhiteList = function inWhiteList(classAttr) {
    var classWhiteList = 'rich_pages,blockquote_info,blockquote_biz,blockquote_other,blockquote_article,js_jump_icon,h5_image_link,js_banner_container,js_list_container,js_cover,js_tx_video_container,js_product_err_container,js_product_loop_content,js_product_container,img_loading,list-paddingleft-1,list-paddingleft-2,list-paddingleft-3,selectTdClass,noBorderTable,ue-table-interlace-color-single,ue-table-interlace-color-double,__bg_gif,weapp_image_link,js_img_loading,wx_video_context,db,wx_video_thumb_primary,wx_video_play_btn,wx_video_mask,qqmusic_area,tc,tips_global,unsupport_tips,qqmusic_wrp,appmsg_card_context,appmsg_card_active,wx_tap_card,js_wx_tap_highlight,wx_tap_link,qqmusic_bd,play_area,icon_qqmusic_switch,pic_qqmusic_default,qqmusic_thumb,access_area,qqmusic_songname,qqmusic_singername,qqmusic_source,js_audio_frame,share_audio_context,flex_context,pages_reset,share_audio_switch,icon_share_audio_switch,share_audio_info,flex_bd,share_audio_title,share_audio_tips,share_audio_progress_wrp,share_audio_progress,share_audio_progress_inner,share_audio_progress_buffer,share_audio_progress_loading,share_audio_progress_loading_inner,share_audio_progress_handle,share_audio_desc,share_audio_length_current,share_audio_length_total,video_iframe,vote_iframe,js_editor_vote_card,res_iframe,card_iframe,js_editor_card,weapp_display_element,js_weapp_display_element,weapp_card,app_context,weapp_card_bd,weapp_card_profile,radius_avatar,weapp_card_avatar,weapp_card_nickname,weapp_card_info,weapp_card_title,weapp_card_thumb_wrp,weapp_card_ft,weapp_card_logo,js_pay_btn,pay,pay__mask,wx_video_loading,js_redpacketcover,js_uneditable,js_uneditablemouseover,js_editor_qqmusic,js_img_placeholder,js_editor_audio,ct_geography_loc_tip,js_poi_entry,js_mention_entry,product_text_link,js_plain-music_entry'.split(',');
    var qaClassPrefix = 'qa__';
    var classWhiteListReg = [new RegExp('^weui'), new RegExp('^appmsg'), new RegExp('^audio'), new RegExp('^music'), new RegExp('^cps_inner'), new RegExp('^bizsvr_'), new RegExp('^code-snippet'), new RegExp('^' + qaClassPrefix), new RegExp('^wx-edui-'), new RegExp('^wx_'), new RegExp('^wx-'), new RegExp('^custom_select_card_')
    ];
    if (!classAttr) return null;
    var classList = classAttr.split(/\s+/);
    var newClassList = [];
    for (var i = 0, len = classList.length; i &lt; len; ++i) {
      var className = classList[i];
      if (className &amp;&amp; classWhiteList.indexOf(className) !== -1) {
        newClassList.push(className);
      } else {
        for (var j = 0, jl = classWhiteListReg.length; j &lt; jl; j++) {
          if (classWhiteListReg[j].test(className)) {
            newClassList.push(className);
            break;
          }
        }
      }
    }
    var str = newClassList.join('.');
    return str &amp;&amp; '.' + str;
  };
  var getNodeSelector = function getNodeSelector(node) {
    var selector = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : '';
    var root = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : document.body;
    if (!node || node === root) return selector;
    var id = node.getAttribute('id');
    var className = node.getAttribute('class');
    var tagName = node.tagName.toLowerCase();
    var currentSelector = null;
    if (id &amp;&amp; !hasClass(className, 'articlepart-selector-area_choice-button_wrap')) return selector ? "#".concat(id, "&gt;").concat(selector) : "#".concat(id);
    var whiteClassName = inWhiteList(className);
    if (whiteClassName) {
      currentSelector = whiteClassName;
    } else if (hasClass(className, 'js_choice-img')) {
      currentSelector = '.js_choice-img';
    } else if (hasClass(className, 'articlepart-selector-area_choice')) {
      currentSelector = node.dataset.splitid ? '' : tagName;
    } else {
      currentSelector = tagName;
    }
    return getNodeSelector(node.parentNode, [currentSelector, selector].filter(function (item) {
      return !!item;
    }).join('&gt;'), root);
  };
  var getNodeSelectorWrap = function getNodeSelectorWrap(node, root) {
    var selector = getNodeSelector(node, '', root);
    var collect = [];
    try {
      collect = root.querySelectorAll(selector);
    } catch (error) {
      console.log('get node selector wrap err', error);
    }
    var len = collect.length;
    var index = null;
    for (var i = 0; i &lt; len; i++) {
      if (node === collect[i]) {
        index = i;
        break;
      }
    }
    if (index === null) {
      if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
        WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'selector:node not find', {
          mid: 'mmbizwap:articlemask_Monitor',
          view: 'wap_business',
          _info: {
            selector: selector
          }
        });
      }
    }
    var newSelector = (selector || '').replace('&gt;.js_choice-img&gt;', '&gt;') + "|".concat(len, " ").concat(index || 0);
    return newSelector;
  };
  
  var serializeToC = function serializeToC(nodes) {
    return (
      nodes.map(function (item) {
        var $node = item.$node,
          type = item.type,
          idx = item.idx;
        var index = 0;
        var data = null;
        var meta = '';
        var blockItem = getBlockNode($node);
        if (type === NODE_TYPE.text) {
          var nodeIndex = getNodeIndex(blockItem, $node.parentNode);
          if ($node &amp;&amp; $node.data) {
            index = nodeIndex;
            data = $node.data;
            meta = $node.previousSibling &amp;&amp; $node.previousSibling.data;
          }
        } else if (type === NODE_TYPE.img) {
          var imgs = blockItem.getElementsByTagName('img');
          data = $node.src;
          index = Array.prototype.slice.call(imgs).slice(0).indexOf($node);
        }
        return {
          data: data,
          index: index,
          idx: idx,
          type: type,
          meta: meta
        };
      }).filter(function (item) {
        return item.index &gt; -1 &amp;&amp; !!item.data;
      })
    );
  }
  ;
  var serializeToC2 = function serializeToC2(nodes, $container) {
    var root = $container || document.getElementById('js_content');
    return nodes.map(function (item) {
      var $node = item.$node,
        type = item.type,
        idx = item.idx;
      var selector = null;
      var data = null;
      var meta = '';
      if (type === NODE_TYPE.text) {
        if ($node &amp;&amp; $node.data) {
          selector = getNodeSelectorWrap($node.parentNode, root);
          data = $node.data;
          meta = $node.previousSibling &amp;&amp; $node.previousSibling.data;
        }
      } else if (type === NODE_TYPE.img) {
        selector = getNodeSelectorWrap($node, root);
        data = $node.src;
      }
      return {
        data: data,
        idx: idx,
        type: type,
        meta: meta,
        selector: selector
      };
    }).filter(function (item) {
      return !!item.selector &amp;&amp; !!item.data;
    });
  };
  function setProperty(el, name, value, priority) {
    if (!!el.style.setProperty) {
      priority = priority || null;
      el.style.setProperty(name, value, priority);
    } else if (typeof el.style.cssText !== 'undefined') {
      priority = priority ? '!' + priority : '';
      el.style.cssText += ';' + name + ':' + value + priority + ';';
    }
  }

  
  function hasImgNode($el) {
    if (!$el) return false;
    var nodeType = $el.nodeType,
      tagName = $el.tagName;
    if (nodeType === 3) {
      return false;
    }
    if (tagName === IMG_TAG) {
      return true;
    }
    return false;
  }
  function getContent(tree) {
    return tree.reduce(function (acc, cur, idx) {
      if (idx === 0) {
        if (cur.type === NODE_TYPE.text) {
          acc.text.push(cur.data);
        } else if (cur.type === NODE_TYPE.img) {
          acc.pic.push(cur.data);
        }
        return acc;
      }
      if (cur.type === NODE_TYPE.text) {
        if (tree[idx - 1].type === NODE_TYPE.text) {
          var text = acc.text.pop();
          text += cur.data;
          acc.text.push(text);
        } else {
          acc.text.push(cur.data);
        }
        return acc;
      }
      if (cur.type === NODE_TYPE.img) {
        acc.pic.push(cur.data);
      }
      return acc;
    }, {
      audio: [],
      pic: [],
      video: [],
      text: []
    });
  }
  function saveNode($node, key) {
    TEMP_NODES[key] = $node;
  }

  
  function serializeNode($node, $wrap) {
    var range = nodeToSelection($node);
    var anchorTree = serializeToC2([{
      $node: $node,
      type: NODE_TYPE.img,
      idx: range.start.paraIndex
    }], $wrap);
    var anchorMeta = serialize(range);
    var anchorBrief = getContent(anchorTree);
    return {
      meta: {
        anchorTree: anchorTree,
        anchorMeta: anchorMeta,
        anchorBrief: anchorBrief
      },
      range: range
    };
  }
  function findChildIndex(parent, offset) {
    var childNodes = parent.childNodes;
    var realOffset = offset;
    var $node = null;
    var i = 0;
    for (i = 0; i &lt; childNodes.length; i++) {
      $node = childNodes[i];
      if ($node.nodeType === 3) {
        var len = $node.length;
        if (len &gt; realOffset) {
          break;
        } else {
          realOffset -= len;
        }
      }
    }
    return {
      $node: $node,
      cursor: realOffset
    };
  }
  
  var qs$1 = function qs(selector, el) {
    return (el || document).querySelector(selector);
  };

  
  var qsAll$1 = function qsAll(selector, el) {
    return (el || document).querySelectorAll(selector);
  };
  var dom = {
    getDomMeta: getDomMeta,
    getContent: getContent,
    getParaList: getParaList,
    getBlockNode: getBlockNode,
    getSelectedNodes: getSelectedNodes,
    connectSiblingText: connectSiblingText,
    getTextNodeByOffset: getTextNodeByOffset,
    getBlockOffset: getBlockOffset,
    getSelection: getSelection,
    transferTextToElement: transferTextToElement,
    serialize: serialize,
    deSerialize: deSerialize,
    resetRange: resetRange,
    serializeToC: serializeToC,
    setProperty: setProperty,
    hasImgNode: hasImgNode,
    nodeToSelection: nodeToSelection,
    saveNode: saveNode,
    serializeNode: serializeNode,
    getNodeByIndex: getNodeByIndex,
    findChildIndex: findChildIndex,
    serializeToC2: serializeToC2,
    blockEleTagName: blockEleTagName,
    getPureBlockNode: getPureBlockNode,
    qs: qs$1,
    qsAll: qsAll$1,
    hasClass: hasClass
  };

  function ownKeys$b(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r &amp;&amp; (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
  function _objectSpread$b(e) { for (var r = 1; r &lt; arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$b(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$b(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
  var paraList = [];
  var totalHit = 0;

  var STATUS = {
    auditing: 1,
    ban: 2
  };
  function keyby(arr, key) {
    return arr.reduce(function (acc, item) {
      if (typeof item[key] === 'undefined') return acc;
      if (!acc[item[key]]) acc[item[key]] = [];
      acc[item[key]].push(item);
      return acc;
    }, {});
  }

  function getBannerWord(anchor) {
    return '以下内容存在争议 &lt;a style="color: var(--weui-LINK);" target="_blank" href="https://mp.weixin.qq.com/s/_2kC-fXw7UjneZSrsC9CVQ"&gt;了解更多&lt;/a&gt;';
  }
  function addBanner(node, text) {
    var paraNode = _typeof$3(node) === 'object' ? node : paraList[node];
    if (paraNode.dataset.hasBanner) return;
    var divNode = document.createElement('div');
    divNode.dataset.hasBanner = 1;
    divNode.style = 'background-color: var(--weui-BG-1);font-size: 14px;color: var(--weui-FG-2);text-align: left;margin-top: 20px;margin-bottom: 4px;padding: 4px 8px 6px 8px;border-radius:4px;';
    var iconNode = document.createElement('span');
    iconNode.style = 'color: var(--weui-FG-0);padding: 2px;display: inline-block;vertical-align: middle; width: 20px;height: 20px;margin-right: 4px; background-size: cover;background-position: center center;-webkit-mask: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' width=\'20\' height=\'20\' viewBox=\'0 0 20 20\'%3E  %3Cpath fill-opacity=\'.3\' fill-rule=\'evenodd\' d=\'M10 1.667a8.333 8.333 0 1 1 0 16.666 8.333 8.333 0 0 1 0-16.666zm-.004 11.115a.732.732 0 0 0-.746.735c0 .416.33.735.746.735a.73.73 0 0 0 .752-.735.73.73 0 0 0-.752-.735zm.638-7.669h-1.27l.091 6.33h1.088l.091-6.33z\'/%3E%3C/svg%3E") no-repeat 50% 50%;mask: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' width=\'20\' height=\'20\' viewBox=\'0 0 20 20\'%3E  %3Cpath fill-opacity=\'.3\' fill-rule=\'evenodd\' d=\'M10 1.667a8.333 8.333 0 1 1 0 16.666 8.333 8.333 0 0 1 0-16.666zm-.004 11.115a.732.732 0 0 0-.746.735c0 .416.33.735.746.735a.73.73 0 0 0 .752-.735.73.73 0 0 0-.752-.735zm.638-7.669h-1.27l.091 6.33h1.088l.091-6.33z\'/%3E%3C/svg%3E") no-repeat 50% 50%;background-color: currentColor;';
    var textNode = document.createElement('span');
    textNode.style = 'display: inline-block;line-height: 14px;vertical-align: middle;';
    textNode.innerHTML = text;
    divNode.appendChild(iconNode);
    divNode.appendChild(textNode);
    paraNode.parentNode.insertBefore(divNode, paraNode, null);
    paraNode.dataset.hasBanner = 1;
  }
  function maskText(data, domNode, cursor) {
    var len = data.length;
    var maskMat = _toConsumableArray$1(Array(len)).map(function () {
      return '〇';
    }).join('');
    var childNodes = domNode.childNodes;
    var newCursor = cursor;
    for (var i = 0; i &lt; childNodes.length; i++) {
      var node = childNodes[i];
      if (node.nodeType === 3) {
        if (newCursor &gt; node.data.length) {
          newCursor -= node.data.length;
        } else {
          node.data = node.data.slice(0, newCursor).concat(maskMat).concat(node.data.slice(newCursor + len));
        }
      } else if (node.nodeText === 1) {
        newCursor -= node.innerText &amp;&amp; node.innerText.length || 0;
      }
    }
  }
  function disputeText(data, domNode, cursor) {
    var len = data.length;
    var _dom$findChildIndex = dom.findChildIndex(domNode, cursor),
      textNode = _dom$findChildIndex.$node,
      realOffset = _dom$findChildIndex.realOffset;
    try {
      textNode.splitText(realOffset);
    } catch (e) {
      if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
        WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'splitText Error', {
          mid: 'mmbizwap:articlemask_Monitor',
          view: 'wap_business',
          _info: {
            type: 'disputeText textNode',
            data: data,
            cursor: cursor
          }
        });
      }
    }
    var repalcedNode = textNode.nextSibling;
    try {
      repalcedNode.splitText(len);
    } catch (e) {
      if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
        WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'splitText Error', {
          mid: 'mmbizwap:articlemask_Monitor',
          view: 'wap_business',
          _info: {
            type: 'disputeText nextSibling',
            data: data,
            cursor: cursor
          }
        });
      }
    }
    var spanNode = document.createElement('span');
    spanNode.style = 'background-color: rgba(0,0,0,0.10);';
    spanNode.appendChild(repalcedNode.cloneNode(true));
    repalcedNode.parentNode.replaceChild(spanNode, repalcedNode);
  }
  function disputeImage(data, domNode) {
    var spanNode = document.createElement('span');
    spanNode.style = 'position:relative;display: inline-block;';
    var iconNode = document.createElement('span');
    iconNode.style = "\n            position: absolute;\n            top: 4px;\n            left: 4px;\n            display: inline-block;\n            vertical-align: middle;\n            width: 24px;\n            height: 24px;\n            background-size: cover;\n            background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E  %3Cpath fill='%23FFF' fill-rule='evenodd' d='M12 2c5.523 0 10 4.477 10 10s-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2zm-.004 13.339a.878.878 0 0 0-.896.882c0 .499.396.882.896.882.512 0 .902-.383.902-.882 0-.5-.39-.882-.902-.882zm.765-9.203h-1.524l.11 7.596h1.305l.11-7.596z'/%3E%3C/svg%3E\");\n    ";
    var parent = domNode.parentNode;
    spanNode.appendChild(domNode.cloneNode(false));
    parent.replaceChild(spanNode, domNode);
    spanNode.appendChild(iconNode);
  }
  function maskImage(data, domNode) {
    domNode.style.filter = 'blur(10px)';
    domNode.style['-webkit-filter'] = 'blur(10px)';
  }
  function hitMaskText(anchor, domNode) {
    var data = anchor.data,
      meta = anchor.meta,
      index = anchor.index,
      idx = anchor.idx;
    var wholeText = domNode.data;
    var prefixText = (meta || '') + data;
    if (wholeText.indexOf(prefixText) === -1) {
      return {
        hit: false
      };
    }
    var itemNode = dom.getNodeByIndex(paraList[idx], index);
    if (itemNode) {
      totalHit++;
    } else {
      if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
        WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'text node cannot find', {
          mid: 'mmbizwap:articlemask_Monitor',
          view: 'wap_business',
          _info: {
            anchor: anchor,
            wholeText: wholeText
          }
        });
      }
    }
    var cursor = itemNode &amp;&amp; itemNode.innerText.indexOf(prefixText) + (meta || '').length;
    return {
      hit: !!itemNode,
      $hitDom: itemNode,
      cursor: cursor
    };
  }
  function hitMaskImage(anchor, domNode) {
    var index = anchor.index,
      idx = anchor.idx,
      data = anchor.data;
    var para = paraList[idx];
    var allImgNode = para.querySelectorAll('img');
    var hitItenNode = allImgNode[index];
    var src = hitItenNode &amp;&amp; (hitItenNode.getAttribute('data-src') || hitItenNode.getAttribute('src'));
    if (src === data) {
      totalHit++;
      return {
        hit: true,
        $hitDom: domNode,
        cursor: 0
      };
    }
    return {
      hit: false
    };
  }
  function createMask(anchor, domNode) {
    return function (hitFn, maskFn, next) {
      var _hitFn = hitFn(anchor, domNode),
        hit = _hitFn.hit,
        $hitDom = _hitFn.$hitDom,
        cursor = _hitFn.cursor;
      if (hit) {
        maskFn(anchor.data, $hitDom, cursor);
        next();
      }
    };
  }
  function maskAnchors(anchors, paraNode) {
    var queue = [];
    var cloneAnchors = _toConsumableArray$1(anchors);
    queue.push(paraNode);
    var anchor = null;
    var next = function next() {
      anchor = cloneAnchors.shift();
    };
    next();
    while (queue.length &gt; 0 &amp;&amp; cloneAnchors.length &gt;= 0 &amp;&amp; anchor) {
      var itemNode = queue.pop();
      if (!itemNode) continue;
      if (!anchor) continue;
      var nodeType = itemNode.nodeType,
        tagName = itemNode.tagName;
      var createMaskFn = createMask(anchor, itemNode);
      if (nodeType === 3) {
        if (anchor.type === NODE_TYPE.text) {
          createMaskFn(hitMaskText, anchor.status === STATUS.ban ? maskText : disputeText, next);
        }
        continue;
      }
      if (nodeType === 1 &amp;&amp; tagName === IMG_TAG) {
        if (anchor.type === NODE_TYPE.img) {
          createMaskFn(hitMaskImage, anchor.status === STATUS.ban ? maskImage : disputeImage, next);
        }
        continue;
      }
      var children = itemNode.childNodes;
      for (var i = children.length - 1; i &gt;= 0; i--) {
        queue.push(children[i]);
      }
    }
  }
  function parseSelector(selectorStr) {
    if (!selectorStr) return {};
    var _selectorStr$split = selectorStr.split('|'),
      _selectorStr$split2 = _slicedToArray$1(_selectorStr$split, 2),
      selector = _selectorStr$split2[0],
      other = _selectorStr$split2[1];
    var _other$split = other.split(' '),
      _other$split2 = _slicedToArray$1(_other$split, 2),
      total = _other$split2[0],
      index = _other$split2[1];
    return {
      selector: selector.replace(/&amp;gt;/g, '&gt;'),
      total: total * 1,
      index: index * 1
    };
  }
  function hitNode(node, anchor) {
    if (!node) return null;
    var type = anchor.type,
      data = anchor.data,
      meta = anchor.meta;
    if (type === NODE_TYPE.text) {
      var nodeText = node.innerText || node.innerHTML || '';
      var prefixText = ((meta || '') + data).replace(/&amp;amp;/g, '&amp;');
      if (nodeText.indexOf(prefixText) !== -1) {
        var cursor = nodeText.indexOf(prefixText) + (meta || '').length;
        return {
          cursor: cursor,
          node: node
        };
      }
    }
    if (type === NODE_TYPE.img) {
      var src = node &amp;&amp; (node.getAttribute('data-src') || node.getAttribute('src'));
      if (src === data.replace(/&amp;amp;/g, '&amp;')) {
        return {
          cursor: 0,
          node: node
        };
      }
    }
    return null;
  }

  function maskNode(anchor, domNode, cursor) {
    var type = anchor.type,
      data = anchor.data,
      status = anchor.status;
    if (status !== STATUS.ban) return;
    if (type === NODE_TYPE.text) maskText(data, domNode, cursor);
    if (type === NODE_TYPE.img) maskImage(data, domNode);
  }
  function initOld(wrapNode, anchors) {
    paraList = dom.getParaList(wrapNode, {
      getNestedStructure: true,
      removeIgoreEle: false
    });
    var formatAnchor = keyby(anchors, 'idx');
    if (!paraList) return;
    (paraList || []).forEach(function (para, index) {
      var paraAnchors = formatAnchor[index];
      if (paraAnchors &amp;&amp; paraAnchors.length &gt; 0) {
        addBanner(index, getBannerWord(paraAnchors[0]));
        maskAnchors(paraAnchors, para);
      }
    });
    if (anchors &amp;&amp; anchors.length !== totalHit) {
      if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
        WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'totalHit', {
          mid: 'mmbizwap:articlemask_Monitor',
          view: 'wap_business',
          _info: {
            totalHit: totalHit,
            anchors: anchors
          }
        });
      }
    }
  }
  function addChildBanner(node, anchor) {
    var blockNode = dom.getPureBlockNode(node);
    if (!blockNode) return;
    addBanner(blockNode, getBannerWord());
  }
  function maskAnchors2(wrapNode, anchors) {
    var missNodes = [];
    var countList = [];
    var maskNodeList = [];
    var cacheSelector = {};
    anchors.forEach(function (anchor, i) {
      var _parseSelector = parseSelector(anchor.selector),
        selector = _parseSelector.selector,
        index = _parseSelector.index,
        total = _parseSelector.total;
      var nodes = cacheSelector[selector] || [];
      if (nodes.length === 0) {
        try {
          nodes = wrapNode.querySelectorAll(selector);
          cacheSelector[selector] = nodes;
        } catch (e) {
          if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
            WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'splitText Error', {
              mid: 'mmbizwap:articlemask_Monitor',
              view: 'wap_business',
              _info: {
                anchor: anchor
              }
            });
          }
        }
      }
      var cursorLeft = index;
      var cursorRight = index;
      var queue = [];
      var node = null;
      var cursor = 0;
      var count = 0;
      queue.push(nodes[index]);
      while (queue.length) {
        var current = queue.pop();
        var hitData = hitNode(current, anchor);
        count++;
        if (hitData &amp;&amp; hitData.node) {
          node = hitData.node;
          cursor = hitData.cursor;
          break;
        }
        if (cursorLeft - 1 &gt;= 0 &amp;&amp; nodes[cursorLeft - 1]) {
          queue.push(nodes[cursorLeft - 1]);
          cursorLeft -= 1;
        }
        if (cursorRight + 1 &lt; nodes.length &amp;&amp; nodes[cursorRight + 1]) {
          queue.push(nodes[cursorRight + 1]);
          cursorRight += 1;
        }
      }
      if (node) {
        maskNodeList.push({
          anchor: anchor,
          node: node,
          cursor: cursor
        });
        addChildBanner(node);
      } else if (selector &amp;&amp; selector.lastIndexOf('&gt;') !== -1) {
        missNodes.push(_objectSpread$b(_objectSpread$b({}, anchor), {}, {
          selector: selector &amp;&amp; selector.slice(0, selector.lastIndexOf('&gt;')) + "|".concat(total, " ").concat(index)
        }));
      }
      countList[i] = count;
    });
    maskNodeList.forEach(function (item) {
      maskNode(item.anchor, item.node, item.cursor);
    });
    if (missNodes.length) {
      maskAnchors2(wrapNode, missNodes);
      if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
        WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'missNodes', {
          mid: 'mmbizwap:articlemask_Monitor',
          view: 'wap_business',
          _info: {
            missNodes: missNodes
          }
        });
      }
    }
    if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
      WX_BJ_REPORT.BadJs.report('ArticleMask:Info', 'querycount', {
        mid: 'mmbizwap:articlemask_Monitor',
        view: 'wap_business',
        _info: {
          countList: countList
        }
      });
    }
  }
  function init2(wrapNode, anchors) {
    maskAnchors2(wrapNode, anchors);
  }
  function init(wrapNode, anchors) {
    var oldAnchors = [];
    var newAnchors = [];
    anchors.forEach(function (anchor) {
      if (anchor.selector) {
        newAnchors.push(anchor);
      } else {
        oldAnchors.push(anchor);
      }
    });
    init2(wrapNode, newAnchors);
    if (oldAnchors.length &gt; 0) {
      initOld(wrapNode, oldAnchors);
    }
  }
  var complainPainter = {
    init: init
  };

  function setMaskNode(data, $wrap) {
    try {
      if (data.anchor_tree_msg) {
        var start = Date.now();
        var anchors = data.anchor_tree_msg ? JSON.parse(data.anchor_tree_msg).anchor_tree : [];
        var protocol = window.location.protocol;
        complainPainter.init($wrap, anchors);
        wxgspeedsdk.saveSpeeds({
          sample: 1,
          uin: window.uin,
          pid: protocol == 'https:' ? 462 : 417,
          speeds: {
            sid: 38,
            time: Date.now() - start
          }
        });
        wxgspeedsdk.send();
      }
    } catch (error) {
      if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; window.WX_BJ_REPORT.BadJs) {
        window.WX_BJ_REPORT.BadJs.onError(error, {
          anchor_tree_msg: window.anchor_tree_msg
        });
      }
    }
  }

  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
    try {
      var info = gen[key](arg);
      var value = info.value;
    } catch (error) {
      reject(error);
      return;
    }
    if (info.done) {
      resolve(value);
    } else {
      Promise.resolve(value).then(_next, _throw);
    }
  }
  function _asyncToGenerator(fn) {
    return function () {
      var self = this,
        args = arguments;
      return new Promise(function (resolve, reject) {
        var gen = fn.apply(self, args);
        function _next(value) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
        }
        function _throw(err) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
        }
        _next(undefined);
      });
    };
  }
  var asyncToGenerator = _asyncToGenerator;

  function _defineProperty(obj, key, value) {
    if (key in obj) {
      Object.defineProperty(obj, key, {
        value: value,
        enumerable: true,
        configurable: true,
        writable: true
      });
    } else {
      obj[key] = value;
    }
    return obj;
  }
  var defineProperty = _defineProperty;

  function _typeof$1(obj) {
    "@babel/helpers - typeof";

    if (typeof Symbol === "function" &amp;&amp; typeof Symbol.iterator === "symbol") {
      _typeof_1 = _typeof$1 = function _typeof(obj) {
        return typeof obj;
      };
    } else {
      _typeof_1 = _typeof$1 = function _typeof(obj) {
        return obj &amp;&amp; typeof Symbol === "function" &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj;
      };
    }
    return _typeof$1(obj);
  }
  var _typeof_1 = _typeof$1;

  var _typeof$2 = _typeof_1;

  
  
  var onceListeners = {};
  var permanentListeners = {};
  function clean(event, all) {
    delete onceListeners[event];
    if (all) {
      delete permanentListeners[event];
    }
  }
  function on$1(event, callback, permanent) {
    if (typeof callback === 'function') {
      if (permanent) {
        if (!permanentListeners[event]) {
          permanentListeners[event] = [];
        }
        permanentListeners[event].push(callback);
      } else {
        if (!onceListeners[event]) {
          onceListeners[event] = [];
        }
        onceListeners[event].push(callback);
      }
    }
  }
  function emit(event) {
    for (var _len = arguments.length, params = new Array(_len &gt; 1 ? _len - 1 : 0), _key = 1; _key &lt; _len; _key++) {
      params[_key - 1] = arguments[_key];
    }
    if (permanentListeners[event]) {
      permanentListeners[event].forEach(function (callback) {
        if (typeof callback === 'function') {
          callback.apply(void 0, params);
        }
      });
    }
    if (onceListeners[event]) {
      onceListeners[event].forEach(function (callback) {
        if (typeof callback === 'function') {
          callback.apply(void 0, params);
        }
      });
      clean(event);
    }
  }
  function remove(event, callback, permanent) {
    if (typeof callback === 'function') {
      if (permanent &amp;&amp; permanentListeners[event]) {
        var idx = permanentListeners[event].indexOf(callback);
        if (idx !== -1) {
          permanentListeners[event].splice(idx, 1);
        }
      } else if (onceListeners[event]) {
        var _idx = onceListeners[event].indexOf(callback);
        if (_idx !== -1) {
          onceListeners[event].splice(_idx, 1);
        }
      }
    }
  }
  var eventBus = {
    on: on$1,
    emit: emit,
    remove: remove,
    clean: clean
  };
  window.__page_cls_ctrl__canRenderSilently = '__page_cls_ctrl__canRenderSilently' in window ? window.__page_cls_ctrl__canRenderSilently : true;
  window.__page_cls_ctrl__forceRenderSilentlyList = '__page_cls_ctrl__forceRenderSilentlyList' in window ? window.__page_cls_ctrl__forceRenderSilentlyList : [];
  window.__page_cls_ctrl__compRenderInfo = '__page_cls_ctrl__compRenderInfo' in window ? window.__page_cls_ctrl__compRenderInfo : {};
  var compRenderInfoInner = {};
  var hasReportIdKey = false;
  function getCompId(renderInfo) {
    if (renderInfo.subCompType) {
      return "".concat(renderInfo.compType, "-").concat(renderInfo.compIdx, "-").concat(renderInfo.subCompType);
    }
    return "".concat(renderInfo.compType, "-").concat(renderInfo.compIdx);
  }
  function setForceRenderSilentlyList(list) {
    if (Array.isArray(list)) {
      var _window$__page_cls_ct;
      (_window$__page_cls_ct = window.__page_cls_ctrl__forceRenderSilentlyList).push.apply(_window$__page_cls_ct, _toConsumableArray$1(list));
    } else if (Object.prototype.toString.call(list).includes('Number')) {
      window.__page_cls_ctrl__forceRenderSilentlyList.forceRenderSilentScrollTop = list;
    }
  }
  function setRenderSilentlyReadyStatus(status) {
    window.__page_cls_ctrl__canRenderSilently = status;
  }
  function emitRenderNewHeightEvt() {
    eventBus.emit('cls-render-new-height');
  }
  function setCompRenderInfo(renderInfo, diffHeight) {
    window.__page_cls_ctrl__compRenderInfo[getCompId(renderInfo)] = {
      dh: diffHeight,
      compEle: renderInfo.compEle
    };
  }
  function renderCompSilentlyPreHandler(renderInfo) {
    var wrapper = renderInfo.wrapper || renderInfo.compEle.parentNode || {
      scrollHeight: 0
    };
    compRenderInfoInner[getCompId(renderInfo)] = {
      beforeHeight: wrapper.scrollHeight,
      boundingRectTop: renderInfo.compEle.getBoundingClientRect().top,
      beforeScrollTop: document.body.scrollTop || document.documentElement.scrollTop,
      wrapper: wrapper
    };
  }
  function renderCompSilently(renderInfo) {
    var compId = getCompId(renderInfo);
    if (!compRenderInfoInner[compId] || compRenderInfoInner[compId].beforeHeight === compRenderInfoInner[compId].wrapper.scrollHeight || !('compIdx' in renderInfo) || renderInfo.compIdx &lt; 0) {
      return;
    }
    var diffHeight = compRenderInfoInner[compId].wrapper.scrollHeight - compRenderInfoInner[compId].beforeHeight;
    var autoScrollHeight = (document.body.scrollTop || document.documentElement.scrollTop) - compRenderInfoInner[compId].beforeScrollTop;
    emitRenderNewHeightEvt();
    if ((compRenderInfoInner[compId].boundingRectTop &lt; 0
    || window.__page_cls_ctrl__forceRenderSilentlyList.includes(compId)
    || window.scrollY + compRenderInfoInner[compId].boundingRectTop &lt; window.__page_cls_ctrl__forceRenderSilentlyList.forceRenderSilentScrollTop
    ) &amp;&amp; window.__page_cls_ctrl__canRenderSilently
    &amp;&amp; Math.ceil(autoScrollHeight) !== diffHeight &amp;&amp; Math.floor(autoScrollHeight) !== diffHeight) {
      document.body.scrollTop = document.body.scrollTop + diffHeight;
      document.documentElement.scrollTop = document.documentElement.scrollTop + diffHeight;
      window.__addIdKeyReport &amp;&amp; window.__addIdKeyReport(330742, 2);
      !hasReportIdKey &amp;&amp; window.__addIdKeyReport &amp;&amp; window.__addIdKeyReport(330742, 3);
      hasReportIdKey = true;
    }
    window.__page_cls_ctrl__compRenderInfo[compId] = {
      dh: diffHeight,
      compEle: renderInfo.compEle
    };
    var newScrollTop = document.body.scrollTop || document.documentElement.scrollTop;
    for (var i in compRenderInfoInner) {
      if (!window.__page_cls_ctrl__compRenderInfo[i]) {
        compRenderInfoInner[i].beforeScrollTop = newScrollTop;
      }
    }
  }
  var pageClsCtrl = {
    compRenderInfo: window.__page_cls_ctrl__compRenderInfo,
    setForceRenderSilentlyList: setForceRenderSilentlyList,
    setRenderSilentlyReadyStatus: setRenderSilentlyReadyStatus,
    renderCompSilentlyPreHandler: renderCompSilentlyPreHandler,
    renderCompSilently: renderCompSilently,
    emitRenderNewHeightEvt: emitRenderNewHeightEvt,
    setCompRenderInfo: setCompRenderInfo
  };

  function removePlaceholder(element, preloadingid) {
    var preLoadNode = element.parentNode.querySelector("[data-preloadingid=\"".concat(preloadingid, "\"]"));
    if (preLoadNode) {
      preLoadNode.parentNode.removeChild(preLoadNode);
      pageClsCtrl.emitRenderNewHeightEvt();
    }
  }

  function _regeneratorRuntime$4() {  _regeneratorRuntime$4 = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof$2(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof$2(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  function i$2(_x) {
    return _i.apply(this, arguments);
  }
  function _i() {
    _i = asyncToGenerator( _regeneratorRuntime$4().mark(function _callee(o) {
      return _regeneratorRuntime$4().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            return _context.abrupt("return", new Promise(function (n) {
              R$4.invoke("handleEcsAction", {
                action: "openEcs",
                ecsJumpInfoBase64: o
              }, function (c) {
                n(c);
              });
            }));
          case 1:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return _i.apply(this, arguments);
  }
  function t$3() {
    return _t.apply(this, arguments);
  }
  function _t() {
    _t = asyncToGenerator( _regeneratorRuntime$4().mark(function _callee2() {
      return _regeneratorRuntime$4().wrap(function _callee2$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            return _context2.abrupt("return", new Promise(function (o) {
              R$4.invoke("handleEcsAction", {
                action: "checkAction",
                params: {
                  method: "isActionAvailable",
                  actionName: "openEcs",
                  actionVersion: "1"
                }
              }, function (n) {
                n != null &amp;&amp; n.result ? o(!0) : o(!1);
              });
            }));
          case 1:
          case "end":
            return _context2.stop();
        }
      }, _callee2);
    }));
    return _t.apply(this, arguments);
  }

  function _arrayWithHoles(arr) {
    if (Array.isArray(arr)) return arr;
  }
  var arrayWithHoles$1 = _arrayWithHoles;

  function _iterableToArrayLimit(arr, i) {
    if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;
    var _arr = [];
    var _n = true;
    var _d = false;
    var _e = undefined;
    try {
      for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
        _arr.push(_s.value);
        if (i &amp;&amp; _arr.length === i) break;
      }
    } catch (err) {
      _d = true;
      _e = err;
    } finally {
      try {
        if (!_n &amp;&amp; _i["return"] != null) _i["return"]();
      } finally {
        if (_d) throw _e;
      }
    }
    return _arr;
  }
  var iterableToArrayLimit$1 = _iterableToArrayLimit;

  function _arrayLikeToArray(arr, len) {
    if (len == null || len &gt; arr.length) len = arr.length;
    for (var i = 0, arr2 = new Array(len); i &lt; len; i++) {
      arr2[i] = arr[i];
    }
    return arr2;
  }
  var arrayLikeToArray$2 = _arrayLikeToArray;

  var arrayLikeToArray$1 = arrayLikeToArray$2;
  function _unsupportedIterableToArray(o, minLen) {
    if (!o) return;
    if (typeof o === "string") return arrayLikeToArray$1(o, minLen);
    var n = Object.prototype.toString.call(o).slice(8, -1);
    if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name;
    if (n === "Map" || n === "Set") return Array.from(o);
    if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray$1(o, minLen);
  }
  var unsupportedIterableToArray$2 = _unsupportedIterableToArray;

  function _nonIterableRest() {
    throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }
  var nonIterableRest$1 = _nonIterableRest;

  var arrayWithHoles = arrayWithHoles$1;
  var iterableToArrayLimit = iterableToArrayLimit$1;
  var unsupportedIterableToArray$1 = unsupportedIterableToArray$2;
  var nonIterableRest = nonIterableRest$1;
  function _slicedToArray(arr, i) {
    return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray$1(arr, i) || nonIterableRest();
  }
  var slicedToArray = _slicedToArray;

  function _regeneratorRuntime$3() {  _regeneratorRuntime$3 = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof$2(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof$2(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  function ownKeys$a(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r &amp;&amp; (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
  function _objectSpread$a(e) { for (var r = 1; r &lt; arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$a(Object(t), !0).forEach(function (r) { defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$a(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
  var f$2 = function f(n, e, t) {
    return t &lt; 0 &amp;&amp; (t += 1), t &gt; 1 &amp;&amp; (t -= 1), t &lt; 1 / 6 ? n + (e - n) * 6 * t : t &lt; 1 / 2 ? e : t &lt; 2 / 3 ? n + (e - n) * (2 / 3 - t) * 6 : n;
  };
  function h$3(n, e, t) {
    n /= 255, e /= 255, t /= 255;
    var o = Math.max(n, e, t),
      s = Math.min(n, e, t);
    var r, i;
    var c = (o + s) / 2;
    if (o === s) r = i = 0;else {
      var a = o - s;
      switch (i = c &gt; 0.5 ? a / (2 - o - s) : a / (o + s), o) {
        case n:
          r = (e - t) / a + (e &lt; t ? 6 : 0);
          break;
        case e:
          r = (t - n) / a + 2;
          break;
        case t:
          r = (n - e) / a + 4;
          break;
      }
      r /= 6;
    }
    return [r * 360, i, c];
  }
  function g$6() {
    var n = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : [];
    var _n = slicedToArray(n, 3),
      e = _n[0],
      t = _n[1],
      o = _n[2],
      s = t / 100,
      r = o / 100;
    var i, c, a;
    if (s === 0) i = c = a = r;else {
      var u = r &lt; 0.5 ? r * (1 + s) : r + s - r * s,
        w = 2 * r - u,
        m = e / 360;
      i = f$2(w, u, m + 1 / 3), c = f$2(w, u, m), a = f$2(w, u, m - 1 / 3);
    }
    return i = Math.round(i * 255), c = Math.round(c * 255), a = Math.round(a * 255), [i, c, a];
  }
  function y$2() {
    var n = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : [];
    var _n2 = slicedToArray(n, 3),
      e = _n2[0],
      t = _n2[1],
      o = _n2[2];
    if (e &lt; 0 || e &gt; 255 || t &lt; 0 || t &gt; 255 || o &lt; 0 || o &gt; 255) throw new Error("RGB values must be in the range 0-255");
    var s = function s(r) {
      var i = r.toString(16).toUpperCase();
      return i.length === 1 ? "0" + i : i;
    };
    return "#".concat(s(e)).concat(s(t)).concat(s(o));
  }
  var d$5;
  function _$4() {
    var e, t;
    return {
      exportkey: Url.getQuery("exportkey"),
      __biz: window.biz,
      article_info: {
        mp_biz: (window == null ? void 0 : window.atob(window.biz || "")) || "",
        item_idx: Number(window.itemidx || window.idx),
        appmsgid: Number(window.mid),
        item_show_type: Number(window.item_show_type),
        mp_article_scene: Number(window.source),
        mp_sub_scene: Number(window.subscene),
        mp_get_a8key_scene: Number(window.ascene),
        carrier_type: ((t = (e = window.cgiData) == null ? void 0 : e.product_activity) == null ? void 0 : t.activity_type) || 0,
        search_click_id: Url.getQuery("search_click_id")
      }
    };
  }
  var x$2 = 150;
  var p$2 = 0;
  function N$1() {
    return _N.apply(this, arguments);
  }
  function _N() {
    _N = asyncToGenerator( _regeneratorRuntime$3().mark(function _callee() {
      return _regeneratorRuntime$3().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            return _context.abrupt("return", d$5 || (window.__secPageAuthPromise ? new Promise(function (n) {
              window.__secPageAuthPromise.then(function () {
                d$5 = _$4(), n(d$5);
              });
            }) : (_typeof$2(window.itemidx || window.idx) &gt; "u" || _typeof$2(window.mid) &gt; "u" || _typeof$2(window.item_show_type) &gt; "u") &amp;&amp; p$2 &lt; x$2 ? (p$2++, new Promise(function (e) {
              setTimeout(function () {
                e(N$1());
              }, 16);
            })) : (d$5 = _$4(), d$5)));
          case 1:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return _N.apply(this, arguments);
  }
  function k$2(n) {
    return (Number(n) / 100).toFixed(2).replace(/([0-9]+(\.[0-9]+[1-9])?)(\.?0+$)/, "$1");
  }
  function I$5(n) {
    return _typeof$2(n.code) &lt; "u" &amp;&amp; n.code !== 0;
  }
  function P$4(n, e) {
    var t = {
      base_req: {
        action: n
      },
      ext_info: JSON.stringify(e)
    };
    return {
      data: JSON.stringify(t)
    };
  }
  function O$5(n) {
    if (!n) return;
    var e = n.data;
    e.params &amp;&amp; (e.params = JSON.parse(e.params), e.params = JSON.stringify(_objectSpread$a(_objectSpread$a({}, e.params), {}, {
      scene: Number(window.source),
      subscene: Number(window.subscene),
      ClientVersion: parseInt(window.clientversion || "", 16),
      SessionId: window.sessionid || ""
    }))), ajax({
      type: "POST",
      url: "/mp/c_psmaterial_info?action=get_windowproduct",
      timeout: 5e3,
      dataType: "json",
      data: P$4("ReportMMData23782", _objectSpread$a({}, e)),
      success: function success() {},
      error: function error() {
        console.log("[error]");
      }
    });
  }
  function C$6() {
    var _ref2;
    var n = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : [];
    var a;
    var _ref = (_ref2 = (a = n.filter(function (_ref3) {
        var u = _ref3.red,
          w = _ref3.green,
          m = _ref3.blue;
        return !(u === 255 &amp;&amp; w === 255 &amp;&amp; m === 255);
      })) == null ? void 0 : a[0]) !== null &amp;&amp; _ref2 !== void 0 ? _ref2 : {
        red: 76,
        green: 76,
        blue: 76
      },
      e = _ref.red,
      t = _ref.green,
      o = _ref.blue,
      _h = h$3(e, t, o),
      _h2 = slicedToArray(_h, 3),
      s = _h2[0],
      r = _h2[1],
      i = _h2[2];
    i = Math.min(i, 0.2);
    var c = g$6([s, r * 100, i * 100]);
    return e = c[0], t = c[1], o = c[2], [y$2([e, t, o]), {
      red: e,
      green: t,
      blue: o
    }];
  }
  function M$2() {
    return (typeof window === "undefined" ? "undefined" : _typeof$2(window)) &lt; "u";
  }
  function R$3() {
    var n = M$2() &amp;&amp; window.navigator.userAgent.toLowerCase();
    return n &amp;&amp; /iphone|ipad|ipod|ios/.test(n);
  }

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  var classCallCheck = _classCallCheck;

  function _defineProperties(target, props) {
    for (var i = 0; i &lt; props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor) descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass(Constructor, protoProps, staticProps) {
    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
    if (staticProps) _defineProperties(Constructor, staticProps);
    return Constructor;
  }
  var createClass = _createClass;

  function _assertThisInitialized(self) {
    if (self === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }
    return self;
  }
  var assertThisInitialized$1 = _assertThisInitialized;

  var _typeof = _typeof_1;
  var assertThisInitialized = assertThisInitialized$1;
  function _possibleConstructorReturn(self, call) {
    if (call &amp;&amp; (_typeof(call) === "object" || typeof call === "function")) {
      return call;
    }
    return assertThisInitialized(self);
  }
  var possibleConstructorReturn = _possibleConstructorReturn;

  function _getPrototypeOf(o) {
    getPrototypeOf = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
      return o.__proto__ || Object.getPrototypeOf(o);
    };
    return _getPrototypeOf(o);
  }
  var getPrototypeOf = _getPrototypeOf;

  var _getPrototypeOf$1 = getPrototypeOf;

  function _setPrototypeOf(o, p) {
    setPrototypeOf$1 = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
      o.__proto__ = p;
      return o;
    };
    return _setPrototypeOf(o, p);
  }
  var setPrototypeOf$1 = _setPrototypeOf;

  var setPrototypeOf = setPrototypeOf$1;
  function _inherits(subClass, superClass) {
    if (typeof superClass !== "function" &amp;&amp; superClass !== null) {
      throw new TypeError("Super expression must either be null or a function");
    }
    subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, {
      constructor: {
        value: subClass,
        writable: true,
        configurable: true
      }
    });
    if (superClass) setPrototypeOf(subClass, superClass);
  }
  var inherits = _inherits;

  function _callSuper(t, o, e) { return o = _getPrototypeOf$1(o), possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf$1(t).constructor) : o.apply(t, e)); }
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
  var v$3 = {
    web: "common-web",
    app: "common-app",
    wechat: "common-webchat"
  };
  function T$6(t, e) {
    var o = e || window.location.search,
      n = new RegExp("(^|&amp;)" + t + "=([^&amp;]*)(&amp;|$)"),
      s = o.substr(o.indexOf("?") + 1).match(n);
    return s !== null ? s[2] : "";
  }
  var f$1 = T$6("color_scheme", location.href),
    _$3 = Number(T$6("uninteractive", location.href)),
    k$1 = {
      props: {
        platform: {
          type: String,
          "default": "web"
        },
        extraInfo: {
          type: Object,
          "default": function _default() {
            return {};
          }
        }
      },
      mounted: function mounted() {
        var t = this.$refs.js_custom_element;
        t &amp;&amp; (this.platform !== "wechat" &amp;&amp; !f$1 &amp;&amp; t.setAttribute("data-weui-theme", "light"), f$1 &amp;&amp; f$1 === "light" &amp;&amp; t.setAttribute("data-weui-theme", "light"), _$3 === 1 &amp;&amp; t.classList.add("wx_uninteractive"));
      },
      data: function data() {
        return {
          platformClassname: v$3[this.platform]
        };
      }
    };
  function L$2(t) {
    var e = {};
    return t.attributes &amp;&amp; Array.from(t.attributes).forEach(function (o) {
      e[o.nodeName] = o.nodeValue;
    }), e;
  }
  function j$2() {
    var t = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : [];
    var e = arguments.length &gt; 1 ? arguments[1] : undefined;
    var o = [];
    return t.childNodes.forEach(function (n) {
      var s = L$2(n);
      if ("data-shadow-slot" in s) {
        if (!s.slot) return;
        var l = {
          attrs: s,
          domProps: {
            innerHTML: n.innerHTML === "" ? n.innerText : n.innerHTML
          },
          slot: s.slot
        };
        s.slot = void 0;
        var m = e(n.tagName, l);
        o.push(m);
      } else if (s.slot) {
        var _l = e("slot", {
          attrs: {
            name: s.slot
          },
          slot: s.slot
        });
        o.push(_l);
      }
    }), o;
  }
  function H$3(_ref) {
    var t = _ref.iframeWindow,
      e = _ref.Component,
      o = _ref.platform,
      n = _ref.customName,
      s = _ref.styleText,
      _ref$extraInfo = _ref.extraInfo,
      l = _ref$extraInfo === void 0 ? {} : _ref$extraInfo,
      m = _ref.watchAttr,
      b = _ref.beforeRender,
      g = _ref.afterRender,
      E = _ref.selector,
      y = _ref.afterMounted,
      w = _ref.reflowProps,
      C = _ref.getProps,
      _ref$eventName = _ref.eventName,
      A = _ref$eventName === void 0 ? [] : _ref$eventName;
    var d = window;
    t &amp;&amp; (d = t), l.window = d;
    var $ = window.test_autospace;
    d.customElements.define(n, function (_d$HTMLElement) {
      inherits(_class, _d$HTMLElement);
      function _class() {
        var _this;
        classCallCheck(this, _class);
        _this = _callSuper(this, _class);
        var a = _this.attachShadow({
          mode: "open"
        });
        _this.shadow = a;
        return _this;
      }
      createClass(_class, [{
        key: "connectedCallback",
        value: function connectedCallback() {
          var _this2 = this;
          if (!e.install) {
            if (e.props &amp;&amp; w &amp;&amp; w.length) {
              var i = {
                watch: {}
              };
              w.forEach(function (u) {
                i.watch[u] = function () {
                  var p = this.$el.getRootNode().host,
                    x = {
                      compEle: p,
                      compType: n,
                      compIdx: Array.from(document.querySelectorAll(E || n)).indexOf(p)
                    };
                  b &amp;&amp; b(Object.assign({
                    subCompType: u
                  }, x)), this.$nextTick(function () {
                    g &amp;&amp; g(Object.assign({
                      subCompType: u
                    }, x));
                  });
                };
              }), e.mixins.push(i);
            }
            typeof e.template == "function" &amp;&amp; e.template(e);
          }
          var a = A.reduce(function (i, u) {
              return i[u] = function (p) {
                _this2.dispatchCustomEvent(u, p);
              }, i;
            }, {}),
            c = new Vue({
              render: function render(i) {
                return i(e, {
                  props: C.call(_this2, o, l),
                  on: a
                }, j$2(_this2, i));
              }
            });
          this.wrapper = c;
          var r = document.createElement("style");
          r.textContent = " \n        :host {\n          all: initial;\n          -webkit-text-size-adjust: inherit;\n          ".concat($ ? "text-autospace: normal" : "", "\n        }\n      \n      "), this.shadowRoot.appendChild(r);
          var h = document.createElement("style");
          h.appendChild(document.createTextNode(s)), this.shadowRoot.appendChild(h), this.wrapper.$mount(), this.shadowRoot.appendChild(this.wrapper.$el), this.debounceUpdate = this.debounce(function () {
            console.log("forceUpdate"), _this2.wrapper &amp;&amp; _this2.wrapper.$forceUpdate();
          }, 500), this.classList.add("mp_common_widget"), y &amp;&amp; y.call(this);
        }
      }, {
        key: "debounce",
        value: function debounce(a, c) {
          var r;
          return function () {
            for (var _len = arguments.length, h = new Array(_len), _key = 0; _key &lt; _len; _key++) {
              h[_key] = arguments[_key];
            }
            var i = this;
            clearTimeout(r), r = setTimeout(function () {
              return a.apply(i, h);
            }, c);
          };
        }
      }, {
        key: "dispatchCustomEvent",
        value: function dispatchCustomEvent(a, c) {
          var r = new CustomEvent(a, {
            detail: c,
            bubbles: !0,
            composed: !0
          });
          this.dispatchEvent(r);
        }
      }, {
        key: "getKeyByDataValue",
        value: function getKeyByDataValue(a) {
          for (var c in ATTR) if (ATTR[c] === a) return c;
          return null;
        }
      }, {
        key: "disconnectedCallback",
        value: function disconnectedCallback() {
          this.shadowRoot.innerHTML = "", this.wrapper &amp;&amp; this.wrapper.$destroy();
        }
      }, {
        key: "attributeChangedCallback",
        value: function attributeChangedCallback(a, c, r) {
          this.wrapper &amp;&amp; this.wrapper.$forceUpdate();
        }
      }], [{
        key: "observedAttributes",
        get: function get() {
          return m;
        }
      }]);
      return _class;
    }(d.HTMLElement));
  }

  function p$1(o) {
    var e = {},
      s = /[?&amp;]([^=&amp;#]+)=([^&amp;#]*)/g,
      t = o.match(s);
    if (t) {
      for (var r in t) if (Object.prototype.hasOwnProperty.call(t, r)) {
        var c = t[r].split("="),
          n = c[0].substr(1),
          i = c[1];
        e[n] ? e[n] = [].concat(e[n], i) : e[n] = i;
      }
    }
    return e;
  }
  function h$2(o) {
    var e = o.length;
    var s = o.indexOf("?"),
      t = o.indexOf("#");
    t = t === -1 ? e : t, s = s === -1 ? t : s;
    var r = o.substring(0, s),
      c = o.substring(s + 1, t),
      n = o.substring(t + 1);
    return {
      host: r,
      queryStr: c,
      hash: n
    };
  }
  function u$2(o, e) {
    var s = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : !1;
    var t = h$2(o);
    var r = t.queryStr;
    var c = [];
    if (_typeof$2(e) == "object") for (var n in e) Object.prototype.hasOwnProperty.call(e, n) &amp;&amp; c.push(n + "=" + (s ? e[n] : encodeURIComponent(e[n])));else c.push(s ? e : encodeURIComponent(e));
    return c.length &gt; 0 &amp;&amp; (r += (r !== "" ? "&amp;" : "") + c.join("&amp;")), "".concat(t.host).concat(r !== "" ? "?" + r : "").concat(t.hash !== "" ? "#" + t.hash : "");
  }

  function v$2(r, a, d, h, i, t, f, u) {
    var e = typeof r == "function" ? r.options : r;
    a &amp;&amp; (e.render = a, e.staticRenderFns = d, e._compiled = !0), h &amp;&amp; (e.functional = !0), t &amp;&amp; (e._scopeId = "data-v-" + t);
    var o;
    if (f ? (o = function o(n) {
      n = n ||
      this.$vnode &amp;&amp; this.$vnode.ssrContext ||
      this.parent &amp;&amp; this.parent.$vnode &amp;&amp; this.parent.$vnode.ssrContext, !n &amp;&amp; (typeof __VUE_SSR_CONTEXT__ === "undefined" ? "undefined" : _typeof$2(__VUE_SSR_CONTEXT__)) &lt; "u" &amp;&amp; (n = __VUE_SSR_CONTEXT__), i &amp;&amp; i.call(this, n), n &amp;&amp; n._registeredComponents &amp;&amp; n._registeredComponents.add(f);
    }, e._ssrRegister = o) : i &amp;&amp; (o = u ? function () {
      i.call(this, (e.functional ? this.parent : this).$root.$options.shadowRoot);
    } : i), o) if (e.functional) {
      e._injectStyles = o;
      var l = e.render;
      e.render = function (p, _) {
        return o.call(_), l(p, _);
      };
    } else {
      var s = e.beforeCreate;
      e.beforeCreate = s ? [].concat(s, o) : [o];
    }
    return {
      exports: r,
      options: e
    };
  }

  typeof Number.isFinite == "function" &amp;&amp; Number.isFinite.bind(Number);
  function o$6(n) {
    var _this = this;
    var t = {};
    return Object.keys(n).forEach(function (e) {
      t[e] = _this.getAttribute(n[e]);
    }), t;
  }

  function _regeneratorRuntime$2() {  _regeneratorRuntime$2 = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof$2(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof$2(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  function ownKeys$9(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r &amp;&amp; (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
  function _objectSpread$9(e) { for (var r = 1; r &lt; arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$9(Object(t), !0).forEach(function (r) { defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$9(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
  
  function o$5(A, t, e, i, B, a, E, u, p, O) {
    typeof E != "boolean" &amp;&amp; (p = u, u = E, E = !1);
    var c = typeof e == "function" ? e.options : e;
    A &amp;&amp; A.render &amp;&amp; (c.render = A.render, c.staticRenderFns = A.staticRenderFns, c._compiled = !0, B &amp;&amp; (c.functional = !0)), i &amp;&amp; (c._scopeId = i);
    var w;
    if (a ? (w = function w(r) {
      r = r ||
      this.$vnode &amp;&amp; this.$vnode.ssrContext ||
      this.parent &amp;&amp; this.parent.$vnode &amp;&amp; this.parent.$vnode.ssrContext, !r &amp;&amp; (typeof __VUE_SSR_CONTEXT__ === "undefined" ? "undefined" : _typeof$2(__VUE_SSR_CONTEXT__)) &lt; "u" &amp;&amp; (r = __VUE_SSR_CONTEXT__), t &amp;&amp; t.call(this, p(r)), r &amp;&amp; r._registeredComponents &amp;&amp; r._registeredComponents.add(a);
    }, c._ssrRegister = w) : t &amp;&amp; (w = E ? function (r) {
      t.call(this, O(r, this.$root.$options.shadowRoot));
    } : function (r) {
      t.call(this, u(r));
    }), w) if (c.functional) {
      var r = c.render;
      c.render = function (Z, U) {
        return w.call(U), r(Z, U);
      };
    } else {
      var _r = c.beforeCreate;
      c.beforeCreate = _r ? [].concat(_r, w) : [w];
    }
    return e;
  }
  
  var rA = o$7.defineComponent({
    name: "ProductTitle",
    props: {
      product: {
        type: Object,
        required: !0
      },
      layout: {
        type: String,
        "default": "large"
      },
      darkMode: {
        type: Boolean,
        "default": !1
      }
    }
  });
  var oA = rA;
  var y$1 = function y() {
      var A = this,
        t = A.$createElement,
        e = A._self._c || t;
      return e("div", {
        staticClass: "product-title__outer",
        "class": [A.layout, {
          "dark-mode": A.darkMode
        }]
      }, [e("div", {
        staticClass: "product-title",
        "class": A.layout === "bar" ? "one-line" : "two-line"
      }, [e("span", [A._l(A.product.iconUrls, function (i, B) {
        return [e("img", {
          key: B,
          attrs: {
            src: i,
            alt: ""
          }
        })];
      })], 2), A._v(" "), e("span", [A._v(A._s(A.product.title))])])]);
    },
    EA = [];
  y$1._withStripped = !0;
  var cA = void 0,
    sA = "data-v-40afe61e",
    dA = void 0,
    wA = !1,
    M$1 = o$5({
      render: y$1,
      staticRenderFns: EA
    }, cA, oA, sA, wA, dA, !1, void 0, void 0, void 0);
  
  var gA = o$7.defineComponent({
    name: "ProductShop",
    props: {
      product: {
        type: Object,
        required: !0
      },
      layout: {
        type: String,
        "default": "large"
      },
      darkMode: {
        type: Boolean,
        "default": !1
      }
    }
  });
  var nA = gA;
  var D = function D() {
      var A = this,
        t = A.$createElement,
        e = A._self._c || t;
      return e("div", {
        staticClass: "product-shop__outer",
        "class": [A.layout, {
          "dark-mode": A.darkMode
        }]
      }, [e("div", {
        staticClass: "product-shop"
      }, [e("div", {
        staticClass: "product-shop__inner"
      }, [e("div", {
        staticClass: "left"
      }, [e("img", {
        staticClass: "icon img-color-invert",
        attrs: {
          src: A.product.platformIconUrl
        }
      }), A._v(" "), e("div", {
        staticClass: "text"
      }, [A._v("\n          " + A._s(A.product.platformName) + "\n        ")]), A._v(" "), A.product.bizIcon.goodShopIcon[A.darkMode ? "dark" : "normal"] ? e("img", {
        staticClass: "right-icon good-shop",
        attrs: {
          src: A.product.bizIcon.goodShopIcon[A.darkMode ? "dark" : "normal"]
        }
      }) : A.product.bizIcon.rtagIcon[A.darkMode ? "dark" : "normal"] ? e("img", {
        staticClass: "right-icon icon-r",
        attrs: {
          src: A.product.bizIcon.rtagIcon[A.darkMode ? "dark" : "normal"]
        }
      }) : A._e()])])])]);
    },
    uA = [];
  D._withStripped = !0;
  var lA = void 0,
    IA = "data-v-1a13560c",
    MA = void 0,
    QA = !1,
    Q = o$5({
      render: D,
      staticRenderFns: uA
    }, lA, nA, IA, QA, MA, !1, void 0, void 0, void 0);
  
  var GA = o$7.defineComponent({
    name: "ProductBuyButtons",
    props: {
      product: {
        type: Object,
        required: !0
      },
      clientType: {
        type: String,
        "default": "C"
      },
      layout: {
        type: String,
        "default": "large"
      },
      isPC: {
        type: Boolean,
        "default": !1
      },
      darkMode: {
        type: Boolean,
        "default": !1
      }
    },
    computed: {
      isC: function isC() {
        return this.clientType === "C";
      },
      isB: function isB() {
        return this.clientType === "B";
      },
      showGiftBtn: function showGiftBtn() {
        return this.isC &amp;&amp; !this.isPC &amp;&amp; this.product.showPresentBtn &amp;&amp; this.layout !== "bar" &amp;&amp; !this.product.btnText;
      }
    },
    methods: {
      handleBuy: function handleBuy() {
        if (this.isB) {
          this.$emit("expand");
          return;
        }
        this.$emit("buy", {
          clickType: 1
        });
      },
      handleGift: function handleGift() {
        this.product.canGivePresent ? this.isC &amp;&amp; this.$emit("gift", {
          clickType: 2
        }) : this.$emit("gift", {
          clickType: 3
        });
      }
    }
  });
  var CA = GA;
  var z = function z() {
      var A = this,
        t = A.$createElement,
        e = A._self._c || t;
      return e("div", {
        staticClass: "btn__area",
        "class": [A.layout, {
          "dark-mode": A.darkMode
        }]
      }, [A.showGiftBtn ? e("div", [e("button", {
        staticClass: "btn type-secondary",
        "class": {
          "type-disabled": !A.product.canGivePresent
        },
        on: {
          click: function click(i) {
            return i.stopPropagation(), A.handleGift.apply(null, arguments);
          }
        }
      }, [A._v("\n      \u9001\u670B\u53CB\n    ")])]) : A._e(), A._v(" "), A.product.btnText ? e("div", [e("div", {
        staticClass: "product_status_text"
      }, [A._v("\n      " + A._s(A.product.btnText) + "\n    ")])]) : e("div", [e("button", {
        staticClass: "btn type-primary",
        on: {
          click: function click(i) {
            return i.stopPropagation(), A.handleBuy.apply(null, arguments);
          }
        }
      }, [A._v("\n      " + A._s(A.product.buttonWording || "购买") + "\n    ")])])]);
    },
    FA = [];
  z._withStripped = !0;
  var NA = void 0,
    hA = "data-v-4b157c62",
    pA = void 0,
    UA = !1,
    G$2 = o$5({
      render: z,
      staticRenderFns: FA
    }, NA, CA, hA, UA, pA, !1, void 0, void 0, void 0);
  
  var RA = o$7.defineComponent({
    name: "ProductImage",
    props: {
      product: {
        type: Object,
        required: !0
      },
      layout: {
        type: String,
        "default": "large"
      },
      imgSize: {
        type: Number,
        "default": 400
      },
      darkMode: {
        type: Boolean,
        "default": !1
      }
    },
    data: function data() {
      return {
        showError: !1
      };
    },
    computed: {
      imageStyle: function imageStyle() {
        return {
          objectFit: "cover",
          width: this.imgSize + "px",
          height: this.imgSize + "px"
        };
      }
    },
    methods: {
      handleImageError: function handleImageError() {
        this.showError = !0;
      },
      handleImageLoad: function handleImageLoad() {
        this.showError = !1;
      }
    }
  });
  var YA = RA;
  var b$5 = function b() {
      var A = this,
        t = A.$createElement,
        e = A._self._c || t;
      return e("div", {
        staticClass: "product-img-container",
        style: {
          width: A.imgSize + "px",
          height: A.imgSize + "px"
        }
      }, [e("img", {
        staticClass: "product-img",
        "class": A.layout,
        style: A.imageStyle,
        attrs: {
          src: A.product.imgUrls[0] || ""
        },
        on: {
          error: A.handleImageError,
          load: A.handleImageLoad
        }
      }), A._v(" "), e("div", {
        staticClass: "product-img-error",
        style: {
          display: A.showError ? "flex" : "none"
        }
      }, [A._v("\n    \u56FE\u7247\u52A0\u8F7D\u5931\u8D25\n  ")])]);
    },
    mA = [];
  b$5._withStripped = !0;
  var fA = void 0,
    TA = "data-v-c88442f6",
    yA = void 0,
    DA = !1,
    C$5 = o$5({
      render: b$5,
      staticRenderFns: mA
    }, fA, YA, TA, DA, yA, !1, void 0, void 0, void 0);
  
  var zA = o$7.defineComponent({
    name: "QrCode",
    props: {
      isExpanded: {
        type: Boolean,
        "default": !1
      },
      qrCodeUrl: {
        type: String,
        "default": ""
      },
      darkMode: {
        type: Boolean,
        "default": !1
      }
    },
    emits: ["collapse", "expand"],
    data: function data() {
      return {
        imageLoaded: !1,
        imageError: !1
      };
    },
    watch: {
      qrCodeUrl: function qrCodeUrl(A) {
        A &amp;&amp; (this.imageLoaded = !1, this.imageError = !1);
      }
    },
    methods: {
      handleCollapse: function handleCollapse() {
        this.$emit("collapse");
      },
      handleExpand: function handleExpand() {
        this.$emit("expand");
      },
      onImageLoad: function onImageLoad() {
        this.imageLoaded = !0, this.imageError = !1;
      },
      onImageError: function onImageError() {
        this.imageLoaded = !1, this.imageError = !0;
      }
    }
  });
  var bA = zA;
  var S = function S() {
      var A = this,
        t = A.$createElement,
        e = A._self._c || t;
      return e("div", {
        staticClass: "qrcode__outer",
        "class": [{
          open: A.isExpanded
        }, {
          "dark-mode": A.darkMode
        }]
      }, [e("div", {
        staticClass: "qrcode__hd"
      }, [e("div", {
        staticClass: "close-area",
        on: {
          click: A.handleCollapse
        }
      }, [e("img", {
        staticClass: "arrow-icon",
        "class": {
          "img-color-invert": A.darkMode
        },
        attrs: {
          src: "	https://res.wx.qq.com/t/components/icons/base/arrow_down_regular.svg"
        }
      }), A._v("\n      \u6536\u8D77\n    ")])]), A._v(" "), e("div", {
        staticClass: "qrcode__bd"
      }, [A.qrCodeUrl ? e("img", {
        directives: [{
          name: "show",
          rawName: "v-show",
          value: A.imageLoaded &amp;&amp; !A.imageError,
          expression: "imageLoaded &amp;&amp; !imageError"
        }],
        staticClass: "qrcode-img",
        "class": {
          "img-color-invert": A.darkMode
        },
        attrs: {
          src: A.qrCodeUrl,
          alt: "商品二维码"
        },
        on: {
          load: A.onImageLoad,
          error: A.onImageError
        }
      }) : A._e(), A._v(" "), A.qrCodeUrl ? e("i", {
        directives: [{
          name: "show",
          rawName: "v-show",
          value: !A.imageLoaded &amp;&amp; !A.imageError,
          expression: "!imageLoaded &amp;&amp; !imageError"
        }],
        staticClass: "loading"
      }) : A._e(), A._v(" "), !A.qrCodeUrl || A.imageError ? e("img", {
        staticClass: "error-icon",
        "class": {
          "img-color-invert": A.darkMode
        },
        attrs: {
          src: "https://res.wx.qq.com/t/components/icons/base/refresh_regular.svg",
          alt: "加载失败"
        }
      }) : A._e()]), A._v(" "), A._m(0)]);
    },
    SA = [function () {
      var A = this,
        t = A.$createElement,
        e = A._self._c || t;
      return e("div", {
        staticClass: "qrcode__ft"
      }, [e("div", [A._v("使用手机微信")]), A._v(" "), e("div", [A._v("扫码了解商品信息")])]);
    }];
  S._withStripped = !0;
  var LA = void 0,
    _A = "data-v-34552a2a",
    jA = void 0,
    xA = !1,
    F$3 = o$5({
      render: S,
      staticRenderFns: SA
    }, LA, bA, _A, xA, jA, !1, void 0, void 0, void 0);
  
  var kA = o$7.defineComponent({
    name: "ProductPrice",
    props: {
      product: {
        type: Object,
        required: !0
      },
      layout: {
        type: String,
        "default": "large"
      },
      darkMode: {
        type: Boolean,
        "default": !1
      }
    }
  });
  var VA = kA;
  var L$1 = function L() {
      var A = this,
        t = A.$createElement,
        e = A._self._c || t;
      return e("div", {
        staticClass: "product-price",
        "class": [{
          "dark-mode": A.darkMode
        }]
      }, [e("div", {
        staticClass: "price-box"
      }, [e("div", {
        staticClass: "more"
      }, [e("div", {
        staticClass: "money"
      }, [A._v(A._s(A.product.price.str))]), A._v(" "), A.product.price.more ? e("div", {
        staticClass: "add"
      }, [A._v("起")]) : A._e(), A._v(" "), A.product.price.wording ? e("div", {
        staticClass: "tag"
      }, [A._v("\n        " + A._s(A.product.price.wording) + "\n      ")]) : A._e()])])]);
    },
    WA = [];
  L$1._withStripped = !0;
  var HA = void 0,
    vA = "data-v-4ce15964",
    PA = void 0,
    JA = !1,
    N = o$5({
      render: L$1,
      staticRenderFns: WA
    }, HA, VA, vA, JA, PA, !1, void 0, void 0, void 0);
  
  var OA = {
    name: "ProductTags",
    props: {
      product: {
        type: Object,
        required: !0
      },
      darkMode: {
        type: Boolean,
        "default": !1
      },
      layout: {
        type: String,
        "default": "large"
      },
      hideOverflowTags: {
        type: Boolean,
        "default": !0
      }
    },
    data: function data() {
      return {
        visibleTags: []
      };
    },
    methods: {
      calculateVisibleTags: function calculateVisibleTags() {
        if (!this.hideOverflowTags || !this.$refs.tagContainer) return;
        var A = this.$refs.tagContainer,
          t = A.offsetWidth,
          e = A.children;
        for (var a = 0; a &lt; e.length; a++) e[a].style.visibility = "visible";
        var i = 0;
        var B = [];
        for (var _a = 0; _a &lt; e.length; _a++) {
          var E = e[_a].offsetWidth + (_a &gt; 0 ? 8 : 0);
          if (i + E &lt;= t) B.push(_a), i += E;else break;
        }
        for (var _a2 = 0; _a2 &lt; e.length; _a2++) e[_a2].style.visibility = B.includes(_a2) ? "visible" : "hidden";
        this.visibleTags = B;
      },
      handleResize: function handleResize() {
        this.calculateVisibleTags();
      }
    },
    mounted: function mounted() {
      var _this = this;
      this.$nextTick(function () {
        _this.calculateVisibleTags(), window.addEventListener("resize", _this.handleResize);
      });
    },
    beforeDestroy: function beforeDestroy() {
      window.removeEventListener("resize", this.handleResize);
    }
  };
  var ZA = OA;
  var _$2 = function _() {
      var A = this,
        t = A.$createElement,
        e = A._self._c || t;
      return e("div", {
        staticClass: "product-tag__outer",
        "class": [A.layout, {
          "dark-mode": A.darkMode
        }]
      }, [e("div", {
        ref: "tagContainer",
        staticClass: "product-tag"
      }, [A._l(A.product.tags.marketingCoupons, function (i) {
        return e("div", {
          key: i.desc,
          staticClass: "tag-body",
          "class": A.layout == "bar" ? "marketing" : "primary"
        }, [A._v("\n      " + A._s(i.desc) + "\n    ")]);
      }), A._v(" "), A._l(A.product.tags.safeguardList, function (i) {
        return e("div", {
          key: i.desc,
          staticClass: "tag-body primary"
        }, [A._v("\n      " + A._s(i.desc) + "\n    ")]);
      }), A._v(" "), A._l(A.product.tags.couponsList, function (i) {
        return e("div", {
          key: i.desc,
          staticClass: "tag-body primary"
        }, [A._v("\n      " + A._s(i.desc) + "\n    ")]);
      })], 2)]);
    },
    KA = [];
  _$2._withStripped = !0;
  var XA = void 0,
    qA = "data-v-339c50a0",
    $A = void 0,
    Ae$1 = !1,
    h$1 = o$5({
      render: _$2,
      staticRenderFns: KA
    }, XA, ZA, qA, Ae$1, $A, !1, void 0, void 0, void 0);
  
  var ee = o$7.defineComponent({
    name: "ProductBar",
    components: {
      ProductTitle: M$1,
      ProductShop: Q,
      ProductBuyButtons: G$2,
      ProductImage: C$5,
      QrCode: F$3,
      ProductPrice: N,
      ProductTags: h$1
    },
    props: {
      product: {
        type: Object,
        required: !0
      },
      clientType: {
        type: String,
        "default": "C"
      },
      darkMode: {
        type: Boolean,
        "default": !1
      },
      isPC: {
        type: Boolean,
        "default": !1
      }
    },
    data: function data() {
      return {
        contentHeight: 44,
        isExpanded: !1
      };
    },
    mounted: function mounted() {
      this.calculateContentHeight(), window.addEventListener("resize", this.calculateContentHeight);
    },
    beforeDestroy: function beforeDestroy() {
      window.removeEventListener("resize", this.calculateContentHeight);
    },
    methods: {
      calculateContentHeight: function calculateContentHeight() {
        var A = this.$el.querySelector(".product-right");
        console.log(A), A &amp;&amp; (this.contentHeight = Math.max(A.clientHeight, 44));
      },
      handleCardClick: function handleCardClick() {
        this.isPC &amp;&amp; this.handleExpand(), this.$emit("card-click");
      },
      handleExpand: function handleExpand() {
        this.isExpanded = !0;
      },
      handleCollapse: function handleCollapse() {
        this.isExpanded = !1;
      },
      handleBuy: function handleBuy(A) {
        this.isPC &amp;&amp; this.handleExpand(), this.$emit("buy", A);
      },
      handleGift: function handleGift(A) {
        this.isPC &amp;&amp; this.handleExpand(), this.$emit("gift", A);
      }
    }
  });
  var te = ee;
  var j$1 = function j() {
      var A = this,
        t = A.$createElement,
        e = A._self._c || t;
      return e("div", {
        staticClass: "product-card",
        "class": {
          "dark-mode": A.darkMode
        },
        attrs: {
          id: "product-id-card"
        }
      }, [e("div", {
        staticClass: "mini-product-card",
        on: {
          click: A.handleCardClick
        }
      }, [e("div", {
        staticClass: "product-card__outer"
      }, [e("product-image", {
        attrs: {
          product: A.product,
          layout: "bar",
          "img-size": A.contentHeight,
          "dark-mode": A.darkMode
        }
      }), A._v(" "), e("div", {
        staticClass: "product-right"
      }, [e("div", {
        staticClass: "product-right-top"
      }, [e("product-title", {
        attrs: {
          product: A.product,
          layout: "bar",
          "dark-mode": A.darkMode
        }
      })], 1), A._v(" "), e("div", {
        staticClass: "product-right-bottom"
      }, [e("product-price", {
        attrs: {
          product: A.product,
          layout: "bar",
          "dark-mode": A.darkMode
        }
      }), A._v(" "), e("product-tags", {
        attrs: {
          product: A.product,
          layout: "bar",
          "dark-mode": A.darkMode
        }
      })], 1)]), A._v(" "), e("div", {
        staticClass: "product-button__outer"
      }, [e("product-buy-buttons", {
        attrs: {
          product: A.product,
          "client-type": A.clientType,
          layout: "bar",
          isPC: A.isPC,
          "dark-mode": A.darkMode
        },
        on: {
          expand: A.handleExpand,
          buy: A.handleBuy,
          gift: A.handleGift
        }
      })], 1)], 1), A._v(" "), e("product-shop", {
        attrs: {
          product: A.product,
          layout: "bar",
          "dark-mode": A.darkMode
        }
      })], 1), A._v(" "), A.isPC &amp;&amp; A.clientType === "C" ? e("qr-code", {
        attrs: {
          isExpanded: A.isExpanded,
          qrCodeUrl: A.product.qrCodeUrl,
          "dark-mode": A.darkMode
        },
        on: {
          collapse: A.handleCollapse
        }
      }) : A._e()], 1);
    },
    ie = [];
  j$1._withStripped = !0;
  var Be$1 = void 0,
    ae$1 = "data-v-6dc03843",
    re = void 0,
    oe = !1,
    Ee$1 = o$5({
      render: j$1,
      staticRenderFns: ie
    }, Be$1, te, ae$1, oe, re, !1, void 0, void 0, void 0);
  
  var ce$1 = o$7.defineComponent({
    name: "ProductHistory",
    props: {
      product: {
        type: Object,
        required: !0
      },
      layout: {
        type: String,
        "default": "large"
      },
      darkMode: {
        type: Boolean,
        "default": !1
      }
    }
  });
  var se$1 = ce$1;
  var x$1 = function x() {
      var A,
        t = this,
        e = t.$createElement,
        i = t._self._c || e;
      return t.product.sales ? i("div", {
        staticClass: "history",
        "class": (A = {}, A[t.layout] = t.layout, A["dark-mode"] = t.darkMode, A)
      }, [i("div", {
        staticClass: "history-inner"
      }, [t._v("已售" + t._s(t.product.history))])]) : t._e();
    },
    de$1 = [];
  x$1._withStripped = !0;
  var we$1 = void 0,
    ge$1 = "data-v-ca1abb60",
    ne$1 = void 0,
    ue$1 = !1,
    k = o$5({
      render: x$1,
      staticRenderFns: de$1
    }, we$1, se$1, ge$1, ue$1, ne$1, !1, void 0, void 0, void 0);
  
  var le$1 = {
    name: "ProductLarge",
    components: {
      ProductTitle: M$1,
      ProductTags: h$1,
      ProductHistory: k,
      ProductPrice: N,
      ProductBuyButtons: G$2,
      ProductShop: Q,
      ProductImage: C$5,
      QrCode: F$3
    },
    props: {
      product: {
        type: Object,
        required: !0
      },
      clientType: {
        type: String,
        "default": "C"
      },
      darkMode: {
        type: Boolean,
        "default": !1
      },
      isPC: {
        type: Boolean,
        "default": !1
      }
    },
    data: function data() {
      return {
        imgSize: 400,
        isExpanded: !1
      };
    },
    mounted: function mounted() {
      var _this2 = this;
      this.$nextTick(function () {
        _this2.calculateImageSize();
      }), window.addEventListener("resize", this.calculateImageSize);
    },
    beforeDestroy: function beforeDestroy() {
      window.removeEventListener("resize", this.calculateImageSize);
    },
    methods: {
      handleCardClick: function handleCardClick() {
        this.isPC &amp;&amp; this.handleExpand(), this.$emit("card-click", this.product);
      },
      handleExpand: function handleExpand() {
        var _this3 = this;
        this.isExpanded = !0, this.$nextTick(function () {
          _this3.calculateImageSize();
        });
      },
      handleCollapse: function handleCollapse() {
        this.isExpanded = !1;
      },
      calculateImageSize: function calculateImageSize() {
        var A = this.$el.querySelector(".normal-product-large");
        if (A) {
          var t = A.offsetWidth;
          this.imgSize = t;
        }
      },
      handleBuy: function handleBuy(A) {
        this.isPC &amp;&amp; this.handleExpand(), this.$emit("buy", A);
      },
      handleGift: function handleGift(A) {
        this.isPC &amp;&amp; this.handleExpand(), this.$emit("gift", A);
      }
    }
  };
  var Ie$1 = le$1;
  var V$1 = function V() {
      var A = this,
        t = A.$createElement,
        e = A._self._c || t;
      return e("div", {
        staticClass: "product-large",
        "class": {
          "dark-mode": A.darkMode
        },
        attrs: {
          id: "product-id-card"
        }
      }, [e("div", {
        staticClass: "normal-product-large",
        on: {
          click: A.handleCardClick
        }
      }, [e("product-image", {
        attrs: {
          product: A.product,
          layout: "large",
          "img-size": A.imgSize,
          "dark-mode": A.darkMode
        }
      }), A._v(" "), e("product-title", {
        attrs: {
          product: A.product,
          layout: "large",
          "dark-mode": A.darkMode
        }
      }), A._v(" "), e("product-tags", {
        attrs: {
          product: A.product,
          layout: "large",
          "dark-mode": A.darkMode
        }
      }), A._v(" "), e("div", {
        staticClass: "product-info__outer"
      }, [e("div", {
        staticClass: "product-info"
      }, [e("div", {
        staticClass: "left"
      }, [e("product-price", {
        attrs: {
          product: A.product,
          layout: "large",
          "price-type": "more",
          "dark-mode": A.darkMode
        }
      }), A._v(" "), e("product-history", {
        attrs: {
          product: A.product,
          layout: "large",
          "dark-mode": A.darkMode
        }
      })], 1), A._v(" "), e("div", {
        staticClass: "right"
      }, [e("product-buy-buttons", {
        attrs: {
          product: A.product,
          "client-type": A.clientType,
          isPC: A.isPC,
          layout: "large",
          "dark-mode": A.darkMode
        },
        on: {
          expand: A.handleExpand,
          buy: A.handleBuy,
          gift: A.handleGift
        }
      })], 1)])]), A._v(" "), e("product-shop", {
        attrs: {
          product: A.product,
          layout: "large",
          "dark-mode": A.darkMode
        }
      })], 1), A._v(" "), A.isPC &amp;&amp; A.clientType === "C" ? e("qr-code", {
        attrs: {
          isExpanded: A.isExpanded,
          qrCodeUrl: A.product.qrCodeUrl,
          "dark-mode": A.darkMode
        },
        on: {
          collapse: A.handleCollapse
        }
      }) : A._e()], 1);
    },
    Me = [];
  V$1._withStripped = !0;
  var Qe = void 0,
    Ge$1 = "data-v-5376dcc1",
    Ce$1 = void 0,
    Fe$1 = !1,
    Ne$1 = o$5({
      render: V$1,
      staticRenderFns: Me
    }, Qe, Ie$1, Ge$1, Fe$1, Ce$1, !1, void 0, void 0, void 0);
  
  var he$1 = o$7.defineComponent({
    name: "ProductLittle",
    components: {
      ProductTitle: M$1,
      ProductTags: h$1,
      ProductHistory: k,
      ProductPrice: N,
      ProductBuyButtons: G$2,
      ProductShop: Q,
      ProductImage: C$5,
      QrCode: F$3
    },
    props: {
      product: {
        type: Object,
        required: !0
      },
      clientType: {
        type: String,
        "default": "C"
      },
      darkMode: {
        type: Boolean,
        "default": !1
      },
      isPC: {
        type: Boolean,
        "default": !1
      }
    },
    data: function data() {
      return {
        contentHeight: 88,
        isExpanded: !1
      };
    },
    mounted: function mounted() {
      this.calculateContentHeight(), window.addEventListener("resize", this.calculateContentHeight);
    },
    beforeDestroy: function beforeDestroy() {
      window.removeEventListener("resize", this.calculateContentHeight);
    },
    methods: {
      handleCardClick: function handleCardClick() {
        this.isPC &amp;&amp; this.handleExpand(), this.$emit("card-click", this.product);
      },
      handleExpand: function handleExpand() {
        var _this4 = this;
        this.isExpanded = !0, this.$nextTick(function () {
          _this4.calculateContentHeight();
        });
      },
      handleCollapse: function handleCollapse() {
        this.isExpanded = !1;
      },
      calculateContentHeight: function calculateContentHeight() {
        var A = this.$el.querySelector(".product-right"),
          t = this.$el.querySelector(".info-right");
        console.log("calculateContentHeight", A, t, this.$el.clientWidth);
        var e = this.$el.clientWidth - (t == null ? void 0 : t.clientWidth) - 32 - 10;
        A &amp;&amp; (this.contentHeight = Math.max(Math.min(A.clientHeight, e), 88));
      },
      handleBuy: function handleBuy(A) {
        this.isPC &amp;&amp; this.handleExpand(), this.$emit("buy", A);
      },
      handleGift: function handleGift(A) {
        this.isPC &amp;&amp; this.handleExpand(), this.$emit("gift", A);
      }
    }
  });
  var pe$1 = he$1;
  var W$1 = function W() {
      var A = this,
        t = A.$createElement,
        e = A._self._c || t;
      return e("div", {
        staticClass: "product-little",
        "class": {
          "dark-mode": A.darkMode
        },
        attrs: {
          id: "product-id-card"
        }
      }, [e("div", {
        staticClass: "small-product-little",
        on: {
          click: A.handleCardClick
        }
      }, [e("div", {
        staticClass: "product-little__outer"
      }, [e("product-image", {
        attrs: {
          product: A.product,
          layout: "little",
          "img-size": A.contentHeight,
          "dark-mode": A.darkMode
        }
      }), A._v(" "), e("div", {
        staticClass: "product-right"
      }, [e("div", {
        staticClass: "product-right-top"
      }, [e("product-title", {
        attrs: {
          product: A.product,
          layout: "little",
          "dark-mode": A.darkMode
        }
      }), A._v(" "), e("product-tags", {
        attrs: {
          product: A.product,
          layout: "little",
          "dark-mode": A.darkMode
        }
      }), A._v(" "), e("product-history", {
        attrs: {
          product: A.product,
          layout: "little",
          "dark-mode": A.darkMode
        }
      })], 1), A._v(" "), e("div", {
        staticClass: "product-right-bottom"
      }, [e("div", {
        staticClass: "product-info__outer"
      }, [e("div", {
        staticClass: "product-info"
      }, [e("div", {
        staticClass: "info-left"
      }, [e("product-price", {
        attrs: {
          product: A.product,
          layout: "little",
          "price-type": "more",
          "dark-mode": A.darkMode
        }
      })], 1), A._v(" "), e("div", {
        staticClass: "info-right"
      }, [e("product-buy-buttons", {
        attrs: {
          product: A.product,
          "client-type": A.clientType,
          layout: "little",
          isPC: A.isPC,
          "dark-mode": A.darkMode
        },
        on: {
          expand: A.handleExpand,
          buy: A.handleBuy,
          gift: A.handleGift
        }
      })], 1)])])])])], 1), A._v(" "), e("product-shop", {
        attrs: {
          product: A.product,
          layout: "little",
          "dark-mode": A.darkMode
        }
      })], 1), A._v(" "), A.isPC &amp;&amp; A.clientType === "C" ? e("qr-code", {
        attrs: {
          isExpanded: A.isExpanded,
          qrCodeUrl: A.product.qrCodeUrl
        },
        on: {
          collapse: A.handleCollapse
        }
      }) : A._e()], 1);
    },
    Ue$1 = [];
  W$1._withStripped = !0;
  var Re$1 = void 0,
    Ye$1 = "data-v-d8ab1782",
    me$1 = void 0,
    fe$1 = !1,
    Te$1 = o$5({
      render: W$1,
      staticRenderFns: Ue$1
    }, Re$1, pe$1, Ye$1, fe$1, me$1, !1, void 0, void 0, void 0);
  
  var ye$1 = {
    name: "ProductPicture",
    props: {
      imageUrl: {
        type: String,
        required: !0
      },
      title: {
        type: String,
        "default": ""
      }
    },
    computed: {
      imgSize: function imgSize() {
        return {
          width: "100%",
          height: "auto",
          maxWidth: "400px"
        };
      }
    },
    methods: {
      openShop: function openShop() {}
    }
  };
  var De$1 = ye$1;
  var H$2 = function H() {
      var A = this,
        t = A.$createElement,
        e = A._self._c || t;
      return e("a", {
        staticClass: "product_image_link js_product_entry"
      }, [e("img", {
        staticClass: "rich_pages wxw-img",
        style: A.imgSize,
        attrs: {
          src: A.imageUrl,
          alt: A.title
        },
        on: {
          click: A.openShop
        }
      })]);
    },
    ze = [];
  H$2._withStripped = !0;
  var be$1 = void 0,
    Se$1 = void 0,
    Le$1 = void 0,
    _e$1 = !1,
    je = o$5({
      render: H$2,
      staticRenderFns: ze
    }, be$1, De$1, Se$1, _e$1, Le$1, !1, void 0, void 0, void 0);
  
  var v$1 = function (A) {
    return A[A.LARGE = 0] = "LARGE", A[A.LITTLE = 1] = "LITTLE", A[A.PICTURE = 2] = "PICTURE", A[A.BAR = 3] = "BAR", A[A.TEXT = 4] = "TEXT", A;
  }(v$1 || {});
  
  var xe$1 = o$7.defineComponent({
    name: "Product",
    components: {
      ProductBar: Ee$1,
      ProductLarge: Ne$1,
      ProductLittle: Te$1,
      ProductPicture: je
    },
    data: function data() {
      return {
        CardType: v$1
      };
    },
    props: {
      cardType: {
        type: Number
      },
      product: {
        type: Object,
        required: !0
      },
      clientType: {
        type: String,
        "default": "default"
      },
      darkMode: {
        type: Boolean,
        "default": !1
      },
      isPC: {
        type: Boolean,
        "default": !1
      }
    },
    mounted: function mounted() {
      this.$emit("ready");
    },
    methods: {
      handleCardClick: function handleCardClick() {
        this.$emit("open", "product");
      },
      handleBuy: function handleBuy() {
        this.$emit("open", "buy");
      },
      handleGift: function handleGift(A) {
        A.clickType == 3 ? this.$emit("open", "giftFail") : this.$emit("open", "gift");
      }
    }
  });
  var ke$1 = xe$1;
  var P$3 = function P() {
      var A = this,
        t = A.$createElement,
        e = A._self._c || t;
      return e("div", {
        staticClass: "product-container",
        "class": "client-type-" + A.clientType
      }, [A.cardType === A.CardType.BAR ? e("ProductBar", {
        attrs: {
          product: A.product,
          "client-type": A.clientType,
          "dark-mode": A.darkMode &amp;&amp; A.clientType === "C",
          isPC: A.isPC
        },
        on: {
          buy: A.handleBuy,
          gift: A.handleGift,
          "card-click": A.handleCardClick
        },
        scopedSlots: A._u([{
          key: "bottom",
          fn: function fn() {
            return [A._t("bottom")];
          },
          proxy: !0
        }], null, !0)
      }) : A.cardType === A.CardType.LARGE ? e("ProductLarge", {
        attrs: {
          product: A.product,
          "client-type": A.clientType,
          "dark-mode": A.darkMode &amp;&amp; A.clientType === "C",
          isPC: A.isPC
        },
        on: {
          buy: A.handleBuy,
          gift: A.handleGift,
          "card-click": A.handleCardClick
        },
        scopedSlots: A._u([{
          key: "bottom",
          fn: function fn() {
            return [A._t("bottom")];
          },
          proxy: !0
        }], null, !0)
      }) : A.cardType === A.CardType.LITTLE ? e("ProductLittle", {
        attrs: {
          product: A.product,
          "client-type": A.clientType,
          "dark-mode": A.darkMode &amp;&amp; A.clientType === "C",
          isPC: A.isPC
        },
        on: {
          buy: A.handleBuy,
          gift: A.handleGift,
          "card-click": A.handleCardClick
        },
        scopedSlots: A._u([{
          key: "bottom",
          fn: function fn() {
            return [A._t("bottom")];
          },
          proxy: !0
        }], null, !0)
      }) : e("ProductLarge", {
        attrs: {
          product: A.product,
          "client-type": A.clientType,
          "dark-mode": A.darkMode &amp;&amp; A.clientType === "C",
          isPC: A.isPC
        },
        on: {
          buy: A.handleBuy,
          gift: A.handleGift,
          "card-click": A.handleCardClick
        },
        scopedSlots: A._u([{
          key: "bottom",
          fn: function fn() {
            return [A._t("bottom")];
          },
          proxy: !0
        }], null, !0)
      })], 1);
    },
    Ve = [];
  P$3._withStripped = !0;
  var We = void 0,
    He$1 = "data-v-71c60811",
    ve$1 = void 0,
    Pe$1 = !1,
    Je = o$5({
      render: P$3,
      staticRenderFns: Ve
    }, We, ke$1, He$1, Pe$1, ve$1, !1, void 0, void 0, void 0);
  function Oe$1(A) {
    return A.replace(/_([a-z])/g, function (t, e) {
      return e.toUpperCase();
    });
  }
  function I$4(A) {
    if (A == null) return A;
    if (Array.isArray(A)) return A.map(function (e) {
      return I$4(e);
    });
    if (A instanceof Date || _typeof$2(A) != "object") return A;
    var t = {};
    for (var e in A) if (A.hasOwnProperty(e)) {
      var i = Oe$1(e),
        B = A[e];
      t[i] = I$4(B);
    }
    return t;
  }
  var d$4 = {
      BRAND_SHOP: 1,
      BRAND_PRODUCT: 2,
      PRESALE: 3,
      SEVEN_DAY_GUARANTEE: 4,
      SELLER_INSURANCE: 5,
      FLASHSALE: 6,
      PAY_AFTER_USE: 7,
      FAST_REFUND: 8,
      DAMAGE_GUARANTEE: 9,
      FAKE_ONE_PAY_FOUR: 10,
      TIMEOUT_REFUND: 11,
      BUY_WITH_CONFIDENCE: 12,
      DOOR_TO_DOOR_PICKUP: 14
    },
    Ze$1 = function Ze(A) {
      var t = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 1;
      var e = Number(A);
      return Number.isNaN(e) ? (console.warn("[formatUnit] The count is an invalid value!"), "0") : e === 0 ? "0" : e &lt; 1e4 ? "".concat(e) : e &lt; 1e8 ? t === 0 ? Math.floor(Number(e) / 1e4) + "万" : Math.floor(Number(e) / 1e3) / 10 + "万" : t === 0 ? Math.floor(Number(e) / 1e8) + "亿" : Math.floor(Number(e) / 1e7) / 10 + "亿";
    },
    Ke = defineProperty(defineProperty(defineProperty(defineProperty(defineProperty(defineProperty(defineProperty(defineProperty(defineProperty({}, d$4.SEVEN_DAY_GUARANTEE, {
      desc: "7天无理由",
      "class": "safeguard"
    }), d$4.SELLER_INSURANCE, {
      "class": "safeguard",
      desc: "运费险"
    }), d$4.PAY_AFTER_USE, {
      "class": "safeguard",
      desc: "先用后付"
    }), d$4.FAST_REFUND, {
      "class": "safeguard",
      desc: "极速退款"
    }), d$4.DAMAGE_GUARANTEE, {
      "class": "safeguard",
      desc: "坏损包退"
    }), d$4.FAKE_ONE_PAY_FOUR, {
      "class": "safeguard",
      desc: "假一赔三"
    }), d$4.TIMEOUT_REFUND, {
      "class": "safeguard",
      desc: function desc(_ref) {
        var A = _ref.tagNum1;
        return _typeof$2(A) &lt; "u" ? "".concat(A, "\u5929\u8D85\u65F6\u9000") : "";
      },
      valid: function valid(_ref2) {
        var A = _ref2.tagNum1;
        return typeof A == "number";
      }
    }), d$4.BUY_WITH_CONFIDENCE, {
      "class": "confidence",
      desc: "放心买"
    }), d$4.DOOR_TO_DOOR_PICKUP, {
      "class": "safeguard",
      desc: "上门取件"
    }),
    Xe = function Xe(A) {
      var t = (A.marketingCoupons || []).map(function (B) {
          return {
            desc: B.couponName,
            "class": "marketing-coupons"
          };
        }),
        e = (A.productIconTags || []).map(function (B) {
          var a = Ke[B.tagType];
          if (!a || typeof a.valid == "function" &amp;&amp; !a.valid(B)) return null;
          var E = "";
          return typeof a.desc == "function" ? E = a.desc(B) : E = a.desc, {
            desc: E,
            "class": a["class"]
          };
        }).filter(function (B) {
          return B;
        }),
        i = (A.associatedCoupons || []).map(function (B) {
          return {
            desc: B.couponName,
            "class": "coupons"
          };
        });
      return {
        marketingCoupons: t,
        safeguardList: e,
        couponsList: i
      };
    },
    qe = {
      1: {
        show: !0
      },
      2: {
        show: !1,
        msg: "商品因违规已下架"
      },
      3: {
        show: !0,
        msg: "商品已下架"
      },
      4: {
        show: !0,
        msg: "商品已删除"
      },
      5: {
        show: !0
      }
    },
    $e = function $e(A) {
      var e;
      var t = qe[A.status];
      return t.msg ? t.msg : ((e = A.timingOnsaleInfo) == null ? void 0 : e.status) === 1 ? " " : A.stock ? "" : "商品卖完了";
    },
    At = function At(A) {
      var e;
      var t = {
        str: "\xA5".concat(A.sellingPrice / 100),
        more: A.isPriceBeginShow,
        wording: A.sellingPriceWording
      };
      return ((e = A.timingOnsaleInfo) == null ? void 0 : e.status) === 1 &amp;&amp; (A.timingOnsaleInfo.isHidePrice &amp;&amp; (t = {
        str: "\xA5".concat(A.timingOnsaleInfo.maskPrice),
        more: 0,
        wording: ""
      }), t.wording = "待开售"), t;
    },
    et = function et(A) {
      var e, i;
      var t = 0;
      return (e = A.productShopIcon) != null &amp;&amp; e.iconTopSimplifyUrl ? t = 1 : (i = A.productShopIcon) != null &amp;&amp; i.iconR_30transpUrl &amp;&amp; (t = 2), t;
    },
    T$5 = function T(A) {
      var e, i, B, a;
      var t = I$4(A);
      return _objectSpread$9(_objectSpread$9({}, t), {}, {
        tags: Xe(t),
        btnText: $e(t),
        history: Ze$1(t.sales),
        price: At(t),
        bizIcon: {
          goodShopIcon: {
            normal: ((e = t.productShopIcon) == null ? void 0 : e.iconTopSimplifyUrl) || "",
            dark: ((i = t.productShopIcon) == null ? void 0 : i.iconTopSimplifyUrlDark) || ""
          },
          rtagIcon: {
            normal: ((B = t.productShopIcon) == null ? void 0 : B.iconR_30transpUrl) || "",
            dark: ((a = t.productShopIcon) == null ? void 0 : a.iconR_30transpDarkUrl) || ""
          }
        },
        shopLabelTag: et(t)
      });
    };
  var tt = "https://mp.weixin.qq.com/shop/ssr/wap/business",
    it = "https://mp.weixin.qq.com/shop/ssr/wap/productCard",
    Bt = "https://mp.weixin.qq.com/mmec/productcard",
    at = "https://mp.weixin.qq.com/shop/ssr/wap/recommend",
    rt = "https://mp.weixin.qq.com",
    l$5 = {
      BIZ_ARTICLE_CSIDE_READ: 1,
      BIZ_ARTICLE_BSIDE_PREVIEW: 2,
      BIZ_PRIVATE_MESSAGE_BSIDE: 3,
      BIZ_PRIVATE_MESSAGE_CSIDE: 4,
      BIZ_AUTO_REPLY_BSIDE: 5,
      BIZ_AUTO_REPLY_CSIDE: 6,
      BIZ_CUSTOM_MENU_BSIDE: 7,
      BIZ_CUSTOM_MENU_CSIDE: 8
    },
    ot = 8;
  function Et(A) {
    try {
      var _JSON$parse = JSON.parse(A),
        t = _JSON$parse.action,
        e = _JSON$parse.value;
      return {
        action: t,
        value: e
      };
    } catch (t) {
      console.error(t);
    }
    return {};
  }
  function g$5(A, t, e, i) {
    try {
      if (!A) return console.warn("postMessageToIframe: win is null");
      A.postMessage(JSON.stringify({
        action: t,
        value: e
      }), i || "*");
    } catch (B) {
      console.log("postMessage error", B);
    }
  }
  var ct = {
    name: "mp-common-product",
    components: {
      Product: Je
    },
    mixins: [k$1],
    props: {
      extraInfo: {
        type: Object,
        "default": function _default() {
          return {};
        }
      },
      productInfo: {
        type: Object,
        "default": function _default() {
          return {};
        }
      },
      immutable: {
        type: Number,
        "default": 0
      },
      token: {
        type: String,
        "default": ""
      },
      windowproduct: {
        type: String,
        "default": ""
      },
      is_hover: {
        type: Number,
        "default": 0
      },
      is_selected: {
        type: Number,
        "default": 0
      },
      customstyle: {
        type: String,
        "default": "{}"
      },
      ecsource: {
        type: String,
        "default": ""
      },
      exportkey: {
        type: String,
        "default": ""
      },
      wap_export_token: {
        type: String,
        "default": ""
      },
      loaded: {
        type: Number,
        "default": 0
      },
      cardtype: {
        type: Number,
        "default": 0
      },
      productImage: {
        type: String,
        "default": ""
      },
      originPrice: {
        type: Number,
        "default": 0
      },
      discountedPrice: {
        type: Number,
        "default": 0
      },
      title: {
        type: String,
        "default": ""
      },
      req_scene: {
        type: Number,
        "default": 0
      },
      urlParams: {
        type: Object,
        "default": function _default() {
          return {};
        }
      },
      extInfo: {
        type: Object,
        "default": function _default() {
          return {};
        }
      },
      scrollBlur: {
        type: Number,
        "default": 0
      },
      wrpStyle: {
        type: String,
        "default": ""
      },
      outerclick: {
        type: Number,
        "default": 0
      }
    },
    data: function data() {
      var t = "",
        e = "https://mp.weixin.qq.com/mmec/biz_getproductqrcode?productkey=".concat(this.windowproduct, "&amp;reqScene=").concat(this.req_scene, "&amp;article_info=");
      return {
        showIframe: !1,
        iframeUrl: t,
        transferStyle: "",
        timeout: null,
        observer: null,
        active: !1,
        hasExpose: !1,
        iframeLoading: !0,
        iframeLoadTimeout: null,
        productCard: null,
        failMsg: "",
        qrCodeUrl: e
      };
    },
    computed: {
      isEditor: function isEditor() {
        return this.platform === "web" || this.platform === "app";
      },
      jumpInfo: function jumpInfo() {
        var _this$productCard = this.productCard,
          A = _this$productCard.giftJumpInfoBase64Str,
          t = _this$productCard.cardJumpInfoBase64Str,
          e = _this$productCard.buyButtonJumpInfoBase64Str;
        return {
          giftJumpInfoBase64Str: A,
          cardJumpInfoBase64Str: t,
          buyButtonJumpInfoBase64Str: e
        };
      },
      iframeStyle: function iframeStyle() {
        var A = {};
        return this.platform === "web" ? [l$5.BIZ_CUSTOM_MENU_BSIDE, l$5.BIZ_AUTO_REPLY_BSIDE, l$5.BIZ_PRIVATE_MESSAGE_BSIDE].includes(this.req_scene) ? A.width = "195px" : A.width = "350px" : A.width = "100%", A = Object.assign(A, JSON.parse(this.transferStyle || "{}")), A;
      },
      isIframe: function isIframe() {
        return this.cardtype !== 0 &amp;&amp; this.cardtype !== 1 &amp;&amp; this.cardtype !== 3;
      },
      clientType: function clientType() {
        return this.isEditor ? "B" : "C";
      },
      darkMode: function darkMode() {
        return this.extraInfo.window.matchMedia("(prefers-color-scheme: dark)").matches;
      },
      isPC: function isPC() {
        return Device.os.pc;
      }
    },
    watch: {
      loaded: {
        handler: function handler() {
          this.loaded &amp;&amp; (this.showIframe = !0, this.iframeUrl = this.getCUrl());
        },
        immediate: !0
      },
      cardtype: function cardtype(A) {
        this.isEditor &amp;&amp; (this.iframeUrl = this.getBUrl()), (A === 0 || A === 1 || A === 3) &amp;&amp; (this.iframeLoading = !1);
      },
      windowproduct: function windowproduct() {
        this.isEditor &amp;&amp; (this.iframeUrl = this.getBUrl());
      },
      urlParams: function urlParams() {
        this.isEditor &amp;&amp; (this.iframeUrl = this.getBUrl());
      },
      iframeUrl: function iframeUrl() {
        var _this5 = this;
        this.isIframe &amp;&amp; (this.iframeLoading = !0, this.iframeLoadTimeout &amp;&amp; clearTimeout(this.iframeLoadTimeout), this.iframeLoadTimeout = setTimeout(function () {
          window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; window.WX_BJ_REPORT.BadJs.report("load timeout", _this5.iframeUrl, {
            mid: "mmbizwap:product",
            view: "wap_business",
            _info: {
              url: location.href,
              productCount: document.getElementsByTagName("mp-common-product").length
            }
          });
        }, 5e3));
      }
    },
    created: function created() {
      this.isEditor &amp;&amp; (this.showIframe = !0, this.iframeUrl = this.getBUrl()), this.isIframe || (this.iframeLoading = !1);
    },
    mounted: function mounted() {
      var _this6 = this;
      this.extraInfo.window &amp;&amp; this.extraInfo.window.addEventListener("message", this.handleMessage), this.extraInfo.window &amp;&amp; this.extraInfo.window.addEventListener("click", this.handleDocumentClick), this.scrollBlur &amp;&amp; this.extraInfo.window &amp;&amp; this.extraInfo.window.addEventListener("scroll", this.handleScroll), this.isIframe || (window.__secPageAuthPromise ? window.__secPageAuthPromise.then(function () {
        _this6.initProductInfo();
      }) : this.initProductInfo());
    },
    beforeDestroy: function beforeDestroy() {
      this.extraInfo.window &amp;&amp; this.extraInfo.window.removeEventListener("message", this.handleMessage), this.extraInfo.window &amp;&amp; this.extraInfo.window.removeEventListener("click", this.handleDocumentClick), this.scrollBlur &amp;&amp; this.extraInfo.window &amp;&amp; this.extraInfo.window.removeEventListener("scroll", this.handleScroll), this.observer &amp;&amp; this.observer.disconnect();
    },
    methods: {
      handleScroll: function handleScroll() {
        this.deActive();
      },
      handleDocumentClick: function handleDocumentClick(A) {
        this.$refs.js_custom_element.contains(A.target) || (this.deActive(), this.$emit("document-click", A));
      },
      deActive: function deActive() {
        var A = this.$refs.iframeRef;
        A &amp;&amp; A.contentWindow &amp;&amp; this.active &amp;&amp; (g$5(A.contentWindow, "webEvent", {
          type: "unclick"
        }), this.active = !1);
      },
      exposureReport: function exposureReport() {
        var _this7 = this;
        this.observer = new IntersectionObserver(function (A) {
          A.forEach(function (t) {
            var e = _this7.isIframe ? _this7.$refs.iframeRef : _this7.$refs.productCardRef &amp;&amp; _this7.$refs.productCardRef.$el;
            if (t.isIntersecting &amp;&amp; t.intersectionRatio &gt;= 0.5) {
              _this7.$emit("expose", !_this7.hasExpose), _this7.hasExpose = !0;
              try {
                e &amp;&amp; (_this7.timeout = setTimeout(function () {
                  _this7.isIframe ? e.contentWindow &amp;&amp; g$5(e.contentWindow, "webEvent", {
                    type: "valid_expose"
                  }) : _this7.report("element_valid_expose");
                }, 500));
              } catch (i) {
                console.error(i);
              }
            } else _this7.timeout &amp;&amp; clearTimeout(_this7.timeout);
          });
        }, {
          threshold: 0.5
        }), this.observer.observe(this.$refs.js_custom_element);
      },
      handleMessage: function handleMessage(A) {
        if (A.origin !== rt) return;
        var t = this.$refs.iframeRef;
        if (t &amp;&amp; A.source === t.contentWindow) {
          var _Et = Et(A.data),
            e = _Et.action,
            i = _Et.value;
          switch (e) {
            case "changeFrameStyle":
              this.changeFrameStyle(A, i);
              break;
            case "onFrameReady":
              this.onFrameReady(A, t);
              break;
            case "webEvent":
              i.type === "click" ? this.clickProduct(A) : i.type === "toast" ? window.weui.toast(i.msg, {
                extClass: "weui-toast_text common_product_toast"
              }) : i.type === "dialog" &amp;&amp; window.weui.dialog(i);
              break;
          }
          this.$emit("iframe-message", A);
        }
      },
      onFrameReady: function onFrameReady(A, t) {
        this.iframeLoadTimeout &amp;&amp; clearTimeout(this.iframeLoadTimeout), this.iframeLoading = !1, this.setProductData(A.source, t), this.extraInfo.window &amp;&amp; g$5(this.extraInfo.window, "setPageData", {
          darkMode: this.extraInfo.window.matchMedia("(prefers-color-scheme: dark)").matches
        }), this.isEditor || this.exposureReport();
      },
      onCardReady: function onCardReady() {
        if (this.iframeLoadTimeout &amp;&amp; clearTimeout(this.iframeLoadTimeout), this.iframeLoading = !1, this.windowproduct) {
          var A = this.$el.getRootNode().host;
          removePlaceholder(A, this.windowproduct);
          var t = A &amp;&amp; A.parentNode;
          if (t) {
            var e = t.querySelector(".wx_img_placeholder");
            e &amp;&amp; t.removeChild(e);
          }
        }
        this.emitCardReadyEvent(), this.isEditor || this.exposureReport();
      },
      clickProduct: function clickProduct(A) {
        this.extraInfo.window &amp;&amp; this.extraInfo.window.clickedProductWin &amp;&amp; A.source !== this.extraInfo.window.clickedProductWin &amp;&amp; g$5(this.extraInfo.window.clickedProductWin, "webEvent", {
          type: "unclick"
        }), this.extraInfo.window &amp;&amp; (this.extraInfo.window.clickedProductWin = A.source), this.active = !0;
      },
      setProductData: function setProductData(A) {
        g$5(A, "setData", {
          infos: {
            scene: "edit"
          }
        }), this.immutable &amp;&amp; g$5(A, "setPageData", {
          scene: "immutable"
        });
      },
      changeFrameStyle: function changeFrameStyle(A, t) {
        if (!(!t || _typeof$2(t) != "object" || this.cardtype === 2)) try {
          this.transferStyle = JSON.stringify(t);
        } catch (e) {
          console.error(e);
        }
      },
      getBRecommendIframeUrl: function getBRecommendIframeUrl() {
        var A = _objectSpread$9({
            reqScene: this.req_scene
          }, this.urlParams),
          t = window &amp;&amp; window.wx &amp;&amp; window.wx.data &amp;&amp; window.wx.data.t || p$1(window.location.href).token || this.token;
        return t &amp;&amp; (A.token = t), this.cardtype &amp;&amp; (A.cardtype = 1), u$2(at, A);
      },
      getBUrl: function getBUrl() {
        if (this.cardtype === ot) return this.getBRecommendIframeUrl();
        var A = _objectSpread$9({
            productkey: this.windowproduct,
            reqScene: this.req_scene
          }, this.urlParams),
          t = window &amp;&amp; window.wx &amp;&amp; window.wx.data &amp;&amp; window.wx.data.t || p$1(window.location.href).token || this.token;
        return t &amp;&amp; (A.token = t), this.cardtype &amp;&amp; (A.cardtype = this.cardtype), this.isIframe ? u$2(tt, A) : u$2(it, A);
      },
      getCUrl: function getCUrl() {
        var A = _objectSpread$9({
          productkey: this.windowproduct,
          reqScene: this.req_scene
        }, this.urlParams);
        return this.exportkey &amp;&amp; (A.exportkey = this.exportkey), this.wap_export_token &amp;&amp; (A.wap_export_token = this.wap_export_token), this.ecsource &amp;&amp; (A.ecsource = this.ecsource), this.cardtype &amp;&amp; (A.cardtype = this.cardtype), u$2(Bt, A);
      },
      openShop: function openShop() {
        var A = this.$refs.iframeRef;
        this.outerclick ? this.$emit("element-click", this.$refs.js_custom_element) : !this.isEditor &amp;&amp; A &amp;&amp; g$5(A.contentWindow, "webEvent", {
          type: "openShop",
          clickType: 0
        });
      },
      getBCardData: function getBCardData() {
        var _this8 = this;
        this.failMsg = "", ajax({
          url: this.getBUrl(),
          type: "GET",
          dataType: "json",
          contentType: "application/json; charset=UTF-8",
          success: function success(A) {
            var t, e, i, B;
            ((t = A == null ? void 0 : A.resp) == null ? void 0 : t.code) === 0 &amp;&amp; (e = A == null ? void 0 : A.resp) != null &amp;&amp; e.data ? _this8.productCard = T$5((i = A == null ? void 0 : A.resp) == null ? void 0 : i.data) : _this8.failMsg = ((B = A == null ? void 0 : A.resp) == null ? void 0 : B.msg) || "商品信息获取失败";
          },
          error: function error(A) {
            console.error("获取商品数据失败:"), _this8.failMsg = "商品信息获取失败";
          }
        });
      },
      getCCardData: function getCCardData() {
        var _this9 = this;
        var e, i;
        var A = {
            article_info: btoa(JSON.stringify({
              mp_biz: atob(window.biz || ""),
              item_idx: Number(window.itemidx || window.idx || 0),
              appmsgid: Number(window.mid || 0),
              item_show_type: Number(window.item_show_type || 0),
              mp_article_scene: Number(window.source || 0),
              mp_sub_scene: Number(window.subscene || 0),
              mp_get_a8key_scene: Number(window.ascene || 0),
              carrier_type: ((i = (e = window.cgiData) == null ? void 0 : e.product_activity) == null ? void 0 : i.activity_type) || 0,
              search_click_id: Url.getQuery("search_click_id") || ""
            })),
            exportkey: Url.getQuery("exportkey") || "",
            wap_export_token: this.wap_export_token || "",
            ecsource: this.ecsource || ""
          },
          t = Object.keys(A).map(function (B) {
            return "".concat(B, "=").concat(A[B]);
          }).join("&amp;");
        this.qrCodeUrl = this.qrCodeUrl.concat(A.article_info), ajax({
          url: "/mmec/biz_batchgetproductcard?".concat(t),
          type: "POST",
          data: JSON.stringify({
            productkey_list: [this.windowproduct],
            cardtype: this.cardtype
          }),
          dataType: "json",
          contentType: "application/json; charset=UTF-8",
          success: function success(B) {
            B.product_card_list &amp;&amp; B.product_card_list.length &gt; 0 ? (_this9.productCard = T$5(B.product_card_list[0].product_card_info), _this9.$forceUpdate()) : console.log("未获取到商品数据");
          },
          error: function error(B) {
            console.error("获取商品数据失败:", B);
          }
        });
      },
      initProductInfo: function initProductInfo() {
        this.windowproduct &amp;&amp; (this.isEditor ? this.getBCardData() : this.getCCardData());
      },
      openJumpInfo: function openJumpInfo(A) {
        var _this10 = this;
        return asyncToGenerator( _regeneratorRuntime$2().mark(function _callee() {
          var t, e;
          return _regeneratorRuntime$2().wrap(function _callee$(_context) {
            while (1) switch (_context.prev = _context.next) {
              case 0:
                if (!(_this10.platform === "wechat")) {
                  _context.next = 11;
                  break;
                }
                _context.next = 3;
                return t$3();
              case 3:
                if (!_context.sent) {
                  _context.next = 8;
                  break;
                }
                _context.next = 6;
                return i$2(A);
              case 6:
                _context.next = 9;
                break;
              case 8:
                (t = window == null ? void 0 : window.weui) == null || t.toast("当前版本不支持打开页面", {
                  extClass: "weui-toast_text"
                });
              case 9:
                _context.next = 12;
                break;
              case 11:
                (e = window == null ? void 0 : window.weui) == null || e.toast("请在手机微信中打开", {
                  extClass: "weui-toast_text"
                });
              case 12:
              case "end":
                return _context.stop();
            }
          }, _callee);
        }))();
      },
      handleOpenProduct: function handleOpenProduct() {
        this.openJumpInfo(this.jumpInfo.cardJumpInfoBase64Str);
      },
      handleBuy: function handleBuy() {
        this.openJumpInfo(this.jumpInfo.buyButtonJumpInfoBase64Str);
      },
      handleGift: function handleGift() {
        this.openJumpInfo(this.jumpInfo.giftJumpInfoBase64Str);
      },
      emitCardReadyEvent: function emitCardReadyEvent() {
        var A = {
            data: JSON.stringify({
              action: "onFrameReady",
              value: {
                productTitle: this.productCard.title,
                productName: this.productCard.title,
                qrcodeUrl: this.qrCodeUrl
              }
            })
          },
          t = new CustomEvent("iframe-message", {
            detail: A,
            bubbles: !0
          });
        this.$el.dispatchEvent(t), this.$emit("iframe-message", A);
      },
      emitCardClickEvent: function emitCardClickEvent() {
        var A = {
            data: JSON.stringify({
              action: "webEvent",
              value: {
                type: "click"
              }
            })
          },
          t = new CustomEvent("iframe-message", {
            detail: A,
            bubbles: !0
          });
        this.$el.dispatchEvent(t), this.$emit("iframe-message", A);
      },
      handleProductClick: function handleProductClick(A) {
        var t, e;
        if (this.emitCardClickEvent(), this.clientType !== "B") {
          if (this.report("element_click"), Device.os.pc) {
            this.$set(this.productCard, "qrCodeUrl", this.qrCodeUrl);
            return;
          } else if (!MMVersion.isWechat) {
            (t = window == null ? void 0 : window.weui) == null || t.toast("请在手机微信中打开", {
              extClass: "weui-toast_text"
            });
            return;
          }
          A === "product" ? this.handleOpenProduct() : A === "buy" ? this.handleBuy() : A === "gift" ? this.handleGift() : A === "giftFail" &amp;&amp; ((e = window == null ? void 0 : window.weui) == null || e.alert(this.productCard.canntGivePresentMsg || "该商品不支持赠送", {
            extClass: "weui-toast_text"
          }));
        }
      },
      report: function report(A) {
        var _this11 = this;
        return asyncToGenerator( _regeneratorRuntime$2().mark(function _callee2() {
          var t, i;
          return _regeneratorRuntime$2().wrap(function _callee2$(_context2) {
            while (1) switch (_context2.prev = _context2.next) {
              case 0:
                _context2.next = 2;
                return N$1();
              case 2:
                t = _context2.sent;
                i = {
                  logid: "23782",
                  data: {
                    event: A,
                    params: JSON.stringify({
                      page_name: "mp_article_page",
                      element_name: "commodity_card",
                      productid: _this11.productCard.productId,
                      mp_article_bizuin: t.article_info.mp_biz,
                      mp_article_appmsgid: t.article_info.appmsgid,
                      mp_article_item_idx: t.article_info.item_idx,
                      mp_article_item_show_type: t.article_info.item_show_type,
                      scene: t.article_info.mp_article_scene,
                      cardtype: _this11.cardtype,
                      appid: _this11.productCard.appid,
                      shopLabelTag: _this11.productCard.shopLabelTag || 0
                    })
                  }
                };
                O$5(i);
              case 5:
              case "end":
                return _context2.stop();
            }
          }, _callee2);
        }))();
      }
    }
  };
  var st = function st() {
      var t = this,
        e = t._self._c;
      return t.cardtype === 2 ? e("span", {
        ref: "js_custom_element",
        staticClass: "product_card_text_wrp",
        style: t.wrpStyle,
        on: {
          click: t.openShop
        }
      }, [e("a", {
        staticClass: "product_text_link",
        style: t.isEditor ? "color: #576B95" : "",
        attrs: {
          part: "link",
          href: "javascript:void(0);"
        }
      }, [t._v(t._s(t.title))]), t.showIframe ? e("iframe", {
        ref: "iframeRef",
        staticClass: "iframe_style",
        style: [t.iframeStyle, {
          display: "none"
        }],
        attrs: {
          src: t.iframeUrl,
          scrolling: "no",
          frameborder: "0"
        }
      }) : t._e()]) : t.cardtype === 4 ? e("div", {
        ref: "js_custom_element",
        staticClass: "activity_card_wrp",
        on: {
          click: t.openShop
        }
      }, [e("div", {
        staticClass: "activity_card_wrp__container"
      }, [e("img", {
        staticClass: "product_image",
        attrs: {
          src: t.productImage,
          alt: ""
        }
      }), e("transition", {
        attrs: {
          name: "fade"
        }
      }, [t.discountedPrice ? e("span", {
        staticClass: "discounted_price"
      }, [t._v("¥" + t._s(t.discountedPrice))]) : t._e()]), e("span", {
        key: t.discountedPrice,
        staticClass: "origin_price",
        "class": {
          has_discount: t.discountedPrice
        }
      }, [t._v("¥" + t._s(t.originPrice))])], 1), t.showIframe ? e("iframe", {
        ref: "iframeRef",
        staticClass: "iframe_style",
        style: [t.iframeStyle, {
          display: "none"
        }],
        attrs: {
          src: t.iframeUrl,
          scrolling: "no",
          frameborder: "0"
        }
      }) : t._e()]) : t.cardtype === 5 ? e("div", {
        ref: "js_custom_element",
        staticClass: "s1s_card_wrp",
        on: {
          click: t.openShop
        }
      }, [e("img", {
        staticClass: "product-image",
        attrs: {
          src: t.productInfo.product_info.img_url,
          alt: "商品图片"
        }
      }), e("div", {
        staticClass: "product-info"
      }, [e("div", {
        staticClass: "product-title"
      }, [t._v(t._s(t.productInfo.product_info.title))]), e("div", {
        staticClass: "product-centercontainer"
      }, [e("span", {
        staticClass: "discount-price"
      }, [t._v("¥" + t._s(t.productInfo.product_info.selling_price / 100))]), t.productInfo.product_info.market_price &amp;&amp; t.productInfo.product_info.market_price !== t.productInfo.product_info.selling_price ? [e("span", {
        staticClass: "discount-price__extra"
      }, [t._v("起 " + t._s(t.productInfo.product_info.selling_price_wording))]), e("span", {
        "class": "product-price ".concat(t.productInfo.product_info.friend_send_cnt ? "need-border" : "")
      }, [t._v("¥" + t._s(t.productInfo.product_info.market_price / 100))])] : t._e(), t.productInfo.product_info.friend_send_cnt ? e("div", {
        staticClass: "product-gifts"
      }, [t._v("朋友送过"), e("span", {
        staticClass: "product-gifts__num"
      }, [t._v(t._s(t.productInfo.product_info.friend_send_cnt))]), t._v("次 ")]) : t._e()], 2), e("div", {
        staticClass: "product-brand"
      }, [e("i", {
        staticClass: "product-logo"
      }), t._v(t._s(t.productInfo.shop_info.shop_window_profile_name) + " "), t.productInfo.shop_info.brand_icon_url ? e("img", {
        staticClass: "shop-verify-icon",
        attrs: {
          src: t.productInfo.shop_info.brand_icon_url
        }
      }) : t._e()])]), t.showIframe ? e("iframe", {
        ref: "iframeRef",
        staticClass: "iframe_style",
        style: [t.iframeStyle, {
          display: "none"
        }],
        attrs: {
          src: t.iframeUrl,
          scrolling: "no",
          frameborder: "0"
        }
      }) : t._e()]) : t.cardtype === 6 ? e("div", {
        directives: [{
          name: "show",
          rawName: "v-show",
          value: !t.iframeLoading,
          expression: "!iframeLoading"
        }],
        ref: "js_custom_element",
        staticClass: "product_spot_card_wrp",
        on: {
          click: t.openShop
        }
      }, [t._t("spot-product"), t.showIframe ? e("iframe", {
        ref: "iframeRef",
        staticClass: "iframe_style",
        style: [t.iframeStyle, {
          display: "none"
        }],
        attrs: {
          src: t.iframeUrl,
          scrolling: "no",
          frameborder: "0"
        }
      }) : t._e()], 2) : t.cardtype === 12 ? e("div", {
        directives: [{
          name: "show",
          rawName: "v-show",
          value: !t.iframeLoading,
          expression: "!iframeLoading"
        }],
        ref: "js_custom_element",
        staticClass: "product_image_wrp"
      }, [t.showIframe ? e("iframe", {
        ref: "iframeRef",
        staticClass: "iframe_style",
        style: [t.iframeStyle, {
          display: "none"
        }],
        attrs: {
          src: t.iframeUrl,
          scrolling: "no",
          frameborder: "0"
        }
      }) : t._e()]) : t.cardtype === 8 ? e("div", {
        directives: [{
          name: "show",
          rawName: "v-show",
          value: !t.iframeLoading,
          expression: "!iframeLoading"
        }],
        ref: "js_custom_element",
        staticClass: "product_recommend_card_wrp"
      }, [t.showIframe ? e("iframe", {
        ref: "iframeRef",
        staticClass: "iframe_style",
        style: JSON.parse(t.customstyle || "{}"),
        attrs: {
          src: t.iframeUrl,
          scrolling: "no",
          frameborder: "0"
        }
      }) : t._e()]) : e("div", {
        ref: "js_custom_element",
        "class": ["iframe_wrp", "wx_card_root", t.is_hover === 1 ? "wx_hover_card" : "", t.is_selected === 1 ? "wx_selected_card" : ""],
        style: t.wrpStyle
      }, [t.productCard ? e("Product", {
        ref: "productCardRef",
        attrs: {
          product: t.productCard,
          "card-type": t.cardtype,
          "client-type": t.clientType,
          "is-p-c": t.isPC,
          "dark-mode": t.darkMode
        },
        on: {
          open: function open(i) {
            return t.handleProductClick(i);
          },
          ready: t.onCardReady
        }
      }) : t.failMsg &amp;&amp; t.isEditor ? e("div", {
        staticClass: "product_load_fail",
        attrs: {
          role: "alert",
          "aria-live": "polite"
        },
        on: {
          click: t.emitCardClickEvent
        }
      }, [e("div", {
        staticClass: "product_load_fail__text"
      }, [t._v(t._s(t.failMsg))])]) : e("div")], 1);
    },
    dt = [],
    wt = v$2(ct, st, dt, !1, null, "024c715f", null, null);
  var gt = wt.exports,
    nt = ".qr-fade-enter-active[data-v-11924fb1],.qr-fade-leave-active[data-v-11924fb1]{transition:opacity .2s cubic-bezier(.4,0,.2,1)}.qr-fade-enter-from[data-v-11924fb1],.qr-fade-leave-to[data-v-11924fb1]{opacity:0}.qr-fade-enter-to[data-v-11924fb1],.qr-fade-leave-from[data-v-11924fb1]{opacity:1}.qr-popover[data-v-11924fb1]{background:#ffffff;-webkit-backdrop-filter:none;backdrop-filter:none;filter:none;box-shadow:0 4px 30px #0003;padding:10px 12px 10px 10px;pointer-events:auto;display:flex;align-items:center;border-radius:12px;transform-origin:center bottom}.qr-popover[data-v-11924fb1]:after{content:\"\";position:absolute;top:100%;left:50%;transform:translate(-50%);border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #ffffff}.qr-content[data-v-11924fb1]{display:flex;align-items:center;gap:12px;background:white;border-radius:6px}.qr-code-container[data-v-11924fb1]{flex-shrink:0}.qr-image-wrapper[data-v-11924fb1]{position:relative;width:76px;height:76px;border-radius:4px;overflow:hidden}.qr-code-image[data-v-11924fb1]{width:76px;height:76px;border-radius:4px;display:block;transition:opacity .2s ease}.qr-code-image.image-hidden[data-v-11924fb1]{opacity:0}.loading[data-v-11924fb1]{width:100%;height:100%;display:block;background:transparent url(\"data:image/svg+xml,%3Csvg width='80' height='80' viewBox='0 0 80 80' xmlns='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3ClinearGradient x1='94.087%25' y1='0%25' x2='94.087%25' y2='90.559%25' id='a'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'/%3E%3Cstop stop-color='%23606060' stop-opacity='.3' offset='100%25'/%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.674%25' y2='90.629%25' id='b'%3E%3Cstop stop-color='%23606060' offset='0%25'/%3E%3Cstop stop-color='%23606060' stop-opacity='.3' offset='100%25'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cg fill='none' fill-rule='evenodd' opacity='.9'%3E%3Cpath d='M40 0c22.091 0 40 17.909 40 40S62.091 80 40 80v-7c18.225 0 33-14.775 33-33S58.225 7 40 7V0z' fill='url(%23a)'/%3E%3Cpath d='M40 0v7C21.775 7 7 21.775 7 40s14.775 33 33 33v7C17.909 80 0 62.091 0 40S17.909 0 40 0z' fill='url(%23b)'/%3E%3Ccircle fill='%23606060' cx='40.5' cy='3.5' r='3.5'/%3E%3C/g%3E%3C/svg%3E\") no-repeat center center;background-size:contain;animation:qr-loading-spin-data-v-11924fb1 1s linear infinite;background-size:28px 28px}@keyframes qr-loading-spin-data-v-11924fb1{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.qr-text[data-v-11924fb1]{font-size:12px;line-height:17px;font-weight:400;display:flex;flex-direction:column;color:#000000e6;justify-content:center;text-align:left}.qr-text-line[data-v-11924fb1]{white-space:nowrap}@media (max-width: 480px){.qr-popover[data-v-11924fb1]{padding:8px}.qr-content[data-v-11924fb1]{gap:8px;padding:6px}.qr-image-wrapper[data-v-11924fb1],.qr-code-image[data-v-11924fb1]{width:60px;height:60px}.qr-text[data-v-11924fb1]{font-size:11px;line-height:15px}}.product-title__outer[data-v-40afe61e]{margin-left:16px;margin-right:16px;margin-top:12px}.product-title__outer.little[data-v-40afe61e],.product-title__outer.bar[data-v-40afe61e]{margin:0}.product-title[data-v-40afe61e]{color:#000000e6;line-height:1.3;overflow:hidden;text-overflow:ellipsis}.product-title span[data-v-40afe61e]{font-size:15px}.two-line[data-v-40afe61e]{-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;display:-webkit-box}.one-line[data-v-40afe61e]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.product-title img[data-v-40afe61e]{display:inline-block;height:1.1em;vertical-align:middle;margin-right:4px;margin-bottom:.2em}.product-title__outer.dark-mode .product-title[data-v-40afe61e]{color:#fffc}.product-shop__outer[data-v-1a13560c]{margin:16px 16px 8px}.product-shop__outer.bar[data-v-1a13560c]{margin:8px 12px}.product-shop[data-v-1a13560c]{overflow:hidden;position:relative;font-size:12px}.product-shop__inner[data-v-1a13560c]{align-items:center;display:flex;flex-direction:row;justify-content:space-between;overflow:hidden}.product-shop .left[data-v-1a13560c]{align-items:center;display:flex;flex-basis:0;flex-direction:row;flex-grow:1;height:1.4em;overflow:hidden}.product-shop .icon[data-v-1a13560c]{width:1.1em;height:1.1em;-o-object-fit:contain;object-fit:contain;border-radius:50%;flex-shrink:0;opacity:.5}.product-shop .right-icon[data-v-1a13560c]{-o-object-fit:contain;object-fit:contain;margin-left:.16em;flex-shrink:0}.product-shop .icon-r[data-v-1a13560c]{border-radius:50%;height:1.1em;width:1.1em}.product-shop .good-shop[data-v-1a13560c]{height:1.33em}.product-shop .text[data-v-1a13560c]{color:#0000004d;font-size:12px;line-height:1.4;margin-left:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.product-shop__outer.dark-mode .product-shop .text[data-v-1a13560c]{color:#ffffff4d}.product-shop__outer.dark-mode .product-shop .icon.img-color-invert[data-v-1a13560c]{filter:invert(1) brightness(2);opacity:.5}.btn__area[data-v-4b157c62]{display:flex;flex-direction:row;gap:8px}.btn[data-v-4b157c62]{-webkit-tap-highlight-color:rgba(0,0,0,0);align-items:center;background-color:#0000000d;border:0 solid transparent;border-radius:6px;color:#000000e6;cursor:pointer;display:flex;font-size:15px;font-weight:500;justify-content:center;margin:0;outline:none;overflow:hidden;padding:5.5px 12px;position:relative}.btn.type-primary[data-v-4b157c62]{background:#ff6146;color:#fff}.btn.type-secondary[data-v-4b157c62]{background:rgba(223,195,148,.3);color:#47332f}.btn.type-disabled[data-v-4b157c62]{background:rgba(0,0,0,.03);color:#00000026!important;cursor:not-allowed}.btn__area.dark-mode .btn[data-v-4b157c62]{color:#fff}.btn__area.dark-mode .btn.btn.type-secondary[data-v-4b157c62]{background:#faf0e7;color:#443a31}.btn__area.dark-mode .btn.btn.type-default[data-v-4b157c62]{background:hsla(0,0%,100%,.05);color:#fffc}.btn__area.dark-mode .btn.btn.type-disabled[data-v-4b157c62]{background:hsla(0,0%,100%,.3);color:#ffffff26!important}.product_status_text[data-v-4b157c62]{color:#0000004d;font-family:PingFang SC;font-size:12px;font-weight:400;line-height:1.75}.btn__area.dark-mode .product_status_text[data-v-4b157c62]{color:#ffffff4d}.product-img-container[data-v-c88442f6]{width:100%;position:relative;overflow:hidden;display:inline-block}.product-img.little[data-v-c88442f6]{border-radius:4px}.product-img.bar[data-v-c88442f6]{border-radius:2px}.product-img[data-v-c88442f6]{display:block}.product-img-error[data-v-c88442f6]{align-items:center;background-color:#00000005;color:#0000004d;font-size:14px;justify-content:center;position:absolute;top:0;left:0;right:0;bottom:0}.dark-mode .product-img-error[data-v-c88442f6]{background:#202020;color:#ffffff4d}.qrcode__outer[data-v-34552a2a]{margin-left:0;margin-right:0;padding-bottom:0;padding-top:0;position:relative;overflow:hidden;max-height:0;opacity:0;transition:max-height .4s cubic-bezier(.4,0,.2,1),opacity .3s cubic-bezier(.4,0,.2,1),padding .4s cubic-bezier(.4,0,.2,1);transform:translateY(-10px);transition:max-height .4s cubic-bezier(.4,0,.2,1),opacity .3s cubic-bezier(.4,0,.2,1),padding .4s cubic-bezier(.4,0,.2,1),transform .3s cubic-bezier(.4,0,.2,1)}.qrcode__outer[data-v-34552a2a]:before{border-top:1px solid rgba(0,0,0,.1);content:\"\";left:16px;position:absolute;right:16px;top:8px;transform:scaleY(.5)}.qrcode__outer.open[data-v-34552a2a]{max-height:300px;opacity:1;padding-bottom:44px;padding-top:8px;transform:translateY(0)}.qrcode__hd[data-v-34552a2a]{align-items:center;display:flex;flex-direction:row;justify-content:flex-end;margin-top:6px;opacity:0;transform:translateY(-5px);transition:opacity .3s cubic-bezier(.4,0,.2,1) .05s,transform .3s cubic-bezier(.4,0,.2,1) .05s}.qrcode__outer.open .qrcode__hd[data-v-34552a2a]{opacity:1;transform:translateY(0)}.close-area[data-v-34552a2a]{align-items:center;color:#00000080;cursor:pointer;display:flex;flex-direction:row;font-family:PingFang SC;font-size:14px;font-weight:400;margin-right:12px;padding:4px 4px 4px 0;position:relative;transition:color .2s ease,transform .2s ease;border-radius:4px}.close-area[data-v-34552a2a]:hover{color:#000000b3;transform:translateY(-1px)}.close-area[data-v-34552a2a]:active{transform:translateY(0)}.arrow-icon[data-v-34552a2a]{height:10px;margin-right:2px;opacity:.55;transform:rotate(180deg);width:20px;transition:opacity .2s ease,transform .3s cubic-bezier(.4,0,.2,1)}.close-area:hover .arrow-icon[data-v-34552a2a]{opacity:.8;transform:rotate(180deg) translateY(-1px)}.qrcode__bd[data-v-34552a2a]{align-items:center;display:flex;height:120px;justify-content:center;margin:10px auto 16px;position:relative;width:120px;opacity:0;transform:scale(.8);transition:opacity .3s cubic-bezier(.4,0,.2,1) .1s,transform .3s cubic-bezier(.4,0,.2,1) .1s}.qrcode__outer.open .qrcode__bd[data-v-34552a2a]{opacity:1;transform:scale(1)}.error-icon[data-v-34552a2a]{height:32px;opacity:.55;width:32px}.qrcode-img[data-v-34552a2a]{height:120px;width:120px;-o-object-fit:contain;object-fit:contain}.loading[data-v-34552a2a]{width:20px;height:20px;display:block;background:transparent url(\"data:image/svg+xml,%3Csvg width='80' height='80' viewBox='0 0 80 80' xmlns='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3ClinearGradient x1='94.087%25' y1='0%25' x2='94.087%25' y2='90.559%25' id='a'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'/%3E%3Cstop stop-color='%23606060' stop-opacity='.3' offset='100%25'/%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.674%25' y2='90.629%25' id='b'%3E%3Cstop stop-color='%23606060' offset='0%25'/%3E%3Cstop stop-color='%23606060' stop-opacity='.3' offset='100%25'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cg fill='none' fill-rule='evenodd' opacity='.9'%3E%3Cpath d='M40 0c22.091 0 40 17.909 40 40S62.091 80 40 80v-7c18.225 0 33-14.775 33-33S58.225 7 40 7V0z' fill='url(%23a)'/%3E%3Cpath d='M40 0v7C21.775 7 7 21.775 7 40s14.775 33 33 33v7C17.909 80 0 62.091 0 40S17.909 0 40 0z' fill='url(%23b)'/%3E%3Ccircle fill='%23606060' cx='40.5' cy='3.5' r='3.5'/%3E%3C/g%3E%3C/svg%3E\") no-repeat center center;background-size:contain;animation:spin-data-v-34552a2a 1s linear infinite}@keyframes spin-data-v-34552a2a{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.qrcode__ft[data-v-34552a2a]{align-items:center;color:#00000080;display:flex;flex-direction:column;font-family:PingFang SC;font-size:14px;font-weight:400;line-height:1.4;opacity:0;transform:translateY(10px);transition:opacity .3s cubic-bezier(.4,0,.2,1) .2s,transform .3s cubic-bezier(.4,0,.2,1) .2s}.qrcode__outer.open .qrcode__ft[data-v-34552a2a]{opacity:1;transform:translateY(0)}.img-color-invert[data-v-34552a2a]{filter:invert(1);border:0 solid transparent}.qrcode__outer:before .dark-mode[data-v-34552a2a]{border-top:1px solid hsla(0,0%,100%,.1)}.qrcode__outer.dark-mode .close-area[data-v-34552a2a],.qrcode__outer.dark-mode .qrcode__ft[data-v-34552a2a]{color:#ffffff80}.product-price[data-v-4ce15964]{align-items:baseline;display:flex;flex-direction:row;flex-shrink:0}.price-box[data-v-4ce15964]{flex-shrink:0}.money[data-v-4ce15964]{color:#ff6146;font-family:WeChatSansStd-Medium;font-size:17px;font-weight:500;line-height:1.2}.more[data-v-4ce15964]{display:flex;align-items:baseline;gap:2px}.add[data-v-4ce15964],.tag[data-v-4ce15964]{color:#ff6146;font-family:PingFang SC;font-size:12px;font-weight:500;margin-left:2px}.product-tag__outer[data-v-339c50a0]{margin-left:16px;margin-right:16px;margin-top:4px;display:flex;flex:1;min-width:0}.product-tag__outer.little[data-v-339c50a0]{margin:0;border:0 solid transparent}.product-tag__outer.bar[data-v-339c50a0]{margin:0 8px .5px}.product-tag[data-v-339c50a0]{display:flex;flex-direction:row;font-size:12px;overflow:hidden;width:100%}.primary[data-v-339c50a0]{color:#0006}.dark-mode .primary[data-v-339c50a0]{color:#fff6}.marketing[data-v-339c50a0]{color:#ff6146}.tag-body[data-v-339c50a0]{display:flex;font-size:12px;font-weight:400;margin-left:8px;overflow:hidden;white-space:nowrap;align-items:center;flex-shrink:0}.tag-body[data-v-339c50a0]:first-child{margin-left:0}.tag-split[data-v-339c50a0]:after{background-color:#0006;content:\"\";height:100%;left:0;position:absolute;top:0;transform:scaleX(.5);width:1px}.product-card[data-v-6dc03843]{background:rgba(0,0,0,.02);border-radius:8px;overflow:hidden;max-width:100%}.mini-product-card[data-v-6dc03843]{border:0 solid transparent;cursor:pointer}.product-card__outer[data-v-6dc03843]{align-items:flex-start;display:flex;flex-direction:row;padding:12px 12px 0}.product-right[data-v-6dc03843]{display:flex;flex-basis:0;flex-direction:column;flex-grow:1;flex-shrink:0;justify-content:center;margin-left:8px;margin-right:12px;overflow:hidden}.product-right-top[data-v-6dc03843]{border:0 solid transparent}.product-right-bottom[data-v-6dc03843]{margin-top:2px;display:flex;flex-direction:row;align-items:end}.product-button__outer[data-v-6dc03843]{flex-shrink:0;margin:auto 0}.product-card.dark-mode[data-v-6dc03843],.product-card.dark-mode .mini-product-card[data-v-6dc03843]{background:#202020}.history[data-v-ca1abb60]{display:flex;border:0 solid transparent;flex-shrink:0;align-items:flex-end}.history.large[data-v-ca1abb60]{margin-left:4px}.history-inner[data-v-ca1abb60]{color:#0000004d;font-size:12px;line-height:1.3;white-space:nowrap}.history.dark-mode .history-inner[data-v-ca1abb60]{color:#ffffff4d}.product-large[data-v-5376dcc1]{background:rgba(0,0,0,.02);border-radius:8px;overflow:hidden;max-width:400px}.normal-product-large[data-v-5376dcc1]{width:100%;margin:0 auto;cursor:pointer}.product-info__outer[data-v-5376dcc1]{margin-left:16px;margin-right:16px;margin-top:6px}.product-info[data-v-5376dcc1]{align-items:flex-end;display:flex;flex-direction:row;justify-content:space-between;flex-wrap:wrap}.product-info .left[data-v-5376dcc1]{display:flex;flex-grow:1;flex-shrink:0}.product-info .right[data-v-5376dcc1]{flex-grow:0;flex-shrink:0}@media screen and (max-width: 600px){.product-large[data-v-5376dcc1]{max-width:100%;margin:0 auto}.normal-product-large[data-v-5376dcc1]{max-width:100%;width:100%}}.product-large.dark-mode[data-v-5376dcc1],.product-large.dark-mode .normal-product-large[data-v-5376dcc1]{background:#202020}.product-little[data-v-d8ab1782]{background-color:#00000005;border-radius:8px;overflow:hidden;width:100%}.small-product-little[data-v-d8ab1782]{border:0 solid transparent}.product-little__outer[data-v-d8ab1782]{align-items:flex-start;display:flex;flex-direction:row;padding:16px 16px 0}.product-right[data-v-d8ab1782]{display:flex;flex-basis:0;flex-direction:column;flex-grow:1;flex-shrink:0;justify-content:space-between;margin-left:10px;overflow:hidden;min-height:88px}.product-right-top[data-v-d8ab1782],.product-right-bottom[data-v-d8ab1782],.product-info__outer[data-v-d8ab1782]{border:0 solid transparent}.product-info[data-v-d8ab1782]{align-items:flex-end;display:flex;flex-wrap:wrap;flex-direction:row;justify-content:space-between}.product-info .info-left[data-v-d8ab1782]{display:flex;flex-grow:1;flex-shrink:0}.product-info .info-right[data-v-d8ab1782]{flex-grow:0;flex-shrink:0}.product-little.dark-mode[data-v-d8ab1782],.product-little.dark-mode .small-product-little[data-v-d8ab1782]{background:#202020}.product_image_link{position:relative;display:inline-block;large-align:bottom;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden}.product_image_link:before{background:rgba(95,95,95,.5);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:100%}.wxw-img{large-align:bottom}.product_image_link:after{-webkit-mask:url(\"data:image/svg+xml,%3Csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.798 13.728c-.32 0-.636-.032-.942-.096-1.792-.378-3.042-1.754-3.042-3.348 0-.426.088-.84.262-1.232l.008-.02 2.008-4.498a3.696 3.696 0 0 1 3.372-2.186h9.8A3.697 3.697 0 0 1 20.662 4.6l1.984 4.432c.178.402.268.82.268 1.248 0 1.596-1.252 2.974-3.044 3.348a4.63 4.63 0 0 1-2.176-.074c-.816-.23-1.514-.68-2.002-1.268-.798.846-2.018 1.368-3.326 1.368-1.308 0-2.52-.52-3.322-1.364-.488.59-1.188 1.042-2.014 1.274-.394.11-.808.168-1.23.168l-.002-.004zM3.46 9.632l-.01.022c-.09.2-.136.412-.136.63 0 .878.762 1.65 1.85 1.88.47.098.994.082 1.458-.048.766-.214 1.368-.728 1.576-1.34a1.43 1.43 0 0 0 .046-.158.748.748 0 1 1 1.448-.056l.026.07.012.03c.392.892 1.448 1.49 2.634 1.49s2.25-.602 2.636-1.498c.02-.046.034-.082.046-.12a.744.744 0 0 1 .754-.502.75.75 0 0 1 .688.588c.012.056.026.108.042.152.214.62.802 1.118 1.572 1.334.466.132.99.148 1.46.048 1.092-.228 1.852-1.002 1.852-1.88 0-.216-.046-.43-.138-.636l-1.988-4.44-.008-.018-.018-.036a2.19 2.19 0 0 0-1.998-1.296h-9.8c-.864 0-1.648.51-2 1.298-.008.016-.014.032-.022.046L3.46 9.634v-.002zM12.364 21.642c-4.142 0-7.566-2.634-7.794-5.996a.75.75 0 1 1 1.498-.102c.174 2.578 2.94 4.598 6.298 4.598s6.122-2.02 6.296-4.598a.75.75 0 1 1 1.498.102c-.228 3.362-3.652 5.996-7.794 5.996h-.002z' fill='%23576B95'/%3E%3C/svg%3E\") no-repeat 50% 50%;mask:url(\"data:image/svg+xml,%3Csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.798 13.728c-.32 0-.636-.032-.942-.096-1.792-.378-3.042-1.754-3.042-3.348 0-.426.088-.84.262-1.232l.008-.02 2.008-4.498a3.696 3.696 0 0 1 3.372-2.186h9.8A3.697 3.697 0 0 1 20.662 4.6l1.984 4.432c.178.402.268.82.268 1.248 0 1.596-1.252 2.974-3.044 3.348a4.63 4.63 0 0 1-2.176-.074c-.816-.23-1.514-.68-2.002-1.268-.798.846-2.018 1.368-3.326 1.368-1.308 0-2.52-.52-3.322-1.364-.488.59-1.188 1.042-2.014 1.274-.394.11-.808.168-1.23.168l-.002-.004zM3.46 9.632l-.01.022c-.09.2-.136.412-.136.63 0 .878.762 1.65 1.85 1.88.47.098.994.082 1.458-.048.766-.214 1.368-.728 1.576-1.34a1.43 1.43 0 0 0 .046-.158.748.748 0 1 1 1.448-.056l.026.07.012.03c.392.892 1.448 1.49 2.634 1.49s2.25-.602 2.636-1.498c.02-.046.034-.082.046-.12a.744.744 0 0 1 .754-.502.75.75 0 0 1 .688.588c.012.056.026.108.042.152.214.62.802 1.118 1.572 1.334.466.132.99.148 1.46.048 1.092-.228 1.852-1.002 1.852-1.88 0-.216-.046-.43-.138-.636l-1.988-4.44-.008-.018-.018-.036a2.19 2.19 0 0 0-1.998-1.296h-9.8c-.864 0-1.648.51-2 1.298-.008.016-.014.032-.022.046L3.46 9.634v-.002zM12.364 21.642c-4.142 0-7.566-2.634-7.794-5.996a.75.75 0 1 1 1.498-.102c.174 2.578 2.94 4.598 6.298 4.598s6.122-2.02 6.296-4.598a.75.75 0 1 1 1.498.102c-.228 3.362-3.652 5.996-7.794 5.996h-.002z' fill='%23576B95'/%3E%3C/svg%3E\") no-repeat 50% 50%;-webkit-mask-size:15px;mask-size:15px;background:#ffffff}.product_image_link:before,.product_image_link:after{content:\"\";position:absolute;top:8px;right:8px;width:20px;height:20px;display:flex;align-items:center;justify-content:center;z-index:1}.product-container[data-v-71c60811]{width:100%}.client-type-B[data-v-71c60811]{max-width:350px}body,.wx-root{--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #07C160;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0: rgba(0, 0, 0, .9);--weui-FG-0_5: rgba(0, 0, 0, .9);--weui-FG-1: rgba(0, 0, 0, .55);--weui-FG-2: rgba(0, 0, 0, .3);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-GLYPH-0: rgba(0, 0, 0, .9);--weui-GLYPH-1: rgba(0, 0, 0, .55);--weui-GLYPH-2: rgba(0, 0, 0, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #91D300;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #1485EE;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #95EC69;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #FA9D3B;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6467F0;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #FA5151;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .05);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #FFC300;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-FG-HALF: rgba(0, 0, 0, .9);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #FA9D3B;--weui-YELLOW: #FFC300;--weui-GREEN: #91D300;--weui-LIGHTGREEN: #95EC69;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1485EE;--weui-PURPLE: #6467F0;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #FA9D3B;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #10AEFF;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05);--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-FG: #000;--weui-FG-5: rgba(0, 0, 0, .05);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG: #fff;--weui-BG: #000;--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6)}}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG: #fff;--weui-BG: #000;--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6)}.wx-root[data-weui-mode=care],body[data-weui-mode=care]{--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #007DBB;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #018942;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0: #000000;--weui-FG-0_5: #000000;--weui-FG-1: rgba(0, 0, 0, .6);--weui-FG-2: rgba(0, 0, 0, .42);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-GLYPH-0: #000000;--weui-GLYPH-1: rgba(0, 0, 0, .6);--weui-GLYPH-2: rgba(0, 0, 0, .42);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #4F8400;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #0075E2;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #2E8800;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #E17719;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #D14730;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6265F1;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #DC3636;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .1);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #BB8E00;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-FG-HALF: #000000;--weui-RED: #DC3636;--weui-ORANGERED: #D14730;--weui-ORANGE: #E17719;--weui-YELLOW: #BB8E00;--weui-GREEN: #4F8400;--weui-LIGHTGREEN: #2E8800;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #018942;--weui-BLUE: #007DBB;--weui-INDIGO: #0075E2;--weui-PURPLE: #6265F1;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #E17719;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #007DBB;--weui-REDORANGE: #D14730;--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-FG: #000;--weui-FG-5: rgba(0, 0, 0, .05);--weui-TAG-BACKGROUND-ORANGE: rgba(225, 119, 25, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(0, 125, 187, .1);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05)}@media (prefers-color-scheme: dark){.wx-root[data-weui-mode=care]:not([data-weui-theme=light]),body[data-weui-mode=care]:not([data-weui-theme=light]){--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-FG: #fff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-BG: #000;--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5)}}.wx-root[data-weui-mode=care][data-weui-theme=dark],body[data-weui-mode=care][data-weui-theme=dark]{--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-FG: #fff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-BG: #000;--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5)}.wx_hover_card:before{content:\" \";position:absolute;top:0;left:0;right:0;bottom:0;border-radius:8px;box-sizing:border-box;border:1px solid rgba(7,193,96,.3);pointer-events:none;z-index:9}.wx_selected_card:before{content:\" \";position:absolute;top:0;left:0;right:0;bottom:0;border-radius:8px;border:1.5px solid #07C160;box-sizing:border-box;background:rgba(7,193,96,.1);pointer-events:none;z-index:9}.product_card_text_wrp{display:inline;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;font-family:PingFang SC}.iframe_wrp{display:flex;flex-direction:column;-webkit-user-select:none;-moz-user-select:none;user-select:none;align-items:center;position:relative}.iframe_style{height:0px}.product_wx_img_placeholder{width:100%;background:var(--weui-BG-3) url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='80px' height='80px' viewBox='0 0 80 80' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3E9.\u5143\u7D20/\u52A0\u8F7D/Black%3C/title%3E%3Cdefs%3E%3ClinearGradient x1='94.0869141%25' y1='0%25' x2='94.0869141%25' y2='90.559082%25' id='linearGradient-1'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.67370605%25' x2='100%25' y2='90.6286621%25' id='linearGradient-2'%3E%3Cstop stop-color='%23606060' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cg id='\u9875\u9762-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' opacity='0.9'%3E%3Cg id='LoadingDefault'%3E%3Cpath d='M40,0 C62.09139,0 80,17.90861 80,40 C80,62.09139 62.09139,80 40,80 L40,73 C58.2253967,73 73,58.2253967 73,40 C73,21.7746033 58.2253967,7 40,7 L40,0 Z' id='\u8DEF\u5F84' fill='url(%23linearGradient-1)'%3E%3C/path%3E%3Cpath d='M40,0 L40,7 C21.7746033,7 7,21.7746033 7,40 C7,58.2253967 21.7746033,73 40,73 L40,80 C17.90861,80 0,62.09139 0,40 C0,17.90861 17.90861,0 40,0 Z' id='\u8DEF\u5F84' fill='url(%23linearGradient-2)'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23606060' cx='40.5' cy='3.5' r='3.5'%3E%3C/circle%3E%3C/g%3E%3CanimateTransform attributeName='transform' begin='0s' dur='1s' type='rotate' values='0 40 40;360 40 40' repeatCount='indefinite'/%3E%3C/g%3E%3C/svg%3E%0A\") no-repeat 50% 50%!important;background-size:16px!important;border-radius:8px}:root{--weui-FG-6: rgba(0, 0, 0, .05)}.product_text_link{text-decoration:none;padding:2px 4px;color:var(--weui-LINK);cursor:default;-webkit-user-drag:none;border-radius:4px}.product_text_link:before{content:\"\";display:inline-block;mask-image:url(\"data:image/svg+xml,%3Csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.798 13.728c-.32 0-.636-.032-.942-.096-1.792-.378-3.042-1.754-3.042-3.348 0-.426.088-.84.262-1.232l.008-.02 2.008-4.498a3.696 3.696 0 0 1 3.372-2.186h9.8A3.697 3.697 0 0 1 20.662 4.6l1.984 4.432c.178.402.268.82.268 1.248 0 1.596-1.252 2.974-3.044 3.348a4.63 4.63 0 0 1-2.176-.074c-.816-.23-1.514-.68-2.002-1.268-.798.846-2.018 1.368-3.326 1.368-1.308 0-2.52-.52-3.322-1.364-.488.59-1.188 1.042-2.014 1.274-.394.11-.808.168-1.23.168l-.002-.004zM3.46 9.632l-.01.022c-.09.2-.136.412-.136.63 0 .878.762 1.65 1.85 1.88.47.098.994.082 1.458-.048.766-.214 1.368-.728 1.576-1.34a1.43 1.43 0 0 0 .046-.158.748.748 0 1 1 1.448-.056l.026.07.012.03c.392.892 1.448 1.49 2.634 1.49s2.25-.602 2.636-1.498c.02-.046.034-.082.046-.12a.744.744 0 0 1 .754-.502.75.75 0 0 1 .688.588c.012.056.026.108.042.152.214.62.802 1.118 1.572 1.334.466.132.99.148 1.46.048 1.092-.228 1.852-1.002 1.852-1.88 0-.216-.046-.43-.138-.636l-1.988-4.44-.008-.018-.018-.036a2.19 2.19 0 0 0-1.998-1.296h-9.8c-.864 0-1.648.51-2 1.298-.008.016-.014.032-.022.046L3.46 9.634v-.002zM12.364 21.642c-4.142 0-7.566-2.634-7.794-5.996a.75.75 0 1 1 1.498-.102c.174 2.578 2.94 4.598 6.298 4.598s6.122-2.02 6.296-4.598a.75.75 0 1 1 1.498.102c-.228 3.362-3.652 5.996-7.794 5.996h-.002z' fill='%23576B95'/%3E%3C/svg%3E\");-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.798 13.728c-.32 0-.636-.032-.942-.096-1.792-.378-3.042-1.754-3.042-3.348 0-.426.088-.84.262-1.232l.008-.02 2.008-4.498a3.696 3.696 0 0 1 3.372-2.186h9.8A3.697 3.697 0 0 1 20.662 4.6l1.984 4.432c.178.402.268.82.268 1.248 0 1.596-1.252 2.974-3.044 3.348a4.63 4.63 0 0 1-2.176-.074c-.816-.23-1.514-.68-2.002-1.268-.798.846-2.018 1.368-3.326 1.368-1.308 0-2.52-.52-3.322-1.364-.488.59-1.188 1.042-2.014 1.274-.394.11-.808.168-1.23.168l-.002-.004zM3.46 9.632l-.01.022c-.09.2-.136.412-.136.63 0 .878.762 1.65 1.85 1.88.47.098.994.082 1.458-.048.766-.214 1.368-.728 1.576-1.34a1.43 1.43 0 0 0 .046-.158.748.748 0 1 1 1.448-.056l.026.07.012.03c.392.892 1.448 1.49 2.634 1.49s2.25-.602 2.636-1.498c.02-.046.034-.082.046-.12a.744.744 0 0 1 .754-.502.75.75 0 0 1 .688.588c.012.056.026.108.042.152.214.62.802 1.118 1.572 1.334.466.132.99.148 1.46.048 1.092-.228 1.852-1.002 1.852-1.88 0-.216-.046-.43-.138-.636l-1.988-4.44-.008-.018-.018-.036a2.19 2.19 0 0 0-1.998-1.296h-9.8c-.864 0-1.648.51-2 1.298-.008.016-.014.032-.022.046L3.46 9.634v-.002zM12.364 21.642c-4.142 0-7.566-2.634-7.794-5.996a.75.75 0 1 1 1.498-.102c.174 2.578 2.94 4.598 6.298 4.598s6.122-2.02 6.296-4.598a.75.75 0 1 1 1.498.102c-.228 3.362-3.652 5.996-7.794 5.996h-.002z' fill='%23576B95'/%3E%3C/svg%3E\");background-color:currentColor;-webkit-mask-size:contain;mask-size:contain;vertical-align:middle;height:1.1em;width:1.1em;margin-right:2px;margin-top:-.16em}.product-logo{height:1.1em;width:1.1em;display:inline-block;mask-image:url(\"data:image/svg+xml,%3Csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.798 13.728c-.32 0-.636-.032-.942-.096-1.792-.378-3.042-1.754-3.042-3.348 0-.426.088-.84.262-1.232l.008-.02 2.008-4.498a3.696 3.696 0 0 1 3.372-2.186h9.8A3.697 3.697 0 0 1 20.662 4.6l1.984 4.432c.178.402.268.82.268 1.248 0 1.596-1.252 2.974-3.044 3.348a4.63 4.63 0 0 1-2.176-.074c-.816-.23-1.514-.68-2.002-1.268-.798.846-2.018 1.368-3.326 1.368-1.308 0-2.52-.52-3.322-1.364-.488.59-1.188 1.042-2.014 1.274-.394.11-.808.168-1.23.168l-.002-.004zM3.46 9.632l-.01.022c-.09.2-.136.412-.136.63 0 .878.762 1.65 1.85 1.88.47.098.994.082 1.458-.048.766-.214 1.368-.728 1.576-1.34a1.43 1.43 0 0 0 .046-.158.748.748 0 1 1 1.448-.056l.026.07.012.03c.392.892 1.448 1.49 2.634 1.49s2.25-.602 2.636-1.498c.02-.046.034-.082.046-.12a.744.744 0 0 1 .754-.502.75.75 0 0 1 .688.588c.012.056.026.108.042.152.214.62.802 1.118 1.572 1.334.466.132.99.148 1.46.048 1.092-.228 1.852-1.002 1.852-1.88 0-.216-.046-.43-.138-.636l-1.988-4.44-.008-.018-.018-.036a2.19 2.19 0 0 0-1.998-1.296h-9.8c-.864 0-1.648.51-2 1.298-.008.016-.014.032-.022.046L3.46 9.634v-.002zM12.364 21.642c-4.142 0-7.566-2.634-7.794-5.996a.75.75 0 1 1 1.498-.102c.174 2.578 2.94 4.598 6.298 4.598s6.122-2.02 6.296-4.598a.75.75 0 1 1 1.498.102c-.228 3.362-3.652 5.996-7.794 5.996h-.002z' fill='%23576B95'/%3E%3C/svg%3E\");-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.798 13.728c-.32 0-.636-.032-.942-.096-1.792-.378-3.042-1.754-3.042-3.348 0-.426.088-.84.262-1.232l.008-.02 2.008-4.498a3.696 3.696 0 0 1 3.372-2.186h9.8A3.697 3.697 0 0 1 20.662 4.6l1.984 4.432c.178.402.268.82.268 1.248 0 1.596-1.252 2.974-3.044 3.348a4.63 4.63 0 0 1-2.176-.074c-.816-.23-1.514-.68-2.002-1.268-.798.846-2.018 1.368-3.326 1.368-1.308 0-2.52-.52-3.322-1.364-.488.59-1.188 1.042-2.014 1.274-.394.11-.808.168-1.23.168l-.002-.004zM3.46 9.632l-.01.022c-.09.2-.136.412-.136.63 0 .878.762 1.65 1.85 1.88.47.098.994.082 1.458-.048.766-.214 1.368-.728 1.576-1.34a1.43 1.43 0 0 0 .046-.158.748.748 0 1 1 1.448-.056l.026.07.012.03c.392.892 1.448 1.49 2.634 1.49s2.25-.602 2.636-1.498c.02-.046.034-.082.046-.12a.744.744 0 0 1 .754-.502.75.75 0 0 1 .688.588c.012.056.026.108.042.152.214.62.802 1.118 1.572 1.334.466.132.99.148 1.46.048 1.092-.228 1.852-1.002 1.852-1.88 0-.216-.046-.43-.138-.636l-1.988-4.44-.008-.018-.018-.036a2.19 2.19 0 0 0-1.998-1.296h-9.8c-.864 0-1.648.51-2 1.298-.008.016-.014.032-.022.046L3.46 9.634v-.002zM12.364 21.642c-4.142 0-7.566-2.634-7.794-5.996a.75.75 0 1 1 1.498-.102c.174 2.578 2.94 4.598 6.298 4.598s6.122-2.02 6.296-4.598a.75.75 0 1 1 1.498.102c-.228 3.362-3.652 5.996-7.794 5.996h-.002z' fill='%23576B95'/%3E%3C/svg%3E\");background-color:currentColor;-webkit-mask-size:contain;mask-size:contain}.shop-verify-icon{height:1em;width:1em;display:inline-block;background-size:contain;background-position:center;background-repeat:no-repeat}.weui-toast{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#4c4c4c;border-radius:8px;color:#fff;font-size:14px;line-height:1.4;padding:0 20px}.discounted_price.fade-enter,.discounted_price.fade-leave-to{opacity:0;height:0}.discounted_price.fade-enter-to,.discounted_price.fade-leave{opacity:1;height:15px}.discounted_price.fade-enter-active,.discounted_price.fade-leave-active{transition:opacity .15s,height .15s}.activity_card_wrp{-webkit-user-select:none;-moz-user-select:none;user-select:none;width:-moz-fit-content;width:fit-content}.activity_card_wrp .activity_card_wrp__container{display:flex;flex-direction:column;align-items:center;background-color:#0000001a;-webkit-backdrop-filter:blur(50px);backdrop-filter:blur(50px);border-radius:8px;padding:10px}.activity_card_wrp .activity_card_wrp__container .product_image{width:52px;height:52px;border-radius:2px;margin-bottom:8px}.activity_card_wrp .discounted_price{overflow:hidden;font-weight:500;color:#e0b684;line-height:1;font-family:WeChatSansStd-Medium;line-height:normal;font-size:15px}@font-face{font-family:WeChatSansStd-Medium;src:url(data:application/octet-stream;base64,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AwYAAwABBAkABAAsA1oAAwABBAkABQAYA4YAAwABBAkABgAsA54AAwABBAkABwBMA8oAAwABBAkACAAWBBYAAwABBAkACQBGBCwAAwABBAkACwAwBHIAAwABBAkAEAAeBKIAAwABBAkAEQAMBMAAAwABBAkAEwAiBMwAAwABCAQAAABmBO4AAwABCAQAAQAsBVQAAwABCAQAAgAOBYAAAwABCAQABAAsBY4AAwABCAQABwBMBboAAwABCAQACAAWBgYAAwABCAQACQBGBhwAAwABCAQAEAAeBmIAAwABCAQAEQAMBoBDb3B5cmlnaHQgKGMpIDIwMTcgYnkgVGVuY2VudC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5XZUNoYXQgU2FucyBTdGRNZWRpdW1IYW55aSBXZUNoYXQgU2FucyBTdGQtTWVkaXVtOyBWZXJzaW9uIDEuMDBXZUNoYXQgU2FucyBTdGQtTWVkaXVtVmVyc2lvbiAxLjAwV2VDaGF0LVNhbnMtU3RkLU1lZGl1bVdlQ2hhdCBTYW5zIGlzIGEgdHJhZGVtYXJrIG9mIFRlbmNlbnQuSGFueWkgRm9udHNaSEFORyBYdWFuLCBXQU5HIFRpYW5iaSwgTElVIFhpYW95dWh0dHA6Ly93d3cuaGFueWkuY29tLmNuL1dlQ2hhdCBTYW5zIFN0ZE1lZGl1bVdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW3boiSjX7QKMTIzNDU2Nzg5MENvcHlyaWdodCAoYykgMjAxNyBieSBUZW5jZW50LiBBbGwgcmlnaHRzIHJlc2VydmVkLldlQ2hhdCBTYW5zIFN0ZE1lZGl1bUhhbnlpIFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW07IFZlcnNpb24gMS4wMFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW1WZXJzaW9uIDEuMDBXZUNoYXQtU2Fucy1TdGQtTWVkaXVtV2VDaGF0IFNhbnMgaXMgYSB0cmFkZW1hcmsgb2YgVGVuY2VudC5IYW55aSBGb250c1pIQU5HIFh1YW4sIFdBTkcgVGlhbmJpLCBMSVUgWGlhb3l1V2VDaGF0IFNhbnMgU3RkLU1lZGl1bQBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIASABhAG4AeQBpACAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQA7ACAAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBWAGUAcgBzAGkAbwBuACAAMQAuADAAMABXAGUAQwBoAGEAdAAtAFMAYQBuAHMALQBTAHQAZAAtAE0AZQBkAGkAdQBtAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAFQAZQBuAGMAZQBuAHQALgBIAGEAbgB5AGkAIABGAG8AbgB0AHMAWgBIAEEATgBHACAAWAB1AGEAbgAsACAAVwBBAE4ARwAgAFQAaQBhAG4AYgBpACwAIABMAEkAVQAgAFgAaQBhAG8AeQB1AGgAdAB0AHAAOgAvAC8AdwB3AHcALgBoAGEAbgB5AGkALgBjAG8AbQAuAGMAbgAvAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAFMAdABkAE0AZQBkAGkAdQBtIKwAogAkAKMgqQClAAoAMQAyADMANAA1ADYANwA4ADkAMABDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABUAGUAbgBjAGUAbgB0AC4ASABhAG4AeQBpACAARgBvAG4AdABzAFoASABBAE4ARwAgAFgAdQBhAG4ALAAgAFcAQQBOAEcAIABUAGkAYQBuAGIAaQAsACAATABJAFUAIABYAGkAYQBvAHkAdQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZABNAGUAZABpAHUAbQAAAAIAAAAAAAD/tQAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAYwAAAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQATABQAFQAWABcAGAAZABoAGwAcAA8AEQAQAQIBAwCEAQQAvQAHAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgCFARMBFAEVAJYBFgEXARgBGQEaAA4A7wd1bmkwRTNGB3VuaTIwQjUNY29sb25tb25ldGFyeQd1bmlGRTY5BGRvbmcERXVybwd1bmkyMEIyB3VuaTIwQjQHdW5pMjBBRAd1bmkyMEJFB3VuaTIwQkEHdW5pMjBCQwd1bmkyMEE2B3VuaTIwQjEHdW5pMjBCRAd1bmkyMEI5B3VuaTIwQUEHdW5pMjBCOAd1bmkyMEFFB3VuaTIwQTkHdW5pRkZFMAd1bmlGRjA0B3VuaUZGRTEHdW5pRkZFNgd1bmlGRkU1) format(\"truetype\")}.activity_card_wrp .origin_price{font-weight:500;color:#fff;line-height:1;transition:font-size .15s,font-weight .15s,color .15s,-webkit-text-decoration .15s;transition:font-size .15s,font-weight .15s,color .15s,text-decoration .15s;transition:font-size .15s,font-weight .15s,color .15s,text-decoration .15s,-webkit-text-decoration .15s;font-family:WeChatSansStd-Medium;line-height:normal;font-size:15px}@font-face{font-family:WeChatSansStd-Medium;src:url(data:application/octet-stream;base64,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AwYAAwABBAkABAAsA1oAAwABBAkABQAYA4YAAwABBAkABgAsA54AAwABBAkABwBMA8oAAwABBAkACAAWBBYAAwABBAkACQBGBCwAAwABBAkACwAwBHIAAwABBAkAEAAeBKIAAwABBAkAEQAMBMAAAwABBAkAEwAiBMwAAwABCAQAAABmBO4AAwABCAQAAQAsBVQAAwABCAQAAgAOBYAAAwABCAQABAAsBY4AAwABCAQABwBMBboAAwABCAQACAAWBgYAAwABCAQACQBGBhwAAwABCAQAEAAeBmIAAwABCAQAEQAMBoBDb3B5cmlnaHQgKGMpIDIwMTcgYnkgVGVuY2VudC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5XZUNoYXQgU2FucyBTdGRNZWRpdW1IYW55aSBXZUNoYXQgU2FucyBTdGQtTWVkaXVtOyBWZXJzaW9uIDEuMDBXZUNoYXQgU2FucyBTdGQtTWVkaXVtVmVyc2lvbiAxLjAwV2VDaGF0LVNhbnMtU3RkLU1lZGl1bVdlQ2hhdCBTYW5zIGlzIGEgdHJhZGVtYXJrIG9mIFRlbmNlbnQuSGFueWkgRm9udHNaSEFORyBYdWFuLCBXQU5HIFRpYW5iaSwgTElVIFhpYW95dWh0dHA6Ly93d3cuaGFueWkuY29tLmNuL1dlQ2hhdCBTYW5zIFN0ZE1lZGl1bVdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW3boiSjX7QKMTIzNDU2Nzg5MENvcHlyaWdodCAoYykgMjAxNyBieSBUZW5jZW50LiBBbGwgcmlnaHRzIHJlc2VydmVkLldlQ2hhdCBTYW5zIFN0ZE1lZGl1bUhhbnlpIFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW07IFZlcnNpb24gMS4wMFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW1WZXJzaW9uIDEuMDBXZUNoYXQtU2Fucy1TdGQtTWVkaXVtV2VDaGF0IFNhbnMgaXMgYSB0cmFkZW1hcmsgb2YgVGVuY2VudC5IYW55aSBGb250c1pIQU5HIFh1YW4sIFdBTkcgVGlhbmJpLCBMSVUgWGlhb3l1V2VDaGF0IFNhbnMgU3RkLU1lZGl1bQBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIASABhAG4AeQBpACAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQA7ACAAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBWAGUAcgBzAGkAbwBuACAAMQAuADAAMABXAGUAQwBoAGEAdAAtAFMAYQBuAHMALQBTAHQAZAAtAE0AZQBkAGkAdQBtAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAFQAZQBuAGMAZQBuAHQALgBIAGEAbgB5AGkAIABGAG8AbgB0AHMAWgBIAEEATgBHACAAWAB1AGEAbgAsACAAVwBBAE4ARwAgAFQAaQBhAG4AYgBpACwAIABMAEkAVQAgAFgAaQBhAG8AeQB1AGgAdAB0AHAAOgAvAC8AdwB3AHcALgBoAGEAbgB5AGkALgBjAG8AbQAuAGMAbgAvAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAFMAdABkAE0AZQBkAGkAdQBtIKwAogAkAKMgqQClAAoAMQAyADMANAA1ADYANwA4ADkAMABDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABUAGUAbgBjAGUAbgB0AC4ASABhAG4AeQBpACAARgBvAG4AdABzAFoASABBAE4ARwAgAFgAdQBhAG4ALAAgAFcAQQBOAEcAIABUAGkAYQBuAGIAaQAsACAATABJAFUAIABYAGkAYQBvAHkAdQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZABNAGUAZABpAHUAbQAAAAIAAAAAAAD/tQAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAYwAAAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQATABQAFQAWABcAGAAZABoAGwAcAA8AEQAQAQIBAwCEAQQAvQAHAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgCFARMBFAEVAJYBFgEXARgBGQEaAA4A7wd1bmkwRTNGB3VuaTIwQjUNY29sb25tb25ldGFyeQd1bmlGRTY5BGRvbmcERXVybwd1bmkyMEIyB3VuaTIwQjQHdW5pMjBBRAd1bmkyMEJFB3VuaTIwQkEHdW5pMjBCQwd1bmkyMEE2B3VuaTIwQjEHdW5pMjBCRAd1bmkyMEI5B3VuaTIwQUEHdW5pMjBCOAd1bmkyMEFFB3VuaTIwQTkHdW5pRkZFMAd1bmlGRjA0B3VuaUZGRTEHdW5pRkZFNgd1bmlGRkU1) format(\"truetype\")}.activity_card_wrp .origin_price.has_discount{font-weight:400;text-decoration:line-through;-webkit-text-decoration-color:#fff;text-decoration-color:#fff;color:#fff;opacity:.5;font-family:WeChatSansStd-Medium;line-height:normal;font-size:12px}@font-face{font-family:WeChatSansStd-Medium;src:url(data:application/octet-stream;base64,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AwYAAwABBAkABAAsA1oAAwABBAkABQAYA4YAAwABBAkABgAsA54AAwABBAkABwBMA8oAAwABBAkACAAWBBYAAwABBAkACQBGBCwAAwABBAkACwAwBHIAAwABBAkAEAAeBKIAAwABBAkAEQAMBMAAAwABBAkAEwAiBMwAAwABCAQAAABmBO4AAwABCAQAAQAsBVQAAwABCAQAAgAOBYAAAwABCAQABAAsBY4AAwABCAQABwBMBboAAwABCAQACAAWBgYAAwABCAQACQBGBhwAAwABCAQAEAAeBmIAAwABCAQAEQAMBoBDb3B5cmlnaHQgKGMpIDIwMTcgYnkgVGVuY2VudC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5XZUNoYXQgU2FucyBTdGRNZWRpdW1IYW55aSBXZUNoYXQgU2FucyBTdGQtTWVkaXVtOyBWZXJzaW9uIDEuMDBXZUNoYXQgU2FucyBTdGQtTWVkaXVtVmVyc2lvbiAxLjAwV2VDaGF0LVNhbnMtU3RkLU1lZGl1bVdlQ2hhdCBTYW5zIGlzIGEgdHJhZGVtYXJrIG9mIFRlbmNlbnQuSGFueWkgRm9udHNaSEFORyBYdWFuLCBXQU5HIFRpYW5iaSwgTElVIFhpYW95dWh0dHA6Ly93d3cuaGFueWkuY29tLmNuL1dlQ2hhdCBTYW5zIFN0ZE1lZGl1bVdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW3boiSjX7QKMTIzNDU2Nzg5MENvcHlyaWdodCAoYykgMjAxNyBieSBUZW5jZW50LiBBbGwgcmlnaHRzIHJlc2VydmVkLldlQ2hhdCBTYW5zIFN0ZE1lZGl1bUhhbnlpIFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW07IFZlcnNpb24gMS4wMFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW1WZXJzaW9uIDEuMDBXZUNoYXQtU2Fucy1TdGQtTWVkaXVtV2VDaGF0IFNhbnMgaXMgYSB0cmFkZW1hcmsgb2YgVGVuY2VudC5IYW55aSBGb250c1pIQU5HIFh1YW4sIFdBTkcgVGlhbmJpLCBMSVUgWGlhb3l1V2VDaGF0IFNhbnMgU3RkLU1lZGl1bQBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIASABhAG4AeQBpACAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQA7ACAAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBWAGUAcgBzAGkAbwBuACAAMQAuADAAMABXAGUAQwBoAGEAdAAtAFMAYQBuAHMALQBTAHQAZAAtAE0AZQBkAGkAdQBtAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAFQAZQBuAGMAZQBuAHQALgBIAGEAbgB5AGkAIABGAG8AbgB0AHMAWgBIAEEATgBHACAAWAB1AGEAbgAsACAAVwBBAE4ARwAgAFQAaQBhAG4AYgBpACwAIABMAEkAVQAgAFgAaQBhAG8AeQB1AGgAdAB0AHAAOgAvAC8AdwB3AHcALgBoAGEAbgB5AGkALgBjAG8AbQAuAGMAbgAvAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAFMAdABkAE0AZQBkAGkAdQBtIKwAogAkAKMgqQClAAoAMQAyADMANAA1ADYANwA4ADkAMABDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABUAGUAbgBjAGUAbgB0AC4ASABhAG4AeQBpACAARgBvAG4AdABzAFoASABBAE4ARwAgAFgAdQBhAG4ALAAgAFcAQQBOAEcAIABUAGkAYQBuAGIAaQAsACAATABJAFUAIABYAGkAYQBvAHkAdQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZABNAGUAZABpAHUAbQAAAAIAAAAAAAD/tQAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAYwAAAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQATABQAFQAWABcAGAAZABoAGwAcAA8AEQAQAQIBAwCEAQQAvQAHAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgCFARMBFAEVAJYBFgEXARgBGQEaAA4A7wd1bmkwRTNGB3VuaTIwQjUNY29sb25tb25ldGFyeQd1bmlGRTY5BGRvbmcERXVybwd1bmkyMEIyB3VuaTIwQjQHdW5pMjBBRAd1bmkyMEJFB3VuaTIwQkEHdW5pMjBCQwd1bmkyMEE2B3VuaTIwQjEHdW5pMjBCRAd1bmkyMEI5B3VuaTIwQUEHdW5pMjBCOAd1bmkyMEFFB3VuaTIwQTkHdW5pRkZFMAd1bmlGRjA0B3VuaUZGRTEHdW5pRkZFNgd1bmlGRkU1) format(\"truetype\")}.s1s_card_wrp{font-family:system-ui,PingFang SC;display:flex;align-items:center}.s1s_card_wrp .product-image{width:4em;height:4em;border-radius:2px;margin-right:12px}.s1s_card_wrp .product-info{flex:1;width:200px;line-height:1;display:flex;height:4em;flex-direction:column;box-sizing:border-box;padding:4px 0 0;justify-content:space-between}.s1s_card_wrp .product-title{color:var(--weui-FG-0);font-size:15px;width:100%;font-weight:400;padding-bottom:5px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.s1s_card_wrp .product-price{color:#b3b3b3;font-weight:400;text-decoration:line-through;font-family:WeChatSansStd-Medium;line-height:normal;font-size:13px;line-height:1;padding-left:4px;padding-right:6px;position:relative}@font-face{font-family:WeChatSansStd-Medium;src:url(data:application/octet-stream;base64,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AwYAAwABBAkABAAsA1oAAwABBAkABQAYA4YAAwABBAkABgAsA54AAwABBAkABwBMA8oAAwABBAkACAAWBBYAAwABBAkACQBGBCwAAwABBAkACwAwBHIAAwABBAkAEAAeBKIAAwABBAkAEQAMBMAAAwABBAkAEwAiBMwAAwABCAQAAABmBO4AAwABCAQAAQAsBVQAAwABCAQAAgAOBYAAAwABCAQABAAsBY4AAwABCAQABwBMBboAAwABCAQACAAWBgYAAwABCAQACQBGBhwAAwABCAQAEAAeBmIAAwABCAQAEQAMBoBDb3B5cmlnaHQgKGMpIDIwMTcgYnkgVGVuY2VudC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5XZUNoYXQgU2FucyBTdGRNZWRpdW1IYW55aSBXZUNoYXQgU2FucyBTdGQtTWVkaXVtOyBWZXJzaW9uIDEuMDBXZUNoYXQgU2FucyBTdGQtTWVkaXVtVmVyc2lvbiAxLjAwV2VDaGF0LVNhbnMtU3RkLU1lZGl1bVdlQ2hhdCBTYW5zIGlzIGEgdHJhZGVtYXJrIG9mIFRlbmNlbnQuSGFueWkgRm9udHNaSEFORyBYdWFuLCBXQU5HIFRpYW5iaSwgTElVIFhpYW95dWh0dHA6Ly93d3cuaGFueWkuY29tLmNuL1dlQ2hhdCBTYW5zIFN0ZE1lZGl1bVdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW3boiSjX7QKMTIzNDU2Nzg5MENvcHlyaWdodCAoYykgMjAxNyBieSBUZW5jZW50LiBBbGwgcmlnaHRzIHJlc2VydmVkLldlQ2hhdCBTYW5zIFN0ZE1lZGl1bUhhbnlpIFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW07IFZlcnNpb24gMS4wMFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW1WZXJzaW9uIDEuMDBXZUNoYXQtU2Fucy1TdGQtTWVkaXVtV2VDaGF0IFNhbnMgaXMgYSB0cmFkZW1hcmsgb2YgVGVuY2VudC5IYW55aSBGb250c1pIQU5HIFh1YW4sIFdBTkcgVGlhbmJpLCBMSVUgWGlhb3l1V2VDaGF0IFNhbnMgU3RkLU1lZGl1bQBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIASABhAG4AeQBpACAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQA7ACAAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBWAGUAcgBzAGkAbwBuACAAMQAuADAAMABXAGUAQwBoAGEAdAAtAFMAYQBuAHMALQBTAHQAZAAtAE0AZQBkAGkAdQBtAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAFQAZQBuAGMAZQBuAHQALgBIAGEAbgB5AGkAIABGAG8AbgB0AHMAWgBIAEEATgBHACAAWAB1AGEAbgAsACAAVwBBAE4ARwAgAFQAaQBhAG4AYgBpACwAIABMAEkAVQAgAFgAaQBhAG8AeQB1AGgAdAB0AHAAOgAvAC8AdwB3AHcALgBoAGEAbgB5AGkALgBjAG8AbQAuAGMAbgAvAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAFMAdABkAE0AZQBkAGkAdQBtIKwAogAkAKMgqQClAAoAMQAyADMANAA1ADYANwA4ADkAMABDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABUAGUAbgBjAGUAbgB0AC4ASABhAG4AeQBpACAARgBvAG4AdABzAFoASABBAE4ARwAgAFgAdQBhAG4ALAAgAFcAQQBOAEcAIABUAGkAYQBuAGIAaQAsACAATABJAFUAIABYAGkAYQBvAHkAdQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZABNAGUAZABpAHUAbQAAAAIAAAAAAAD/tQAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAYwAAAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQATABQAFQAWABcAGAAZABoAGwAcAA8AEQAQAQIBAwCEAQQAvQAHAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgCFARMBFAEVAJYBFgEXARgBGQEaAA4A7wd1bmkwRTNGB3VuaTIwQjUNY29sb25tb25ldGFyeQd1bmlGRTY5BGRvbmcERXVybwd1bmkyMEIyB3VuaTIwQjQHdW5pMjBBRAd1bmkyMEJFB3VuaTIwQkEHdW5pMjBCQwd1bmkyMEE2B3VuaTIwQjEHdW5pMjBCRAd1bmkyMEI5B3VuaTIwQUEHdW5pMjBCOAd1bmkyMEFFB3VuaTIwQTkHdW5pRkZFMAd1bmlGRjA0B3VuaUZGRTEHdW5pRkZFNgd1bmlGRkU1) format(\"truetype\")}.s1s_card_wrp .product-price.need-border:after{content:\"\";display:block;width:.5px;height:11px;position:absolute;right:0;top:1px;background-color:var(--weui-FG-2)}.s1s_card_wrp .discount-price{color:var(--weui-ORANGERED-100);font-weight:400;font-family:WeChatSansStd-Medium;line-height:normal;font-size:15px;line-height:1;position:relative;top:1px}@font-face{font-family:WeChatSansStd-Medium;src:url(data:application/octet-stream;base64,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AwYAAwABBAkABAAsA1oAAwABBAkABQAYA4YAAwABBAkABgAsA54AAwABBAkABwBMA8oAAwABBAkACAAWBBYAAwABBAkACQBGBCwAAwABBAkACwAwBHIAAwABBAkAEAAeBKIAAwABBAkAEQAMBMAAAwABBAkAEwAiBMwAAwABCAQAAABmBO4AAwABCAQAAQAsBVQAAwABCAQAAgAOBYAAAwABCAQABAAsBY4AAwABCAQABwBMBboAAwABCAQACAAWBgYAAwABCAQACQBGBhwAAwABCAQAEAAeBmIAAwABCAQAEQAMBoBDb3B5cmlnaHQgKGMpIDIwMTcgYnkgVGVuY2VudC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5XZUNoYXQgU2FucyBTdGRNZWRpdW1IYW55aSBXZUNoYXQgU2FucyBTdGQtTWVkaXVtOyBWZXJzaW9uIDEuMDBXZUNoYXQgU2FucyBTdGQtTWVkaXVtVmVyc2lvbiAxLjAwV2VDaGF0LVNhbnMtU3RkLU1lZGl1bVdlQ2hhdCBTYW5zIGlzIGEgdHJhZGVtYXJrIG9mIFRlbmNlbnQuSGFueWkgRm9udHNaSEFORyBYdWFuLCBXQU5HIFRpYW5iaSwgTElVIFhpYW95dWh0dHA6Ly93d3cuaGFueWkuY29tLmNuL1dlQ2hhdCBTYW5zIFN0ZE1lZGl1bVdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW3boiSjX7QKMTIzNDU2Nzg5MENvcHlyaWdodCAoYykgMjAxNyBieSBUZW5jZW50LiBBbGwgcmlnaHRzIHJlc2VydmVkLldlQ2hhdCBTYW5zIFN0ZE1lZGl1bUhhbnlpIFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW07IFZlcnNpb24gMS4wMFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW1WZXJzaW9uIDEuMDBXZUNoYXQtU2Fucy1TdGQtTWVkaXVtV2VDaGF0IFNhbnMgaXMgYSB0cmFkZW1hcmsgb2YgVGVuY2VudC5IYW55aSBGb250c1pIQU5HIFh1YW4sIFdBTkcgVGlhbmJpLCBMSVUgWGlhb3l1V2VDaGF0IFNhbnMgU3RkLU1lZGl1bQBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIASABhAG4AeQBpACAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQA7ACAAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBWAGUAcgBzAGkAbwBuACAAMQAuADAAMABXAGUAQwBoAGEAdAAtAFMAYQBuAHMALQBTAHQAZAAtAE0AZQBkAGkAdQBtAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAFQAZQBuAGMAZQBuAHQALgBIAGEAbgB5AGkAIABGAG8AbgB0AHMAWgBIAEEATgBHACAAWAB1AGEAbgAsACAAVwBBAE4ARwAgAFQAaQBhAG4AYgBpACwAIABMAEkAVQAgAFgAaQBhAG8AeQB1AGgAdAB0AHAAOgAvAC8AdwB3AHcALgBoAGEAbgB5AGkALgBjAG8AbQAuAGMAbgAvAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAFMAdABkAE0AZQBkAGkAdQBtIKwAogAkAKMgqQClAAoAMQAyADMANAA1ADYANwA4ADkAMABDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABUAGUAbgBjAGUAbgB0AC4ASABhAG4AeQBpACAARgBvAG4AdABzAFoASABBAE4ARwAgAFgAdQBhAG4ALAAgAFcAQQBOAEcAIABUAGkAYQBuAGIAaQAsACAATABJAFUAIABYAGkAYQBvAHkAdQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZABNAGUAZABpAHUAbQAAAAIAAAAAAAD/tQAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAYwAAAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQATABQAFQAWABcAGAAZABoAGwAcAA8AEQAQAQIBAwCEAQQAvQAHAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgCFARMBFAEVAJYBFgEXARgBGQEaAA4A7wd1bmkwRTNGB3VuaTIwQjUNY29sb25tb25ldGFyeQd1bmlGRTY5BGRvbmcERXVybwd1bmkyMEIyB3VuaTIwQjQHdW5pMjBBRAd1bmkyMEJFB3VuaTIwQkEHdW5pMjBCQwd1bmkyMEE2B3VuaTIwQjEHdW5pMjBCRAd1bmkyMEI5B3VuaTIwQUEHdW5pMjBCOAd1bmkyMEFFB3VuaTIwQTkHdW5pRkZFMAd1bmlGRjA0B3VuaUZGRTEHdW5pRkZFNgd1bmlGRkU1) format(\"truetype\")}.s1s_card_wrp .discount-price__extra{font-size:12px;color:var(--weui-ORANGERED-100);font-weight:400;margin-left:1px;position:relative;top:-1px}.s1s_card_wrp .product-brand{color:var(--weui-FG-1);font-size:12px;display:flex;align-items:center}.s1s_card_wrp .product-brand .product-logo{margin-right:2px}.s1s_card_wrp .product-brand .shop-verify-icon{font-size:14px;margin-left:2px;position:relative;top:-.03em}.s1s_card_wrp .product-centercontainer{display:flex;align-items:flex-end;margin-bottom:5px}.s1s_card_wrp .product-gifts{color:var(--weui-FG-2);font-size:12px;margin-left:6px;position:relative;top:-.06em}.s1s_card_wrp .product-gifts .product-gifts__num{margin:0 1px}.product_image_wrp{width:100%;height:100%}.product_load_fail{display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;width:100%;min-height:88px;padding:16px 64px;border-radius:8px;background-color:var(--weui-BG-3, rgba(0, 0, 0, .03));color:var(--weui-FG-2, rgba(0, 0, 0, .3));font-size:14px;line-height:1.4;-webkit-user-select:none;-moz-user-select:none;user-select:none}.product_load_fail__text{text-align:center}@media (prefers-color-scheme: dark){:root{--weui-FG-6: rgba(255, 255, 255, .05)}.s1s_card_wrp .product-price{color:#5e5e5e}.s1s_card_wrp .shop-verify-icon{filter:invert(1)}}\n",
    J$2 = {
      windowproduct: "data-windowproduct",
      customstyle: "data-customstyle",
      ecsource: "data-ecsource",
      exportkey: "data-exportkey",
      wap_export_token: "data-wap_export_token",
      loaded: "data-loaded",
      cardtype: "data-cardtype",
      is_hover: "data-is-hover",
      is_selected: "data-is-selected",
      token: "data-token",
      title: "data-title",
      immutable: "data-immutable",
      req_scene: "data-req-scene",
      urlParams: "data-url-params",
      extInfo: "data-ext-info",
      scrollBlur: "data-scroll-blur",
      wrpStyle: "data-wrp-style",
      type: "data-type",
      productImage: "data-product-image",
      originPrice: "data-origin-price",
      discountedPrice: "data-discounted-price",
      outerclick: "data-outerclick",
      productInfo: "data-product-info"
    };
  function ut(A) {
    var t = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : {};
    var e = {};
    return e = o$6.call(this, J$2), e.loaded = Number(e.loaded || 0), e.cardtype = Number(e.cardtype || 0), e.is_hover = Number(e.is_hover || 0), e.is_selected = Number(e.is_selected || 0), e.immutable = Number(e.immutable || 0), e.req_scene = Number(e.req_scene || 0), e.urlParams = JSON.parse(e.urlParams || "{}"), e.extInfo = JSON.parse(e.extInfo || "{}"), e.productInfo = JSON.parse(e.productInfo || "{}"), e.scrollBlur = Number(e.scrollBlur || 0), e.originPrice = Number(e.originPrice || 0), e.discountedPrice = Number(e.discountedPrice || 0), e.outerclick = Number(e.outerclick || 0), _objectSpread$9({
      platform: A,
      extraInfo: t
    }, e);
  }
  function ft(A) {
    H$3(Object.assign(A, {
      Component: A.isDev ? A.devComponent : gt,
      styleText: A.isDev ? A.devStyleText : nt,
      customName: A.customName || "mp-common-product",
      watchAttr: Object.values(J$2),
      getProps: ut,
      eventName: ["iframe-message", "document-click", "expose", "element-click"]
    }));
  }

  function ownKeys$8(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r &amp;&amp; (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
  function _objectSpread$8(e) { for (var r = 1; r &lt; arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$8(Object(t), !0).forEach(function (r) { defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$8(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
  var w$4 = {
      name: "mp-common-redpacket",
      mixins: [k$1],
      props: {
        errType: {
          type: String,
          "default": ""
        },
        is_hover: {
          type: Number,
          "default": 0
        },
        is_selected: {
          type: Number,
          "default": 0
        },
        name: {
          type: String,
          "default": ""
        },
        isSynthetic: {
          type: Number,
          "default": 0
        },
        imgSrc: {
          type: String,
          "default": ""
        },
        openImgSrc: {
          type: String,
          "default": ""
        },
        status: {
          type: Number,
          "default": 3
        },
        bizuin: {
          type: String,
          "default": ""
        },
        coveruri: {
          type: String,
          "default": ""
        },
        orderid: {
          type: String,
          "default": ""
        },
        isPurchaseOrder: {
          type: Number,
          "default": 0
        },
        smallCard: {
          type: Number,
          "default": 0
        }
      },
      data: function data() {
        return {
          platformClassname: {
            web: "common-redpacket-web",
            app: "common-redpacket-app",
            wechat: "common-redpacket-webchat"
          }[this.platform],
          openImgWidth: "62.33%",
          openImgHeight: "108%"
        };
      },
      methods: {
        handleClick: function handleClick() {
          this.$emit("click");
        },
        calOpenImgWidth: function calOpenImgWidth() {
          var _this = this;
          if (!this.openImgSrc) return;
          var E = new Image();
          E.onload = function () {
            _this.openImgWidth = "".concat((E.width / E.height * 108).toFixed(2), "%");
          }, E.src = decodeURIComponent(this.openImgSrc);
        }
      },
      computed: {
        disabled: function disabled() {
          return this.errType * 1 &gt; 0;
        }
      },
      watch: {
        openImgSrc: function openImgSrc() {
          this.calOpenImgWidth();
        }
      },
      mounted: function mounted() {
        this.calOpenImgWidth();
      }
    },
    a$3 = w$4;
  var r$7 = function r() {
      var A = this,
        g = A._self._c;
      return A._self._setupProxy, g("section", {
        ref: "js_custom_element",
        staticClass: "wx-root red_package_cover_wrp",
        "class": [{
          disabled: A.disabled,
          small: A.smallCard
        }, A.platformClassname],
        attrs: {
          role: "option"
        }
      }, [g("section", {
        staticClass: "red_package_cover__inner wx_tap_card wx_card_root",
        "class": [A.is_hover === 1 ? "wx_hover_card" : "", A.is_selected === 1 ? "wx_selected_card" : ""]
      }, [g("section", {
        staticClass: "red_package_cover__inner__main"
      }, [g("section", {
        staticClass: "red_package_cover__body"
      }, [A.openImgSrc ? g("span", {
        staticClass: "red_package_cover_img red_package_open_cover_img",
        style: {
          "background-image": "url(".concat(A.openImgSrc, ")"),
          width: A.smallCard ? "" : A.openImgWidth,
          height: A.smallCard ? "" : A.openImgHeight
        },
        attrs: {
          "data-notusecover": "1"
        }
      }) : g("span", {
        staticClass: "red_package_cover_img",
        "class": {
          synthetic_cover_img: A.isSynthetic === 1
        },
        style: "background-image: url(" + A.imgSrc + ")",
        attrs: {
          "data-notusecover": "1"
        }
      }), A.smallCard ? g("span", {
        staticClass: "title-wrp"
      }, [g("span", {
        staticClass: "title"
      }, [A._v(A._s(A.name) + '的红包封面')]), A.isPurchaseOrder === 1 ? g("span", {
        staticClass: "red_package_cover__purchase"
      }, [A._v('付费')]) : A._e()]) : A._e()]), g("section", {
        staticClass: "red_package_cover__foot"
      }, [A.smallCard ? [A.status === 0 ? g("span", {
        staticClass: "weui-btn weui-btn_mini red_package_cover__access-link button"
      }, [A._v('领取')]) : A.status === 1 ? g("span", {
        staticClass: "red_package_cover__access-link correct disabled"
      }, [A._v('已领取')]) : A.status === 2 ? g("span", {
        staticClass: "red_package_cover__access-link disabled"
      }, [A._v('已领完')]) : A.status === 3 ? g("span", {
        staticClass: "red_package_cover__access-link disabled"
      }, [A._v('不可领取')]) : A._e()] : A.platform !== "wechat" ? [A.disabled ? g("span", {
        staticClass: "red_package_cover__access-link disabled"
      }, [A._v('红包封面不可用')]) : g("span", {
        staticClass: "red_package_cover__access-link"
      }, [A._v('领取' + A._s(A.name) + '的红包封面')])] : [A.status === 0 ? g("span", {
        staticClass: "red_package_cover__access-link"
      }, [A._v('领取' + A._s(A.name) + '的红包封面')]) : A.status === 1 ? g("span", {
        staticClass: "red_package_cover__access-link disabled"
      }, [A._v('已领取红包封面')]) : A.status === 2 ? g("span", {
        staticClass: "red_package_cover__access-link disabled"
      }, [A._v('红包封面已领取完')]) : A.status === 3 ? g("span", {
        staticClass: "red_package_cover__access-link disabled"
      }, [A._v('红包封面不可领取')]) : A._e()], A.isPurchaseOrder === 1 &amp;&amp; !A.smallCard ? g("section", {
        staticClass: "red_package_cover__purchase"
      }, [A._v('付费')]) : A._e()], 2)]), A._m(0), A.platform !== "wechat" &amp;&amp; A.disabled ? g("section", {
        staticClass: "red_package_cover_disable_wording"
      }, [A._v('红包封面不可用')]) : A._e()])]);
    },
    t$2 = [function () {
      var E = this,
        A = E._self._c;
      return E._self._setupProxy, A("section", {
        staticClass: "red_package_cover__extend"
      }, [A("span", {
        staticClass: "red_package_cover__extend_icon"
      }), A("span", {
        staticClass: "red_package_cover__extend_info"
      }, [E._v('微信红包封面')])]);
    }],
    u$1 = v$2(a$3, r$7, t$2, !1, null, "e0207b94", null, null);
  var n$5 = u$1.exports,
    d$3 = ".wx-root,body{--weui-BG-COLOR-ACTIVE: #ececec}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-COLOR-ACTIVE: #373737}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-COLOR-ACTIVE: #373737}}body,.wx-root,page{--weui-BTN-HEIGHT: 48;--weui-BTN-HEIGHT-MEDIUM: 40;--weui-BTN-HEIGHT-SMALL: 32}.wx-root,body{--weui-BTN-ACTIVE-MASK: rgba(0, 0, 0, .1)}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BTN-ACTIVE-MASK: rgba(255, 255, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BTN-ACTIVE-MASK: rgba(255, 255, 255, .1)}}.wx-root,body{--weui-BTN-DEFAULT-ACTIVE-BG: #e6e6e6}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BTN-DEFAULT-ACTIVE-BG: rgba(255, 255, 255, .126)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BTN-DEFAULT-ACTIVE-BG: rgba(255, 255, 255, .126)}}.wx-root,body{--weui-DIALOG-LINE-COLOR: rgba(0, 0, 0, .1)}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-DIALOG-LINE-COLOR: rgba(255, 255, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-DIALOG-LINE-COLOR: rgba(255, 255, 255, .1)}}.weui-btn{position:relative;display:block;width:184px;margin-left:auto;margin-right:auto;padding:12px 24px;box-sizing:border-box;font-weight:500;font-size:17px;text-align:center;text-decoration:none;color:#fff;line-height:1.41176471;border-radius:8px;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;-moz-user-select:none;user-select:none}.weui-btn:active:before{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background-color:var(--weui-BTN-ACTIVE-MASK);border-radius:8px}.weui-btn:active.weui-btn_loading:before,.weui-btn:active.weui-btn_disabled:before,.weui-btn:active[disabled]:before{display:none}.weui-btn_block{width:auto}.weui-btn_inline{display:inline-block}.weui-btn_default{color:var(--weui-FG-0);background-color:var(--weui-FG-5)}.weui-btn_default:not(.weui-btn_disabled):visited{color:var(--weui-FG-0)}.weui-btn_primary{background-color:var(--weui-BRAND)}.weui-btn_primary:not(.weui-btn_disabled):visited{color:#fff}.weui-btn_warn{color:var(--weui-RED);background-color:var(--weui-FG-5)}.weui-btn_warn:not(.weui-btn_disabled):visited{color:var(--weui-RED)}.weui-btn_overlay{color:var(--weui-BRAND);background-color:#fff}.weui-btn_overlay:not(.weui-btn_disabled):visited{color:var(--weui-BRAND)}.weui-btn_disabled,.weui-btn[disabled]{color:var(--weui-FG-4);background-color:var(--weui-BG-1)}.weui-btn_loading .weui-loading{margin:-.2em 8px 0 0}.weui-btn_loading .weui-mask-loading{margin:-.2em 8px 0 0;color:currentColor}.weui-btn_loading .weui-primary-loading{margin:-.2em 8px 0 0;vertical-align:middle;color:currentColor}.weui-btn_loading .weui-primary-loading:before{content:\"\"}.weui-btn_loading.weui-btn_primary{color:var(--weui-WHITE)}.weui-btn_cell{position:relative;display:block;margin-left:auto;margin-right:auto;box-sizing:border-box;font-size:17px;text-align:center;text-decoration:none;color:#fff;line-height:1.41176471;padding:16px;-webkit-tap-highlight-color:rgba(0,0,0,0);overflow:hidden;background-color:var(--weui-BG-5)}.weui-btn_cell+.weui-btn_cell{margin-top:16px}.weui-btn_cell:active{background-color:var(--weui-BG-COLOR-ACTIVE)}.weui-btn_cell__icon{display:inline-block;vertical-align:middle;width:24px;height:24px;margin:-.2em .34em 0 0}.weui-btn_cell-default{color:var(--weui-FG-0)}.weui-btn_cell-primary{color:var(--weui-LINK)}.weui-btn_cell-warn{color:var(--weui-RED)}.weui-bottom-fixed-opr-page{height:100%;display:flex;flex-direction:column}.weui-bottom-fixed-opr-page__content{min-height:0;flex:1;padding-bottom:80px;box-sizing:border-box;overflow-y:auto;-webkit-overflow-scrolling:touch}.weui-bottom-fixed-opr-page__tool{padding:16px 32px 24px;padding:16px calc(32px + constant(safe-area-inset-right)) calc(24px + constant(safe-area-inset-bottom)) calc(32px + constant(safe-area-inset-left));padding:16px calc(32px + env(safe-area-inset-right)) calc(24px + env(safe-area-inset-bottom)) calc(32px + env(safe-area-inset-left));background:#ffffff;position:relative;z-index:50}.weui-bottom-fixed-opr-page__tool:before{content:\"\";height:80px;background:linear-gradient(to top,#ffffff,rgba(255,255,255,0));position:absolute;bottom:calc(100% - 1px);left:0;right:0;transform:translateZ(0);pointer-events:none}.wx-root[data-weui-theme=dark] .weui-bottom-fixed-opr-page__tool,body[data-weui-theme=dark] .weui-bottom-fixed-opr-page__tool{background:#191919}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]) .weui-bottom-fixed-opr-page__tool,body:not([data-weui-theme=light]) .weui-bottom-fixed-opr-page__tool{background:#191919}}.wx-root[data-weui-theme=dark] .weui-bottom-fixed-opr-page__tool:before,body[data-weui-theme=dark] .weui-bottom-fixed-opr-page__tool:before{background:linear-gradient(to top,#191919,rgba(25,25,25,0))}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]) .weui-bottom-fixed-opr-page__tool:before,body:not([data-weui-theme=light]) .weui-bottom-fixed-opr-page__tool:before{background:linear-gradient(to top,#191919,rgba(25,25,25,0))}}.weui-bottom-fixed-opr-page__tips{margin-bottom:24px;padding:0 32px;text-align:center}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr{display:flex;align-items:center;justify-content:center}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn{width:184px;padding-left:16px;padding-right:16px}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2),.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn{margin:0 8px;width:136px}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2):first-child,.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn:first-child{margin-left:0}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2):last-child,.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn:last-child{margin-right:0}.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr{flex-direction:column}.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2),.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn{width:184px;margin:16px 0 0}.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2):first-child,.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn:first-child{margin-top:0}.weui-bottom-fixed-opr-page.weui-form{padding-top:0}.weui-bottom-fixed-opr-page.weui-form .weui-form__bd{padding-top:56px;padding-top:calc(56px + constant(safe-area-inset-top));padding-top:calc(56px + env(safe-area-inset-top))}.weui-bottom-fixed-opr-page.weui-form .weui-form__ft{padding-bottom:0}.weui-bottom-fixed-opr-page.weui-form .weui-form__control-area{margin-bottom:0}.weui-bottom-fixed-opr-page.weui-half-screen-dialog{padding:0}.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__hd,.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__bd,.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__ft{padding-left:24px;padding-left:calc(24px + constant(safe-area-inset-left));padding-left:calc(24px + env(safe-area-inset-left));padding-right:24px;padding-right:calc(24px + constant(safe-area-inset-right));padding-right:calc(24px + env(safe-area-inset-right))}.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__bd{padding-bottom:80px}.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__ft{padding-bottom:64px;padding-bottom:calc(64px + constant(safe-area-inset-bottom));padding-bottom:calc(64px + env(safe-area-inset-bottom))}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog{padding:0}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-half-screen-dialog__hd{padding:0 24px;padding:0 calc(24px + constant(safe-area-inset-right)) 0 calc(24px + constant(safe-area-inset-left));padding:0 calc(24px + env(safe-area-inset-right)) 0 calc(24px + env(safe-area-inset-left))}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-half-screen-dialog__bd{padding-bottom:0;display:flex;flex-direction:column}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-half-screen-dialog__ft{padding:0}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-bottom-fixed-opr-page{flex:1;min-height:0}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-bottom-fixed-opr-page__content{padding:0 24px;padding:0 calc(24px + constant(safe-area-inset-right)) 0 calc(24px + constant(safe-area-inset-left));padding:0 calc(24px + env(safe-area-inset-right)) 0 calc(24px + env(safe-area-inset-left))}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-bottom-fixed-opr{padding:16px 0 64px;padding:16px 0 calc(64px + constant(safe-area-inset-bottom));padding:16px 0 calc(64px + env(safe-area-inset-bottom))}button.weui-btn,input.weui-btn{border-width:0;outline:0;-webkit-appearance:none}button.weui-btn:focus,input.weui-btn:focus{outline:0}button.weui-btn_inline,input.weui-btn_inline,button.weui-btn_mini,input.weui-btn_mini{width:auto}.weui-btn_medium{font-size:14px;padding:10px 24px;line-height:calc((var(--weui-BTN-HEIGHT-MEDIUM) - 20) / 14)}.weui-btn_mini{display:inline-block;width:auto;line-height:calc((32 - 12) / 14);padding:6px 12px;font-size:14px;border-radius:6px}.weui-btn_xmini{display:inline-block;width:auto;padding:4px 12px;line-height:calc((28 - 8) / 14);font-size:14px;font-weight:500;border-radius:4px}.weui-btn+.weui-btn{margin-top:16px}.weui-btn.weui-btn_mini+.weui-btn.weui-btn_mini{margin-top:auto}.weui-btn.weui-btn_xmini+.weui-btn.weui-btn_xmini{margin-top:auto}.weui-btn.weui-btn_inline+.weui-btn.weui-btn_inline{margin-left:16px}.weui-btn-area{margin:48px 16px 8px}.weui-btn-area_inline{display:flex}.weui-btn-area_inline .weui-btn{margin-top:auto;margin-right:16px;width:100%;flex:1}.weui-btn-area_inline .weui-btn:last-child{margin-right:0}.weui-btn_reset{background:transparent;border:0;padding:0;outline:0;font-size:inherit}.weui-btn_icon{background:transparent;border:0;padding:0;outline:0;font-size:0}.weui-btn_icon:active [class*=weui-icon-]{color:var(--weui-FG-1)}body,.wx-root{--weui-BG-0: #ededed;--weui-BG-1: #f7f7f7;--weui-BG-2: #fff;--weui-BG-3: #f7f7f7;--weui-BG-4: #4c4c4c;--weui-BG-5: #fff;--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #fa9d3b;--weui-YELLOW: #ffc300;--weui-GREEN: #91d300;--weui-LIGHTGREEN: #95ec69;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1485ee;--weui-PURPLE: #6467f0;--weui-WHITE: #fff;--weui-LINK: #576b95;--weui-TEXTGREEN: #06ae56;--weui-BG: #fff;--weui-TAG-TEXT-ORANGE: #fa9d3b;--weui-TAG-TEXT-GREEN: #06ae56;--weui-TAG-TEXT-BLUE: #10aeff;--weui-REDORANGE: #ff6146;--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #07C160;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0: rgba(0, 0, 0, .9);--weui-FG-0_5: rgba(0, 0, 0, .9);--weui-FG-1: rgba(0, 0, 0, .55);--weui-FG-2: rgba(0, 0, 0, .3);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-GLYPH-0: rgba(0, 0, 0, .9);--weui-GLYPH-1: rgba(0, 0, 0, .55);--weui-GLYPH-2: rgba(0, 0, 0, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #91D300;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #1485EE;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #95EC69;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #FA9D3B;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6467F0;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #FA5151;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .05);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #FFC300;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-FG-HALF: rgba(0, 0, 0, .9);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #FA9D3B;--weui-YELLOW: #FFC300;--weui-GREEN: #91D300;--weui-LIGHTGREEN: #95EC69;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1485EE;--weui-PURPLE: #6467F0;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #FA9D3B;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #10AEFF;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05);--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-FG: #000;--weui-FG-5: rgba(0, 0, 0, .05);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-5: #2c2c2c;--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-REDORANGE: #ff6146;--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG: #fff;--weui-BG: #000;--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6)}}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-5: #2c2c2c;--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-REDORANGE: #ff6146;--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG: #fff;--weui-BG: #000;--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6)}.wx-root[data-weui-mode=care],body[data-weui-mode=care]{--weui-BG-0: #ededed;--weui-BG-1: #f7f7f7;--weui-BG-2: #fff;--weui-BG-3: #f7f7f7;--weui-BG-4: #4c4c4c;--weui-BG-5: #fff;--weui-RED: #dc3636;--weui-ORANGERED: #d14730;--weui-ORANGE: #e17719;--weui-YELLOW: #bb8e00;--weui-GREEN: #4f8400;--weui-LIGHTGREEN: #2e8800;--weui-BLUE: #007dbb;--weui-INDIGO: #0075e2;--weui-PURPLE: #6265f1;--weui-WHITE: #fff;--weui-LINK: #576b95;--weui-TEXTGREEN: #06ae56;--weui-BG: #fff;--weui-TAG-TEXT-ORANGE: #e17719;--weui-TAG-TEXT-GREEN: #06ae56;--weui-TAG-TEXT-BLUE: #007dbb;--weui-REDORANGE: #d14730;--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #007DBB;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #018942;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0: #000000;--weui-FG-0_5: #000000;--weui-FG-1: rgba(0, 0, 0, .6);--weui-FG-2: rgba(0, 0, 0, .42);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-GLYPH-0: #000000;--weui-GLYPH-1: rgba(0, 0, 0, .6);--weui-GLYPH-2: rgba(0, 0, 0, .42);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #4F8400;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #0075E2;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #2E8800;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #E17719;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #D14730;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6265F1;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #DC3636;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .1);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #BB8E00;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-FG-HALF: #000000;--weui-RED: #DC3636;--weui-ORANGERED: #D14730;--weui-ORANGE: #E17719;--weui-YELLOW: #BB8E00;--weui-GREEN: #4F8400;--weui-LIGHTGREEN: #2E8800;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #018942;--weui-BLUE: #007DBB;--weui-INDIGO: #0075E2;--weui-PURPLE: #6265F1;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #E17719;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #007DBB;--weui-REDORANGE: #D14730;--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-FG: #000;--weui-FG-5: rgba(0, 0, 0, .05);--weui-TAG-BACKGROUND-ORANGE: rgba(225, 119, 25, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(0, 125, 187, .1);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05)}@media (prefers-color-scheme: dark){.wx-root[data-weui-mode=care]:not([data-weui-theme=light]),body[data-weui-mode=care]:not([data-weui-theme=light]){--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-5: #2c2c2c;--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-REDORANGE: #ff6146;--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-FG: #fff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-BG: #000;--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5)}}.wx-root[data-weui-mode=care][data-weui-theme=dark],body[data-weui-mode=care][data-weui-theme=dark]{--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-5: #2c2c2c;--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-REDORANGE: #ff6146;--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-FG: #fff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-BG: #000;--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5)}.wx-root{position:relative;pointer-events:auto;font-family:system-ui,-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Hiragino Sans GB,Microsoft YaHei UI,Microsoft YaHei,Arial,sans-serif}.wx_card_root{position:relative}.wxw_hide{display:none!important}.wx_uninteractive{pointer-events:none}:host(.wx_tap_highlight_active) .wx_tap_link{opacity:.5}:host(.wx_tap_highlight_active) .wx_tap_card{background-color:#f3f3f3}:host(.wx_tap_highlight_active) .wx_tap_cell{background-color:#0000000d}@media (prefers-color-scheme: dark){:host(.wx_tap_highlight_active) .wx_tap_card{background-color:#252525}:host(.wx_tap_highlight_active) .wx_tap_cell{background-color:#ffffff1a}}.wx_css_active :active{opacity:.5}.wx_hover_card:before{content:\" \";position:absolute;top:0;left:0;right:0;bottom:0;border-radius:8px;box-sizing:border-box;border:1px solid rgba(7,193,96,.3);pointer-events:none;z-index:9}.wx_selected_card:before{content:\" \";position:absolute;top:0;left:0;right:0;bottom:0;border-radius:8px;border:1.5px solid #07C160;box-sizing:border-box;background:rgba(7,193,96,.1);pointer-events:none;z-index:9}.wx-root,body{--weui-BG-6: rgba(0, 0, 0, .05)}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-6: rgba(255, 255, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-6: rgba(255, 255, 255, .1)}}.point_event_no{pointer-events:none}.red_package_cover_wrp{-webkit-user-select:none;-moz-user-select:none;user-select:none;display:block;font-size:0;text-align:center}.red_package_cover_wrp.disabled .red_package_cover__inner{position:relative;cursor:default}.red_package_cover_wrp.disabled .red_package_cover__inner:after{border-radius:inherit;position:absolute;top:0;bottom:0;left:0;right:0;content:\" \";display:block;height:100%;background-color:var(--weui-FG-1)}.red_package_cover_wrp.disabled .red_package_cover_disable_wording{display:block;text-align:center}.red_package_cover_wrp.common-redpacket-web .red_package_cover__inner{max-width:273px}.red_package_cover_wrp .red_package_cover__inner{position:relative;cursor:pointer;display:inline-block;font-size:17px;background:var(--weui-BG-3);border-radius:8px;max-width:300px;width:77%}.red_package_cover_wrp .red_package_cover__inner.red_package_cover__inner__loading{position:relative}.red_package_cover_wrp .red_package_cover__inner.red_package_cover__inner__loading:before{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px;content:\" \";display:block;width:16px;height:16px}.red_package_cover_wrp .red_package_cover__inner.red_package_cover__inner__loading .red_package_cover__inner__main,.red_package_cover_wrp .red_package_cover__inner.red_package_cover__inner__loading .red_package_cover__extend{opacity:0}.red_package_cover_wrp .red_package_cover__inner__main{width:300px;width:100%;padding:13.6% 0 8%}.red_package_cover_wrp .red_package_cover_img{position:relative;display:block;width:196px;height:324px;border-radius:5px;background-size:cover;background-repeat:no-repeat;background-position:center;margin:0 auto;width:65.33%;height:initial;padding-bottom:108%}.red_package_cover_wrp .red_package_cover_img.red_package_cover_img_loading{background-color:#00000008;position:relative}.wx-root[data-weui-theme=dark] .red_package_cover_wrp .red_package_cover_img.red_package_cover_img_loading,body[data-weui-theme=dark] .red_package_cover_wrp .red_package_cover_img.red_package_cover_img_loading{background-color:#ffffff08}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]) .red_package_cover_wrp .red_package_cover_img.red_package_cover_img_loading,body:not([data-weui-theme=light]) .red_package_cover_wrp .red_package_cover_img.red_package_cover_img_loading{background-color:#ffffff08}}.red_package_cover_wrp .red_package_cover_img.red_package_cover_img_loading:before{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px;content:\" \";display:block;width:16px;height:16px}.red_package_cover_wrp .red_package_cover_img.red_package_cover_img_loading:after{display:none}.red_package_cover_wrp .red_package_cover_img:after{content:\" \";display:block;position:absolute;bottom:0;left:0;right:0;height:100%;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYgAAADGCAYAAADIZheOAAAAAXNSR0IArs4c6QAALntJREFUeAHtnQmcHVW9509V3bq3t3Q6CzFhSwKE+ABBIOlAAoGELAZ9yojReSrC+FF4guibectnfPOZJ7OpT+chg4DgG0XFcUNEH0tAshHInhCBCFnNvocknaWXu1TN/3eqT3flprrTy+3uuvf+KqmuqlPbOd9z6vzu//xPnVKKEwmQAAmQAAlEELAiwhhEAiVL4L3NP6v1jjeNsx1/uPKsQcpXg3xL6aWyZBuT759Qljph+Uovle2f8HLWYbu2cvOwcZ89XrJwmDASyCNAgcgDws3SIOC/+dPqI17LZC/nf0BZ/njLsi/1fX+8pG5UL1O4T87fJCqyUfnWRk/560e4lUutqz7XKOF+L6/N00kgVgQoELHKDkampwT8zS+mDp/cc71U0dPFApgmBXuS1NZuT6/XnfPkXhm510rfV4tzyl84cvAFy6xxt7Z05xo8lgTiSIACEcdcYZy6RMDf9evKw/sbblOO+ixEQU6q7NKJfX9QkwjGYsuznho+cvDvrAs+2Sy3pHXR99x5hwIToEAUGCgv17cEpJnIOrbuyakZP3Onrazbpdat7ds79u7q8oAdl2aoZyzP/unwCV941bLEs8GJBIqEAAWiSDKq3KMJn8LhTNNfW7Z9v4jE6GLkIeKww/e87w13Kx+nz6IYc7D84kyBKL88L6oUH9n668G5o0e/Ij2MviIRH15Uke84soe9nPe9Rjf18Nir/0ODHEaromNW3DOABCgQAwift+6YwPF3fzKs+VTL39qWuldqz8EdH1m8e+Tha/B89VhW+Q+eO+Ge9yQlFIrizc6SjDkFoiSztXgTJc1H9sG1/3q3Y6tvSK+gIcWbkq7H3LLU0UzW/y8jJ979RKuPgkLRdXw8sg8JUCD6EC4v3S0C1t6Vj1/rJqzvK2VN6NaZJXOwv6apOXvvhVPuWyNJokiUTL4Wb0IoEMWbdyUT86PrnqzL5tLfsGzrHrEa7JJJWA8SItaEl8t5P2hu9v5x9I33HpNLUCh6wJGnFIYABaIwHHmVnhGwDqz6wfWOo34hteCFPbtEiZ7l+7sam7OfHn3DfUslhRSJEs3muCfLiXsEGb/SJID3Ge796Ll/79jWU1L7lYWvoVs5aVmDk67zub/5wq3pQedNXLZ48eJunc6DSaAQBGhBFIIir9EtAnvXPDE8oayfSHPKrd06sUwP9jx/3vGmljvHTf3KYUFAa6JMy8FAJJsCMRDUy/ee2hEtv4yfFQvi/PLF0KOU7zlxqvnjF039ymo5myLRI4Q8qbsEKBDdJcbje0rA2rPi8Rkp13nGV34wrHZPr1Sm51nKOtHYnP6E9HKaLwi8MsXAZPcjgbLuMdKPnMv9VtbBtY9/MpV0nqc49LwogF1VZfK5PSsf/ZRchc9uz1HyzC4SsOEs7OKxPIwEekLA2r/qiftty/65lLVkTy7Ac9oJgGHKdX+2e9ljGHoEIsHntx0P1wpIANpgv/yhCSMLeE1eigTCBKQb6+P/1XGs/1Pu7zeEofR2HSxTqcR39yx/9J/kWhAIikRvofL8MwhAG+xTjbmLztjDABLoPQFr3+on7rUd+7/1/lK8QhSBZNL9+q7lj90n+ygQUYAY1isC0AZbbNSpvboKTyaBMwlY+1Z9f67rWA+fuYshhSRQmUo8tO21h+mTKCRUXksTgDbY0hf9ZvIggQISsHavenx6IuH8lM1KBaTawaXAuKa64snNrz48Qw6RZ5oTCRSGALTBTlj2TfNvqR9WmEvyKmVOwNq7/JGrKxz7t9JTP1XmLPov+cK6rrriN1sXPXiN3JTNTf1HvmTvBE2ANtgVtp2ylY92TE4k0BsC1p9eenBIIpmU9xzi/RnQ3iQytudaalDNoJrfvPijr+GjShSJ2GZUcUTM9vx7tTak5IssKcu6f8NHp/DlpeLIu7jG0ho+rOZHUjONiWsESz1e8iiPvvry0T+UdGKMNYpEqWd4H6Vv/x2zqpOO+gq0wU7Kl1mqEs7wQ43Zf+mj+/GypU9AhtD4/lelx8PHSj+p8U5hImH/5fbXHv6qxBL+CIpEvLMrlrHbvO/og9WJxHBog/ggLFUlKzUJ64tLZk68K5YxZqTiTMDa9toj9Uk38a04R7Kc4lZTXfmNdS9++zpJMwWinDK+AGl99Zb6O2sSzt3QBGiD7UgRglIMchOqxk58b9HMiR8swH14ifIgYG34/T9LfZT8Bd+Sjk+GIy/OHTH4Z89+929qJVYUifhkTaxjsuzW6z9QnbAfgRZAE6ANulscVqTniapxnZoq23562UeuPy/WKWHk4kLAqh056AH5oTE2LhFiPAIC0n99zLWTLvm6bNEfwUJxVgJrZt84KpH1nql1EzXQAmgCJhsvQtjyI8OVJcyKOjdxiZvxli+Zfi26zHEigY4IWBvmP3RFMpG4v6MDGD6wBKpSyfuWP/O/rpRYtD7uAxsf3j2eBF6dMeFqT6VXDk4mxkEDoAXQhEAbJM7irBbFsFVSVqrl+491rntBjZtctuSWid/w777bjWeyGKsBJmAPqa14RLq0snwMcEZ0dHvkzejzhuJt9oTMFImOQJVpOOp21PE1jrtsiNT5qPuhAdACaAImvZRx5gORkG4oOEB6NakhyURK5q+t3Pbm1kUz6/8aI/sFp/AvCShr59JH75Bxlm4ki3gTcF1nysYF3/2cxJK9muKdVf0WO9Tli26pv2fFtre2oI4fmkxUoM7X4iAaAFGAJqDCt96ec70/PJXUPgjEUH51KE/+ZD0xOmRukbkx56lTmdzGjFL//ab5q36O4ziVLQFrza+/VXvhxUM3SQEaUbYUiijh8jwfeukPb/7Fnf/46FGJNj80VER5V+iovjqj/tNi8v9TteuMR3NSShsF8DmI5SDKYKyAZqnzD7ekAye17FMW2p1aZzgoXJwss/SHhV9CDUu542sTzv97fcakNxfOmHB7oSPO6xUNAWvEeYO+THEomvzCL8JzJl9/6ZclxrQiiifbChpT1Nmou1GHoy5HnY66HXU86vqEFBJT/0MLoAmYdC+mYDX4iwDjnHBb1aW1hxOandQ5qcSVdYnEb5bPmrR28cz6fxc+l+slT8D69aP3VlVUuPhYDaciIlA7qPK+//ylD2O0hNZHv4giz6j2mMCiWfW3oa5GnY26G3W49FbVLUZJqd9Rx4fr/PwbnSYQpuRgadQE1kTCCIUscfGhSVcNcRPX1MqgbLj5whkTP5l/YW6XJAHruqsu/6IUCTYtFVn2woq46/YZX5Ros9trkeVdT6K7YHr9XNTNg237WdTVqLO1MLTW5ajTUbebeh51PiazDLYiLAizAwcaZUH7FN6qgykC1ZFBnOTFunahqEs4v1p6S/36xTMn3UFntiFYckvrwQf/Y6qiIvG3JZeyMknQkMFVX/3MZ+ZUSnLz64EyIVDayUTdizp46Yz6t4ck7V8bYUBdjTpbWwxoTpK6HHW6aSnqrDBoJ/U5FXBSO0EDpZyISW52Gk1s6VnC4eXyZJkT71dOQjOybBGnBpzZTbncthbff2zM+dWPjP3x4ubTLsKNYiZgb1vy8D3y7YHHijkR5R73g4cbvnr57L9HHuZkPv0hL3c4RZr+bXfdXLF996kvy6Cr91Y6zljtfIZvQcxGR34LwPncJgZSv6OGzxcF+B0wod5H/d6cy6lDzemgF1OUQOijW08w61h2JhRZCIX0emqCUGS9w82e/6SdTH1n6rzXDoWvwfWiI4DS4+xf/cQbUtg+UHSxZ4TbCGSyufXnTvpSvQS0yMweTW1kim9lyZwbz/HSLX9XYVufr0zYwytFFNArCQ7n7gqDSX23BSJ8olnH8mxCkYFQiGCIEjU25/xfWgn32ze8tHRj+BpcLxoC9trnv3n1haOGrSmaGDOiHRJYs37b5Dl3fnO1HEArokNK8d3x+oemjPezmX+ocKxPSctPdaUIApzNvREGk9p8gcAbll2awiYITjBmit9qsmh/hXg9EqIcCcvT7V1JMVdkbKeqJsf7fNrL3bVsZv0isTAev3n+6mfkejRvu0Q+FgdZI4bU3hGLmDASvSZwyQXv+6xc5A2ZIRCcioCAVNzWwlsmfaLSUfdUqNy0ZDJhV4oowC+sh8aQChlvQKOlCHWx7qqKZV7aTD2eF9zhZoc+iA7PaN0BpQlPYYsC62I8iP0a+Cmycixm+CnQ/CQvYexI+/6PLTf1KJufwhRjuW7NmTMn+ZP/cdt2KVwjYxlDRqpbBDzPPzDlr75z6ZYtW07JiRSJbtHr34PRjKTSzV8Wf8JdYi1cqJuRWh3N2tkM/4LIgCyCH+1n8TGcLfb5FkSPBcLcqCtC4bcKhXFo4w1tvKknPopmEY3n0p7/yC0LVy8x1+QyVgTs9S9/58PvGz7432IVK0amVwQ2bdv3iSmf+DryNCvz6b/2enVlnlwIAgumT5wqovBleQftL8XHUIF30YL3Ftr9C3A3F0oYTJzzBaLLTUzmAvlLY7IYoYBJgxlNTyh1SACsCXx4whErwpFQjPmBXlOZnFfR7Hhzmz1v7rIZk95qVrkf16q6H02YP78h/z7cHhACyEq7rrb60wNyd960zwiMGjHk38vFX5QZAsEpBgTWzJgx+Lg69vmUZd8pgnAVuqZi1m86y5MIS8H0SNIPJtqTZMLfYE1v6j+mXm4P6dlarwXC3DYcIYiFiTREAn1utVjIOoRCdsvwkr5uO0v5MpwHmp8c78pmz34w7Z34n6/NqH8h53lP3rxwzTxzfS4HjIAjA75NH7C788Z9QqCqMnWTXBgj8aZlZjNTn1Du2kUXT58wR/wHn/edE7cOs90qiAKGwDDvK2hRkBoVehD2L+DqYWEI18Fdu/PZj+p1E1NntzBWhTkGIqFnEQQsYVmEm5/QTVZ3lfWDJqiWnL+jxfN/lUsmfnDLvGVbzXW47DcC9qJfPHDNFZeeix4vnEqMwMJl79zwqfsfWiXJYjNTP+ft/BkTL0r41j0p2/pUyrFGowlJLAfdEyncG6kvmpE6S2rBm5g6u5lRNCMUbVaFsSgkwDQ/ofeTawdObVgVVY6P0WRHi0D8Q0su93fSA+r1lpx6asyFVT/jC3idUS/oPuu899VNK+gVebHYEBg3ZiTydq3MbGbqh1zRL7TtavxMylafk2b2G1KOY4tAaN9ClLWA+hIvuGHC32BNb+o/pn5tDyn8WsGamDqLmknIGUIhJ5nmJ1gS2hsvwND8lBDl0L4KEY5cwrHFmT1VushOPbSv6UFpgnopI+9WTBs+5vfW00/TPO4Mfs/36fJZWeHe1PNL8Mw4E6gbXHWDxO8hmdHMJE8ap0IT8OfOdRYd3v4xcTj/ldRds4cknUGmCSkYwqjdtxBlLSA+AyEMhkO/CIS5mREKbEMsTMKxDDu14aMI+yowpAfEotKz0QQ1qCXhzZXmp7krj+18b8nMic9ncvbPpy9Y8Ypcn4XcwC7A8tprr3VTSXdKAS7FS8SQQHVl6rrzzz8/uXv37qYYRq9ooyR1m7yzcN1M1/E+LXXUR4akEsOkGem0JqQ2h7PUgmHfAhKN+tDUjQZCuO40Yf2x7FMfRFcSYKwKc6yp4bHEPr2UdYz9hHU9/pOs63crpLusNEHp4T3SOX9P2vf+zfOtp25esGq5uR6XPSZgv/7LB+rHjzuXLHuMMP4nLl72zrS59z+0VGJKP0Qvs2vxLfXX25Z/R9KyP5p0rPMw7AWakDByargJCZU/mo6MEKDyN4JgliYq/S0MqHPDYzH1qwVhEh1ehgEgcgYQlrAqMEEY4L3Xy1ATlI8MkHNyMsvQHueJWHxJ3q/4kvgr/iwDCM7zLP830+avWSyncuo+AWvw4OrLu38azygmAueOHHqZxHeFzPRDdDPjpL6S0VMn3mT71idEEG51LXusdjZLHYWhL4ImpKDyR08k/JOFruPiJAqdJXvABSIcOSMWEApM+WKhBUICsTuqCapCwmvE2y3O7Yvk5bv7xG9x3/JZ9fszvv+y2B+/nTrlIy9aDzzAByEMPXod6O1UyhkfvZuhpUKgpjp5qaQF9QD9EF3IVPgUlhzb9mGp7D++Yvak2bVOYiS6pKIJHC+yQRSkNantnQUtC3pb6rPWH7x4uDDnT2Z/fvhAbsdKIAyIMKiwWAAqRAL7g3U0O4kqt75bgaE9ZBgBnVk5OTAnYiGWxUgRizsxr14279jrMyYuyPjqd+OrRv723OeeazT35PIMArbruuPOCGVASRGoqEhdIgniR4Q6ydVdc+dWbjmy/eMJZd228tiOGbWOWxcIQrulYETBFqGAfwFagDpKz631FW6B7fAUruvC4XFZj6VAhOGEAXbWBAWpQMb4rWKB7TbntogFfBayXdfie7eLWNy+u+XgEyIWy7LK/4PvuM9Oe3n5lvB9y3wd5dh2Ew4qD04lTKAi5V4kyYNAcAoReHXmpHG+n7tNRGHWvoadk+VTnVUQBbyrgOYi+BRkcYaloAVBrmN+xOKSxSYKIQzatAxvx3q9O2IRtiwgFug2K69XiM/C1j6LrONXSdPTDGmOmiEO7m9LU9TmtK8W+pb/wk1jrn7J+sEPMrGG0feRc2TEyLF9fxveYSAJiECMkfuXvQXh3323++r2dR+yfOvDSUtNd5U1LplwdbMRRkvVL6/JEk1IqPCNT0E29TbCSkUUJClt04D3YmqLSS9WTDOUuQSaoTBhafbBMw/fBcQC4bAu9GizsoEeUhhAEF/GE+tCZXzvlCyXioC84rnus2X4Frfzw3/+0iUfnXH1BkHFqcQJPPrUK1c/8NDT70gy4Ycom2nBnMkX2+nMbfKOwiyxDqaIk7kaVoJsa2FATyPTdBQIAsQgaD5CpxlMpSYKqC9j1YspwNy7v8ayMGIANceEpekJpcPkTyASYhpKITBicZrfQg4Q8aiW4chnif9iVjrnfUesi61pTy2V4xbJr4oXp/xh2UF9gxL+M2J49dASTh6TFiIw8pzaYbKJOk8/MqFdJbW6dNbkEels5lZ59qe5lrohmfMuEitZ9zhKQgykTgg7mVFHAAj+ymqwDpNBh+mFDgvW2v+a+qg9pHjXYu+D6A7a/IyBYATZ2V7ycQwsCGS4EYuw30IMCOXJkB/oPuuJ5Q3rQoTiYrEoLhaL4nNZL+ctnzlpg/gylorSzq9Vg18uwdFnZXzhZG132PPY4iVQW1s5CI9E8aYgOubB6KgNsyVhM8R3IBZC7v3VqYSNJqPAUrClHoBTWZqMsNRzIAiyGgiC7DP1SrguCd/R7A+Hlcp6SQlEfqaEMy5fLHCssS4gGIE1EZiU8rKdHu4D4ca6qJQNvG8hsy0O78ukOeoyEYwvZnIns61DlS/1PXvRYLt2YSkIhuskKBAoJGUwVbj6x0DRC8S6226uO3K8cZple9MqlDPFt09eOdRJJCAIaDZqe1mtVQjM0D6o+I2VgOzW23JMR4Kgj4GClMFU0gIRzr98scA+k8VYhsWiI+sCggHfBf7B0kDPKC/hJ2R5TdpzrhHRuD/rn8yJhbExo7zVWd9eZjn2wiLsIWVVJN0aMOJU+gRSrgsLwjwORZPgRbOvv8TPedPlE8eTXWVPzDY1jx+adBzXTmgLIehp1N7jCFV+vi8BidZza4VvIJhlGEa4DgmHl/J62QhEOBPzMzrfuoAQmGOwDkFAMcJfJ9SN1pUANEHB2W0sDNl2jIUhyztlUEG1Ylb9PhGPtTKO1Ao7YS2aOnjMyrgPMphwHVQanMqAQEWF/jEQVSfGJvX6BbWG7ZNyOf/mlOVMcmx/YsL3R7kuhrFw2iyEwLHc3gW1o2YjJAzPeDjR4XWzPzYABigiZSkQ+ayNGCA8LBbYRqEJWxcIaxMM2Qkvh2iEDtP+C9kwFgZ6A0BARBhGSXPUR8SXIbOvVjfsPLV0Zv07GU+96VnWasvOLbv55dV/knhAg+IwWdLERAsiDjnRD3FIJnRe59eP/XDn6FvIM2gtmTn5Cs/PTZZITZDhsa+SZ+byGsupcqUPKoaxMF1PjQ8hcCJ37EfAncxzbhJqluFYmGPCYeW8ToHIy/38AhIWDFOgogQDQoEucWHBQG0PHwac3lo8Wp3eIhrVIhQTxcLA/IWMZ6lVs687vmxW/XoJ/6OMBbIm6VtLb1ywalNe9Ppr08p5OQ6j3l+0B/g+Wc9DXpvi3e+xee2W+kvTlj9FPm83Ud43uGr1h667otqxal3b0X4D4z8IrIHAqQxByPchoJXIJAJL8yyHw/ITZ47JD+d2QIACcZaSEC5AEAtM+QUuSjBwFI4O95DS2/IHVkVKPoiEyxkrQ3wbtSIWk1tn+V63r1bOnnRErI93JOwdWb6dSFhvXHhu9Rv98MEkq6Uly2FIdG6X/p+m5nS/DPeND+bs3HvqGhGkaxPKvkJ8BJeJIFzm+NbQWvl1BZ+BmeEriLIOjAigcah9Pcgj86zmP5/5OWiOyw/n9pkEKBBnMukwJL9gnU0wcCGIAhQFYoB16SAl60ERDhqjgn3aypAj2pqp5OeUiMZQEYcbWmf9OdbDe5uz8l7GNhGMjWJp/Eku9kfbdtbe9MrKzbhVoaamdPpUoa7F68SbQHM6fbLQMYQDWWUzE6QW/6BUMpeLEIyXsjtWmomkW1GiTQggCMZxbPwF2jKQ8HYBCJ6X9u0zrQPEPzjqzJTkP7dnHsGQjghQIDoi04XwqIIXbpLCJVBoIQzm2HbB0KGniQYEAxP+ausCTVOyFbY0xPpISFfbcVlfyex/BF1vs2JtrJo96biIxlZZ3SL+ji1yww0JL7f+xkuufbsHw4b4TS2FrzR04vgndgRONjb36McAhqd4bcvaD2Rt5woppO/H8BQysOnFIgYX275fm0i6+v2CwCoIv2sQNBOhwu+KGACYeX7CIhBeN1DNcWaby94RoED0jt8ZZ+cX0CjBwEmmWUqv44+UdggBJi0Qejt4BE6zNOQg/At8GkFzlQqsjdqc8q8W0bhaRCIYb0q+wLdm+1vZFbMm7RZh+TOEQ87bZEmTlVuRfGfyC0t3Snxb7xrcu/Wv39iYPXFaCDdKlsCJk/rHQFQ5kDIpzrCZN16Q9ZovlzJ7mbT8XCoO4kvk1/5Fq3e8dUGVK90ZJNC8gawtAinMsAowna2ZCMeELYNgOzg3+IsQ/XgEK3l/85+3vN3c7CUBCkQvAZ7t9PwCnN8shfPNgxAtGnhuW/0Z+sD2XlPmidYWhlgbYeHAfbC/1eIYI6Ihsz9dWxzi+PCynlo9+/oW+bjSHjlyV9a3dohwbJfjth3NNG87vv+wvDjFz0Egf0p9ajx01H500vsnvb+y6lzXccZKORzjWv6FUnYvkDJyfgU+jOa4MmBdYAUYMTBvH6NYopzjTTvoAvwDEAZU/Jj0foSett26rzWwdVfb8cHeM//mP09nHsGQQhKgQBSSZheuFVXAuyUaco+g6g9EA7eM8mvocFEIOMSDf4GFYpzi2C/7UiIYF4koyIzmrOD4SqdS1a6WDlQf4+eowanUp0vf3fWrITWDVK3ryC9/GX5CEpwvAmBgrAHU6abSjxICHGuO0ev4I5Mp+xSDgEcx/KVAxCCXzIMTjkpXRQPnaEtCnrrgnNOFA48yLIxAVIJjsY0pSjwQXu1IRZFOq8zJJuXWVCKIU4kSQB7X5Tw1rCIpX2N0dCUOgTAVvLEGkHwTptfzLIIgDH+jhUCH673Rf6KegegjGdqfBCgQ/Um7G/fq6IGBCIR/geGSZjvcRIXwVh3QBxhRaBMTHBAhHgjFxwFaEgmVPtRAgQCQEp6aJI+rpFdRlfwowPeUUe5MecIaRAFTe1jrttkR2hfsaT/WbIeXHZXr8DFcjw8BCkR88qJLMYl6wKKsDVzMPNQQhfB5bcLRetBp4oEwqSgqxMGdOdyg1NiRCOFUogTSh46Jg0FGN5X3EPCGMiZTbsJlJhyuDwodZ7bzl/nn5+/ndvwJUCDin0dnjWFnD2JnFgcunC8eJiwhlUXz4eNnvTcPKG4CWbEgUvKDAOIAv0P+dGbI6Ud0VvZOP5JbxUiAAlGMudaNOHf2AEeJBy6NJib5oIpqek8sCE4lTSArVmKNCAMqgo7EoLMyVNJwmLji+iY186uwBDp68NHQAAtCHTxW2BvyarEj4B04GvRckvzuqDzELtKMUL8RCBod++12vFGxENB93BsaVeZYwUdhKBYEJR/P9FHJ24ZTuvtqySeWCewRAQpEj7CV9kn4JRlYEZZq3LK3tBNbxqk7sWWPNCXiewrtPZfKGAeTHkGAAhEBhUFBrydUHOmt+4ijRAlA/FOto6h25H8o0aQzWV0kQIHoIqhyOwwVBsbhz+3YX25JL5v0pv+8X/deah02qWzSzYR2nQAFouusyupICAQsCPdks2qRrpCcSosAXpBzTsmb8mhORBOTzJxIIJ8ABSKfCLfbCMBRnZQ+8qc27GoL40ppEDj+7g55QS54/4HSUBp52hepoED0BdUSuKZ2VItA4Bdm87otJZAiJiFM4MTazXpoDTqow1S4nk+AApFPhNttBAI/hIzuKcMxNO070hbOleIm0Lj3PaXk/Yekfnu6uNPC2PctAQpE3/It6qsHAmGpSmlmOr6uoF80LWouxR75I2I9VMrIrUnxTtP/UOy52bfxp0D0Ld+ivjqameCHQFt15q1tGB+8qNPDyAsBycPGN7fq0VthQdD/wFLRGQEKRGd0uE9XIKhIkqea1YnNe0ikyAk0bNqtEpKXGKBPXoHgRAKdEqBAdIqHO9uamaRJomHpegIpcgKHXntbVUlewipk81KRZ2Y/RJ8C0Q+Qi/kWpjcTKhQlb1U37j5UzMkp67if2nVQZWV4jSo9vDeH1yjrwtDFxFMgugiqnA9DIYFDs1p+eb634I/ljKKo075v/jrJw4Q0L8knZcW3xJfjijo7+yXyFIh+wVz8N8EHZdCbydu4SzXtZ5fXYsvRRummnH53p/7uNL4gxwe/2HJwYOLLcjIw3IvqrrqZSWIMxyY+bP/ewnVFFX9GVqn9C97QFiBE3nxalFxI4GwEKBBnI8T9bQTwVjUcnNl3dqrGPfKyFaeiIHBK8qpp/XY1yHX029N46Nm8VBRZN+CRpEAMeBYURwSMs7pCfoEOkuam/b97vTgizliqnc8sUTWSZ1Xie8DQGpxIoKsEKBBdJcXj9DsRxopw5Ffp4ZUbSCXmBA6sfFf5uw+3WQ90Tsc8w2IWPQpEzDIkztExVgTasWvdhDr60mqVbWyJc5TLOm7ImwMvrtJ5hd5L9D2UdXHoUeIpED3CVr4nBS/O2drhWZ3Jqn0vrihfGDFP+a7nl6vKlowIhKN7oOFhp+8h5pkWs+hRIGKWIXGPjrYiJJLaFyFWRHrtFnWcQ3DELtsaNu1RJ1Zv0tYDOhboYb3pf4hdPsU9QhSIuOdQDOMHkUCFUy1OTzQ17fvlIpU+0RTDmJZnlJAX236+QOfNIMkfvAVP13R5loXeppoC0VuCZXo+Khy8XT1Ifp1WNWfUjp8vVMrnaK8DXhwkD7Y8NV9VNqXVYBEHDKtBx/SA50rRRoACUbRZN7ARhxWBiqdSrIg6qYjs7fvV3lfeGNhI8e5q1x/Wqty2faoumdA9l+CYpvXAgtFTAhSInpLjedrh6baO0TREKqSGRevU8S17SWaACDQI+0PyxnRd0tXNS3rEVokLHdMDlCElcFsKRAlk4kAmAb9OMQTHIOlGOUTm3T+br5oOHhvIKJXlvcH8zz99RdXBohOxNi/FURzKsjgULNEUiIKhLM8LoQJCIUKvJrR510jX163/+oJKHz9VnkAGINVgvfGJ51WVdGkdItYDxsuCZUdxGIDMKLFbUiBKLEMHIjmoiNCrCb9aUUFVn2xWm594QWXFUcqpbwlkm1rUu48/r5LScwnNfBhviZ8S7Vvm5XR1CkQ55XYfphUigV+t6NU0LOWqiiMn1JYfzlOeWBSc+oYA2G74vy8q53CDGirM4XuoEKc0HmpaD33DvNyuSoEotxzvw/QGXV/FHyFNTcOksnLk63NbnnyZItEHzLU4/EjY7jykhgpr9CTDECjs0toHsMv4khSIMs78Qicdv1pPEwn5Vav+vE9t+P5z0tzEMZsKxRss1z/2nMrI50MhDmjW49vShaLL64QJUCDCNLjeawIQCRQqOK3xljUsicTe99S733tWtRyj47q3gMFw/cO/lRFaD2m2aFrCp2Axyi6blXpLl+fnE6BA5BPhdq8JGJHAS3SDxXE6XPskTqoNj/xONR042uvrl+sFGoXdnx5+VnwOJzRTiAN6LHGcpXItEX2fbgpE3zMuyzucJhKuKxVaUtWcalYbH/29OrphV1ky6U2ij27Yqf70vd+p5MlGzRJNS0YcbLEeOJFAXxBI9MVFeU0SAAEtEjI2EJqbpCOskk5Oypa++tuk583xaR9Uo+fUSwArt05Li+er7fNWqgML1ukmu6EitOithDGWaDl0So47C0CAAlEAiLxExwSMSOBta8uCSMgYTiIKRxe/qU7KmEHj7pihkoNrOr5AGe9JN5xUG+Xt6JbtB7QjGlYD/DocgK+MC0U/J51NTP0MvBxvZ5qbMDZQrQzHgeamETLbuw6p9f/yG3Xk3R3liKXTNIPJm//7aZXbcVC/VwJeureSCC27snaKjjsLSIAWRAFh8lIdE4BIoDHJlZ8kg6zAsYrhwo+m0eQ0Tx2+6mI1+mOTVWpwdccXKYM9LQ2n1LbfL1UNf9wqPoaEqqtI6iFM0FMJb0jjFx1YciKB/iBAgegPyrxHGwE0MaF6Q4WHNnS8fZ2UX8UNb29Tb4sjdtTsCeq8G68sP9+E+Bp2v/aW2j1vtXLlDWn98ltrkxJegNP+BuFGcWgrSlzpBwIUiH6AzFucTkA3ObU6rx3LFZGw9RARx6ViPPDcCnV41UY1du5UVTtm5OknluhWg/hitj79msruf0+PiltbkRKrwRERxdfggu9uUBhKNPNjniwKRMwzqFSjhwoPlkRS2kwcaXJC8wnem6gQkTghYwttlC6d1eMvUOfPvEbVjh1VkhggDPjAzwnp9gsrAb4ZOKHRfRUsEiIObFIqyawvmkRRIIomq0ozohAKR5JW6bQ3N1VlRSwyOXVi8x61QZqdKi8apS6YNUHVXXp+SUA4umm32vnyGtUow5CgdxcGN8T3NDASq3krmo7oksjqok8EBaLos7D4E2CsCRm5STnaGRt8yhS/pE+IRXFSevJsxpDWF5yjRk29Ug2/cqyy5Zd2MU0YXO/QW9vU3iVvqmYZYM8IAwRBf9dblujlpYVBEsYmpWLK3dKNq/X2nOv9c6SnRIWYtDRnSzejiyVlvvgmfImsJ8u0OG6bPU81ZsWayGbVKVk25TyVk1/aQ6+8WI2oH6/qLjkv1kk7JlbQgdUb1ZE3typbRAIigIH1IH6mKQliAWHg8xfrrCyLyOH58ySlzbmcOtScltdbOZFAjAgYawL+iQppdkJXWLTP45c2hOKkFomcOvXGZrVpzUZlyUt2w68dp4ZeNlrVjh6hLPmhM5CTLw/W8e0H9bsdh9ZuVrljJ4PvZEgaKsXHgHRUw9ci2xSGgcwp3rsrBGhBdIUSjxkwAmGLItNqVbRIJdwolkSTiAWWLWJlZGT2pR2/euxI8VWcp+rGnacGnT+i77vLipVzYvdBdVQshWOb9sjb4fuVJZYCHMyB4z1wvlcnRBBsaUbSokeLYcAKFG/cKQFaEJ3i4c64EQhbFGiGQa8nbVFIxZx2PTGFRShEMLCEUKTF8XtAvpOwR/b7MpJsxfuGqMoRdXquGjFEVWH9nDrxYXTP0vDEad506JhqPIj5qGqSpZ4xOq287If3FBLSfFQLYcDotbAYjKUg4bCEcIx5D4Q+hriVNMYnigCbmKKoMCx2BEyFimodbfUJ+SWOdwTwHeyML7MIAqyIFllCLNJYl2Vm3xHVKN+jOAHfhsw5cXDkZGlLJe7oWcaHkqYfR89wkyuVlQEFvZa0nnMtWZXT25lgsEHpnKv9BdIGhmUgCEltLcC/AGHAy394tyMsCogzJpOOYIt/SSDeBCgQ8c4fxi6CgLEq9MB/UtlLVa9EI3TFj8o/C7HQSwiFbMs6BCQrooF1zDjOb0oHs2rU4pEJ3QsVurZYZCn1vbLkrebASggsAYgAtiEEaE7CB3v0uixFu7QQwI+iZwnjRALFSIACUYy5xji3ETBigQBU6qioPVkJ2lId3RvKWA3oGYV1LMVjIUs5rnWJMEz4ayp1XM80CUEksK5FqVUEICDamsA5sq7Pk3VMtBQCDvxb3AQoEMWdf4x9iICplLV3QSpsiITU1LrSD6r/QDhwCrb1LH8gEmYd++QUPQUVvlT8smIqf3MPsx0cjy1OJFB6BCgQpZenTFErgXBl3gbF1P5tAe0rWlDyzm3fyzUSKD8CFIjyy3OmuAMCRlA62M1gEig7Amhm5UQCJEACJEACZxCgQJyBhAEkQAIkQAIgQIFgOSABEiABEogkQIGIxMJAEiABEiABCgTLAAmQAAmQQCQBCkQkFgaSAAmQAAlQIFgGSIAESIAEIglQICKxMJAESIAESIACwTJAAiRAAiQQSYACEYmFgSRAAiRAAhQIlgESIAESIIFIAhSISCwMJAESIAESoECwDJAACZAACUQSoEBEYmEgCZAACZAABYJlgARIgARIIJIABSISCwNJgARIgAQoECwDJEACJEACkQQoEJFYGEgCJEACJECBYBkgARIgARKIJECBiMTCQBIgARIgAQoEywAJkAAJkEAkAQpEJBYGkgAJkAAJUCBYBkiABEiABCIJUCAisTCQBEiABEiAAsEyQAIkQAIkEEmAAhGJhYEkQAIkQAIUCJYBEiABEiCBSAIUiEgsDCQBEiABEqBAsAyQAAmQAAlEEqBARGJhIAmQAAmQAAWCZYAESIAESCCSAAUiEgsDSYAESIAEKBAsAyRAAiRAApEEKBCRWBhIAiRAAiRAgWAZIAESIAESiCRAgYjEwkASIAESIAEKBMsACZAACZBAJAEKRCQWBpIACZAACVAgWAZIgARIgAQiCVAgIrEwkARIgARIgALBMkACJEACJBBJgAIRiYWBJEACJEACFAiWARIgARIggUgCFIhILAwkARIgARKgQLAMkAAJkAAJRBKgQERiYSAJkAAJkAAFgmWABEiABEggkgAFIhILA0mABEiABCgQLAMkQAIkQAKRBCgQkVgYSAIkQAIkQIFgGSABEiABEogkQIGIxMJAEiABEiABCgTLAAmQAAmQQCQBCkQkFgaSAAmQAAlQIFgGSIAESIAEIglQICKxMJAESIAESIACwTJAAiRAAiQQScD2I4MZSAIkQAIkUM4EoA22pawWrPg+paKcCwPTTgIkQAIgAC2AGkAb7IzyD3gUB5YMEiABEiCBVgLQBGiDnfP8jRkvUAzsoyXBMkICJEAC5UfA1P2wHqAJ8n+DnfbV82lZy3meBLCZqfyKBVNMAiRAAgEBaAC0AJrQ4vkv2COcIT9uynmH0rLDyINREkIjARIgARIofQKmzocGQAugCdAGe9y8eccbs963TmZzKgORkBmTWeoN/iEBEiABEihJAqauxxIaAC2AJkAbLJPi1bOve2ZoMvHxWjehXEv817LDwlJmTiRAAiRAAqVHAKKgZ0kaxOF4JquOpLO/nfjyituR2rYX5YaPqvgMdhxLZ1WztEHl5GC0R3nwTcjMiQRIgARIoDQImHpd+xyknkedj7ofGgAtMKk8wzxY86Hr/lOl7XytMmEPT8lbEgmxIJxWi8KcxCUJkAAJkEDxEoAjAUZAVmZxRqumrHe4yct9c8JLKx4Mp+oMgcDOzXPm1B71j95VYdsfdpT1F65tjRBDJBV5cPhqXCcBEiABEog1AYgDXoKTrqwHc8p/V6yHF4ZYQ34Mn0N+xP8/HdwosmD+e7UAAAAASUVORK5CYII=) no-repeat center bottom;background-size:100% auto}.red_package_cover_wrp .red_package_cover_img.synthetic_cover_img{width:62.33%}.red_package_cover_wrp .red_package_cover_img.synthetic_cover_img:after{content:\" \";display:block;position:absolute;bottom:9.3%;left:8px;right:8px;height:100%;background:url(data:image/png;base64,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CCCAAAIIIIDA0ggQAF6at5IbQQABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBVRcgALzqvwHcPwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIILI0AAeCleSu5EQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQWHUBAsCr/hvA/SOAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAwNIIEABemreSG0EAAQQQQAABBBBAAAEE/v/27t9FrvMKA/D97khCO2vFkXCZIjiFAiZJEdQkIYWjiNiFUwQhgwmGOJX/gATyBxh3cZVSjjHG2iwprEBkZEUBg13YlRJcLLhw4VIi2CuthezdL/dbsWK0Wml/arV7zrPNzM7cmbnvc073cmcIECBAgAABAgQIECBAgAABAtkFFMDZN0B+AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTCCCiAw4xSEAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEsgsogLNvgPwECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECIQRUACHGaUgBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhkF1AAZ98A+QkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQCCOgAA4zSkEIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEMguoADOvgHyEyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAQRkABHGaUghAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgkF1AAZx9A+QnQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCCMgAI4zCgFIUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgu4ACOPsGyE+AAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQBgBBXCYUQpCgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEB2AQVw9g2QnwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBMAIK4DCjFIQAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgewCCuDsGyA/AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJhBBTAYUYpCAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC2QUUwNk3QH4CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBMIIKIDDjFIQAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSyCyiAs2+A/AQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIhBFQAIcZpSAECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECGQXUABn3wD5CRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAII6AADjNKQQgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQyC6gAM6+AfITIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIBBGQAEcZpSCECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCQXUABnH0D5CdAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAIIyAAjjMKAUhQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCC7gAI4+wbIT4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAGAEFcJhRCkKAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQHYBBXD2DZCfAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIEwAgrgMKMUhAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB7AIK4OwbID8BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAmEEFMBhRikIAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLZBRTA2TdAfgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEwggogMOMUhACBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBLILKICzb4D8BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAiEEVAAhxmlIAQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIZBdQAGffAPkJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEAgjoAAOM0pBCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDILqAAzr4B8hMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgEEZAARxmlIIQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIJBdQAGcfQPkJ0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgjIACOMwoBSFAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAILuAAjj7BshPgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAYAQVwmFEKQoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAdgEFcPYNkJ8AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgTACCuAwoxSEAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHsAgrg7BsgPwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECYQQUwGFGKQgBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAtkFFMDZN0B+AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTCCCiAw4xSEAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEsgsogLNvgPwECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECIQRUACHGaUgBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhkF1AAZ98A+QkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQCCOgAA4zSkEIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEMguoADOvgHyEyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAQRkABHGaUghAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgkF1AAZx9A+QnQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCCMgAI4zCgFIUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgu4ACOPsGyE+AAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQBgBBXCYUQpCgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEB2AQVw9g2QnwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBMAIK4DCjFIQAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgewCCuDsGyA/AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJhBBTAYUYpCAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC2QUUwNk3QH4CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBMIIKIDDjFIQAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSyCyiAs2+A/AQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIhBFQAIcZpSAECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECGQXUABn3wD5CRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAII6AADjNKQQgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQyC6gAM6+AfITIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIBBGQAEcZpSCECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCQXUABnH0D5CdAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAIIyAAjjMKAUhQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCC7gAI4+wbIT4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAGAEFcJhRCkKAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQHYBBXD2DZCfAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIEwAgrgMKMUhAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB7AIK4OwbID8BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAmEEFMBhRikIAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLZBRTA2TdAfgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEwggogMOMUhACBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBLILKICzb4D8BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAiEEVAAhxmlIAQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIZBdQAGffAPkJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEAgjoAAOM0pBCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDILqAAzr4B8hMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgEEZAARxmlIIQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIJBdQAGcfQPkJ0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgjIACOMwoBSFAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAILuAAjj7BshPgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAYAQVwmFEKQoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAdgEFcPYNkJ8AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgTACCuAwoxSEAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHsAgrg7BsgPwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECYQQUwGFGKQgBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAtkFFMDZN0B+AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTCCCiAw4xSEAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEsgsogLNvgPwECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECIQRUACHGaUgBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhkF1AAZ98A+QkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQCCOgAA4zSkEIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEMguoADOvgHyEyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAQRkABHGaUghAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgkF1AAZx9A+QnQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCCMgAI4zCgFIUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgu4ACOPsGyE+AAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQBgBBXCYUQpCgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEB2AQVw9g2QnwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBMAIK4DCjFIQAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgewCCuDsGyA/AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJhBBTAYUYpCAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC2QUUwNk3QH4CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBMIIKIDDjFIQAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSyCyiAs2+A/AQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIhBFQAIcZpSAECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECGQXUABn3wD5CRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAII6AADjNKQQgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQyCLmaNcAAA67SURBVC6gAM6+AfITIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIBBGQAEcZpSCECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCQXUABnH0D5CdAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAIIyAAjjMKAUhQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCC7gAI4+wbIT4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAGAEFcJhRCkKAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQHYBBXD2DZCfAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIEwAgrgMKMUhAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB7AIK4OwbID8BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAmEEFMBhRikIAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLZBRTA2TdAfgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEwggogMOMUhACBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBLILKICzb4D8BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAiEEVAAhxmlIAQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIZBdQAGffAPkJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEAgjoAAOM0pBCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDILqAAzr4B8hMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgEEZAARxmlIIQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIJBdQAGcfQPkJ0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgjIACOMwoBSFAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAILuAAjj7BshPgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAYAQVwmFEKQoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAdgEFcPYNkJ8AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgTACCuAwoxSEAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHsAgrg7BsgPwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECYQT6UsqtMGkEIUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQFKB1v32tXbzSfOLTYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgTACrfsdrgCuCuAwIxWEAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGsAq377WtXFMBZN0BuAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTCCLTuty/VFcBhJioIAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJpBVr3264A/jytgOAECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAIItC63750ZS5IHjEIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCQVqB1v33fLSmA066A4AQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIRBFo3W+/dKBXAEeZqBwECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECKQVaN1vPx5PzZWuq2kVBCdAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMA+F2idb+t++3L2/HxXypV9nsfpEyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAIK/A0Pm27rdvArV2/84rITkBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgT2t8BK57tcAJdRvby/4zh7AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI5BVY6XyXC+DxgUPvl1IW83JIToAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgf0p0Lre1vm2s799BfBbF76sXf1gf8Zx1gQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEMgr0LreMnS+TWC5AG53Su3fbLf+CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGD/CEx2vXcK4HGps6V0N/dPDGdKgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB3AKt421d74rCnQK4zF76otZyfuUJtwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCwtwVax9u63pWzvFMAtwdKX95YecItAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECOxtgdUdb5k83TrUwzdOn/zv8NhTk4+7T4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJ7TuCT6dlLPyil1JUzu/sK4OGJUSmvrDzplgABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgT2pkDrdifL33aWdxXA7YHD3dGZ4aBP231/BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQILD3BFqn27rd1Wd2TwFcZmcXh1741dUH+p8AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE9opA/+rtbvfu87mnAG5Pj7vH/1pKd+XuQ/1HgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAo9aoHW5rdNd6zzWLIBbU1xGo5dL1935seC1XuwxAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIENg9gdbhLne5y9/sfO/nrlkAt8PG5y5+2HXl9Xtf4hECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQeDQC5fXbXe7an37fArgdPj449cehBL629ks9SoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQK7J1Cu3e5w7/+JDyyAy9v/uFpG3Uv3f7lnCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGA3BFp32zrcB33WAwvg9sLpmUvvdH157UFv4jkCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQeJgC5c/L3e06H7FuAdxeP/3tJ/9QSvfROu/laQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDYYYHW1U4fe3L4+d71/8r6h9w+4qvnf/XdxcWvP+5q98RGX+M4AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIENiGQOmujkYHT0yde/ezjbzLhq4Abm/U3rD03bNDu3x9I2/sGAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDYukDrZltHu9Hyt33ShgvgdvD0zL8+rn3/m+GDvm7/+yNAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBnRdonWzrZltHu5l331QB3N74sZn3LpbSvzh8d3TdzAc5lgABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTWF2hdbOtkWze7/tF3H7HpAri9fPy3994uff+CK4HvxvQfAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEtiPQOtjWxbZOdivvM5THW/+7fuaXp8rS0t9r7R7b+rt4JQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgM5e/19rXPW7nyd0VvWwVwe5MbZ35xoi51/xy+EPqJlTd1S4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQKbECjd1dJ3z272N39Xf8KWvgJ68k3aCYxGB08MbfRHk4+7T4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLrC7SutXWu2y1/2ydtuwBubzJ17t3Pxke/97OuL6+1//0RIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwAYEho61da2tc93A0esesu2vgF79CTfOnPz18JXQZ7taj61+zv8ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0ATKtTLqXpqeufTOTnrsyBXAkyfUTnD6wNTx0pWzQ7tcJ59znwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABApkFWofautTpg1Pf3+nyt7nu+BXAk8NaeP7UT+ri4l9q7X40+bj7BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQyCYw/NbvlTIavTw+d/HDh5V9x68AnjzRduLj7tiPSxn9vpTy6eRz7hMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCCDQOtKW2fautOHWf42y4d6BfDksOrp06Ob3f/OLNb6p+Hxpyafc58AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIBBT4ZlfLK4e7oTJmdXdyNfLtWAK+EqbWWhTOnnqlL9cVS6nPD10MfXnnOLQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBPazwPA1zzeHSvR86csb45mLF4arf+tu5tn1AngyXD198vGFWk7XsvTb4YeOfzqUw6PJ590nQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAXhcYSt7F2tUPSu3fHJc6W2YvffGozvmRFsCToesLz3xr4ZtbP6+L5emhBH+6q90Phyp8z5zf5Lm6T4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAXoGhxKxDk/mf4Urfy2VUL48PHHq/vHXhy70gsmcL1vq7544sLHx1vP9m6fhS1x8fGvPjpavfqaUcGW6PDJhHhsunh9t6aC9AOgcCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBPa/wHA1763hZ2znh4tW54eWd77U5dvPh280nuu7pbmlA/3ceDw1V86en9+Laf8P5hVEd79xD5kAAAAASUVORK5CYII=) no-repeat center bottom;background-size:100% auto}.red_package_cover_wrp .red_package_cover_img.red_package_open_cover_img:after{display:none}.red_package_cover_wrp .red_package_cover__foot{text-align:center;padding:8% 16px 0}.red_package_cover_wrp .red_package_cover__access-link{font-size:17px;line-height:1.4;font-weight:500;color:var(--weui-RED)}.red_package_cover_wrp .red_package_cover__access-link.disabled{color:var(--weui-FG-2)}.red_package_cover_wrp .red_package_cover__access-link.disabled:after{display:none}.red_package_cover_wrp .red_package_cover__access-link:after{content:\"\";display:inline-block;font-size:10px;width:1.2em;height:2.4em;margin-left:4px;margin-top:-.3em;vertical-align:middle;background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMTJweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMTIgMjQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT7liIfniYc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZGVmcz4KICAgICAgICA8cGF0aCBkPSJNNy41ODc1MDg3MywxMi40Mjk4OTE2IEw2LjUyNjg0ODU2LDEzLjQ5MDU1MTggTDAuNzQ3OTUxNTI2LDcuNzExNjU0NzMgQzAuMzU3ODI2MjI3LDcuMzIxNTI5NDMgMC4zNTQzNjU3ODYsNi42OTI0NzE3OSAwLjc0Nzk1MTUyNiw2LjI5ODg4NjA1IEw2LjUyNjg0ODU2LDAuNTE5OTg5MDE0IEw3LjU4NzUwODczLDEuNTgwNjQ5MTkgTDIuMTYyODg3NTMsNy4wMDUyNzAzOSBMNy41ODc1MDg3MywxMi40Mjk4OTE2IFoiIGlkPSJwYXRoLTEiPjwvcGF0aD4KICAgIDwvZGVmcz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSIzLkljb25zL091dGxpbmVkL2Fycm93Ij4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyLjAwMDAwMCwgNS4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxtYXNrIGlkPSJtYXNrLTIiIGZpbGw9IndoaXRlIj4KICAgICAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNwYXRoLTEiPjwvdXNlPgogICAgICAgICAgICAgICAgPC9tYXNrPgogICAgICAgICAgICAgICAgPHVzZSBpZD0i5Zu+5qCH6aKc6ImyIiBmaWxsPSIjRkE1MTUxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0LjAyMDc4NCwgNy4wMDUyNzApIHJvdGF0ZSgtMTgwLjAwMDAwMCkgdHJhbnNsYXRlKC00LjAyMDc4NCwgLTcuMDA1MjcwKSAiIHhsaW5rOmhyZWY9IiNwYXRoLTEiPjwvdXNlPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=) no-repeat center;background-size:cover}.red_package_cover_wrp .red_package_cover__purchase{font-size:14px;font-weight:400;color:var(--weui-FG-2);margin-top:4px}.red_package_cover_wrp .red_package_cover__extend{display:flex;align-items:center;position:relative;line-height:1.4;padding:8px 16px;font-size:14px;color:var(--weui-FG-1);text-align:left}.red_package_cover_wrp .red_package_cover__extend:before{content:\" \";position:absolute;top:0;left:16px;right:16px;height:1px;background-color:var(--weui-FG-3);transform:scaleY(.5);transform-origin:0 0;-webkit-transform:scaleY(.5);-webkit-transform-origin:0 0}.red_package_cover_wrp .red_package_cover__extend_icon{display:inline-block;vertical-align:middle;font-size:10px;width:1.6em;height:1.6em;margin-right:4px;background:url(\"data:image/svg+xml,%3Csvg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M13.5 8.75149H12.0311C12.1352 8.54415 12.1938 8.30977 12.1938 8.06133C12.1938 7.21422 11.5121 6.52993 10.6741 6.52993C10.259 6.52993 9.86934 6.69916 9.58508 6.99323C8.72588 7.85576 8.3398 8.24353 8.00001 8.58458L6.3806 6.95894C6.09366 6.68304 5.72113 6.52993 5.32607 6.52993C4.48806 6.52993 3.80619 7.21422 3.80619 8.06133C3.80619 8.30977 3.86495 8.54415 3.96891 8.75149H2.50001V2.96628C2.50001 2.57865 2.76965 2.12287 3.11454 1.95118C3.11454 1.95118 3.14324 1.9352 3.23554 1.89586C4.52227 1.34706 6.18193 1 8.00001 1C9.81582 1 11.4782 1.33491 12.7595 1.89368C12.8369 1.92741 12.8815 1.94927 12.8815 1.94927C13.2231 2.12341 13.5 2.57879 13.5 2.96628V8.75149ZM13.5 9.59145V14.3C13.5 14.6875 13.1943 15 12.812 15H3.18804C2.808 15 2.5 14.6873 2.5 14.3V9.59145H5.2614C5.28287 9.59241 5.30446 9.59282 5.32606 9.59282H6.99551C6.41345 10.1719 5.51816 10.9309 4.31259 11.8659L4.81241 12.534C6.06655 11.5614 6.99726 10.7707 7.60789 10.1579L8 9.76423C8.11617 9.88088 8.2467 10.0119 8.4007 10.1663C9.00932 10.7774 9.93721 11.5654 11.1877 12.5342L11.6873 11.8657C10.4797 10.93 9.5844 10.1711 9.00449 9.59282H10.6741C10.6958 9.59282 10.7173 9.59241 10.7387 9.59145H13.5ZM10.7182 8.75143H9.00887L10.1688 7.58691C10.3036 7.44745 10.4821 7.36987 10.6742 7.36987C11.0592 7.36987 11.3688 7.68088 11.3688 8.06127C11.3688 8.42732 11.0825 8.72876 10.7182 8.75143ZM5.28211 8.75143C4.91777 8.72876 4.63136 8.42718 4.63136 8.06127C4.63136 7.68088 4.94111 7.36987 5.32611 7.36987C5.50895 7.36987 5.67945 7.43994 5.80796 7.56341C6.35675 8.11426 6.71506 8.47417 6.99127 8.75143H5.28211Z' fill='%23FA5151'/%3E%3C/svg%3E%0A\") no-repeat 50% 50%;background-size:cover}.red_package_cover_wrp .red_package_cover_disable_wording{display:block;text-align:center;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:1;width:100%;color:#fff}.red_package_cover_wrp.small{width:100%}.red_package_cover_wrp.small .red_package_cover__inner{width:100%;max-width:382px}.red_package_cover_wrp.small .red_package_cover__inner__main{display:flex;flex-direction:row;align-items:center;justify-content:space-between;width:100%;padding:16px 16px 16px 24px;box-sizing:border-box}.red_package_cover_wrp.small .red_package_cover__body{flex-shrink:1;display:flex;flex-direction:row;align-items:center;min-width:0}.red_package_cover_wrp.small .red_package_cover__body span.title-wrp{flex-shrink:1;display:block;margin-left:16px;min-width:0;text-align:left;line-height:1.4}.red_package_cover_wrp.small .red_package_cover__body span.title{display:block;word-break:break-all;font-size:15px;font-weight:500;text-align:left;color:var(--weui-FG-0)}.red_package_cover_wrp.small .red_package_cover__body span.red_package_cover__purchase{display:block;margin-top:2px;font-size:12px;font-weight:400;color:var(--weui-FG-1)}.red_package_cover_wrp.small .red_package_cover_img{flex-shrink:0;height:44px;width:26.4px;margin:0;padding-bottom:unset;border-radius:1px}.red_package_cover_wrp.small .red_package_cover__foot{flex-shrink:0;padding:0;margin-left:16px}.red_package_cover_wrp.small .red_package_cover__access-link{font-size:14px;font-weight:500}.red_package_cover_wrp.small .red_package_cover__access-link.button{color:#fff;background-color:var(--weui-ORANGERED-100);border-radius:6px}.red_package_cover_wrp.small .red_package_cover__access-link.correct:before{position:relative;display:inline-block;content:\"\";margin-right:2px;font-size:16px;width:1em;height:1em;vertical-align:sub;background-color:currentColor;-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M5.77124 12.29L2 8.51879L2.94281 7.57598L6.24264 10.8758L13.7851 3.33334L14.7279 4.27614L6.71405 12.29C6.4537 12.5504 6.03159 12.5504 5.77124 12.29Z' fill='black' /%3E%3C/svg%3E%0A\");mask-image:url(\"data:image/svg+xml,%3Csvg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M5.77124 12.29L2 8.51879L2.94281 7.57598L6.24264 10.8758L13.7851 3.33334L14.7279 4.27614L6.71405 12.29C6.4537 12.5504 6.03159 12.5504 5.77124 12.29Z' fill='black' /%3E%3C/svg%3E%0A\");-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}.red_package_cover_wrp.small .red_package_cover__access-link:after{display:none}.red_package_cover_wrp.small .red_package_cover__extend{display:none}\n",
    C$4 = {
      errType: "data-errortype",
      name: "data-name",
      isSynthetic: "data-synthetic",
      imgSrc: "data-receiveimg",
      openImgSrc: "data-openimg",
      orderid: "data-orderid",
      coveruri: "data-coveruri",
      bizuin: "data-bizuin",
      status: "data-status",
      is_hover: "data-is-hover",
      is_selected: "data-is-selected",
      isPurchaseOrder: "data-is-purchase-order",
      smallCard: "data-small-card"
    };
  function o$4(E) {
    var A = {};
    return A = o$6.call(this, C$4), Object.keys(C$4).forEach(function (B) {
      A[B] = decodeURIComponent(A[B] || ""), ["smallCard", "isSynthetic", "status", "is_hover", "is_selected", "isPurchaseOrder"].indexOf(B) &gt; -1 &amp;&amp; (A[B] = A[B] * 1);
    }), _objectSpread$8({
      platform: E
    }, A);
  }
  function b$4() {
    var E = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    H$3(Object.assign(E, {
      Component: E.isDev ? E.devComponent : n$5,
      styleText: E.isDev ? E.devStyleText : d$3,
      customName: E.customName || "mp-common-redpacket",
      watchAttr: ["data-errortype", "data-status", "data-receiveimg", "data-synthetic", "data-openimg", "data-is-hover", "data-is-selected"],
      getProps: o$4
    }));
  }

  function ownKeys$7(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r &amp;&amp; (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
  function _objectSpread$7(e) { for (var r = 1; r &lt; arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$7(Object(t), !0).forEach(function (r) { defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$7(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
  var t$1 = {
    mixins: [k$1],
    props: {
      content: {
        type: String,
        "default": ""
      }
    },
    computed: {
      formattedContent: function formattedContent() {
        return decodeURIComponent(this.content || "");
      }
    }
  };
  var T$4 = function T() {
      var i = this,
        u = i._self._c;
      return u("section", {
        staticClass: "wx_blockquote"
      }, [u("span", {
        staticClass: "tips"
      }, [i._v('私密备注:')]), u("span", {
        domProps: {
          innerHTML: i._s(i.formattedContent)
        }
      })]);
    },
    o$3 = [],
    A$1 = v$2(t$1, T$4, o$3, !1, null, null, null, null);
  var b$3 = A$1.exports,
    f = "body,.wx-root{--weui-BG-0: #ededed;--weui-BG-1: #f7f7f7;--weui-BG-2: #fff;--weui-BG-3: #f7f7f7;--weui-BG-4: #4c4c4c;--weui-BG-5: #fff;--weui-FG-0: rgba(0, 0, 0, .9);--weui-FG-HALF: rgba(0, 0, 0, .9);--weui-FG-1: rgba(0, 0, 0, .55);--weui-FG-2: rgba(0, 0, 0, .3);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-FG-5: rgba(0, 0, 0, .05);--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #fa9d3b;--weui-YELLOW: #ffc300;--weui-GREEN: #91d300;--weui-LIGHTGREEN: #95ec69;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1485ee;--weui-PURPLE: #6467f0;--weui-WHITE: #fff;--weui-LINK: #576b95;--weui-TEXTGREEN: #06ae56;--weui-FG: #000;--weui-BG: #fff;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: #fa9d3b;--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: #06ae56;--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: #10aeff;--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05);--weui-REDORANGE: #ff6146}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2c2c2c;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-FG-5: rgba(255, 255, 255, .1);--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-FG: #fff;--weui-BG: #000;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-REDORANGE: #ff6146}}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2c2c2c;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-FG-5: rgba(255, 255, 255, .1);--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-FG: #fff;--weui-BG: #000;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-REDORANGE: #ff6146}.wx-root[data-weui-mode=care],body[data-weui-mode=care]{--weui-BG-0: #ededed;--weui-BG-1: #f7f7f7;--weui-BG-2: #fff;--weui-BG-3: #f7f7f7;--weui-BG-4: #4c4c4c;--weui-BG-5: #fff;--weui-FG-0: #000000;--weui-FG-HALF: #000000;--weui-FG-1: rgba(0, 0, 0, .6);--weui-FG-2: rgba(0, 0, 0, .42);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-FG-5: rgba(0, 0, 0, .05);--weui-RED: #dc3636;--weui-ORANGERED: #d14730;--weui-ORANGE: #e17719;--weui-YELLOW: #bb8e00;--weui-GREEN: #4f8400;--weui-LIGHTGREEN: #2e8800;--weui-BRAND: #018942;--weui-BLUE: #007dbb;--weui-INDIGO: #0075e2;--weui-PURPLE: #6265f1;--weui-WHITE: #fff;--weui-LINK: #576b95;--weui-TEXTGREEN: #06ae56;--weui-FG: #000;--weui-BG: #fff;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: #e17719;--weui-TAG-BACKGROUND-ORANGE: rgba(225, 119, 25, .1);--weui-TAG-TEXT-GREEN: #06ae56;--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: #007dbb;--weui-TAG-BACKGROUND-BLUE: rgba(0, 125, 187, .1);--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05);--weui-REDORANGE: #d14730}@media (prefers-color-scheme: dark){.wx-root[data-weui-mode=care]:not([data-weui-theme=light]),body[data-weui-mode=care]:not([data-weui-theme=light]){--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2c2c2c;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-FG-5: rgba(255, 255, 255, .1);--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-FG: #fff;--weui-BG: #000;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-REDORANGE: #ff6146}}.wx-root[data-weui-mode=care][data-weui-theme=dark],body[data-weui-mode=care][data-weui-theme=dark]{--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2c2c2c;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-FG-5: rgba(255, 255, 255, .1);--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-FG: #fff;--weui-BG: #000;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-REDORANGE: #ff6146}.wx-root,body{--weui-BG-COLOR-ACTIVE: #ececec}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-COLOR-ACTIVE: #373737}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-COLOR-ACTIVE: #373737}}body,.wx-root,page{--weui-BTN-HEIGHT: 48;--weui-BTN-HEIGHT-MEDIUM: 40;--weui-BTN-HEIGHT-SMALL: 32}.wx-root,body{--weui-BTN-ACTIVE-MASK: rgba(0, 0, 0, .1)}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BTN-ACTIVE-MASK: rgba(255, 255, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BTN-ACTIVE-MASK: rgba(255, 255, 255, .1)}}.wx-root,body{--weui-BTN-DEFAULT-ACTIVE-BG: #e6e6e6}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BTN-DEFAULT-ACTIVE-BG: rgba(255, 255, 255, .126)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BTN-DEFAULT-ACTIVE-BG: rgba(255, 255, 255, .126)}}.wx-root,body{--weui-DIALOG-LINE-COLOR: rgba(0, 0, 0, .1)}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-DIALOG-LINE-COLOR: rgba(255, 255, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-DIALOG-LINE-COLOR: rgba(255, 255, 255, .1)}}.wx_blockquote{margin:12px 0;padding:16px;background-color:#00000005;font-size:14px;line-height:1.4;color:var(--weui-FG-1);border-radius:4px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.wx_blockquote span:not(.tips){white-space:pre-line}@media (prefers-color-scheme: dark){.wx_blockquote{background-color:#ffffff05}}.wx_blockquote .tips{position:relative;display:inline-block;margin-right:8px;color:var(--weui-FG-2)}\n",
    w$3 = {
      content: "data-content",
      quoteId: "data-quote-id"
    };
  function R$2(e) {
    var i = {};
    return i = o$6.call(this, w$3), _objectSpread$7({
      platform: e
    }, i);
  }
  function c$3(e) {
    H$3(Object.assign(e, {
      Component: e.isDev ? e.devComponent : b$3,
      styleText: e.isDev ? e.devStyleText : f,
      customName: e.customName || "mp-common-blockquote",
      watchAttr: Object.values(w$3),
      getProps: R$2
    }));
  }

  
  var ua = navigator.userAgent;
  var is_android = /(Android)/i.test(ua);
  var g$4 = {
    x: 0,
    y: 0,
    isPc: /(WindowsNT)|(Windows NT)|(Macintosh)|Linux|UnifiedPCOHOSWechat/i.test(navigator.userAgent) &amp;&amp; !is_android,
    isWp: /Windows\sPhone/i.test(ua),
    tsTime: -1
  };
  var prefixes = ['webkit', 'moz', 'ms', 'o'];
  if (isUseTap()) {
    on(document, "touchstart", function (e) {
      if (e.touches.length === 1) {
        var st = e.touches[0];
        g$4.x = st.clientX;
        g$4.y = st.clientY;
        g$4.tsTime = +new Date();
      } else {
        g$4.tsTime = -1;
      }
    });
  }
  var scrolling;
  function isScrolling() {
    if (scrolling &amp;&amp; new Date().getTime() - scrolling &lt; 200) return true;
    return false;
  }
  window.addEventListener('scroll', function () {
    scrolling = new Date().getTime();
  }, true);
  function isUseTap() {
    if (g$4.isPc || g$4.isWp) {
      return false;
    }
    return true;
  }
  
  function tap(el, cb, flag, className) {
    if (!isUseTap()) {
      on(el, "click", className, cb, flag);
    } else {
      cb.tap_handler = function (e) {
        if (g$4.tsTime == -1 || +new Date() - g$4.tsTime &gt; 200 || isScrolling()) {
          return;
        }
        var st = e.changedTouches[0];
        if (Math.abs(g$4.y - st.clientY) &lt;= 5 &amp;&amp; Math.abs(g$4.x - st.clientX) &lt;= 5) {
          return cb.call(this, e);
          
        }
      };
      on(el, "touchend", className, cb.tap_handler, flag);
    }
  }
  
  function longtap(el, cb, _flag, className, cancelCb) {
    var self = this;
    var timeOutEvent;
    if (g$4.isPc || g$4.isWp) {
      var mousedown = false;
      var x;
      var y;
      var triggerLongClick;
      on(el, 'mousedown', className, function (e) {
        triggerLongClick = false;
        mousedown = true;
        x = e.clientX;
        y = e.clientY;
        timeOutEvent = setTimeout(function () {
          triggerLongClick = true;
          timeOutEvent = undefined;
          cb.call(this, e);
        }, 500);
        e.preventDefault();
      });
      on(el, 'mousemove', className, function (e) {
        if (!mousedown) return;
        if (timeOutEvent &amp;&amp; (Math.abs(y - e.clientY) &gt; 5 || Math.abs(x - e.clientX) &gt; 5)) {
          clearTimeout(timeOutEvent);
          timeOutEvent = undefined;
          typeof cancelCb === 'function' &amp;&amp; cancelCb.call(self, e);
        }
      });
      on(el, 'mouseup', className, function () {
        mousedown = false;
        clearTimeout(timeOutEvent);
      });
      on(el, 'click', className, function () {
        if (triggerLongClick) return false;
      });
    } else {
      on(el, 'touchstart', className, function (e) {
        e.touches.length === 1 &amp;&amp; (timeOutEvent = setTimeout(function () {
          timeOutEvent = undefined;
          cb.call(self, e);
        }, 500));
      });
      on(el, 'touchmove', className, function (e) {
        if (!timeOutEvent) return;
        var st = e.changedTouches[0];
        if (Math.abs(g$4.y - st.clientY) &gt; 5 || Math.abs(g$4.x - st.clientX) &gt; 5) {
          clearTimeout(timeOutEvent);
          timeOutEvent = undefined;
          typeof cancelCb === 'function' &amp;&amp; cancelCb.call(self, e);
        }
      });
      on(el, 'touchend', className, function (e) {
        if (timeOutEvent) {
          clearTimeout(timeOutEvent);
          timeOutEvent = undefined;
        } else {
          e.preventDefault();
        }
      }, true);
    }
  }
  function doubletap(el, cb) {
    var _this = this;
    var __lastTouchVideoTs = 0;
    var realCb = function realCb(e) {
      if (Date.now() - __lastTouchVideoTs &lt; 300) {
        cb.call(_this, e);
      }
      __lastTouchVideoTs = Date.now();
    };
    tap(el, realCb);
    return function () {
      return off(el, 'touchend', realCb);
    };
  }
  function matches(ele, className) {
    if (!ele || !className || ele.nodeType != ele.ELEMENT_NODE) return false;
    var matchesSelector = ele.webkitMatchesSelector || ele.msMatchesSelector || ele.matchesSelector;
    if (matchesSelector) return matchesSelector.call(ele, className);
    className = className.substr(1);
    return ele.className.indexOf(className) &gt; -1;
  }
  function closest(target, className, context) {
    while (target &amp;&amp; !matches(target, className)) {
      target = target !== context &amp;&amp; target.nodeType !== target.DOCUMENT_NODE &amp;&amp; target.parentNode;
    }
    return target;
  }
  function on(el, type, className, cb, flag, extra) {
    var callback;
    var handler;
    var delegator;
    if (!el) return;
    if (typeof className === 'function') {
      extra = flag;
      flag = cb;
      cb = className;
      className = '';
    }
    if (typeof className !== 'string') {
      className = '';
    }
    if (el == window &amp;&amp; type == "load" &amp;&amp; /complete|loaded/.test(document.readyState)) {
      return cb({
        type: "load"
      });
    }
    if (type == 'tap') return tap(el, cb, flag, className);
    if (type === 'longtap') return longtap(el, cb, flag, className, extra);
    if (type == "unload" &amp;&amp; "onpagehide" in window) {
      type = "pagehide";
    }
    callback = function callback(e) {
      var ret = cb(e);
      if (ret === false) {
        e.stopPropagation &amp;&amp; e.stopPropagation();
        e.preventDefault &amp;&amp; e.preventDefault();
      }
      return ret;
    };
    if (className &amp;&amp; className.charAt(0) == '.') delegator = function delegator(e) {
      var target = e.target || e.srcElement;
      var match = closest(target, className, el);
      if (match) {
        e.delegatedTarget = match;
        return callback(e);
      }
    };
    handler = delegator || callback;
    cb["".concat(type, "_handler")] = handler;
    if (el.addEventListener) {
      el.addEventListener(type, handler, !!flag);
      return;
    }
    if (el.attachEvent) {
      el.attachEvent("on".concat(type), handler, !!flag);
      return;
    }
  }
  function off(el, type, cb, flag) {
    if (!el) return;
    var handlerType = type;
    var handler;
    if (handlerType == 'tap') {
      if (isUseTap()) {
        handlerType = 'touchend';
        handler = cb.tap_handler &amp;&amp; cb.tap_handler.touchend_handler ? cb.tap_handler.touchend_handler : cb;
      } else {
        handlerType = 'click';
      }
    }
    if (!handler) {
      handler = cb["".concat(handlerType, "_handler")] || cb;
    }
    if (el.removeEventListener) {
      el.removeEventListener(handlerType, handler, !!flag);
      return;
    }
    if (el.detachEvent) {
      el.detachEvent("on".concat(handlerType), handler, !!flag);
      return;
    }
    if (handlerType == 'tap' &amp;&amp; isUseTap()) {
      if (cb.tap_handler) {
        cb.tap_handler.touchend_handler = null;
      }
      cb.tap_handler = null;
    } else {
      cb["".concat(handlerType, "_handler")] = null;
    }
  }
  function getHiddenProp() {
    if ('hidden' in document) {
      return 'hidden';
    }
    for (var i = 0; i &lt; prefixes.length; i++) {
      if ("".concat(prefixes[i], "Hidden") in document) {
        return "".concat(prefixes[i], "Hidden");
      }
    }
    return null;
  }
  function getVisibilityState() {
    if ('visibilityState' in document) {
      return 'visibilityState';
    }
    for (var i = 0; i &lt; prefixes.length; i++) {
      if ("".concat(prefixes[i], "VisibilityState") in document) {
        return "".concat(prefixes[i], "VisibilityState");
      }
    }
    return null;
  }
  function bindVisibilityChangeEvt(cb) {
    var visProp = getHiddenProp();
    if (visProp) {
      var evtname = "".concat(visProp.replace(/[H|h]idden/, ''), "visibilitychange");
      var handler = function handler() {
        var isShow = document[getVisibilityState()] !== 'hidden';
        typeof cb === 'function' &amp;&amp; cb(isShow);
      };
      document.addEventListener(evtname, handler, false);
      return function () {
        document.removeEventListener(evtname, handler, false);
      };
    }
    return function () {};
  }
  var DomEvent = {
    on: on,
    off: off,
    tap: tap,
    longtap: longtap,
    bindVisibilityChangeEvt: bindVisibilityChangeEvt,
    doubletap: doubletap
  };

  function ownKeys$6(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r &amp;&amp; (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
  function _objectSpread$6(e) { for (var r = 1; r &lt; arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$6(Object(t), !0).forEach(function (r) { defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$6(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
  var C$3 = "https://mp.weixin.qq.com/shop/ssr/wap/gift",
    o$2 = "https://mp.weixin.qq.com/mmec/bizacctusergetactivityinfo",
    T$3 = "https://mp.weixin.qq.com";
  function s$3(e) {
    try {
      var _JSON$parse = JSON.parse(e),
        i = _JSON$parse.action,
        E = _JSON$parse.value;
      return {
        action: i,
        value: E
      };
    } catch (i) {
      console.error(i);
    }
    return {};
  }
  function w$2(e, i, E) {
    var G = arguments.length &gt; 3 &amp;&amp; arguments[3] !== undefined ? arguments[3] : "*";
    try {
      if (!e) return console.warn("postMessageToIframe: win is null");
      e.postMessage(JSON.stringify({
        action: i,
        value: E
      }), G || "*");
    } catch (u) {
      console.log("postMessage error", u);
    }
  }
  var I$3 = {
    name: "mp-common-bluepacket",
    mixins: [k$1],
    props: {
      extraInfo: {
        type: Object,
        "default": function _default() {
          return {};
        }
      },
      scrollBlur: {
        type: Number,
        "default": 0
      },
      loaded: {
        type: Number,
        "default": 0
      },
      urlParams: {
        type: Object,
        "default": function _default() {
          return {};
        }
      },
      customstyle: {
        type: String,
        "default": "{}"
      },
      wapExportToken: {
        type: String,
        "default": ""
      }
    },
    data: function data() {
      return {
        iframeLoading: !0,
        showIframe: !1,
        iframeUrl: "",
        transferStyle: "",
        active: !1
      };
    },
    computed: {
      readyToSendToken: function readyToSendToken() {
        return !this.iframeLoading &amp;&amp; this.wapExportToken;
      },
      isEditor: function isEditor() {
        return this.platform === "web" || this.platform === "app";
      },
      iframeStyle: function iframeStyle() {
        var e = {};
        return this.platform === "web" ? e.width = "350px" : e.width = "100%", e = Object.assign(e, JSON.parse(this.transferStyle || "{}")), e;
      }
    },
    watch: {
      readyToSendToken: function readyToSendToken(e) {
        e &amp;&amp; w$2(this.$refs.iframeRef.contentWindow, "updateToken", {
          value: this.wapExportToken
        });
      },
      loaded: {
        handler: function handler() {
          this.loaded &amp;&amp; (this.showIframe = !0, this.iframeUrl = this.getCIframeUrl());
        },
        immediate: !0
      }
    },
    created: function created() {
      this.isEditor &amp;&amp; (this.showIframe = !0, this.iframeUrl = this.getBIframeUrl());
    },
    mounted: function mounted() {
      var _this = this;
      this.extraInfo.window &amp;&amp; this.extraInfo.window.addEventListener("message", this.handleMessage), this.extraInfo.window &amp;&amp; this.extraInfo.window.addEventListener("click", this.handleDocumentClick), this.scrollBlur &amp;&amp; this.extraInfo.window &amp;&amp; this.extraInfo.window.addEventListener("scroll", this.handleScroll), this.__unbindVisibilityChange = DomEvent.bindVisibilityChangeEvt(this.handleVisibilityChangeEvt), R$4.on("onWindowFocusChanged", this.__onNativeFocusChange = function (e) {
        var i = Device.os.ios ? !(e.hasFocus * 1) : !!e.hasFocus,
          E = _this.$refs.iframeRef;
        i &amp;&amp; E != null &amp;&amp; E.contentWindow &amp;&amp; w$2(E.contentWindow, "pageVisible", {
          type: "windowFocusChanged"
        });
      });
    },
    beforeDestroy: function beforeDestroy() {
      this.extraInfo.window &amp;&amp; this.extraInfo.window.removeEventListener("message", this.handleMessage), this.extraInfo.window &amp;&amp; this.extraInfo.window.removeEventListener("click", this.handleDocumentClick), R$4.remove("onWindowFocusChanged", this.__onNativeFocusChange), typeof this.__unbindVisibilityChange == "function" &amp;&amp; this.__unbindVisibilityChange();
    },
    methods: {
      handleVisibilityChangeEvt: function handleVisibilityChangeEvt(e) {
        var i = this.$refs.iframeRef;
        e &amp;&amp; i != null &amp;&amp; i.contentWindow &amp;&amp; w$2(i.contentWindow, "pageVisible", {
          type: "visibilityChange"
        });
      },
      handleScroll: function handleScroll() {
        this.deActive();
      },
      handleDocumentClick: function handleDocumentClick(e) {
        this.$refs.js_custom_element.contains(e.target) || (this.deActive(), this.$emit("document-click", e));
      },
      deActive: function deActive() {
        var e = this.$refs.iframeRef;
        e &amp;&amp; e.contentWindow &amp;&amp; this.active &amp;&amp; (w$2(e.contentWindow, "webEvent", {
          type: "unclick"
        }), this.active = !1);
      },
      getBIframeUrl: function getBIframeUrl() {
        var e = _objectSpread$6({}, this.urlParams);
        delete e.shop_bizuin;
        var i = window &amp;&amp; window.wx &amp;&amp; window.wx.data &amp;&amp; window.wx.data.t || p$1(window.location.href).token || this.token;
        return i &amp;&amp; (e.token = i), u$2(C$3, e);
      },
      getCIframeUrl: function getCIframeUrl() {
        var e = _objectSpread$6(_objectSpread$6({}, this.urlParams), {}, {
          device_type: Device.os.ios ? 1 : 2
        });
        return delete e.shop_bizuin, u$2(o$2, e);
      },
      handleMessage: function handleMessage(e) {
        if (e.origin !== T$3) return;
        var i = this.$refs.iframeRef,
          E = i == null ? void 0 : i.contentWindow;
        if (i &amp;&amp; e.source === E) {
          var _s = s$3(e.data),
            G = _s.action,
            u = _s.value;
          switch (G) {
            case "changeFrameStyle":
              this.changeFrameStyle(e, u);
              break;
            case "onFrameReady":
              this.onFrameReady(e, i);
              break;
            case "webEvent":
              u.type === "click" ? this.clickProduct(e) : u.type === "toast" ? window.weui.toast(u.msg, {
                extClass: "weui-toast_text"
              }) : u.type === "dialog" &amp;&amp; window.weui.dialog(u);
              break;
          }
          this.$emit("iframe-message", e);
        }
      },
      clickProduct: function clickProduct(e) {
        this.extraInfo.window &amp;&amp; this.extraInfo.window.clickedProductWin &amp;&amp; e.source !== this.extraInfo.window.clickedProductWin &amp;&amp; w$2(this.extraInfo.window.clickedProductWin, "webEvent", {
          type: "unclick"
        }), this.extraInfo.window &amp;&amp; (this.extraInfo.window.clickedProductWin = e.source), this.active = !0;
      },
      onFrameReady: function onFrameReady() {
        this.iframeLoadTimeout &amp;&amp; clearTimeout(this.iframeLoadTimeout), this.iframeLoading = !1, this.extraInfo.window &amp;&amp; w$2(this.extraInfo.window, "setPageData", {
          darkMode: this.extraInfo.window.matchMedia("(prefers-color-scheme: dark)").matches
        }), this.isEditor || this.exposureReport();
      },
      exposureReport: function exposureReport() {
        var _this2 = this;
        this.observer = new IntersectionObserver(function (e) {
          e.forEach(function (i) {
            var E = _this2.$refs.iframeRef;
            if (i.isIntersecting &amp;&amp; i.intersectionRatio &gt;= 0.5) try {
              E &amp;&amp; E.contentWindow &amp;&amp; (_this2.timeout = setTimeout(function () {
                w$2(E.contentWindow, "webEvent", {
                  type: "valid_expose"
                });
              }, 500));
            } catch (G) {
              console.error(G);
            } else _this2.timeout &amp;&amp; clearTimeout(_this2.timeout);
          });
        }, {
          threshold: 0.5
        }), this.observer.observe(this.$refs.js_custom_element);
      },
      changeFrameStyle: function changeFrameStyle(e, i) {
        if (!(!i || _typeof$2(i) != "object" || this.cardtype === 2)) try {
          this.transferStyle = JSON.stringify(i);
        } catch (E) {
          console.error(E);
        }
      }
    }
  };
  var n$4 = function n() {
      var i = this,
        E = i._self._c;
      return E("div", {
        ref: "js_custom_element",
        staticClass: "iframe_wrp wx_card_root"
      }, [i.iframeLoading ? E("div", {
        staticClass: "bluepacket_wx_img_placeholder",
        style: JSON.parse(i.customstyle || "{}")
      }) : i._e(), i.showIframe ? E("iframe", {
        ref: "iframeRef",
        staticClass: "iframe_style",
        style: i.iframeStyle,
        attrs: {
          src: i.iframeUrl,
          scrolling: "no",
          frameborder: "0"
        }
      }) : i._e()]);
    },
    O$4 = [],
    g$3 = v$2(I$3, n$4, O$4, !1, null, "33cbb04e", null, null);
  var b$2 = g$3.exports,
    l$4 = "body,.wx-root{--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #07C160;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0: rgba(0, 0, 0, .9);--weui-FG-0_5: rgba(0, 0, 0, .9);--weui-FG-1: rgba(0, 0, 0, .55);--weui-FG-2: rgba(0, 0, 0, .3);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-GLYPH-0: rgba(0, 0, 0, .9);--weui-GLYPH-1: rgba(0, 0, 0, .55);--weui-GLYPH-2: rgba(0, 0, 0, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #91D300;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #1485EE;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #95EC69;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #FA9D3B;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6467F0;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #FA5151;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .05);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #FFC300;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-FG-HALF: rgba(0, 0, 0, .9);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #FA9D3B;--weui-YELLOW: #FFC300;--weui-GREEN: #91D300;--weui-LIGHTGREEN: #95EC69;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1485EE;--weui-PURPLE: #6467F0;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #FA9D3B;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #10AEFF;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05);--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-FG: #000;--weui-FG-5: rgba(0, 0, 0, .05);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG: #fff;--weui-BG: #000;--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6)}}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG: #fff;--weui-BG: #000;--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6)}.wx-root[data-weui-mode=care],body[data-weui-mode=care]{--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #007DBB;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #018942;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0: #000000;--weui-FG-0_5: #000000;--weui-FG-1: rgba(0, 0, 0, .6);--weui-FG-2: rgba(0, 0, 0, .42);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-GLYPH-0: #000000;--weui-GLYPH-1: rgba(0, 0, 0, .6);--weui-GLYPH-2: rgba(0, 0, 0, .42);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #4F8400;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #0075E2;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #2E8800;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #E17719;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #D14730;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6265F1;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #DC3636;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .1);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #BB8E00;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-FG-HALF: #000000;--weui-RED: #DC3636;--weui-ORANGERED: #D14730;--weui-ORANGE: #E17719;--weui-YELLOW: #BB8E00;--weui-GREEN: #4F8400;--weui-LIGHTGREEN: #2E8800;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #018942;--weui-BLUE: #007DBB;--weui-INDIGO: #0075E2;--weui-PURPLE: #6265F1;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #E17719;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #007DBB;--weui-REDORANGE: #D14730;--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-FG: #000;--weui-FG-5: rgba(0, 0, 0, .05);--weui-TAG-BACKGROUND-ORANGE: rgba(225, 119, 25, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(0, 125, 187, .1);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05)}@media (prefers-color-scheme: dark){.wx-root[data-weui-mode=care]:not([data-weui-theme=light]),body[data-weui-mode=care]:not([data-weui-theme=light]){--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-FG: #fff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-BG: #000;--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5)}}.wx-root[data-weui-mode=care][data-weui-theme=dark],body[data-weui-mode=care][data-weui-theme=dark]{--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-FG: #fff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-BG: #000;--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5)}.bluepacket_wx_img_placeholder{width:100%;background:var(--weui-BG-3) url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='80px' height='80px' viewBox='0 0 80 80' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3E9.\u5143\u7D20/\u52A0\u8F7D/Black%3C/title%3E%3Cdefs%3E%3ClinearGradient x1='94.0869141%25' y1='0%25' x2='94.0869141%25' y2='90.559082%25' id='linearGradient-1'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.67370605%25' x2='100%25' y2='90.6286621%25' id='linearGradient-2'%3E%3Cstop stop-color='%23606060' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cg id='\u9875\u9762-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' opacity='0.9'%3E%3Cg id='LoadingDefault'%3E%3Cpath d='M40,0 C62.09139,0 80,17.90861 80,40 C80,62.09139 62.09139,80 40,80 L40,73 C58.2253967,73 73,58.2253967 73,40 C73,21.7746033 58.2253967,7 40,7 L40,0 Z' id='\u8DEF\u5F84' fill='url(%23linearGradient-1)'%3E%3C/path%3E%3Cpath d='M40,0 L40,7 C21.7746033,7 7,21.7746033 7,40 C7,58.2253967 21.7746033,73 40,73 L40,80 C17.90861,80 0,62.09139 0,40 C0,17.90861 17.90861,0 40,0 Z' id='\u8DEF\u5F84' fill='url(%23linearGradient-2)'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23606060' cx='40.5' cy='3.5' r='3.5'%3E%3C/circle%3E%3C/g%3E%3CanimateTransform attributeName='transform' begin='0s' dur='1s' type='rotate' values='0 40 40;360 40 40' repeatCount='indefinite'/%3E%3C/g%3E%3C/svg%3E%0A\") no-repeat 50% 50%!important;background-size:16px!important;border-radius:8px}.iframe_style{height:0px}.iframe_wrp{display:flex;flex-direction:column;-webkit-user-select:none;-moz-user-select:none;user-select:none;align-items:center;position:relative}\n",
    r$6 = {
      loaded: "data-loaded",
      urlParams: "data-url-params",
      customstyle: "data-customstyle",
      scrollBlur: "data-scroll-blur",
      wapExportToken: "data-wap-export-token"
    };
  function c$2(e) {
    var i = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : {};
    var E = {};
    return E = o$6.call(this, r$6), E.loaded = Number(E.loaded || 0), E.urlParams = JSON.parse(E.urlParams || "{}"), E.scrollBlur = Number(E.scrollBlur || 0), _objectSpread$6({
      platform: e,
      extraInfo: i
    }, E);
  }
  function Y(e) {
    H$3(Object.assign(e, {
      Component: e.isDev ? e.devComponent : b$2,
      styleText: e.isDev ? e.devStyleText : l$4,
      customName: e.customName || "mp-common-bluepacket",
      watchAttr: Object.values(r$6),
      getProps: c$2,
      eventName: ["iframe-message", "document-click", "expose", "element-click"]
    }));
  }

  
  function parseUrl(url) {
    var a = document.createElement('a');
    a.href = url;
    return {
      source: url,
      protocol: a.protocol.replace(':', ''),
      host: a.hostname,
      port: a.port,
      query: a.search,
      params: function () {
        var ret = {};
        var seg = a.search.replace(/^\?/, '').split('&amp;');
        var len = seg.length;
        var i = 0;
        var s;
        for (; i &lt; len; i++) {
          if (!seg[i]) {
            continue;
          }
          s = seg[i].split('=');
          ret[s[0]] = s[1];
        }
        return ret;
      }(),
      file: (a.pathname.match(/([^\/?#]+)$/i) || [, ''])[1],
      hash: a.hash.replace('#', ''),
      path: a.pathname.replace(/^([^\/])/, '/$1'),
      relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [, ''])[1],
      segments: a.pathname.replace(/^\//, '').split('/')
    };
  }
  
  function openUrlWithExtraWebview(url, scene, userName, openType, sucCb, interactiveDismiss) {
    var urlParsedData;
    if (url.indexOf('/') == 0) {
      urlParsedData = parseUrl(location.href);
      url = "".concat(urlParsedData.protocol, "://").concat(urlParsedData.host).concat(url);
      console.log('openUrlWithExtraWebview with relative path:', url);
    }
    url = url.replace(/(#[^#]*)+/, function (_, _1, _2) {
      return _1;
    });
    
    if (navigator.userAgent.indexOf('MicroMessenger') !== -1 &amp;&amp; (MMVersion.isIOS || MMVersion.isAndroid || MMVersion.isHarmony || MMVersion.isWp || Device.os.pc)) {
      R$4.invoke('openUrlWithExtraWebview', {
        url: url,
        scene: scene || '',
        bizUsername: userName || '',
        interactiveDismiss: !!interactiveDismiss,
        openType: typeof openType === 'undefined' ? 1 : openType
      }, function (res) {
        var _a;
        if (((_a = res.err_msg) === null || _a === void 0 ? void 0 : _a.indexOf('ok')) === -1) {
          location.href = url;
        } else {
          typeof sucCb === 'function' &amp;&amp; sucCb(res);
        }
      });
    } else if (MMVersion.isMpapp) {
      try {
        invoke$1('WNNativeCallbackOpenNewWindow', {
          url: url
        });
      } catch (e) {
        location.href = url;
      }
    } else {
      var winRef = window.open(url);
      if (!winRef &amp;&amp; !MMVersion.isWxWork) {
        location.href = url;
      }
    }
  }
  
  function openUrl(opt) {
    var url = opt.url,
      itemShowType = opt.itemShowType,
      openType = opt.openType,
      scene = opt.scene,
      subscene = opt.subscene,
      canFastLoad = opt.canFastLoad;
    if (MMVersion.isWechat) {
      if (canFastLoad) {
        R$4.invoke('openWebViewUseFastLoad', {
          url: url,
          item_show_type: itemShowType,
          openType: openType || 0,
          scene: scene || 0,
          subscene: subscene || 0
        }, function (resp) {
          var _a;
          if (((_a = resp === null || resp === void 0 ? void 0 : resp.err_msg) === null || _a === void 0 ? void 0 : _a.indexOf('ok')) === -1) {
            R$4.invoke('openUrlWithExtraWebview', {
              url: url,
              openType: 1
            }, function (res) {
              var _a;
              if (((_a = res === null || res === void 0 ? void 0 : res.err_msg) === null || _a === void 0 ? void 0 : _a.indexOf('ok')) === -1) {
                window.location.href = url;
              }
            });
          }
        });
      } else {
        R$4.invoke('openUrlWithExtraWebview', {
          url: url,
          openType: 1
        }, function (res) {
          var _a;
          if (((_a = res === null || res === void 0 ? void 0 : res.err_msg) === null || _a === void 0 ? void 0 : _a.indexOf('ok')) === -1) {
            window.location.href = url;
          }
        });
      }
    } else {
      window.open(url);
    }
  }
  var openUrl$1 = {
    openUrlWithExtraWebview: openUrlWithExtraWebview,
    openUrl: openUrl
  };

  function ownKeys$5(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r &amp;&amp; (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
  function _objectSpread$5(e) { for (var r = 1; r &lt; arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), !0).forEach(function (r) { defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
  function _regeneratorRuntime$1() {  _regeneratorRuntime$1 = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof$2(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof$2(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  function O$3(_x) {
    return _O.apply(this, arguments);
  }
  function _O() {
    _O = asyncToGenerator( _regeneratorRuntime$1().mark(function _callee13(B) {
      return _regeneratorRuntime$1().wrap(function _callee13$(_context13) {
        while (1) switch (_context13.prev = _context13.next) {
          case 0:
            return _context13.abrupt("return", new Promise(function (A) {
              R$4.invoke("handleEcsAction", {
                action: "openEcs",
                ecsJumpInfoBase64: B
              }, function (e) {
                A(e);
              });
            }));
          case 1:
          case "end":
            return _context13.stop();
        }
      }, _callee13);
    }));
    return _O.apply(this, arguments);
  }
  function L() {
    return _L.apply(this, arguments);
  }
  function _L() {
    _L = asyncToGenerator( _regeneratorRuntime$1().mark(function _callee14() {
      return _regeneratorRuntime$1().wrap(function _callee14$(_context14) {
        while (1) switch (_context14.prev = _context14.next) {
          case 0:
            return _context14.abrupt("return", new Promise(function (B) {
              R$4.invoke("handleEcsAction", {
                action: "checkAction",
                params: {
                  method: "isActionAvailable",
                  actionName: "openEcs",
                  actionVersion: "1"
                }
              }, function (A) {
                A != null &amp;&amp; A.result ? B(!0) : B(!1);
              });
            }));
          case 1:
          case "end":
            return _context14.stop();
        }
      }, _callee14);
    }));
    return _L.apply(this, arguments);
  }
  var R$1 = 7,
    U = {
      NORMAL: 1,
      CLOSED: 2,
      BANED: 3
    },
    r$5 = {
      CARD: 1,
      PRODUCT: 2
    },
    I$2 = {
      EXPOSE: 1,
      CLICK: 2
    },
    l$3 = {
      PRODUCT: 0,
      BANNER: 1,
      CURATED_SET: 2
    },
    d$2 = {
      red: 235,
      green: 235,
      blue: 235
    },
    y = "rgba(0,0,0,0.9)",
    _$1 = "rgba(0,0,0,0.55)",
    J$1 = {
      name: "mp-common-shopprofile",
      mixins: [k$1],
      props: {
        id: {
          type: String,
          "default": ""
        },
        appid: {
          type: String,
          "default": ""
        },
        shopEncryptKey: {
          type: String,
          "default": ""
        },
        is_hover: {
          type: Number,
          "default": 0
        },
        is_selected: {
          type: Number,
          "default": 0
        }
      },
      data: function data() {
        return {
          getShopCardResp: null,
          requestinggetShopCardResp: !1,
          _supportOpenEcs: void 0,
          forceUpdate: !1,
          productWidth: 0,
          productHeight: 0,
          iframeLoading: !0,
          isDark: window.matchMedia &amp;&amp; window.matchMedia("(prefers-color-scheme: dark)").matches,
          getShopCardPromise: null
        };
      },
      computed: {
        isEditor: function isEditor() {
          return this.platform === "web" || this.platform === "app";
        },
        cardStyle: function cardStyle() {
          var B = {};
          return this.platform === "web" ? B.width = "350px" : B.width = "100%", B;
        },
        placeholderStyle: function placeholderStyle() {
          var B = {
            height: "108px"
          };
          return this.platform === "web" ? B.width = "350px" : B.width = "100%", B;
        },
        productStyle: function productStyle() {
          return {
            width: "".concat(this.productWidth, "px"),
            height: "".concat(this.productHeight, "px")
          };
        },
        pruductImgStyle: function pruductImgStyle() {
          return {
            width: "".concat(this.productWidth, "px"),
            height: "".concat(this.productHeight, "px")
          };
        },
        headImgUrl: function headImgUrl() {
          var B, A, e;
          return ((e = (A = (B = this.getShopCardResp) == null ? void 0 : B.ec_shop_card) == null ? void 0 : A.profile_info) == null ? void 0 : e.head_img_url) || "";
        },
        shopProfileName: function shopProfileName() {
          var B, A, e;
          return ((e = (A = (B = this.getShopCardResp) == null ? void 0 : B.ec_shop_card) == null ? void 0 : A.profile_info) == null ? void 0 : e.shop_window_profile_name) || "";
        },
        brandTailWording: function brandTailWording() {
          var B, A, e, i;
          return ((i = (e = (A = (B = this.getShopCardResp) == null ? void 0 : B.ec_shop_card) == null ? void 0 : A.profile_info) == null ? void 0 : e.shop_icon) == null ? void 0 : i.icon_r_words) || "";
        },
        saleWording: function saleWording() {
          var B, A, e;
          return ((e = (A = (B = this.getShopCardResp) == null ? void 0 : B.ec_shop_card) == null ? void 0 : A.profile_info) == null ? void 0 : e.sale_wording) || "";
        },
        brandIconUrl: function brandIconUrl() {
          var B, A, e, i, E, t, g, w;
          return this.hasBgColor ? ((w = (g = (t = (E = this.getShopCardResp) == null ? void 0 : E.ec_shop_card) == null ? void 0 : t.profile_info) == null ? void 0 : g.shop_icon) == null ? void 0 : w.icon_r_url_dark) || "" : ((i = (e = (A = (B = this.getShopCardResp) == null ? void 0 : B.ec_shop_card) == null ? void 0 : A.profile_info) == null ? void 0 : e.shop_icon) == null ? void 0 : i.icon_r_url) || "";
        },
        products: function products() {
          var B, A;
          return (((A = (B = this.getShopCardResp) == null ? void 0 : B.ec_shop_card) == null ? void 0 : A.simple_products) || []).slice(0, 3);
        },
        shopJumpInfo: function shopJumpInfo() {
          var B, A;
          return ((A = (B = this.getShopCardResp) == null ? void 0 : B.ec_shop_card) == null ? void 0 : A.shop_jump_info_base64_str) || "";
        },
        shopStatus: function shopStatus() {
          var B;
          return (B = this.getShopCardResp) == null ? void 0 : B.shop_status;
        },
        isShopStatusNormal: function isShopStatusNormal() {
          return this.shopStatus === U.NORMAL;
        },
        statusDesc: function statusDesc() {
          return this.shopStatus === U.CLOSED ? "店铺已注销" : this.shopStatus === U.BANED ? "店铺已被封禁" : "";
        },
        showContent: function showContent() {
          var B;
          return (B = this.getShopCardResp) == null ? void 0 : B.show_content;
        },
        isProductCard: function isProductCard() {
          return _typeof$2(this.showContent) &gt; "u" ? !0 : this.showContent === l$3.PRODUCT;
        },
        isBannerCard: function isBannerCard() {
          return this.showContent === l$3.BANNER;
        },
        isCrratedSetCard: function isCrratedSetCard() {
          return this.showContent === l$3.CURATED_SET;
        },
        iconStyle: function iconStyle() {
          return this.isDark &amp;&amp; this.platform === "web" ? {
            backgroundImage: 'url("https://res.wx.qq.com/shop/public/2025-05-10/321b820e-8d8a-4083-8e0f-40b2b01fc8ef.png")'
          } : {};
        },
        banners: function banners() {
          var _this = this;
          var A;
          return (((A = this.getShopCardResp) == null ? void 0 : A.banners) || []).slice(0, 3).map(function (e) {
            var E, t, g, w, o, u, G, Q, M, c;
            var i = _this.bgColor;
            return {
              id: e.id,
              type: e.type,
              title: (E = e.banner) == null ? void 0 : E.title,
              subTitle: (t = e.banner) == null ? void 0 : t.subtitle,
              imgUrl: (g = e.banner) == null ? void 0 : g.img_url,
              desc: (w = e.banner) == null ? void 0 : w.description,
              bgColor: y$2([i.red, i.green, i.blue]),
              bgColorRgb: i,
              product: e.product &amp;&amp; {
                showPriceStartWording: (u = (o = e.product) == null ? void 0 : o.price) == null ? void 0 : u.has_range_price,
                fullPage: e.product.full_page,
                ecsJumpInfoBase64Str: (G = e.product) == null ? void 0 : G.ecs_jump_info_base64_str
              },
              finderInfo: e.finder &amp;&amp; {
                finderUsername: e.finder.uniq_id,
                feedId: e.finder.export_id,
                nickname: (Q = e.finder) == null ? void 0 : Q.nickname
              },
              mpInfo: e.official_account &amp;&amp; {
                url: e.official_account.url,
                nickname: (M = e.official_account) == null ? void 0 : M.nickname,
                title: (c = e.official_account) == null ? void 0 : c.title,
                itemShowType: e.official_account.item_show_type
              }
            };
          });
        },
        curatedSets: function curatedSets() {
          var A;
          var B = ((A = this.getShopCardResp) == null ? void 0 : A.curated_sets) || [];
          return B = B.map(function (e) {
            var i = e.product_total_count;
            return {
              mainProductImg: e.cover_img_url,
              title: e.title,
              productCnt: i &gt; 99 ? "99+" : i,
              jumpInfoBase64Str: e.jump_info_base64_str || ""
            };
          }).filter(function (e) {
            return !!e.mainProductImg;
          }).slice(0, 3), B;
        },
        background: function background() {
          var B;
          return (B = this.getShopCardResp) == null ? void 0 : B.back_ground;
        },
        cardHeadStyle: function cardHeadStyle() {
          var B, A, e, i;
          if ((B = this.background) != null &amp;&amp; B.img_url) {
            if (this.hasBgColor) {
              var E = C$6((A = this.background) == null ? void 0 : A.main_colors)[1];
              return {
                background: "linear-gradient(to left bottom, rgba(".concat(E.red, ", ").concat(E.green, ", ").concat(E.blue, ", 0.7) 0%, rgba(").concat(E.red, ", ").concat(E.green, ", ").concat(E.blue, ", 1) 60%, rgba(").concat(E.red, ", ").concat(E.green, ", ").concat(E.blue, ", 1) ) 100%, url(\"").concat((e = this.background) == null ? void 0 : e.img_url, "\") left top / 100% auto no-repeat")
              };
            } else return {
              background: "url(\"".concat((i = this.background) == null ? void 0 : i.img_url, "\") left top / 100% auto no-repeat")
            };
          } else return {
            background: "rgba(".concat(d$2.red, ", ").concat(d$2.green, ", ").concat(d$2.blue, ", 1)")
          };
        },
        curatedStyle: function curatedStyle() {
          var B = this.bgColor;
          return {
            width: "".concat(this.productWidth, "px"),
            height: "".concat(this.productHeight, "px"),
            backgroundImage: "linear-gradient(to top, rgba(".concat(B.red, ", ").concat(B.green, ", ").concat(B.blue, ", 0.7) 0%, rgba(").concat(B.red, ", ").concat(B.green, ", ").concat(B.blue, ", 1) 100%)")
          };
        },
        hasBgColor: function hasBgColor() {
          var B, A, e;
          return !!((B = this.background) != null &amp;&amp; B.main_colors &amp;&amp; (A = this.background) != null &amp;&amp; A.main_colors[0] &amp;&amp; _typeof$2((e = this.background) == null ? void 0 : e.main_colors[0].red) &lt; "u");
        },
        bgColor: function bgColor() {
          var B;
          return this.hasBgColor ? C$6((B = this.background) == null ? void 0 : B.main_colors)[1] : d$2;
        },
        shopProfileNameStyle: function shopProfileNameStyle() {
          return this.hasBgColor ? {} : {
            color: y
          };
        },
        shopProfileDescStyle: function shopProfileDescStyle() {
          return this.hasBgColor ? {} : {
            color: _$1
          };
        },
        jumpShopIconStyle: function jumpShopIconStyle() {
          return this.hasBgColor ? {} : {
            color: y
          };
        }
      },
      watch: {
        appid: {
          handler: function handler() {
            this.forceUpdateShopCard();
          }
        },
        shopEncryptKey: {
          handler: function handler() {
            this.forceUpdateShopCard();
          }
        }
      },
      created: function created() {
        this.getShopCard();
      },
      mounted: function mounted() {
        var _this2 = this;
        return asyncToGenerator( _regeneratorRuntime$1().mark(function _callee() {
          return _regeneratorRuntime$1().wrap(function _callee$(_context) {
            while (1) switch (_context.prev = _context.next) {
              case 0:
                console.log("@@@@@ shopprofile mount"), _this2.extraInfo.window &amp;&amp; _this2.extraInfo.window.addEventListener("message", _this2.handleMessage), _this2.extraInfo.window &amp;&amp; _this2.extraInfo.window.addEventListener("click", _this2.handleDocumentClick), _this2.reportExpose();
              case 1:
              case "end":
                return _context.stop();
            }
          }, _callee);
        }))();
      },
      beforeDestroy: function beforeDestroy() {
        this.extraInfo.window &amp;&amp; this.extraInfo.window.removeEventListener("message", this.handleMessage), this.extraInfo.window &amp;&amp; this.extraInfo.window.removeEventListener("click", this.handleDocumentClick);
      },
      methods: {
        initReport: function initReport() {
          var _this3 = this;
          return asyncToGenerator( _regeneratorRuntime$1().mark(function _callee2() {
            return _regeneratorRuntime$1().wrap(function _callee2$(_context2) {
              while (1) switch (_context2.prev = _context2.next) {
                case 0:
                  _context2.next = 2;
                  return N$1();
                case 2:
                  _context2.next = 4;
                  return _this3.getShopCard();
                case 4:
                case "end":
                  return _context2.stop();
              }
            }, _callee2);
          }))();
        },
        reportExpose: function reportExpose() {
          var _this4 = this;
          return asyncToGenerator( _regeneratorRuntime$1().mark(function _callee3() {
            return _regeneratorRuntime$1().wrap(function _callee3$(_context3) {
              while (1) switch (_context3.prev = _context3.next) {
                case 0:
                  _context3.next = 2;
                  return _this4.report(r$5.CARD, I$2.EXPOSE);
                case 2:
                  _context3.next = 4;
                  return _this4.report(r$5.PRODUCT, I$2.EXPOSE);
                case 4:
                case "end":
                  return _context3.stop();
              }
            }, _callee3);
          }))();
        },
        report: function report(B, A, e) {
          var _this5 = this;
          return asyncToGenerator( _regeneratorRuntime$1().mark(function _callee4() {
            var g, w, o, u, G, Q, M, c, h, Y, p, T, i, E, t, a, F, z, _a, _F;
            return _regeneratorRuntime$1().wrap(function _callee4$(_context4) {
              while (1) switch (_context4.prev = _context4.next) {
                case 0:
                  if (!(_this5.platform !== "wechat")) {
                    _context4.next = 2;
                    break;
                  }
                  return _context4.abrupt("return");
                case 2:
                  _context4.next = 4;
                  return _this5.initReport();
                case 4:
                  i = {};
                  _context4.prev = 5;
                  _context4.next = 8;
                  return N$1();
                case 8:
                  i = _context4.sent;
                  _context4.next = 14;
                  break;
                case 11:
                  _context4.prev = 11;
                  _context4.t0 = _context4["catch"](5);
                  Log.error("getMPInfo fail ".concat(_context4.t0, "."), _context4.t0);
                case 14:
                  E = "";
                  B === r$5.CARD ? E = "shop_card" : B === r$5.PRODUCT &amp;&amp; (E = "commodity_card");
                  t = "";
                  if (A === I$2.CLICK ? t = "element_click" : A === I$2.EXPOSE &amp;&amp; (t = "element_valid_expose"), B === r$5.PRODUCT &amp;&amp; A === I$2.EXPOSE) {
                    a = _this5.products;
                    for (F = 0; F &lt; a.length; ++F) {
                      z = {
                        logid: "23782",
                        data: {
                          event: t,
                          params: JSON.stringify({
                            page_name: "mp_article_page",
                            element_name: E,
                            productid: a[F].product_id,
                            mp_article_bizuin: (g = i == null ? void 0 : i.article_info) == null ? void 0 : g.mp_biz,
                            mp_article_appmsgid: (w = i == null ? void 0 : i.article_info) == null ? void 0 : w.appmsgid,
                            mp_article_item_idx: (o = i == null ? void 0 : i.article_info) == null ? void 0 : o.item_idx,
                            mp_article_item_show_type: (u = i == null ? void 0 : i.article_info) == null ? void 0 : u.item_show_type,
                            scene: (G = i == null ? void 0 : i.article_info) == null ? void 0 : G.mp_article_scene,
                            cardtype: R$1,
                            appid: _this5.appid
                          })
                        }
                      };
                      O$5(z);
                    }
                  } else {
                    _a = "";
                    _typeof$2(e) &lt; "u" &amp;&amp; (_a = (M = (Q = _this5.products) == null ? void 0 : Q[e]) == null ? void 0 : M.product_id);
                    _F = {
                      logid: "23782",
                      data: {
                        event: t,
                        params: JSON.stringify({
                          page_name: "mp_article_page",
                          element_name: E,
                          productid: _a,
                          mp_article_bizuin: (c = i == null ? void 0 : i.article_info) == null ? void 0 : c.mp_biz,
                          mp_article_appmsgid: (h = i == null ? void 0 : i.article_info) == null ? void 0 : h.appmsgid,
                          mp_article_item_idx: (Y = i == null ? void 0 : i.article_info) == null ? void 0 : Y.item_idx,
                          mp_article_item_show_type: (p = i == null ? void 0 : i.article_info) == null ? void 0 : p.item_show_type,
                          scene: (T = i == null ? void 0 : i.article_info) == null ? void 0 : T.mp_article_scene,
                          cardtype: R$1,
                          appid: _this5.appid
                        })
                      }
                    };
                    O$5(_F);
                  }
                case 18:
                case "end":
                  return _context4.stop();
              }
            }, _callee4, null, [[5, 11]]);
          }))();
        },
        forceUpdateShopCard: function forceUpdateShopCard() {
          var _this6 = this;
          return asyncToGenerator( _regeneratorRuntime$1().mark(function _callee5() {
            return _regeneratorRuntime$1().wrap(function _callee5$(_context5) {
              while (1) switch (_context5.prev = _context5.next) {
                case 0:
                  _this6.forceUpdate = !0;
                  _context5.prev = 1;
                  _context5.next = 4;
                  return _this6.getShopCard();
                case 4:
                  _context5.next = 9;
                  break;
                case 6:
                  _context5.prev = 6;
                  _context5.t0 = _context5["catch"](1);
                  console.error(_context5.t0);
                case 9:
                  _this6.forceUpdate = !1;
                case 10:
                case "end":
                  return _context5.stop();
              }
            }, _callee5, null, [[1, 6]]);
          }))();
        },
        test: function test() {
          Log.log("test");
        },
        handleDocumentClick: function handleDocumentClick(B) {
          this.$refs.js_custom_element.contains(B.target) || this.$emit("document-click", B);
        },
        updateImagesSize: function updateImagesSize() {
          if (!this.$refs.products_container) return;
          var B = 6;
          this.isProductCard &amp;&amp; (B = 4);
          var e = this.$refs.products_container.offsetWidth;
          this.productWidth = (e - B * 2) / 3, this.isCrratedSetCard ? this.productHeight = this.productWidth * 0.676 : this.productHeight = this.productWidth;
        },
        getShopCard: function getShopCard() {
          var _this7 = this;
          return asyncToGenerator( _regeneratorRuntime$1().mark(function _callee6() {
            var B, A, e, i, E;
            return _regeneratorRuntime$1().wrap(function _callee6$(_context6) {
              while (1) switch (_context6.prev = _context6.next) {
                case 0:
                  if (!(!_this7.appid || !_this7.shopEncryptKey)) {
                    _context6.next = 2;
                    break;
                  }
                  return _context6.abrupt("return", Promise.reject({}));
                case 2:
                  if (!(_this7.requestinggetShopCardResp &amp;&amp; _this7.getShopCardPromise)) {
                    _context6.next = 4;
                    break;
                  }
                  return _context6.abrupt("return", _this7.getShopCardPromise);
                case 4:
                  if (!(_this7.getShopCardResp &amp;&amp; !_this7.forceUpdate)) {
                    _context6.next = 6;
                    break;
                  }
                  return _context6.abrupt("return", _this7.getShopCardResp);
                case 6:
                  _this7.requestinggetShopCardResp = !0;
                  B = _this7;
                  A = {};
                  _context6.prev = 9;
                  _context6.next = 12;
                  return N$1();
                case 12:
                  A = _context6.sent;
                  _context6.next = 18;
                  break;
                case 15:
                  _context6.prev = 15;
                  _context6.t0 = _context6["catch"](9);
                  Log.error("getMPInfo fail ".concat(_context6.t0, "."), _context6.t0);
                case 18:
                  e = (A == null ? void 0 : A.exportkey) || Url.getQuery("exportkey") || "", i = btoa(JSON.stringify((A == null ? void 0 : A.article_info) || {})), E = "/mmec/biz_getshopcard?appid=".concat(_this7.appid, "&amp;shop_encrypt_key=").concat(encodeURIComponent(_this7.shopEncryptKey), "&amp;exportkey=").concat(e, "&amp;cardtype=").concat(R$1, "&amp;article_info=").concat(i);
                  return _context6.abrupt("return", (_this7.getShopCardPromise = new Promise(function (t, g) {
                    ajax({
                      type: "GET",
                      url: E,
                      success: function success(w) {
                        if (typeof w == "string") try {
                          w = JSON.parse(w);
                        } catch (o) {
                          w = {}, Log.error("/mmec/biz_getshopcard parse res error. res=".concat(w, " err=").concat(o));
                        }
                        console.log("@@@@@ biz_getshopcard success", JSON.parse(JSON.stringify(w))), B.getShopCardResp = w, B.requestinggetShopCardResp = !1, setTimeout(function () {
                          B.updateImagesSize();
                        }), B.iframeLoading = !1, t();
                      },
                      error: function error(w) {
                        console.log("@@@@@ biz_getshopcard error", w), B.requestinggetShopCardResp = !1, B.iframeLoading = !1, console.error("getShopCard err", w), g(w);
                      }
                    });
                  }), _this7.getShopCardPromise));
                case 20:
                case "end":
                  return _context6.stop();
              }
            }, _callee6, null, [[9, 15]]);
          }))();
        },
        supportOpenEcs: function supportOpenEcs() {
          var _this8 = this;
          return asyncToGenerator( _regeneratorRuntime$1().mark(function _callee7() {
            return _regeneratorRuntime$1().wrap(function _callee7$(_context7) {
              while (1) switch (_context7.prev = _context7.next) {
                case 0:
                  if (!(_typeof$2(_this8._supportOpenEcs) &lt; "u")) {
                    _context7.next = 4;
                    break;
                  }
                  _context7.t0 = _this8._supportOpenEcs;
                  _context7.next = 8;
                  break;
                case 4:
                  _context7.next = 6;
                  return L();
                case 6:
                  _this8._supportOpenEcs = _context7.sent;
                  _context7.t0 = _this8._supportOpenEcs;
                case 8:
                  return _context7.abrupt("return", _context7.t0);
                case 9:
                case "end":
                  return _context7.stop();
              }
            }, _callee7);
          }))();
        },
        openJumpInfo: function openJumpInfo(B) {
          var _this9 = this;
          return asyncToGenerator( _regeneratorRuntime$1().mark(function _callee8() {
            var A, e;
            return _regeneratorRuntime$1().wrap(function _callee8$(_context8) {
              while (1) switch (_context8.prev = _context8.next) {
                case 0:
                  if (!(_this9.platform === "wechat")) {
                    _context8.next = 11;
                    break;
                  }
                  _context8.next = 3;
                  return L();
                case 3:
                  if (!_context8.sent) {
                    _context8.next = 8;
                    break;
                  }
                  _context8.next = 6;
                  return O$3(B);
                case 6:
                  _context8.next = 9;
                  break;
                case 8:
                  (A = window == null ? void 0 : window.weui) == null || A.toast("当前版本不支持打开店铺", {
                    extClass: "weui-toast_text"
                  });
                case 9:
                  _context8.next = 12;
                  break;
                case 11:
                  (e = window == null ? void 0 : window.weui) == null || e.toast("请在手机微信中打开", {
                    extClass: "weui-toast_text"
                  });
                case 12:
                case "end":
                  return _context8.stop();
              }
            }, _callee8);
          }))();
        },
        jumpShop: function jumpShop() {
          var _this10 = this;
          return asyncToGenerator( _regeneratorRuntime$1().mark(function _callee9() {
            return _regeneratorRuntime$1().wrap(function _callee9$(_context9) {
              while (1) switch (_context9.prev = _context9.next) {
                case 0:
                  _this10.openJumpInfo(_this10.shopJumpInfo), _this10.report(r$5.CARD, I$2.CLICK);
                case 1:
                case "end":
                  return _context9.stop();
              }
            }, _callee9);
          }))();
        },
        jumpProduct: function jumpProduct(B, A) {
          var _this11 = this;
          return asyncToGenerator( _regeneratorRuntime$1().mark(function _callee10() {
            return _regeneratorRuntime$1().wrap(function _callee10$(_context10) {
              while (1) switch (_context10.prev = _context10.next) {
                case 0:
                  _this11.openJumpInfo(B.detail_page_jump_info_base64_str || ""), _this11.report(r$5.PRODUCT, I$2.CLICK, A);
                case 1:
                case "end":
                  return _context10.stop();
              }
            }, _callee10);
          }))();
        },
        jumpBanner: function jumpBanner(B, A) {
          var _this12 = this;
          return asyncToGenerator( _regeneratorRuntime$1().mark(function _callee11() {
            var e, i, E, t, g;
            return _regeneratorRuntime$1().wrap(function _callee11$(_context11) {
              while (1) switch (_context11.prev = _context11.next) {
                case 0:
                  _context11.t0 = B.type;
                  _context11.next = _context11.t0 === 1 ? 3 : _context11.t0 === 2 ? 5 : _context11.t0 === 3 ? 8 : _context11.t0 === 4 ? 10 : 12;
                  break;
                case 3:
                  _this12.openJumpInfo((B == null ? void 0 : B.product.ecsJumpInfoBase64Str) || "");
                  return _context11.abrupt("break", 12);
                case 5:
                  g = {
                    current: B == null ? void 0 : B.imgUrl,
                    urls: [B == null ? void 0 : B.imgUrl],
                    forbidForward: window.isPaySubscribe ? 1 : 0
                  };
                  R$4.invoke("imagePreview", g, function (w) {
                    console.log("imagePreview response", w);
                  });
                  return _context11.abrupt("break", 12);
                case 8:
                  R$4.invoke("openFinderView", {
                    extInfo: {
                      action: "openFinderFeed",
                      feedID: (e = B == null ? void 0 : B.finderInfo) == null ? void 0 : e.feedId,
                      nonceID: ((i = B == null ? void 0 : B.finderInfo) == null ? void 0 : i.finderUsername) || "",
                      notGetReleatedList: 0,
                      shareScene: 25,
                      commentScene: 26,
                      requestScene: 27,
                      reportExtraInfo: JSON.stringify({})
                    }
                  }, function (g) {
                    console.info("openFinderView res: ".concat(JSON.stringify(g)));
                  });
                  return _context11.abrupt("break", 12);
                case 10:
                  console.log("@@@@@ openUrlWithExtraWebview url=".concat((E = B == null ? void 0 : B.mpInfo) == null ? void 0 : E.url)), openUrlWithExtraWebview((t = B == null ? void 0 : B.mpInfo) == null ? void 0 : t.url);
                  return _context11.abrupt("break", 12);
                case 12:
                case "end":
                  return _context11.stop();
              }
            }, _callee11);
          }))();
        },
        jumpSet: function jumpSet(B, A) {
          var _this13 = this;
          return asyncToGenerator( _regeneratorRuntime$1().mark(function _callee12() {
            return _regeneratorRuntime$1().wrap(function _callee12$(_context12) {
              while (1) switch (_context12.prev = _context12.next) {
                case 0:
                  console.log("jumpSet ".concat(B.jumpInfoBase64Str)), _this13.openJumpInfo(B.jumpInfoBase64Str || "");
                case 1:
                case "end":
                  return _context12.stop();
              }
            }, _callee12);
          }))();
        },
        formatPrice: function formatPrice(B) {
          return k$2(B);
        }
      }
    };
  var P$2 = function P() {
      var A = this,
        e = A._self._c;
      return e("div", {
        ref: "js_custom_element",
        staticClass: "wx_card_root mp_shopprofile_card_root"
      }, [A.iframeLoading ? e("div", {
        staticClass: "bluepacket_wx_img_placeholder",
        style: A.placeholderStyle
      }) : A.isShopStatusNormal ? e("div", {
        staticClass: "card_wrap",
        style: A.cardStyle
      }, [e("div", {
        staticClass: "card_head",
        style: A.cardHeadStyle
      }, [e("div", {
        staticClass: "head_left"
      }, [e("div", {
        staticClass: "head_img_wrap"
      }, [A.headImgUrl ? e("img", {
        staticClass: "head_img",
        attrs: {
          src: A.headImgUrl
        },
        on: {
          click: A.jumpShop
        }
      }) : A._e()]), e("div", {
        staticClass: "head_mid"
      }, [e("div", {
        staticClass: "head_mid_top",
        style: A.shopProfileNameStyle,
        on: {
          click: A.jumpShop
        }
      }, [A._v(A._s(A.shopProfileName))]), e("div", {
        staticClass: "head_mid_bottom",
        style: A.shopProfileDescStyle
      }, [A.brandIconUrl ? e("img", {
        staticClass: "r_icon",
        attrs: {
          src: A.brandIconUrl
        }
      }) : A._e(), A.brandTailWording ? e("div", {
        staticClass: "rtag_name"
      }, [A._v(A._s(A.brandTailWording))]) : A._e(), A.brandTailWording &amp;&amp; A.saleWording ? e("div", {
        staticClass: "rtag_break"
      }) : A._e(), A.saleWording ? e("div", {
        staticClass: "card_sales"
      }, [A._v(A._s(A.saleWording))]) : A._e()])])]), e("div", {
        staticClass: "head_right"
      }, [e("button", {
        staticClass: "tap_home_btn weui-btn weui-btn_default weui-btn_mini",
        style: A.jumpShopIconStyle,
        on: {
          click: A.jumpShop
        }
      }, [A._v("进店")])])]), e("div", {
        staticClass: "card_body_warp_banner"
      }, [A.isProductCard ? e("div", {
        ref: "products_container",
        staticClass: "product_card"
      }, A._l(A.products, function (i, E) {
        return e("div", {
          staticClass: "product",
          style: A.productStyle,
          on: {
            click: function click(t) {
              return A.jumpProduct(i, E);
            }
          }
        }, [i.img_url ? e("img", {
          staticClass: "product_image",
          style: A.pruductImgStyle,
          attrs: {
            src: i.img_url
          }
        }) : A._e(), e("div", {
          staticClass: "product_price"
        }, [A._v(" ¥" + A._s(A.formatPrice(i.selling_price)) + " ")])]);
      }), 0) : A.isBannerCard ? e("div", {
        ref: "products_container",
        staticClass: "banner_card"
      }, A._l(A.banners, function (i, E) {
        return e("div", {
          staticClass: "banner",
          style: {
            width: A.productWidth + "px"
          },
          on: {
            click: function click(t) {
              return A.jumpShop();
            }
          }
        }, [e("div", {
          staticClass: "banner_image_wrap",
          style: A.pruductImgStyle
        }, [e("div", {
          staticClass: "banner_mask"
        }), i.type === 1 ? e("img", {
          staticClass: "banner_type",
          attrs: {
            src: "https://mmec-shop-1258344707.cos.ap-shanghai.myqcloud.com/shop/public/2024-10-15/3a0875f8-2d03-46da-af4e-7041f8072b25.png"
          }
        }) : A._e(), i.type === 2 ? e("img", {
          staticClass: "banner_type",
          attrs: {
            src: "https://mmec-shop-1258344707.cos.ap-shanghai.myqcloud.com/shop/public/2024-10-15/6c6ade47-1e03-44bb-b47c-5135b5d3728d.png"
          }
        }) : A._e(), i.type === 3 ? e("img", {
          staticClass: "banner_type",
          attrs: {
            src: "https://mmec-shop-1258344707.cos.ap-shanghai.myqcloud.com/shop/public/2024-10-15/4ac5bbf0-7dd5-4403-9d48-eaddb2f6d83f.png"
          }
        }) : A._e(), i.type === 4 ? e("img", {
          staticClass: "banner_type",
          attrs: {
            src: "https://mmec-shop-1258344707.cos.ap-shanghai.myqcloud.com/shop/public/2024-10-15/6c6ade47-1e03-44bb-b47c-5135b5d3728d.png"
          }
        }) : A._e(), i.imgUrl ? e("img", {
          staticClass: "banner_image",
          style: A.pruductImgStyle,
          attrs: {
            src: i.imgUrl
          }
        }) : A._e()]), e("div", {
          staticClass: "banner_title_wrap",
          style: {
            backgroundColor: i.bgColor
          }
        }, [e("div", {
          staticClass: "banner_title"
        }, [A._v(A._s(i.title))])])]);
      }), 0) : A.isCrratedSetCard ? e("div", {
        ref: "products_container",
        staticClass: "curated_card"
      }, A._l(A.curatedSets, function (i, E) {
        return e("div", {
          staticClass: "curated",
          style: {
            width: A.productWidth + "px"
          },
          on: {
            click: function click(t) {
              return A.jumpSet(i, E);
            }
          }
        }, [e("div", {
          staticClass: "curated_image_wrap",
          style: A.curatedStyle
        }, [e("div", {
          staticClass: "mask-bg"
        }), e("img", {
          style: {
            width: A.productHeight - 22 + "px",
            height: A.productHeight - 22 + "px"
          },
          attrs: {
            src: "https://res.wx.qq.com/shop/public/2025-03-28/680acf97-edcd-4bff-877b-52652c7a0f8a.png"
          }
        }), e("img", {
          staticClass: "set_cover_img",
          style: {
            width: A.productHeight - 22 + "px",
            height: A.productHeight - 22 + "px"
          },
          attrs: {
            src: i.mainProductImg
          }
        }), e("img", {
          style: {
            width: A.productHeight - 22 + "px",
            height: A.productHeight - 22 + "px"
          },
          attrs: {
            src: "https://res.wx.qq.com/shop/public/2025-03-28/46f802c6-de67-45f3-966a-3d634fafa935.png"
          }
        })]), e("div", {
          staticClass: "desc_wrap"
        }, [e("span", {
          staticClass: "desc"
        }, [A._v(A._s(i.title))]), e("span", {
          staticClass: "count"
        }, [A._v(A._s(i.productCnt))])])]);
      }), 0) : A._e(), A._m(0)])]) : e("div", {
        staticClass: "card_wrap",
        style: A.cardStyle
      }, [e("div", {
        staticClass: "shop_status_desc"
      }, [A._v(A._s(A.statusDesc))])])]);
    },
    Z = [function () {
      var B = this,
        A = B._self._c;
      return A("div", {
        staticClass: "shop_icon_wrap"
      }, [A("div", {
        staticClass: "shop_icon"
      }), A("div", {
        staticClass: "shop_name"
      }, [B._v("小店")])]);
    }],
    K$2 = v$2(J$1, P$2, Z, !1, null, "d0ee4439", null, null);
  var X$1 = K$2.exports,
    v = ".wx_hover_card:before{content:\" \";position:absolute;top:0;left:0;right:0;bottom:0;border-radius:8px;box-sizing:border-box;border:1px solid rgba(7,193,96,.3);pointer-events:none;z-index:9}.wx_selected_card:before{content:\" \";position:absolute;top:0;left:0;right:0;bottom:0;border-radius:8px;border:1.5px solid #07C160;box-sizing:border-box;background:rgba(7,193,96,.1);pointer-events:none;z-index:9}body,.wx-root{--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #07C160;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0_5: rgba(0, 0, 0, .9);--weui-GLYPH-0: rgba(0, 0, 0, .9);--weui-GLYPH-1: rgba(0, 0, 0, .55);--weui-GLYPH-2: rgba(0, 0, 0, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #91D300;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #1485EE;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #95EC69;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #FA9D3B;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6467F0;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #FA5151;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .05);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #FFC300;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #FA9D3B;--weui-YELLOW: #FFC300;--weui-GREEN: #91D300;--weui-LIGHTGREEN: #95EC69;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1485EE;--weui-PURPLE: #6467F0;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #FA9D3B;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #10AEFF;--weui-REDORANGE: #FF6146;--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-BG-0: #ededed;--weui-BG-1: #f7f7f7;--weui-BG-2: #fff;--weui-BG-3: #f7f7f7;--weui-BG-4: #4c4c4c;--weui-BG-5: #fff;--weui-FG-0: rgba(0, 0, 0, .9);--weui-FG-HALF: rgba(0, 0, 0, .9);--weui-FG-1: rgba(0, 0, 0, .55);--weui-FG-2: rgba(0, 0, 0, .3);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-FG-5: rgba(0, 0, 0, .05);--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #fa9d3b;--weui-YELLOW: #ffc300;--weui-GREEN: #91d300;--weui-LIGHTGREEN: #95ec69;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1485ee;--weui-PURPLE: #6467f0;--weui-WHITE: #fff;--weui-LINK: #576b95;--weui-TEXTGREEN: #06ae56;--weui-FG: #000;--weui-BG: #fff;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: #fa9d3b;--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: #06ae56;--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: #10aeff;--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05);--weui-REDORANGE: #ff6146}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2c2c2c;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-FG-5: rgba(255, 255, 255, .1);--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-FG: #fff;--weui-BG: #000;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-REDORANGE: #ff6146}}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2c2c2c;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-FG-5: rgba(255, 255, 255, .1);--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-FG: #fff;--weui-BG: #000;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-REDORANGE: #ff6146}.wx-root[data-weui-mode=care],body[data-weui-mode=care]{--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #007DBB;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #018942;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0_5: #000000;--weui-GLYPH-0: #000000;--weui-GLYPH-1: rgba(0, 0, 0, .6);--weui-GLYPH-2: rgba(0, 0, 0, .42);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #4F8400;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #0075E2;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #2E8800;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #E17719;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #D14730;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6265F1;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #DC3636;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .1);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #BB8E00;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-RED: #DC3636;--weui-ORANGERED: #D14730;--weui-ORANGE: #E17719;--weui-YELLOW: #BB8E00;--weui-GREEN: #4F8400;--weui-LIGHTGREEN: #2E8800;--weui-TEXTGREEN: #06AE56;--weui-BLUE: #007DBB;--weui-INDIGO: #0075E2;--weui-PURPLE: #6265F1;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #E17719;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #007DBB;--weui-REDORANGE: #D14730;--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-BG-0: #ededed;--weui-BG-1: #f7f7f7;--weui-BG-2: #fff;--weui-BG-3: #f7f7f7;--weui-BG-4: #4c4c4c;--weui-BG-5: #fff;--weui-FG-0: #000000;--weui-FG-HALF: #000000;--weui-FG-1: rgba(0, 0, 0, .6);--weui-FG-2: rgba(0, 0, 0, .42);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-FG-5: rgba(0, 0, 0, .05);--weui-RED: #dc3636;--weui-ORANGERED: #d14730;--weui-ORANGE: #e17719;--weui-YELLOW: #bb8e00;--weui-GREEN: #4f8400;--weui-LIGHTGREEN: #2e8800;--weui-BRAND: #018942;--weui-BLUE: #007dbb;--weui-INDIGO: #0075e2;--weui-PURPLE: #6265f1;--weui-WHITE: #fff;--weui-LINK: #576b95;--weui-TEXTGREEN: #06ae56;--weui-FG: #000;--weui-BG: #fff;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: #e17719;--weui-TAG-BACKGROUND-ORANGE: rgba(225, 119, 25, .1);--weui-TAG-TEXT-GREEN: #06ae56;--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: #007dbb;--weui-TAG-BACKGROUND-BLUE: rgba(0, 125, 187, .1);--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05);--weui-REDORANGE: #d14730}@media (prefers-color-scheme: dark){.wx-root[data-weui-mode=care]:not([data-weui-theme=light]),body[data-weui-mode=care]:not([data-weui-theme=light]){--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2c2c2c;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-FG-5: rgba(255, 255, 255, .1);--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-FG: #fff;--weui-BG: #000;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-REDORANGE: #ff6146}}.wx-root[data-weui-mode=care][data-weui-theme=dark],body[data-weui-mode=care][data-weui-theme=dark]{--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2c2c2c;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-FG-5: rgba(255, 255, 255, .1);--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-FG: #fff;--weui-BG: #000;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-REDORANGE: #ff6146}.wx-root,body{--weui-BG-COLOR-ACTIVE: #ececec}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-COLOR-ACTIVE: #373737}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-COLOR-ACTIVE: #373737}}body,.wx-root,page{--weui-BTN-HEIGHT: 48;--weui-BTN-HEIGHT-MEDIUM: 40;--weui-BTN-HEIGHT-SMALL: 32}.wx-root,body{--weui-BTN-ACTIVE-MASK: rgba(0, 0, 0, .1)}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BTN-ACTIVE-MASK: rgba(255, 255, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BTN-ACTIVE-MASK: rgba(255, 255, 255, .1)}}.wx-root,body{--weui-BTN-DEFAULT-ACTIVE-BG: #e6e6e6}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BTN-DEFAULT-ACTIVE-BG: rgba(255, 255, 255, .126)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BTN-DEFAULT-ACTIVE-BG: rgba(255, 255, 255, .126)}}.wx-root,body{--weui-DIALOG-LINE-COLOR: rgba(0, 0, 0, .1)}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-DIALOG-LINE-COLOR: rgba(255, 255, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-DIALOG-LINE-COLOR: rgba(255, 255, 255, .1)}}.weui-btn{position:relative;display:block;width:184px;margin-left:auto;margin-right:auto;padding:12px 24px;box-sizing:border-box;font-weight:500;font-size:17px;text-align:center;text-decoration:none;color:#fff;line-height:1.41176471;border-radius:8px;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;-moz-user-select:none;user-select:none}.weui-btn:active:before{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background-color:var(--weui-BTN-ACTIVE-MASK);border-radius:8px}.weui-btn:active.weui-btn_loading:before,.weui-btn:active.weui-btn_disabled:before,.weui-btn:active[disabled]:before{display:none}.weui-btn_block{width:auto}.weui-btn_inline{display:inline-block}.weui-btn_default{color:var(--weui-FG-0);background-color:var(--weui-FG-5)}.weui-btn_default:not(.weui-btn_disabled):visited{color:var(--weui-FG-0)}.weui-btn_primary{background-color:var(--weui-BRAND)}.weui-btn_primary:not(.weui-btn_disabled):visited{color:#fff}.weui-btn_warn{color:var(--weui-RED);background-color:var(--weui-FG-5)}.weui-btn_warn:not(.weui-btn_disabled):visited{color:var(--weui-RED)}.weui-btn_overlay{color:var(--weui-BRAND);background-color:#fff}.weui-btn_overlay:not(.weui-btn_disabled):visited{color:var(--weui-BRAND)}.weui-btn_disabled,.weui-btn[disabled]{color:var(--weui-FG-4);background-color:var(--weui-BG-1)}.weui-btn_loading .weui-loading{margin:-.2em 8px 0 0}.weui-btn_loading .weui-mask-loading{margin:-.2em 8px 0 0;color:currentColor}.weui-btn_loading .weui-primary-loading{margin:-.2em 8px 0 0;vertical-align:middle;color:currentColor}.weui-btn_loading .weui-primary-loading:before{content:\"\"}.weui-btn_loading.weui-btn_primary{color:var(--weui-WHITE)}.weui-btn_cell{position:relative;display:block;margin-left:auto;margin-right:auto;box-sizing:border-box;font-size:17px;text-align:center;text-decoration:none;color:#fff;line-height:1.41176471;padding:16px;-webkit-tap-highlight-color:rgba(0,0,0,0);overflow:hidden;background-color:var(--weui-BG-5)}.weui-btn_cell+.weui-btn_cell{margin-top:16px}.weui-btn_cell:active{background-color:var(--weui-BG-COLOR-ACTIVE)}.weui-btn_cell__icon{display:inline-block;vertical-align:middle;width:24px;height:24px;margin:-.2em .34em 0 0}.weui-btn_cell-default{color:var(--weui-FG-0)}.weui-btn_cell-primary{color:var(--weui-LINK)}.weui-btn_cell-warn{color:var(--weui-RED)}.weui-bottom-fixed-opr-page{height:100%;display:flex;flex-direction:column}.weui-bottom-fixed-opr-page__content{min-height:0;flex:1;padding-bottom:80px;box-sizing:border-box;overflow-y:auto;-webkit-overflow-scrolling:touch}.weui-bottom-fixed-opr-page__tool{padding:16px 32px 24px;padding:16px calc(32px + constant(safe-area-inset-right)) calc(24px + constant(safe-area-inset-bottom)) calc(32px + constant(safe-area-inset-left));padding:16px calc(32px + env(safe-area-inset-right)) calc(24px + env(safe-area-inset-bottom)) calc(32px + env(safe-area-inset-left));background:#ffffff;position:relative;z-index:50}.weui-bottom-fixed-opr-page__tool:before{content:\"\";height:80px;background:linear-gradient(to top,#ffffff,rgba(255,255,255,0));position:absolute;bottom:calc(100% - 1px);left:0;right:0;transform:translateZ(0);pointer-events:none}.wx-root[data-weui-theme=dark] .weui-bottom-fixed-opr-page__tool,body[data-weui-theme=dark] .weui-bottom-fixed-opr-page__tool{background:#191919}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]) .weui-bottom-fixed-opr-page__tool,body:not([data-weui-theme=light]) .weui-bottom-fixed-opr-page__tool{background:#191919}}.wx-root[data-weui-theme=dark] .weui-bottom-fixed-opr-page__tool:before,body[data-weui-theme=dark] .weui-bottom-fixed-opr-page__tool:before{background:linear-gradient(to top,#191919,rgba(25,25,25,0))}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]) .weui-bottom-fixed-opr-page__tool:before,body:not([data-weui-theme=light]) .weui-bottom-fixed-opr-page__tool:before{background:linear-gradient(to top,#191919,rgba(25,25,25,0))}}.weui-bottom-fixed-opr-page__tips{margin-bottom:24px;padding:0 32px;text-align:center}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr{display:flex;align-items:center;justify-content:center}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn{width:184px;padding-left:16px;padding-right:16px}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2),.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn{margin:0 8px;width:136px}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2):first-child,.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn:first-child{margin-left:0}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2):last-child,.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn:last-child{margin-right:0}.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr{flex-direction:column}.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2),.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn{width:184px;margin:16px 0 0}.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2):first-child,.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn:first-child{margin-top:0}.weui-bottom-fixed-opr-page.weui-form{padding-top:0}.weui-bottom-fixed-opr-page.weui-form .weui-form__bd{padding-top:56px;padding-top:calc(56px + constant(safe-area-inset-top));padding-top:calc(56px + env(safe-area-inset-top))}.weui-bottom-fixed-opr-page.weui-form .weui-form__ft{padding-bottom:0}.weui-bottom-fixed-opr-page.weui-form .weui-form__control-area{margin-bottom:0}.weui-bottom-fixed-opr-page.weui-half-screen-dialog{padding:0}.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__hd,.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__bd,.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__ft{padding-left:24px;padding-left:calc(24px + constant(safe-area-inset-left));padding-left:calc(24px + env(safe-area-inset-left));padding-right:24px;padding-right:calc(24px + constant(safe-area-inset-right));padding-right:calc(24px + env(safe-area-inset-right))}.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__bd{padding-bottom:80px}.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__ft{padding-bottom:64px;padding-bottom:calc(64px + constant(safe-area-inset-bottom));padding-bottom:calc(64px + env(safe-area-inset-bottom))}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog{padding:0}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-half-screen-dialog__hd{padding:0 24px;padding:0 calc(24px + constant(safe-area-inset-right)) 0 calc(24px + constant(safe-area-inset-left));padding:0 calc(24px + env(safe-area-inset-right)) 0 calc(24px + env(safe-area-inset-left))}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-half-screen-dialog__bd{padding-bottom:0;display:flex;flex-direction:column}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-half-screen-dialog__ft{padding:0}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-bottom-fixed-opr-page{flex:1;min-height:0}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-bottom-fixed-opr-page__content{padding:0 24px;padding:0 calc(24px + constant(safe-area-inset-right)) 0 calc(24px + constant(safe-area-inset-left));padding:0 calc(24px + env(safe-area-inset-right)) 0 calc(24px + env(safe-area-inset-left))}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-bottom-fixed-opr{padding:16px 0 64px;padding:16px 0 calc(64px + constant(safe-area-inset-bottom));padding:16px 0 calc(64px + env(safe-area-inset-bottom))}button.weui-btn,input.weui-btn{border-width:0;outline:0;-webkit-appearance:none}button.weui-btn:focus,input.weui-btn:focus{outline:0}button.weui-btn_inline,input.weui-btn_inline,button.weui-btn_mini,input.weui-btn_mini{width:auto}.weui-btn_medium{font-size:14px;padding:10px 24px;line-height:calc((var(--weui-BTN-HEIGHT-MEDIUM) - 20) / 14)}.weui-btn_mini{display:inline-block;width:auto;line-height:calc((32 - 12) / 14);padding:6px 12px;font-size:14px;border-radius:6px}.weui-btn_xmini{display:inline-block;width:auto;padding:4px 12px;line-height:calc((28 - 8) / 14);font-size:14px;font-weight:500;border-radius:4px}.weui-btn+.weui-btn{margin-top:16px}.weui-btn.weui-btn_mini+.weui-btn.weui-btn_mini{margin-top:auto}.weui-btn.weui-btn_xmini+.weui-btn.weui-btn_xmini{margin-top:auto}.weui-btn.weui-btn_inline+.weui-btn.weui-btn_inline{margin-left:16px}.weui-btn-area{margin:48px 16px 8px}.weui-btn-area_inline{display:flex}.weui-btn-area_inline .weui-btn{margin-top:auto;margin-right:16px;width:100%;flex:1}.weui-btn-area_inline .weui-btn:last-child{margin-right:0}.weui-btn_reset{background:transparent;border:0;padding:0;outline:0;font-size:inherit}.weui-btn_icon{background:transparent;border:0;padding:0;outline:0;font-size:0}.weui-btn_icon:active [class*=weui-icon-]{color:var(--weui-FG-1)}.bluepacket_wx_img_placeholder{width:100%;background:var(--weui-BG-2, rgba(0, 0, 0, .02)) url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='80px' height='80px' viewBox='0 0 80 80' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3E9.\u5143\u7D20/\u52A0\u8F7D/Black%3C/title%3E%3Cdefs%3E%3ClinearGradient x1='94.0869141%25' y1='0%25' x2='94.0869141%25' y2='90.559082%25' id='linearGradient-1'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.67370605%25' x2='100%25' y2='90.6286621%25' id='linearGradient-2'%3E%3Cstop stop-color='%23606060' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cg id='\u9875\u9762-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' opacity='0.9'%3E%3Cg id='LoadingDefault'%3E%3Cpath d='M40,0 C62.09139,0 80,17.90861 80,40 C80,62.09139 62.09139,80 40,80 L40,73 C58.2253967,73 73,58.2253967 73,40 C73,21.7746033 58.2253967,7 40,7 L40,0 Z' id='\u8DEF\u5F84' fill='url(%23linearGradient-1)'%3E%3C/path%3E%3Cpath d='M40,0 L40,7 C21.7746033,7 7,21.7746033 7,40 C7,58.2253967 21.7746033,73 40,73 L40,80 C17.90861,80 0,62.09139 0,40 C0,17.90861 17.90861,0 40,0 Z' id='\u8DEF\u5F84' fill='url(%23linearGradient-2)'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23606060' cx='40.5' cy='3.5' r='3.5'%3E%3C/circle%3E%3C/g%3E%3CanimateTransform attributeName='transform' begin='0s' dur='1s' type='rotate' values='0 40 40;360 40 40' repeatCount='indefinite'/%3E%3C/g%3E%3C/svg%3E%0A\") no-repeat 50% 50%!important;background-size:16px!important;border-radius:8px}.wx_card_root{display:flex;flex-direction:column;-webkit-user-select:none;-moz-user-select:none;user-select:none;align-items:center;position:relative}.wx_card_root img{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.wx_card_root .card_wrap{width:100%;border-radius:8px;padding:0;margin:0;box-sizing:content-box;background-color:#00000005;position:relative;overflow:hidden}.wx_card_root .card_wrap .card_head{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:16px 16px 22px}.wx_card_root .card_wrap .card_head .head_left{display:flex}.wx_card_root .card_wrap .card_head .head_left .head_img_wrap{margin-right:8px;width:44px;height:44px}.wx_card_root .card_wrap .card_head .head_left .head_img_wrap .head_img{width:44px;height:44px;border-radius:36px}.wx_card_root .card_wrap .card_head .head_left .head_mid{display:flex;flex-direction:column}.wx_card_root .card_wrap .card_head .head_left .head_mid .head_mid_top{font-size:15px;font-family:PingFang SC;font-weight:500;color:var(--weui-GLYPH-WHITE-3, #ffffff);line-height:21px;word-break:break-all;margin-right:4px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;margin-top:2.5px}.wx_card_root .card_wrap .card_head .head_left .head_mid .head_mid_bottom{display:flex;align-items:center;margin-top:2px;font-weight:400;color:var(--weui-GLYPH-WHITE-0, rgba(255, 255, 255, .55))}.wx_card_root .card_wrap .card_head .head_left .head_mid .head_mid_bottom .r_icon{width:14px;height:14px}.wx_card_root .card_wrap .card_head .head_left .head_mid .head_mid_bottom .rtag_name{font-size:12px;font-family:PingFang SC;margin-left:2px}.wx_card_root .card_wrap .card_head .head_left .head_mid .head_mid_bottom .rtag_break{width:1px;height:10px;background-color:var(--weui-SECONDARY_BG, rgba(255, 255, 255, .1));margin:0 6px}.wx_card_root .card_wrap .card_head .head_left .head_mid .head_mid_bottom .card_sales{font-family:PingFang SC;font-style:normal;text-align:justify;line-height:16px;font-size:12px;word-break:break-all}.wx_card_root .card_wrap .card_head .head_right .tap_home_btn{white-space:nowrap;align-items:center;min-width:54px;min-height:32px;color:#fffc;background-color:#ffffff4d}.wx_card_root .card_wrap .card_body_warp_banner{border-top-left-radius:8px;border-top-right-radius:8px;background-color:var(--weui-BG-1, #F7F7F7);margin-top:-6px;overflow:hidden;padding:16px 16px 8px}.wx_card_root .card_wrap .card_body_warp_banner .product_card{display:flex;width:100%}.wx_card_root .card_wrap .card_body_warp_banner .product_card .product{position:relative;height:100%}.wx_card_root .card_wrap .card_body_warp_banner .product_card .product .product_image{width:100%;border-radius:4px;background-size:cover;background-position:center}.wx_card_root .card_wrap .card_body_warp_banner .product_card .product .product_price{background-color:#0003;border-radius:2px;position:absolute;right:4px;bottom:4px;padding-left:3px;padding-right:3px;font-weight:400;color:var(--weui-GLYPH-WHITE-3, #ffffff);line-height:16.8px;font-family:WeChatSansStd-Medium;line-height:normal;font-size:14px;background-size:cover;background-position:center}@font-face{font-family:WeChatSansStd-Medium;src:url(data:application/octet-stream;base64,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AwYAAwABBAkABAAsA1oAAwABBAkABQAYA4YAAwABBAkABgAsA54AAwABBAkABwBMA8oAAwABBAkACAAWBBYAAwABBAkACQBGBCwAAwABBAkACwAwBHIAAwABBAkAEAAeBKIAAwABBAkAEQAMBMAAAwABBAkAEwAiBMwAAwABCAQAAABmBO4AAwABCAQAAQAsBVQAAwABCAQAAgAOBYAAAwABCAQABAAsBY4AAwABCAQABwBMBboAAwABCAQACAAWBgYAAwABCAQACQBGBhwAAwABCAQAEAAeBmIAAwABCAQAEQAMBoBDb3B5cmlnaHQgKGMpIDIwMTcgYnkgVGVuY2VudC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5XZUNoYXQgU2FucyBTdGRNZWRpdW1IYW55aSBXZUNoYXQgU2FucyBTdGQtTWVkaXVtOyBWZXJzaW9uIDEuMDBXZUNoYXQgU2FucyBTdGQtTWVkaXVtVmVyc2lvbiAxLjAwV2VDaGF0LVNhbnMtU3RkLU1lZGl1bVdlQ2hhdCBTYW5zIGlzIGEgdHJhZGVtYXJrIG9mIFRlbmNlbnQuSGFueWkgRm9udHNaSEFORyBYdWFuLCBXQU5HIFRpYW5iaSwgTElVIFhpYW95dWh0dHA6Ly93d3cuaGFueWkuY29tLmNuL1dlQ2hhdCBTYW5zIFN0ZE1lZGl1bVdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW3boiSjX7QKMTIzNDU2Nzg5MENvcHlyaWdodCAoYykgMjAxNyBieSBUZW5jZW50LiBBbGwgcmlnaHRzIHJlc2VydmVkLldlQ2hhdCBTYW5zIFN0ZE1lZGl1bUhhbnlpIFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW07IFZlcnNpb24gMS4wMFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW1WZXJzaW9uIDEuMDBXZUNoYXQtU2Fucy1TdGQtTWVkaXVtV2VDaGF0IFNhbnMgaXMgYSB0cmFkZW1hcmsgb2YgVGVuY2VudC5IYW55aSBGb250c1pIQU5HIFh1YW4sIFdBTkcgVGlhbmJpLCBMSVUgWGlhb3l1V2VDaGF0IFNhbnMgU3RkLU1lZGl1bQBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIASABhAG4AeQBpACAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQA7ACAAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBWAGUAcgBzAGkAbwBuACAAMQAuADAAMABXAGUAQwBoAGEAdAAtAFMAYQBuAHMALQBTAHQAZAAtAE0AZQBkAGkAdQBtAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAFQAZQBuAGMAZQBuAHQALgBIAGEAbgB5AGkAIABGAG8AbgB0AHMAWgBIAEEATgBHACAAWAB1AGEAbgAsACAAVwBBAE4ARwAgAFQAaQBhAG4AYgBpACwAIABMAEkAVQAgAFgAaQBhAG8AeQB1AGgAdAB0AHAAOgAvAC8AdwB3AHcALgBoAGEAbgB5AGkALgBjAG8AbQAuAGMAbgAvAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAFMAdABkAE0AZQBkAGkAdQBtIKwAogAkAKMgqQClAAoAMQAyADMANAA1ADYANwA4ADkAMABDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABUAGUAbgBjAGUAbgB0AC4ASABhAG4AeQBpACAARgBvAG4AdABzAFoASABBAE4ARwAgAFgAdQBhAG4ALAAgAFcAQQBOAEcAIABUAGkAYQBuAGIAaQAsACAATABJAFUAIABYAGkAYQBvAHkAdQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZABNAGUAZABpAHUAbQAAAAIAAAAAAAD/tQAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAYwAAAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQATABQAFQAWABcAGAAZABoAGwAcAA8AEQAQAQIBAwCEAQQAvQAHAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgCFARMBFAEVAJYBFgEXARgBGQEaAA4A7wd1bmkwRTNGB3VuaTIwQjUNY29sb25tb25ldGFyeQd1bmlGRTY5BGRvbmcERXVybwd1bmkyMEIyB3VuaTIwQjQHdW5pMjBBRAd1bmkyMEJFB3VuaTIwQkEHdW5pMjBCQwd1bmkyMEE2B3VuaTIwQjEHdW5pMjBCRAd1bmkyMEI5B3VuaTIwQUEHdW5pMjBCOAd1bmkyMEFFB3VuaTIwQTkHdW5pRkZFMAd1bmlGRjA0B3VuaUZGRTEHdW5pRkZFNgd1bmlGRkU1) format(\"truetype\")}@font-face{font-family:WeChatSansStd-Medium;src:url(data:application/octet-stream;base64,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AwYAAwABBAkABAAsA1oAAwABBAkABQAYA4YAAwABBAkABgAsA54AAwABBAkABwBMA8oAAwABBAkACAAWBBYAAwABBAkACQBGBCwAAwABBAkACwAwBHIAAwABBAkAEAAeBKIAAwABBAkAEQAMBMAAAwABBAkAEwAiBMwAAwABCAQAAABmBO4AAwABCAQAAQAsBVQAAwABCAQAAgAOBYAAAwABCAQABAAsBY4AAwABCAQABwBMBboAAwABCAQACAAWBgYAAwABCAQACQBGBhwAAwABCAQAEAAeBmIAAwABCAQAEQAMBoBDb3B5cmlnaHQgKGMpIDIwMTcgYnkgVGVuY2VudC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5XZUNoYXQgU2FucyBTdGRNZWRpdW1IYW55aSBXZUNoYXQgU2FucyBTdGQtTWVkaXVtOyBWZXJzaW9uIDEuMDBXZUNoYXQgU2FucyBTdGQtTWVkaXVtVmVyc2lvbiAxLjAwV2VDaGF0LVNhbnMtU3RkLU1lZGl1bVdlQ2hhdCBTYW5zIGlzIGEgdHJhZGVtYXJrIG9mIFRlbmNlbnQuSGFueWkgRm9udHNaSEFORyBYdWFuLCBXQU5HIFRpYW5iaSwgTElVIFhpYW95dWh0dHA6Ly93d3cuaGFueWkuY29tLmNuL1dlQ2hhdCBTYW5zIFN0ZE1lZGl1bVdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW3boiSjX7QKMTIzNDU2Nzg5MENvcHlyaWdodCAoYykgMjAxNyBieSBUZW5jZW50LiBBbGwgcmlnaHRzIHJlc2VydmVkLldlQ2hhdCBTYW5zIFN0ZE1lZGl1bUhhbnlpIFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW07IFZlcnNpb24gMS4wMFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW1WZXJzaW9uIDEuMDBXZUNoYXQtU2Fucy1TdGQtTWVkaXVtV2VDaGF0IFNhbnMgaXMgYSB0cmFkZW1hcmsgb2YgVGVuY2VudC5IYW55aSBGb250c1pIQU5HIFh1YW4sIFdBTkcgVGlhbmJpLCBMSVUgWGlhb3l1V2VDaGF0IFNhbnMgU3RkLU1lZGl1bQBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIASABhAG4AeQBpACAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQA7ACAAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBWAGUAcgBzAGkAbwBuACAAMQAuADAAMABXAGUAQwBoAGEAdAAtAFMAYQBuAHMALQBTAHQAZAAtAE0AZQBkAGkAdQBtAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAFQAZQBuAGMAZQBuAHQALgBIAGEAbgB5AGkAIABGAG8AbgB0AHMAWgBIAEEATgBHACAAWAB1AGEAbgAsACAAVwBBAE4ARwAgAFQAaQBhAG4AYgBpACwAIABMAEkAVQAgAFgAaQBhAG8AeQB1AGgAdAB0AHAAOgAvAC8AdwB3AHcALgBoAGEAbgB5AGkALgBjAG8AbQAuAGMAbgAvAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAFMAdABkAE0AZQBkAGkAdQBtIKwAogAkAKMgqQClAAoAMQAyADMANAA1ADYANwA4ADkAMABDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABUAGUAbgBjAGUAbgB0AC4ASABhAG4AeQBpACAARgBvAG4AdABzAFoASABBAE4ARwAgAFgAdQBhAG4ALAAgAFcAQQBOAEcAIABUAGkAYQBuAGIAaQAsACAATABJAFUAIABYAGkAYQBvAHkAdQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZABNAGUAZABpAHUAbQAAAAIAAAAAAAD/tQAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAYwAAAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQATABQAFQAWABcAGAAZABoAGwAcAA8AEQAQAQIBAwCEAQQAvQAHAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgCFARMBFAEVAJYBFgEXARgBGQEaAA4A7wd1bmkwRTNGB3VuaTIwQjUNY29sb25tb25ldGFyeQd1bmlGRTY5BGRvbmcERXVybwd1bmkyMEIyB3VuaTIwQjQHdW5pMjBBRAd1bmkyMEJFB3VuaTIwQkEHdW5pMjBCQwd1bmkyMEE2B3VuaTIwQjEHdW5pMjBCRAd1bmkyMEI5B3VuaTIwQUEHdW5pMjBCOAd1bmkyMEFFB3VuaTIwQTkHdW5pRkZFMAd1bmlGRjA0B3VuaUZGRTEHdW5pRkZFNgd1bmlGRkU1) format(\"truetype\")}@font-face{font-family:WeChatSansStd-Medium;src:url(data:application/octet-stream;base64,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AwYAAwABBAkABAAsA1oAAwABBAkABQAYA4YAAwABBAkABgAsA54AAwABBAkABwBMA8oAAwABBAkACAAWBBYAAwABBAkACQBGBCwAAwABBAkACwAwBHIAAwABBAkAEAAeBKIAAwABBAkAEQAMBMAAAwABBAkAEwAiBMwAAwABCAQAAABmBO4AAwABCAQAAQAsBVQAAwABCAQAAgAOBYAAAwABCAQABAAsBY4AAwABCAQABwBMBboAAwABCAQACAAWBgYAAwABCAQACQBGBhwAAwABCAQAEAAeBmIAAwABCAQAEQAMBoBDb3B5cmlnaHQgKGMpIDIwMTcgYnkgVGVuY2VudC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5XZUNoYXQgU2FucyBTdGRNZWRpdW1IYW55aSBXZUNoYXQgU2FucyBTdGQtTWVkaXVtOyBWZXJzaW9uIDEuMDBXZUNoYXQgU2FucyBTdGQtTWVkaXVtVmVyc2lvbiAxLjAwV2VDaGF0LVNhbnMtU3RkLU1lZGl1bVdlQ2hhdCBTYW5zIGlzIGEgdHJhZGVtYXJrIG9mIFRlbmNlbnQuSGFueWkgRm9udHNaSEFORyBYdWFuLCBXQU5HIFRpYW5iaSwgTElVIFhpYW95dWh0dHA6Ly93d3cuaGFueWkuY29tLmNuL1dlQ2hhdCBTYW5zIFN0ZE1lZGl1bVdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW3boiSjX7QKMTIzNDU2Nzg5MENvcHlyaWdodCAoYykgMjAxNyBieSBUZW5jZW50LiBBbGwgcmlnaHRzIHJlc2VydmVkLldlQ2hhdCBTYW5zIFN0ZE1lZGl1bUhhbnlpIFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW07IFZlcnNpb24gMS4wMFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW1WZXJzaW9uIDEuMDBXZUNoYXQtU2Fucy1TdGQtTWVkaXVtV2VDaGF0IFNhbnMgaXMgYSB0cmFkZW1hcmsgb2YgVGVuY2VudC5IYW55aSBGb250c1pIQU5HIFh1YW4sIFdBTkcgVGlhbmJpLCBMSVUgWGlhb3l1V2VDaGF0IFNhbnMgU3RkLU1lZGl1bQBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIASABhAG4AeQBpACAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQA7ACAAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBWAGUAcgBzAGkAbwBuACAAMQAuADAAMABXAGUAQwBoAGEAdAAtAFMAYQBuAHMALQBTAHQAZAAtAE0AZQBkAGkAdQBtAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAFQAZQBuAGMAZQBuAHQALgBIAGEAbgB5AGkAIABGAG8AbgB0AHMAWgBIAEEATgBHACAAWAB1AGEAbgAsACAAVwBBAE4ARwAgAFQAaQBhAG4AYgBpACwAIABMAEkAVQAgAFgAaQBhAG8AeQB1AGgAdAB0AHAAOgAvAC8AdwB3AHcALgBoAGEAbgB5AGkALgBjAG8AbQAuAGMAbgAvAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAFMAdABkAE0AZQBkAGkAdQBtIKwAogAkAKMgqQClAAoAMQAyADMANAA1ADYANwA4ADkAMABDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABUAGUAbgBjAGUAbgB0AC4ASABhAG4AeQBpACAARgBvAG4AdABzAFoASABBAE4ARwAgAFgAdQBhAG4ALAAgAFcAQQBOAEcAIABUAGkAYQBuAGIAaQAsACAATABJAFUAIABYAGkAYQBvAHkAdQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZABNAGUAZABpAHUAbQAAAAIAAAAAAAD/tQAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAYwAAAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQATABQAFQAWABcAGAAZABoAGwAcAA8AEQAQAQIBAwCEAQQAvQAHAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgCFARMBFAEVAJYBFgEXARgBGQEaAA4A7wd1bmkwRTNGB3VuaTIwQjUNY29sb25tb25ldGFyeQd1bmlGRTY5BGRvbmcERXVybwd1bmkyMEIyB3VuaTIwQjQHdW5pMjBBRAd1bmkyMEJFB3VuaTIwQkEHdW5pMjBCQwd1bmkyMEE2B3VuaTIwQjEHdW5pMjBCRAd1bmkyMEI5B3VuaTIwQUEHdW5pMjBCOAd1bmkyMEFFB3VuaTIwQTkHdW5pRkZFMAd1bmlGRjA0B3VuaUZGRTEHdW5pRkZFNgd1bmlGRkU1) format(\"truetype\")}@font-face{font-family:WeChatSansStd-Medium;src:url(data:application/octet-stream;base64,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AwYAAwABBAkABAAsA1oAAwABBAkABQAYA4YAAwABBAkABgAsA54AAwABBAkABwBMA8oAAwABBAkACAAWBBYAAwABBAkACQBGBCwAAwABBAkACwAwBHIAAwABBAkAEAAeBKIAAwABBAkAEQAMBMAAAwABBAkAEwAiBMwAAwABCAQAAABmBO4AAwABCAQAAQAsBVQAAwABCAQAAgAOBYAAAwABCAQABAAsBY4AAwABCAQABwBMBboAAwABCAQACAAWBgYAAwABCAQACQBGBhwAAwABCAQAEAAeBmIAAwABCAQAEQAMBoBDb3B5cmlnaHQgKGMpIDIwMTcgYnkgVGVuY2VudC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5XZUNoYXQgU2FucyBTdGRNZWRpdW1IYW55aSBXZUNoYXQgU2FucyBTdGQtTWVkaXVtOyBWZXJzaW9uIDEuMDBXZUNoYXQgU2FucyBTdGQtTWVkaXVtVmVyc2lvbiAxLjAwV2VDaGF0LVNhbnMtU3RkLU1lZGl1bVdlQ2hhdCBTYW5zIGlzIGEgdHJhZGVtYXJrIG9mIFRlbmNlbnQuSGFueWkgRm9udHNaSEFORyBYdWFuLCBXQU5HIFRpYW5iaSwgTElVIFhpYW95dWh0dHA6Ly93d3cuaGFueWkuY29tLmNuL1dlQ2hhdCBTYW5zIFN0ZE1lZGl1bVdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW3boiSjX7QKMTIzNDU2Nzg5MENvcHlyaWdodCAoYykgMjAxNyBieSBUZW5jZW50LiBBbGwgcmlnaHRzIHJlc2VydmVkLldlQ2hhdCBTYW5zIFN0ZE1lZGl1bUhhbnlpIFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW07IFZlcnNpb24gMS4wMFdlQ2hhdCBTYW5zIFN0ZC1NZWRpdW1WZXJzaW9uIDEuMDBXZUNoYXQtU2Fucy1TdGQtTWVkaXVtV2VDaGF0IFNhbnMgaXMgYSB0cmFkZW1hcmsgb2YgVGVuY2VudC5IYW55aSBGb250c1pIQU5HIFh1YW4sIFdBTkcgVGlhbmJpLCBMSVUgWGlhb3l1V2VDaGF0IFNhbnMgU3RkLU1lZGl1bQBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIASABhAG4AeQBpACAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQA7ACAAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBWAGUAcgBzAGkAbwBuACAAMQAuADAAMABXAGUAQwBoAGEAdAAtAFMAYQBuAHMALQBTAHQAZAAtAE0AZQBkAGkAdQBtAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAFQAZQBuAGMAZQBuAHQALgBIAGEAbgB5AGkAIABGAG8AbgB0AHMAWgBIAEEATgBHACAAWAB1AGEAbgAsACAAVwBBAE4ARwAgAFQAaQBhAG4AYgBpACwAIABMAEkAVQAgAFgAaQBhAG8AeQB1AGgAdAB0AHAAOgAvAC8AdwB3AHcALgBoAGEAbgB5AGkALgBjAG8AbQAuAGMAbgAvAFcAZQBDAGgAYQB0ACAAUwBhAG4AcwAgAFMAdABkAE0AZQBkAGkAdQBtIKwAogAkAKMgqQClAAoAMQAyADMANAA1ADYANwA4ADkAMABDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANwAgAGIAeQAgAFQAZQBuAGMAZQBuAHQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZAAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIAVwBlAEMAaABhAHQAIABTAGEAbgBzACAAUwB0AGQALQBNAGUAZABpAHUAbQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABUAGUAbgBjAGUAbgB0AC4ASABhAG4AeQBpACAARgBvAG4AdABzAFoASABBAE4ARwAgAFgAdQBhAG4ALAAgAFcAQQBOAEcAIABUAGkAYQBuAGIAaQAsACAATABJAFUAIABYAGkAYQBvAHkAdQBXAGUAQwBoAGEAdAAgAFMAYQBuAHMAIABTAHQAZABNAGUAZABpAHUAbQAAAAIAAAAAAAD/tQAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAYwAAAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQATABQAFQAWABcAGAAZABoAGwAcAA8AEQAQAQIBAwCEAQQAvQAHAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgCFARMBFAEVAJYBFgEXARgBGQEaAA4A7wd1bmkwRTNGB3VuaTIwQjUNY29sb25tb25ldGFyeQd1bmlGRTY5BGRvbmcERXVybwd1bmkyMEIyB3VuaTIwQjQHdW5pMjBBRAd1bmkyMEJFB3VuaTIwQkEHdW5pMjBCQwd1bmkyMEE2B3VuaTIwQjEHdW5pMjBCRAd1bmkyMEI5B3VuaTIwQUEHdW5pMjBCOAd1bmkyMEFFB3VuaTIwQTkHdW5pRkZFMAd1bmlGRjA0B3VuaUZGRTEHdW5pRkZFNgd1bmlGRkU1) format(\"truetype\")}.wx_card_root .card_wrap .card_body_warp_banner .product_card&gt;:not(:first-child){margin-left:4px}.wx_card_root .card_wrap .card_body_warp_banner .banner_card{display:flex;width:100%}.wx_card_root .card_wrap .card_body_warp_banner .banner_card .banner{position:relative;height:100%}.wx_card_root .card_wrap .card_body_warp_banner .banner_card .banner .banner_image_wrap{position:relative}.wx_card_root .card_wrap .card_body_warp_banner .banner_card .banner .banner_image_wrap .banner_image{width:100%;border-radius:4px 4px 0 0;background-size:cover;background-position:center;-o-object-fit:cover;object-fit:cover}.wx_card_root .card_wrap .card_body_warp_banner .banner_card .banner .banner_image_wrap .banner_mask{background-color:#00000008;border-radius:4px 4px 0 0;position:absolute;top:0;right:0;bottom:0;left:0;z-index:10}.wx_card_root .card_wrap .card_body_warp_banner .banner_card .banner .banner_image_wrap .banner_type{width:20px;height:20px;position:absolute;bottom:2px;right:2px;z-index:20}.wx_card_root .card_wrap .card_body_warp_banner .banner_card .banner .banner_title_wrap{position:relative;height:27px;border-radius:0 0 4px 4px;padding-left:6px}.wx_card_root .card_wrap .card_body_warp_banner .banner_card .banner .banner_title_wrap .banner_title{font-size:12px;font-family:PingFang SC;font-weight:500;line-height:16.8px;color:var(--weui-GLYPH-WHITE-3, #ffffff);padding-top:4px;padding-bottom:6px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.wx_card_root .card_wrap .card_body_warp_banner .banner_card&gt;:not(:first-child){margin-left:6px}.wx_card_root .card_wrap .card_body_warp_banner .curated_card{display:flex;width:100%}.wx_card_root .card_wrap .card_body_warp_banner .curated_card .curated{width:100%;height:100%}.wx_card_root .card_wrap .card_body_warp_banner .curated_card .curated .curated_image_wrap{border-radius:4px;position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden}.wx_card_root .card_wrap .card_body_warp_banner .curated_card .curated .curated_image_wrap .mask-bg{border-radius:4px;position:absolute;top:3px;left:3px;right:3px;bottom:3px;background-image:url(https://res.wx.qq.com/shop/public/2025-03-10/f5d316c8-e902-44fe-80a1-5320cb32d508.png);background-size:cover}.wx_card_root .card_wrap .card_body_warp_banner .curated_card .curated .curated_image_wrap .set_cover_img{border-radius:4px;background-size:cover;background-position:center;-o-object-fit:cover;object-fit:cover}.wx_card_root .card_wrap .card_body_warp_banner .curated_card .curated .desc_wrap{display:flex;align-items:center;justify-content:start;height:20px;margin-top:4px}.wx_card_root .card_wrap .card_body_warp_banner .curated_card .curated .desc_wrap .desc{font-size:14px;font-family:PingFang SC;font-weight:400;color:var(--weui-FG-0, #000000);height:20px;line-height:20px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.wx_card_root .card_wrap .card_body_warp_banner .curated_card .curated .desc_wrap .count{font-size:12px;font-family:SF Pro Text,\"system-ui\";font-weight:500;height:20px;color:var(--weui-GLYPH-2, rgba(0, 0, 0, .3));line-height:20px;margin-left:4px}.wx_card_root .card_wrap .card_body_warp_banner .curated_card&gt;:not(:first-child){margin-left:6px}.wx_card_root .card_wrap .card_body_warp_banner .shop_icon_wrap{width:100%;display:flex;align-items:center;justify-content:flex-start;margin-top:8px}.wx_card_root .card_wrap .card_body_warp_banner .shop_icon_wrap .shop_icon{width:14px;height:14px;margin-right:2px;background-image:url(https://res.wx.qq.com/shop/public/2025-09-19/1c1526b5-99ba-49a3-9a82-5750bb722c63.png);background-repeat:no-repeat;background-size:contain}.wx_card_root .card_wrap .card_body_warp_banner .shop_icon_wrap .shop_name{font-size:12px;font-family:PingFang SC;font-weight:400;color:var(--weui-GLYPH-2, rgba(0, 0, 0, .55));line-height:16.8px}.wx_card_root .card_wrap .shop_status_desc{color:#0000004d;height:114px;display:flex;align-items:center;justify-content:center}@media (prefers-color-scheme: dark){.wx_card_root .card_wrap{background-color:#ffffff05}.wx_card_root .card_wrap .card_body_warp_banner .shop_icon_wrap .shop_icon{background-image:url(https://res.wx.qq.com/shop/public/2025-09-19/ad530d26-e227-4123-a070-cf5939d96d03.png)}.wx_card_root .card_wrap .shop_status_desc{color:#ffffff4d}.bluepacket_wx_img_placeholder{background-color:#ffffff05}}\n",
    n$3 = {
      loaded: "data-loaded",
      customstyle: "data-customstyle",
      scrollBlur: "data-scroll-blur",
      wapExportToken: "data-wap-export-token",
      appid: "data-appid",
      shopEncryptKey: "data-shop_encrypt_key",
      is_hover: "data-is-hover",
      is_selected: "data-is-selected"
    };
  function q$1(B) {
    var A = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : {};
    var e = o$6.call(this, n$3);
    return e = o$6.call(this, n$3), e.loaded = Number(e.loaded || 0), e.appid = e.appid || "", e.shopEncryptKey = e.shopEncryptKey || "", e.scrollBlur = Number(e.scrollBlur || 0), e.is_hover *= 1, e.is_selected *= 1, _objectSpread$5({
      platform: B,
      extraInfo: A
    }, e);
  }
  function aA() {
    var B = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    H$3(Object.assign(B, {
      Component: X$1,
      styleText: B.isDev ? B.devStyleText : v,
      customName: "mp-common-shopprofile",
      watchAttr: Object.values(n$3),
      getProps: q$1,
      eventName: ["document-click", "expose", "element-click", "onFrameReady", "card-click"]
    }));
  }

  var o$1 = (typeof globalThis === "undefined" ? "undefined" : _typeof$2(globalThis)) &lt; "u" ? globalThis : (typeof window === "undefined" ? "undefined" : _typeof$2(window)) &lt; "u" ? window : (typeof global === "undefined" ? "undefined" : _typeof$2(global)) &lt; "u" ? global : (typeof self === "undefined" ? "undefined" : _typeof$2(self)) &lt; "u" ? self : {};

  function _regeneratorRuntime() {  _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof$2(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof$2(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  function ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r &amp;&amp; (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
  function _objectSpread$4(e) { for (var r = 1; r &lt; arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) { defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
  function j(_x) {
    return _j.apply(this, arguments);
  }
  function _j() {
    _j = asyncToGenerator( _regeneratorRuntime().mark(function _callee31(i) {
      return _regeneratorRuntime().wrap(function _callee31$(_context31) {
        while (1) switch (_context31.prev = _context31.next) {
          case 0:
            return _context31.abrupt("return", new Promise(function (e) {
              R$4.invoke("handleEcsAction", {
                action: "openEcs",
                ecsJumpInfoBase64: i
              }, function (t) {
                e(t);
              });
            }));
          case 1:
          case "end":
            return _context31.stop();
        }
      }, _callee31);
    }));
    return _j.apply(this, arguments);
  }
  function P$1() {
    return _P.apply(this, arguments);
  }
  function _P() {
    _P = asyncToGenerator( _regeneratorRuntime().mark(function _callee32() {
      return _regeneratorRuntime().wrap(function _callee32$(_context32) {
        while (1) switch (_context32.prev = _context32.next) {
          case 0:
            return _context32.abrupt("return", new Promise(function (i) {
              R$4.invoke("handleEcsAction", {
                action: "checkAction",
                params: {
                  method: "isActionAvailable",
                  actionName: "openEcs",
                  actionVersion: "1"
                }
              }, function (e) {
                e &amp;&amp; e.result ? i(!0) : i(!1);
              });
            }));
          case 1:
          case "end":
            return _context32.stop();
        }
      }, _callee32);
    }));
    return _P.apply(this, arguments);
  }
  var ae = function ae(i) {
      return (Number(i) / 100).toFixed(2).replace(/([0-9]+(\.[0-9]+[1-9])?)(\.?0+$)/, "$1");
    },
    H$1 = 8,
    ne = {
      NORMAL: 1
    },
    _ = {
      CARD: 1,
      PRODUCT: 2
    },
    G$1 = {
      EXPOSE: 1,
      CLICK: 2
    };
  var l$2;
  function K$1() {
    var e, t;
    return {
      exportkey: Url.getQuery("exportkey"),
      __biz: window.biz,
      article_info: {
        mp_biz: (window == null ? void 0 : window.atob(window.biz || "")) || "",
        item_idx: Number(window.itemidx || window.idx),
        appmsgid: Number(window.mid),
        item_show_type: Number(window.item_show_type),
        mp_article_scene: Number(window.source),
        mp_sub_scene: Number(window.subscene),
        mp_get_a8key_scene: Number(window.ascene),
        carrier_type: ((t = (e = window.cgiData) == null ? void 0 : e.product_activity) == null ? void 0 : t.activity_type) || 0,
        search_click_id: Url.getQuery("search_click_id")
      }
    };
  }
  var se = 100;
  var M = 0;
  function W() {
    return _W.apply(this, arguments);
  }
  function _W() {
    _W = asyncToGenerator( _regeneratorRuntime().mark(function _callee33() {
      return _regeneratorRuntime().wrap(function _callee33$(_context33) {
        while (1) switch (_context33.prev = _context33.next) {
          case 0:
            return _context33.abrupt("return", l$2 || (window.__secPageAuthPromise ? new Promise(function (i) {
              window.__secPageAuthPromise.then(function () {
                l$2 = K$1(), i(l$2);
              });
            }) : (_typeof$2(window.itemidx || window.idx) &gt; "u" || _typeof$2(window.mid) &gt; "u" || _typeof$2(window.item_show_type) &gt; "u") &amp;&amp; M &lt; se ? (M++, new Promise(function (e) {
              setTimeout(function () {
                e(W());
              }, 16);
            })) : (l$2 = K$1(), l$2)));
          case 1:
          case "end":
            return _context33.stop();
        }
      }, _callee33);
    }));
    return _W.apply(this, arguments);
  }
  function ce(i, e) {
    var t = {
      base_req: {
        action: i
      },
      ext_info: JSON.stringify(e)
    };
    return {
      data: JSON.stringify(t)
    };
  }
  function X(i) {
    if (!i) return;
    var e = i.data;
    e.params &amp;&amp; (e.params = JSON.parse(e.params), e.params = JSON.stringify(_objectSpread$4(_objectSpread$4({}, e.params), {}, {
      scene: Number(window.source),
      subscene: Number(window.subscene),
      ClientVersion: parseInt(window.clientversion || "", 16),
      SessionId: window.sessionid || ""
    }))), ajax({
      type: "POST",
      url: "/mp/c_psmaterial_info?action=get_windowproduct",
      timeout: 5e3,
      dataType: "json",
      data: ce("ReportMMData23782", _objectSpread$4({}, e)),
      success: function success() {},
      error: function error() {
        console.log("[error]");
      }
    });
  }
  var ue = {
    mixins: [k$1],
    props: {
      shopAppid: {
        type: String,
        "default": ""
      },
      curatedSetKey: {
        type: String,
        "default": ""
      },
      platform: {
        type: String,
        "default": "web"
      }
    },
    data: function data() {
      return {
        getColletionResp: null,
        requestinggetCollectionCardResp: !1,
        _supportOpenEcs: void 0,
        forceUpdate: !1,
        iframeLoading: !0,
        isDark: window.matchMedia &amp;&amp; window.matchMedia("(prefers-color-scheme: dark)").matches,
        getShopCollectionPromise: null,
        productWidth: 0,
        productHeight: 0
      };
    },
    computed: {
      cardStyle: function cardStyle() {
        var i = {};
        return this.platform === "web" ? (i.width = "350px", this.isDark &amp;&amp; (i.background = "rgba(0, 0, 0, 0.02)")) : i.width = "100%", i;
      },
      placeholderStyle: function placeholderStyle() {
        var i = {
          height: "108px"
        };
        return this.platform === "web" ? i.width = "350px" : i.width = "100%", i;
      },
      collectionProfileName: function collectionProfileName() {
        var i, e;
        return ((e = (i = this.getColletionResp) == null ? void 0 : i.curated_set) == null ? void 0 : e.title) || "";
      },
      shopName: function shopName() {
        var i;
        return ((i = this.getColletionResp) == null ? void 0 : i.shop_name) || "";
      },
      showProduct: function showProduct() {
        var i, e;
        return (((e = (i = this.getColletionResp) == null ? void 0 : i.curated_set) == null ? void 0 : e.top_brief_products) || []).length &gt; 2;
      },
      products: function products() {
        var i, e;
        return (((e = (i = this.getColletionResp) == null ? void 0 : i.curated_set) == null ? void 0 : e.top_brief_products) || []).slice(0, 3);
      },
      collectionJumpInfo: function collectionJumpInfo() {
        var i, e;
        return ((e = (i = this.getColletionResp) == null ? void 0 : i.curated_set) == null ? void 0 : e.set_jump_info_base64_str) || "";
      },
      collectionStatus: function collectionStatus() {
        return 1;
      },
      isCollectionStatusNormal: function isCollectionStatusNormal() {
        return this.collectionStatus === ne.NORMAL;
      },
      statusDesc: function statusDesc() {
        return "合集异常";
      },
      isDel: function isDel() {
        var i, e;
        return ((e = (i = this.getColletionResp) == null ? void 0 : i.curated_set) == null ? void 0 : e.del_flag) === 1;
      },
      iconStyle: function iconStyle() {
        if (this.isDark &amp;&amp; this.platform === "web") return {
          backgroundImage: 'url("https://res.wx.qq.com/shop/public/2025-05-10/321b820e-8d8a-4083-8e0f-40b2b01fc8ef.png")'
        };
      },
      pruductStyle: function pruductStyle() {
        return {
          width: "".concat(this.productWidth, "px"),
          height: "".concat(this.productHeight, "px")
        };
      }
    },
    created: function created() {
      console.log("created this.shopAppid=".concat(this.shopAppid, " this.curatedSetKey=").concat(this.curatedSetKey)), this.getCollectionCard();
    },
    mounted: function mounted() {
      var _this = this;
      return asyncToGenerator( _regeneratorRuntime().mark(function _callee() {
        return _regeneratorRuntime().wrap(function _callee$(_context) {
          while (1) switch (_context.prev = _context.next) {
            case 0:
              _this.extraInfo.window &amp;&amp; _this.extraInfo.window.addEventListener("message", _this.handleMessage), _this.extraInfo.window &amp;&amp; _this.extraInfo.window.addEventListener("click", _this.handleDocumentClick), _this.reportExpose();
            case 1:
            case "end":
              return _context.stop();
          }
        }, _callee);
      }))();
    },
    beforeDestroy: function beforeDestroy() {
      this.extraInfo.window &amp;&amp; this.extraInfo.window.removeEventListener("message", this.handleMessage), this.extraInfo.window &amp;&amp; this.extraInfo.window.removeEventListener("click", this.handleDocumentClick);
    },
    watch: {
      shopAppid: {
        handler: function handler() {
          console.log("shopAppid change to", this.shopAppid), this.forceUpdateCollectionCard();
        }
      },
      curatedSetKey: {
        handler: function handler() {
          console.log("curatedSetKey change to", this.curatedSetKey), this.forceUpdateCollectionCard();
        }
      }
    },
    methods: {
      updateImagesSize: function updateImagesSize() {
        if (!this.products || !this.products.length || !this.$refs.products_container) return;
        var e = this.$refs.products_container.offsetWidth;
        this.productWidth = (e - 4 * 2) / 3, this.productHeight = this.productWidth;
      },
      handleDocumentClick: function handleDocumentClick(i) {
        this.$refs.js_custom_element.contains(i.target) || this.$emit("document-click", i);
      },
      formatPriceInit: function formatPriceInit(i) {
        return ae(i);
      },
      initReport: function initReport() {
        var _this2 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee2() {
          return _regeneratorRuntime().wrap(function _callee2$(_context2) {
            while (1) switch (_context2.prev = _context2.next) {
              case 0:
                _context2.next = 2;
                return W();
              case 2:
                _context2.next = 4;
                return _this2.getCollectionCard();
              case 4:
              case "end":
                return _context2.stop();
            }
          }, _callee2);
        }))();
      },
      reportExpose: function reportExpose() {
        var _this3 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee3() {
          return _regeneratorRuntime().wrap(function _callee3$(_context3) {
            while (1) switch (_context3.prev = _context3.next) {
              case 0:
                _context3.next = 2;
                return _this3.report(_.CARD, G$1.EXPOSE);
              case 2:
                _context3.next = 4;
                return _this3.report(_.PRODUCT, G$1.EXPOSE);
              case 4:
              case "end":
                return _context3.stop();
            }
          }, _callee3);
        }))();
      },
      report: function report(i, e, t) {
        var _this4 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee4() {
          var s, n, r, o, u, d, p, _u, _d;
          return _regeneratorRuntime().wrap(function _callee4$(_context4) {
            while (1) switch (_context4.prev = _context4.next) {
              case 0:
                if (!(_this4.platform !== "wechat")) {
                  _context4.next = 2;
                  break;
                }
                return _context4.abrupt("return");
              case 2:
                _context4.next = 4;
                return _this4.initReport();
              case 4:
                r = "";
                i === _.CARD ? r = "collection_card" : i === _.PRODUCT &amp;&amp; (r = "commodity_card");
                o = "";
                if (e === G$1.CLICK ? o = "element_click" : e === G$1.EXPOSE &amp;&amp; (o = "element_valid_expose"), i === _.PRODUCT &amp;&amp; e === G$1.EXPOSE) {
                  u = _this4.products;
                  for (d = 0; d &lt; u.length; ++d) {
                    p = {
                      logid: "23782",
                      data: {
                        event: o,
                        params: JSON.stringify({
                          page_name: "mp_article_page",
                          element_name: r,
                          productid: u[d].product_id,
                          mp_article_bizuin: l$2.article_info.mp_biz,
                          mp_article_appmsgid: l$2.article_info.appmsgid,
                          mp_article_item_idx: l$2.article_info.item_idx,
                          mp_article_item_show_type: l$2.article_info.item_show_type,
                          scene: l$2.article_info.mp_article_scene,
                          cardtype: H$1,
                          appid: _this4.shopAppid
                        })
                      }
                    };
                    X(p);
                  }
                } else {
                  _u = "";
                  _typeof$2(t) &lt; "u" &amp;&amp; (_u = (n = (s = _this4.products) == null ? void 0 : s[t]) == null ? void 0 : n.product_id);
                  _d = {
                    logid: "23782",
                    data: {
                      event: o,
                      params: JSON.stringify({
                        page_name: "mp_article_page",
                        element_name: r,
                        productid: _u,
                        mp_article_bizuin: l$2.article_info.mp_biz,
                        mp_article_appmsgid: l$2.article_info.appmsgid,
                        mp_article_item_idx: l$2.article_info.item_idx,
                        mp_article_item_show_type: l$2.article_info.item_show_type,
                        scene: l$2.article_info.mp_article_scene,
                        cardtype: H$1,
                        appid: _this4.shopAppid
                      })
                    }
                  };
                  X(_d);
                }
              case 8:
              case "end":
                return _context4.stop();
            }
          }, _callee4);
        }))();
      },
      forceUpdateCollectionCard: function forceUpdateCollectionCard() {
        var _this5 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee5() {
          return _regeneratorRuntime().wrap(function _callee5$(_context5) {
            while (1) switch (_context5.prev = _context5.next) {
              case 0:
                _this5.forceUpdate = !0;
                _context5.prev = 1;
                _context5.next = 4;
                return _this5.getCollectionCard();
              case 4:
                _context5.next = 9;
                break;
              case 6:
                _context5.prev = 6;
                _context5.t0 = _context5["catch"](1);
                console.error(_context5.t0);
              case 9:
                _this5.forceUpdate = !1;
              case 10:
              case "end":
                return _context5.stop();
            }
          }, _callee5, null, [[1, 6]]);
        }))();
      },
      getCollectionCard: function getCollectionCard() {
        var _this6 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee6() {
          var i, e, t, r;
          return _regeneratorRuntime().wrap(function _callee6$(_context6) {
            while (1) switch (_context6.prev = _context6.next) {
              case 0:
                if (!(!_this6.shopAppid || !_this6.curatedSetKey)) {
                  _context6.next = 2;
                  break;
                }
                return _context6.abrupt("return", Promise.reject({}));
              case 2:
                if (!(_this6.requestinggetCollectionCardResp &amp;&amp; _this6.getShopCollectionPromise)) {
                  _context6.next = 4;
                  break;
                }
                return _context6.abrupt("return", _this6.getShopCollectionPromise);
              case 4:
                if (!(_this6.getColletionResp &amp;&amp; !_this6.forceUpdate)) {
                  _context6.next = 6;
                  break;
                }
                return _context6.abrupt("return", _this6.getColletionResp);
              case 6:
                _this6.requestinggetCollectionCardResp = !0;
                _context6.prev = 7;
                _context6.next = 10;
                return W();
              case 10:
                _context6.next = 15;
                break;
              case 12:
                _context6.prev = 12;
                _context6.t0 = _context6["catch"](7);
                console.error("getMPInfo fail ".concat(_context6.t0, "."), _context6.t0);
              case 15:
                i = (l$2 == null ? void 0 : l$2.exportkey) || Url.getQuery("exportkey") || "", e = btoa(JSON.stringify((l$2 == null ? void 0 : l$2.article_info) || {})), t = _this6, r = "/mmec/biz_mpgetshopcuratedset?shop_appid=".concat(_this6.shopAppid, "&amp;curated_set_key=").concat(encodeURIComponent(_this6.curatedSetKey), "&amp;exportkey=").concat(i, "&amp;cardtype=").concat(H$1, "&amp;article_info=").concat(e);
                return _context6.abrupt("return", (_this6.getShopCollectionPromise = new Promise(function (o, s) {
                  ajax({
                    type: "GET",
                    url: r,
                    success: function success(n) {
                      if (console.log("/mmec/biz_mpgetshopcuratedset res", n), typeof n == "string") try {
                        n = JSON.parse(n);
                      } catch (u) {
                        n = {}, Log.error("/mmec/biz_mpgetshopcuratedset parse res error. res=".concat(n, " err=").concat(u));
                      }
                      t.getColletionResp = n, t.requestinggetCollectionCardResp = !1, setTimeout(function () {
                        t.updateImagesSize();
                      }), t.$emit("onFrameReady", {
                        nickName: t.collectionProfileName
                      }), t.iframeLoading = !1, o();
                    },
                    error: function error(n) {
                      t.requestinggetCollectionCardResp = !1, t.iframeLoading = !1, console.error("getCollectionCard err", n), s(n);
                    }
                  });
                }), _this6.getShopCollectionPromise));
              case 17:
              case "end":
                return _context6.stop();
            }
          }, _callee6, null, [[7, 12]]);
        }))();
      },
      supportOpenEcs: function supportOpenEcs() {
        var _this7 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee7() {
          return _regeneratorRuntime().wrap(function _callee7$(_context7) {
            while (1) switch (_context7.prev = _context7.next) {
              case 0:
                if (!(_typeof$2(_this7._supportOpenEcs) &lt; "u")) {
                  _context7.next = 4;
                  break;
                }
                _context7.t0 = _this7._supportOpenEcs;
                _context7.next = 8;
                break;
              case 4:
                _context7.next = 6;
                return P$1();
              case 6:
                _this7._supportOpenEcs = _context7.sent;
                _context7.t0 = _this7._supportOpenEcs;
              case 8:
                return _context7.abrupt("return", _context7.t0);
              case 9:
              case "end":
                return _context7.stop();
            }
          }, _callee7);
        }))();
      },
      openJumpInfo: function openJumpInfo(i) {
        var _this8 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee8() {
          var e, t, r, o;
          return _regeneratorRuntime().wrap(function _callee8$(_context8) {
            while (1) switch (_context8.prev = _context8.next) {
              case 0:
                if (!(_this8.platform === "wechat")) {
                  _context8.next = 16;
                  break;
                }
                if (!_this8.isDel) {
                  _context8.next = 4;
                  break;
                }
                (e = window == null ? void 0 : window.weui) == null || e.toast("商品合集已被删除", {
                  extClass: "weui-toast_text"
                });
                return _context8.abrupt("return");
              case 4:
                _context8.next = 6;
                return P$1();
              case 6:
                o = _context8.sent;
                if (!o) {
                  _context8.next = 13;
                  break;
                }
                console.log("supportOpenEcs=".concat(o, ", jumpInfo=").concat(i));
                _context8.next = 11;
                return j(i);
              case 11:
                _context8.next = 14;
                break;
              case 13:
                (t = window == null ? void 0 : window.weui) == null || t.toast("当前版本不支持打开店铺", {
                  extClass: "weui-toast_text"
                });
              case 14:
                _context8.next = 17;
                break;
              case 16:
                (r = window == null ? void 0 : window.weui) == null || r.toast("请在手机微信中打开", {
                  extClass: "weui-toast_text"
                });
              case 17:
              case "end":
                return _context8.stop();
            }
          }, _callee8);
        }))();
      },
      jumpSet: function jumpSet() {
        var _this9 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee9() {
          return _regeneratorRuntime().wrap(function _callee9$(_context9) {
            while (1) switch (_context9.prev = _context9.next) {
              case 0:
                console.log("点击"), _this9.openJumpInfo(_this9.collectionJumpInfo), _this9.report(_.CARD, G$1.CLICK);
              case 1:
              case "end":
                return _context9.stop();
            }
          }, _callee9);
        }))();
      },
      jumpProduct: function jumpProduct(i, e) {
        var _this10 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee10() {
          return _regeneratorRuntime().wrap(function _callee10$(_context10) {
            while (1) switch (_context10.prev = _context10.next) {
              case 0:
                _this10.openJumpInfo(i.detail_page_jump_info_base64_str || ""), _this10.report(_.PRODUCT, G$1.CLICK, e);
              case 1:
              case "end":
                return _context10.stop();
            }
          }, _callee10);
        }))();
      }
    }
  };
  var de = function de() {
      var e = this,
        t = e._self._c;
      return t("div", {
        staticClass: "shopcollection_warp"
      }, [e.iframeLoading ? t("div", {
        staticClass: "collection_wx_img_placeholder",
        style: e.placeholderStyle
      }) : e.isCollectionStatusNormal ? t("div", {
        staticClass: "card_wrap",
        style: e.cardStyle
      }, [e.collectionProfileName ? t("div", {
        staticClass: "card_head",
        on: {
          click: e.jumpSet
        }
      }, [t("div", {
        staticClass: "head_left"
      }, [t("div", {
        staticClass: "head_mid"
      }, [t("div", {
        staticClass: "head_mid_top"
      }, [e._v(e._s(e.collectionProfileName))])])]), e._m(0)]) : e._e(), e.showProduct ? t("div", {
        ref: "products_container",
        staticClass: "product_list"
      }, e._l(e.products, function (r, o) {
        return t("div", {
          staticClass: "product",
          style: e.pruductStyle,
          on: {
            click: function click(s) {
              return e.jumpProduct(r, o);
            }
          }
        }, [r.head_img_url ? t("img", {
          staticClass: "product_image",
          attrs: {
            src: r.head_img_url
          }
        }) : e._e(), t("div", {
          staticClass: "product_price"
        }, [e._v(" ¥" + e._s(e.formatPriceInit(r.price)) + " ")])]);
      }), 0) : e._e(), e.shopName ? t("div", {
        staticClass: "shop_icon_wrap"
      }, [t("div", {
        staticClass: "shop_icon",
        style: e.iconStyle
      }), t("div", {
        staticClass: "shop_name"
      }, [e._v(e._s(e.shopName))])]) : e._e()]) : t("div", {
        staticClass: "card_wrap",
        style: e.cardStyle
      }, [t("div", {
        staticClass: "shop_status_desc"
      }, [e._v(e._s(e.statusDesc))])])]);
    },
    pe = [function () {
      var i = this,
        e = i._self._c;
      return e("div", {
        staticClass: "head_right"
      }, [e("button", {
        staticClass: "tap_home_btn weui-btn weui-btn_default weui-btn_mini"
      }, [i._v("详情")])]);
    }],
    le = v$2(ue, de, pe, !1, null, null, null, null);
  var we = le.exports,
    R = {
      LINK: 1,
      SHOP: 2
    },
    x = {
      CARD: 1,
      PRODUCT: 2
    },
    C$2 = {
      EXPOSE: 1,
      CLICK: 2
    },
    T$2 = {
      Init: 1,
      On: 2,
      End: 3
    },
    ge = defineProperty(defineProperty(defineProperty({
      mixins: [k$1],
      components: {},
      props: {
        title: {
          type: String,
          "default": ""
        },
        encrypt_key: {
          type: String,
          "default": ""
        },
        isMock: {
          type: Number,
          "default": 0
        },
        cardtype: {
          type: Number,
          "default": 0
        }
      },
      data: function data() {
        return {
          iframeLoading: !1,
          isDark: window.matchMedia &amp;&amp; window.matchMedia("(prefers-color-scheme: dark)").matches,
          isShow: !0,
          resp: null,
          productWidth: 0,
          productHeight: 0,
          getShopCardPromise: null,
          updateShopCardPromise: null,
          requestingGetBulkBuyCardResp: !1,
          requestingGetQrcode: !1,
          getQrcodePromise: null,
          qrcodeUrl: ""
        };
      },
      computed: {
        cardStyle: function cardStyle() {
          var i = {};
          return this.platform === "web" ? (i.width = "350px", this.isDark &amp;&amp; (i.background = "rgba(0, 0, 0, 0.02)")) : i.width = "100%", i;
        },
        placeholderStyle: function placeholderStyle() {
          return _objectSpread$4({
            height: "108px"
          }, this.cardStyle);
        },
        productStyle: function productStyle() {
          return {
            width: "".concat(this.productWidth, "px")
          };
        },
        pruductImgStyle: function pruductImgStyle() {
          return {
            width: "".concat(this.productWidth, "px"),
            height: "".concat(this.productHeight, "px")
          };
        },
        bulkBuyActivityCard: function bulkBuyActivityCard() {
          var i;
          return (i = this.resp) == null ? void 0 : i.bulk_buy_activity_card;
        },
        activityInfo: function activityInfo() {
          var i;
          return (i = this.bulkBuyActivityCard) == null ? void 0 : i.activity_info;
        },
        storeInfo: function storeInfo() {
          var i;
          return (i = this.bulkBuyActivityCard) == null ? void 0 : i.store_info;
        },
        activityInfoTitle: function activityInfoTitle() {
          var i;
          return ((i = this.activityInfo) == null ? void 0 : i.title) || "";
        },
        participant: function participant() {
          var i;
          return (((i = this.activityInfo) == null ? void 0 : i.user_list) || []).slice(0, 6);
        },
        products: function products() {
          var i;
          return (((i = this.bulkBuyActivityCard) == null ? void 0 : i.products) || []).slice(0, 3);
        },
        shopName: function shopName() {
          var i;
          return ((i = this.storeInfo) == null ? void 0 : i.nick_name) || "";
        },
        activityInfoUserCountDesc: function activityInfoUserCountDesc() {
          var e, t, r;
          var i = (e = this.activityInfo) == null ? void 0 : e.status;
          return i === T$2.Init ? "" : i === T$2.On ? ((t = this.activityInfo) == null ? void 0 : t.progress_desc) || "" : i === T$2.End &amp;&amp; ((r = this.activityInfo) == null ? void 0 : r.user_count_desc) || "";
        },
        showProducts: function showProducts() {
          return this.products.length &gt;= 3;
        },
        reportCardtype: function reportCardtype() {
          return this.cardtype === R.SHOP ? 9 : 10;
        },
        jumpInfo: function jumpInfo() {
          var i;
          return ((i = this.bulkBuyActivityCard) == null ? void 0 : i.bulk_buy_activity_jump_info_base64_str) || "";
        },
        iconStyle: function iconStyle() {
          if (this.isDark &amp;&amp; this.platform === "web") return {
            backgroundImage: 'url("https://res.wx.qq.com/shop/public/2025-05-10/321b820e-8d8a-4083-8e0f-40b2b01fc8ef.png")'
          };
        },
        appid: function appid() {
          var i;
          return ((i = this.storeInfo) == null ? void 0 : i.appid) || "";
        },
        showActivityDecs: function showActivityDecs() {
          var e;
          return ((e = this.activityInfo) == null ? void 0 : e.status) !== T$2.End &amp;&amp; (this.participant.length || this.activityInfoUserCountDesc);
        }
      },
      created: function created() {
        var _this11 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee11() {
          return _regeneratorRuntime().wrap(function _callee11$(_context11) {
            while (1) switch (_context11.prev = _context11.next) {
              case 0:
                _this11.cardtype === R.SHOP &amp;&amp; (_this11.iframeLoading = !0), _this11.getCardData();
              case 1:
              case "end":
                return _context11.stop();
            }
          }, _callee11);
        }))();
      },
      mounted: function mounted() {
        var _this12 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee13() {
          return _regeneratorRuntime().wrap(function _callee13$(_context13) {
            while (1) switch (_context13.prev = _context13.next) {
              case 0:
                _context13.next = 2;
                return _this12.getCardData();
              case 2:
                R$4.on("onWindowFocusChanged", _this12.__onNativeFocusChange = function () {
                  var _ref = asyncToGenerator( _regeneratorRuntime().mark(function _callee12(i) {
                    return _regeneratorRuntime().wrap(function _callee12$(_context12) {
                      while (1) switch (_context12.prev = _context12.next) {
                        case 0:
                          (R$3() ? !(i.hasFocus * 1) : i.hasFocus) &amp;&amp; _this12.getCardData(!0);
                        case 1:
                        case "end":
                          return _context12.stop();
                      }
                    }, _callee12);
                  }));
                  return function (_x2) {
                    return _ref.apply(this, arguments);
                  };
                }());
                _this12.reportExpose();
              case 4:
              case "end":
                return _context13.stop();
            }
          }, _callee13);
        }))();
      },
      beforeDestroy: function beforeDestroy() {
        R$4.remove("onWindowFocusChanged", this.__onNativeFocusChange);
      }
    }, "beforeDestroy", function beforeDestroy() {
      document.removeEventListener("scroll", this.handleScroll, !0), window.removeEventListener("resize", this.handleScroll);
    }), "watch", {}), "methods", {
      formatPrice: function formatPrice(i) {
        return k$2(i);
      },
      clickLink: function clickLink(i) {
        var _this13 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee14() {
          var e;
          return _regeneratorRuntime().wrap(function _callee14$(_context14) {
            while (1) switch (_context14.prev = _context14.next) {
              case 0:
                if (!(_this13.platform === "wechat")) {
                  _context14.next = 4;
                  break;
                }
                _this13.jumpActivity();
                _context14.next = 17;
                break;
              case 4:
                i.currnetTarget || i.target;
                _context14.prev = 5;
                if (_this13.qrcodeUrl) {
                  _context14.next = 11;
                  break;
                }
                _context14.next = 9;
                return _this13.bizGetBulkBuyQrcode();
              case 9:
                e = _context14.sent;
                _this13.qrcodeUrl = "data:image/jpg;base64,".concat(e.qrcode_data);
              case 11:
                _context14.next = 17;
                break;
              case 13:
                _context14.prev = 13;
                _context14.t0 = _context14["catch"](5);
                console.error("get qrcode fail. code=".concat(_context14.t0.code, ", message=").concat(_context14.t0.message), _context14.t0);
                return _context14.abrupt("return");
              case 17:
              case "end":
                return _context14.stop();
            }
          }, _callee14, null, [[5, 13]]);
        }))();
      },
      updateImagesSize: function updateImagesSize() {
        if (!this.products || !this.products.length || !this.$refs.products_container) return;
        var e = this.$refs.products_container.offsetWidth;
        this.productWidth = (e - 4 * 2) / 3, this.productHeight = this.productWidth;
      },
      getCardData: function getCardData() {
        var _arguments = arguments,
          _this14 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee15() {
          var i, r, o, s, e, t;
          return _regeneratorRuntime().wrap(function _callee15$(_context15) {
            while (1) switch (_context15.prev = _context15.next) {
              case 0:
                i = _arguments.length &gt; 0 &amp;&amp; _arguments[0] !== undefined ? _arguments[0] : !1;
                if (_this14.encrypt_key) {
                  _context15.next = 3;
                  break;
                }
                return _context15.abrupt("return", Promise.reject({}));
              case 3:
                if (!i) {
                  _context15.next = 8;
                  break;
                }
                if (!_this14.updateShopCardPromise) {
                  _context15.next = 6;
                  break;
                }
                return _context15.abrupt("return", _this14.updateShopCardPromise);
              case 6:
                _context15.next = 12;
                break;
              case 8:
                if (!_this14.getShopCardPromise) {
                  _context15.next = 10;
                  break;
                }
                return _context15.abrupt("return", _this14.getShopCardPromise);
              case 10:
                if (!_this14.resp) {
                  _context15.next = 12;
                  break;
                }
                return _context15.abrupt("return", _this14.resp);
              case 12:
                e = _this14.bizGetBulkBuyCard(i);
                i ? _this14.updateShopCardPromise = e : _this14.getShopCardPromise = e;
                t = {};
                _context15.prev = 15;
                _context15.next = 18;
                return e;
              case 18:
                t = _context15.sent;
                _context15.next = 24;
                break;
              case 21:
                _context15.prev = 21;
                _context15.t0 = _context15["catch"](15);
                return _context15.abrupt("return", (console.error(_context15.t0), Log.error("bizGetBulkBuyCard fail, update=".concat(i, ", code=").concat(t.code, ", message=").concat(t.message)), i ? _this14.updateShopCardPromise = null : ((r = window == null ? void 0 : window.weui) == null || r.toast("\u8BF7\u6C42\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5 ".concat(t.code), {
                  extClass: "weui-toast_text"
                }), _this14.getShopCardPromise = null), Promise.reject(_context15.t0)));
              case 24:
                i ? (_this14.updateShopCardPromise = null, I$5(t) ? (Log.error("bizGetBulkBuyCard fail, update=".concat(i, ", code=").concat(t.code, ", message=").concat(t.message)), console.error("bizGetBulkBuyCard fail, update=".concat(i, ", code=").concat(t.code, ", message=").concat(t.message))) : t.bulk_buy_activity_card &amp;&amp; t.bulk_buy_activity_card.activity_info &amp;&amp; (_this14.resp.bulk_buy_activity_card = ((s = _this14.resp) == null ? void 0 : s.bulk_buy_activity_card) || {}, _this14.resp.bulk_buy_activity_card.activity_info = t.bulk_buy_activity_card.activity_info)) : I$5(t) ? ((o = window == null ? void 0 : window.weui) == null || o.toast("\u83B7\u53D6\u6570\u636E\u9519\u8BEF ".concat(t.code), {
                  extClass: "weui-toast_text"
                }), _this14.getShopCardPromise = null, Log.error("bizGetBulkBuyCard fail, update=".concat(i, ", code=").concat(t.code, ", message=").concat(t.message)), console.error("bizGetBulkBuyCard fail, update=".concat(i, ", code=").concat(t.code, ", message=").concat(t.message))) : (_this14.resp = t, setTimeout(function () {
                  _this14.updateImagesSize();
                }));
              case 25:
              case "end":
                return _context15.stop();
            }
          }, _callee15, null, [[15, 21]]);
        }))();
      },
      bizGetBulkBuyCard: function bizGetBulkBuyCard() {
        var _arguments2 = arguments,
          _this15 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee16() {
          var i, e, t, r, o, s, u, n;
          return _regeneratorRuntime().wrap(function _callee16$(_context16) {
            while (1) switch (_context16.prev = _context16.next) {
              case 0:
                i = _arguments2.length &gt; 0 &amp;&amp; _arguments2[0] !== undefined ? _arguments2[0] : !1;
                e = {};
                _context16.prev = 2;
                _context16.next = 5;
                return N$1();
              case 5:
                e = _context16.sent;
                _context16.next = 11;
                break;
              case 8:
                _context16.prev = 8;
                _context16.t0 = _context16["catch"](2);
                Log.error("getMPInfo fail ".concat(_context16.t0, "."), _context16.t0);
              case 11:
                t = Url.getQuery("exportkey") || "";
                r = i ? 1 : 0;
                o = window.wap_export_token;
                s = "/mmec/biz_getbulkbuycard?bulk_buy_activity_key=".concat(encodeURIComponent(_this15.encrypt_key), "&amp;query_type=").concat(r, "&amp;cardtype=").concat(_this15.reportCardtype, "&amp;exportkey=").concat(t);
                if (o ? s = "".concat(s, "&amp;wap_export_token=").concat(o) : s = "".concat(s, "&amp;exportkey=").concat(t), !i) {
                  u = btoa(JSON.stringify((e == null ? void 0 : e.article_info) || {}));
                  s = "".concat(s, "&amp;article_info=").concat(u);
                }
                n = _this15;
                return _context16.abrupt("return", (_this15.requestingGetBulkBuyCardResp = !0, new Promise(function (u, d) {
                  ajax({
                    type: "GET",
                    url: s,
                    success: function success(p) {
                      if (typeof p == "string") try {
                        p = JSON.parse(p);
                      } catch (g) {
                        return Log.error("/mmec/biz_getbulkbuycard parse res error. res=".concat(p, " err=").concat(g)), console.error("/mmec/biz_getbulkbuycard parse res error. res=".concat(p, " err=").concat(g)), d({
                          code: -1,
                          message: "parse res fail, ".concat(g.message)
                        });
                      }
                      i || (n.iframeLoading = !1), n.requestingGetBulkBuyCardResp = !1, u(p);
                    },
                    error: function error(p) {
                      i || (this.iframeLoading = !1), n.requestingGetBulkBuyCardResp = !1, Log.error("getShopCard err", p), console.error("getShopCard err", p), d(p);
                    }
                  });
                })));
              case 18:
              case "end":
                return _context16.stop();
            }
          }, _callee16, null, [[2, 8]]);
        }))();
      },
      bizGetBulkBuyQrcode: function bizGetBulkBuyQrcode() {
        var _this16 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee17() {
          var i, e, t, r, o;
          return _regeneratorRuntime().wrap(function _callee17$(_context17) {
            while (1) switch (_context17.prev = _context17.next) {
              case 0:
                if (_this16.encrypt_key) {
                  _context17.next = 2;
                  break;
                }
                return _context17.abrupt("return", Promise.reject({
                  code: -2,
                  message: "empty encrypt key"
                }));
              case 2:
                if (!(_this16.requestingGetQrcode &amp;&amp; _this16.getQrcodePromise)) {
                  _context17.next = 4;
                  break;
                }
                return _context17.abrupt("return", _this16.getQrcodePromise);
              case 4:
                _this16.requestingGetQrcode = !0;
                _context17.next = 7;
                return N$1();
              case 7:
                i = _context17.sent;
                e = Url.getQuery("exportkey") || "";
                t = "/mmec/biz_getbulkbuyqrcode?bulk_buy_activity_key=".concat(encodeURIComponent(_this16.encrypt_key), "&amp;cardtype=").concat(_this16.reportCardtype, "&amp;exportkey=").concat(e);
                r = btoa(JSON.stringify((i == null ? void 0 : i.article_info) || {}));
                t = "".concat(t, "&amp;article_info=").concat(r);
                o = _this16;
                return _context17.abrupt("return", (_this16.getQrcodePromise = new Promise(function (s, n) {
                  ajax({
                    type: "GET",
                    url: t,
                    success: function success(u) {
                      if (o.requestingGetQrcode = !1, typeof u == "string") try {
                        u = JSON.parse(u);
                      } catch (d) {
                        return Log.error("/mmec/biz_getbulkbuyqrcode parse res error. res=".concat(u, " err=").concat(d)), console.error("/mmec/biz_getbulkbuyqrcode parse res error. res=".concat(u, " err=").concat(d)), n({
                          code: -1,
                          message: "parse res fail, ".concat(d.message)
                        });
                      }
                      s(u);
                    },
                    error: function error(u) {
                      o.requestingGetQrcode = !1, Log.error("getShopCard err", u), console.error("getShopCard err", u), n(u);
                    }
                  });
                }), _this16.getQrcodePromise));
              case 14:
              case "end":
                return _context17.stop();
            }
          }, _callee17);
        }))();
      },
      initReport: function initReport() {
        var _this17 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee18() {
          return _regeneratorRuntime().wrap(function _callee18$(_context18) {
            while (1) switch (_context18.prev = _context18.next) {
              case 0:
                _context18.next = 2;
                return N$1();
              case 2:
                _context18.next = 4;
                return _this17.getCardData();
              case 4:
              case "end":
                return _context18.stop();
            }
          }, _callee18);
        }))();
      },
      reportExpose: function reportExpose() {
        var _this18 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee19() {
          return _regeneratorRuntime().wrap(function _callee19$(_context19) {
            while (1) switch (_context19.prev = _context19.next) {
              case 0:
                _context19.next = 2;
                return _this18.report(x.CARD, C$2.EXPOSE);
              case 2:
                _context19.t0 = _this18.cardtype === R.SHOP;
                if (!_context19.t0) {
                  _context19.next = 6;
                  break;
                }
                _context19.next = 6;
                return _this18.report(x.PRODUCT, C$2.EXPOSE);
              case 6:
              case "end":
                return _context19.stop();
            }
          }, _callee19);
        }))();
      },
      report: function report(i, e, t) {
        var _this19 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee20() {
          var n, u, r, o, s, d, p, g, _d2, _p;
          return _regeneratorRuntime().wrap(function _callee20$(_context20) {
            while (1) switch (_context20.prev = _context20.next) {
              case 0:
                if (!(_this19.platform !== "wechat")) {
                  _context20.next = 2;
                  break;
                }
                return _context20.abrupt("return");
              case 2:
                _context20.next = 4;
                return _this19.initReport();
              case 4:
                _context20.next = 6;
                return N$1();
              case 6:
                r = _context20.sent;
                o = "";
                _this19.cardtype === R.SHOP ? i === x.CARD ? o = "bulkbuy_card" : i === x.PRODUCT &amp;&amp; (o = "commodity_card") : _this19.cardtype === R.LINK &amp;&amp; (o = "bulkbuy_link");
                s = "";
                if (e === C$2.CLICK ? s = "element_click" : e === C$2.EXPOSE &amp;&amp; (s = "element_valid_expose"), i === x.PRODUCT &amp;&amp; e === C$2.EXPOSE) {
                  d = _this19.products;
                  for (p = 0; p &lt; d.length; ++p) {
                    g = {
                      logid: "23782",
                      data: {
                        event: s,
                        params: JSON.stringify({
                          page_name: "mp_article_page",
                          element_name: o,
                          productid: d[p].product_id,
                          mp_article_bizuin: r.article_info.mp_biz,
                          mp_article_appmsgid: r.article_info.appmsgid,
                          mp_article_item_idx: r.article_info.item_idx,
                          mp_article_item_show_type: r.article_info.item_show_type,
                          scene: r.article_info.mp_article_scene,
                          cardtype: _this19.reportCardtype,
                          appid: _this19.appid
                        })
                      }
                    };
                    O$5(g);
                  }
                } else {
                  _d2 = "";
                  _typeof$2(t) &lt; "u" &amp;&amp; (_d2 = (u = (n = _this19.products) == null ? void 0 : n[t]) == null ? void 0 : u.product_id);
                  _p = {
                    logid: "23782",
                    data: {
                      event: s,
                      params: JSON.stringify({
                        page_name: "mp_article_page",
                        element_name: o,
                        productid: _d2,
                        mp_article_bizuin: r.article_info.mp_biz,
                        mp_article_appmsgid: r.article_info.appmsgid,
                        mp_article_item_idx: r.article_info.item_idx,
                        mp_article_item_show_type: r.article_info.item_show_type,
                        scene: r.article_info.mp_article_scene,
                        cardtype: _this19.reportCardtype,
                        appid: _this19.appid
                      })
                    }
                  };
                  O$5(_p);
                }
              case 11:
              case "end":
                return _context20.stop();
            }
          }, _callee20);
        }))();
      },
      openJumpInfo: function openJumpInfo(i) {
        var _this20 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee21() {
          var e, t;
          return _regeneratorRuntime().wrap(function _callee21$(_context21) {
            while (1) switch (_context21.prev = _context21.next) {
              case 0:
                if (!(_this20.platform === "wechat")) {
                  _context21.next = 11;
                  break;
                }
                _context21.next = 3;
                return t$3();
              case 3:
                if (!_context21.sent) {
                  _context21.next = 8;
                  break;
                }
                _context21.next = 6;
                return i$2(i);
              case 6:
                _context21.next = 9;
                break;
              case 8:
                (e = window == null ? void 0 : window.weui) == null || e.toast("当前版本不支持打开活动", {
                  extClass: "weui-toast_text"
                });
              case 9:
                _context21.next = 12;
                break;
              case 11:
                (t = window == null ? void 0 : window.weui) == null || t.toast("请在手机微信中打开", {
                  extClass: "weui-toast_text"
                });
              case 12:
              case "end":
                return _context21.stop();
            }
          }, _callee21);
        }))();
      },
      jumpActivity: function jumpActivity() {
        this.openJumpInfo(this.jumpInfo), this.report(x.CARD, C$2.CLICK);
      }
    });
  var he = function he() {
      var e = this,
        t = e._self._c;
      return t("div", {
        staticClass: "common_buytogether_root"
      }, [e.iframeLoading ? t("div", {
        staticClass: "collection_wx_img_placeholder",
        style: e.placeholderStyle
      }) : e.cardtype === 1 ? t("div", {
        ref: "shotLink",
        staticClass: "link-wrap"
      }, [t("span", {
        staticClass: "product_card_text_wrp"
      }, [t("span", {
        staticClass: "product_text_link",
        on: {
          click: e.clickLink
        }
      }, [e._v(e._s(e.title))])])]) : e.cardtype === 2 ? t("div", {
        staticClass: "common_buytogether_card_wrap",
        style: e.cardStyle,
        on: {
          click: e.jumpActivity
        }
      }, [t("div", {
        staticClass: "card_head"
      }, [t("div", {
        staticClass: "head_left"
      }, [t("div", {
        staticClass: "head_left_top"
      }, [t("div", {
        staticClass: "icon"
      }), t("div", {
        staticClass: "title"
      }, [e._v(e._s(e.activityInfoTitle))])]), e.showActivityDecs ? t("div", {
        staticClass: "head_left_bottom"
      }, [t("div", {
        staticClass: "avatar_list"
      }, e._l(e.participant, function (r, o) {
        return t("img", {
          staticClass: "avatar",
          attrs: {
            src: r.head_img
          }
        });
      }), 0), t("div", {
        staticClass: "desc"
      }, [e._v('' + e._s(e.activityInfoUserCountDesc) + '')])]) : e._e()]), t("div", {
        staticClass: "head_right"
      }, [t("div", {
        staticClass: "tap_home_btn",
        on: {
          click: e.jumpActivity
        }
      }, [e._v('参与')])])]), e.showProducts ? t("div", {
        ref: "products_container",
        staticClass: "product_list"
      }, e._l(e.products, function (r, o) {
        return t("div", {
          staticClass: "product",
          style: e.productStyle
        }, [r.head_img ? t("img", {
          staticClass: "product_image",
          style: e.pruductImgStyle,
          attrs: {
            src: r.head_img
          }
        }) : e._e(), t("div", {
          staticClass: "product_price"
        }, [t("span", {
          staticClass: "selling_price"
        }, [e._v("¥" + e._s(e.formatPrice(r.price)))]), t("span", {
          staticClass: "before_selling_price"
        }, [e._v("¥" + e._s(e.formatPrice(r.strike_price))), t("span", {
          staticClass: "newlineationPrice"
        })])])]);
      }), 0) : e._e(), t("div", {
        staticClass: "shop_icon_wrap"
      }, [t("div", {
        staticClass: "shop_icon",
        style: e.iconStyle
      }), t("div", {
        staticClass: "shop_name"
      }, [e._v(e._s(e.shopName))])])]) : e._e()]);
    },
    fe = [],
    me = v$2(ge, he, fe, !1, null, null, null, null);
  var Ee = me.exports;
  var V = {
    exports: {}
  };
  (function (i) {
    (function (e) {
      var t = function t(a, c, h) {
          if (!p(c) || S(c) || A(c) || D(c) || d(c)) return c;
          var m,
            I = 0,
            $ = 0;
          if (g(c)) for (m = [], $ = c.length; I &lt; $; I++) m.push(t(a, c[I], h));else {
            m = {};
            for (var U in c) Object.prototype.hasOwnProperty.call(c, U) &amp;&amp; (m[a(U, h)] = t(a, c[U], h));
          }
          return m;
        },
        r = function r(a, c) {
          c = c || {};
          var h = c.separator || "_",
            m = c.split || /(?=[A-Z])/;
          return a.split(m).join(h);
        },
        o = function o(a) {
          return y(a) ? a : (a = a.replace(/[\-_\s]+(.)?/g, function (c, h) {
            return h ? h.toUpperCase() : "";
          }), a.substr(0, 1).toLowerCase() + a.substr(1));
        },
        s = function s(a) {
          var c = o(a);
          return c.substr(0, 1).toUpperCase() + c.substr(1);
        },
        n = function n(a, c) {
          return r(a, c).toLowerCase();
        },
        u = Object.prototype.toString,
        d = function d(a) {
          return typeof a == "function";
        },
        p = function p(a) {
          return a === Object(a);
        },
        g = function g(a) {
          return u.call(a) == "[object Array]";
        },
        S = function S(a) {
          return u.call(a) == "[object Date]";
        },
        A = function A(a) {
          return u.call(a) == "[object RegExp]";
        },
        D = function D(a) {
          return u.call(a) == "[object Boolean]";
        },
        y = function y(a) {
          return a = a - 0, a === a;
        },
        E = function E(a, c) {
          var h = c &amp;&amp; "process" in c ? c.process : c;
          return typeof h != "function" ? a : function (m, I) {
            return h(m, a, I);
          };
        },
        b = {
          camelize: o,
          decamelize: n,
          pascalize: s,
          depascalize: n,
          camelizeKeys: function camelizeKeys(a, c) {
            return t(E(o, c), a);
          },
          decamelizeKeys: function decamelizeKeys(a, c) {
            return t(E(n, c), a, c);
          },
          pascalizeKeys: function pascalizeKeys(a, c) {
            return t(E(s, c), a);
          },
          depascalizeKeys: function depascalizeKeys() {
            return this.decamelizeKeys.apply(this, arguments);
          }
        };
      i.exports ? i.exports = b : e.humps = b;
    })(o$1);
  })(V);
  var be = V.exports;
  var _e = {
    name: "SwiperImageProduct",
    props: {
      list: {
        type: Array,
        "default": function _default() {
          return [];
        }
      },
      currentIndex: {
        type: Number,
        "default": 0
      },
      width: {
        type: Number,
        "default": 0
      },
      height: {
        type: Number,
        "default": 0
      },
      hideIndicator: {
        type: Boolean,
        "default": !1
      },
      maxIndicatorIndex: {
        type: Number,
        "default": 0
      },
      mode: {
        type: String,
        "default": "aspectFill"
      },
      pictureClass: {
        type: String,
        "default": ""
      }
    },
    data: function data() {
      return {
        innerCurrentIndex: 0,
        startClientX: 0,
        startClientY: 0,
        currentClientX: 0,
        lastClientX: 0,
        isFirstTouch: !0,
        catchMove: !0,
        direction: "none",
        isTransitioning: !1,
        touchStartTime: 0
      };
    },
    computed: {
      swiperList: function swiperList() {
        return this.list || [];
      },
      wrapperStyle: function wrapperStyle() {
        var i = {
          height: "".concat(this.height, "px"),
          transform: "translateX(-".concat(this.innerCurrentIndex * this.width, "px)")
        };
        return this.isTransitioning &amp;&amp; (i.transition = "all 0.45s cubic-bezier(0.25, 0.1, 0.25, 1)"), i;
      }
    },
    watch: {
      currentIndex: {
        handler: function handler(i) {
          this.innerCurrentIndex = i, this.checkBottomPosition();
        },
        immediate: !0
      },
      list: {
        handler: function handler() {},
        immediate: !0
      }
    },
    mounted: function mounted() {
      this.width === 0 &amp;&amp; this.$emit("update:width", window.innerWidth), console.log("swiperList props", this.props);
    },
    methods: {
      getItemStyle: function getItemStyle(i, e) {
        return {
          width: "".concat(this.width, "px"),
          alignItems: i.width &gt; i.height ? "center" : "flex-start"
        };
      },
      getImageWrapperStyle: function getImageWrapperStyle(i) {
        var e = {
          position: "relative",
          display: "inline-block"
        };
        if (i.width &amp;&amp; i.height) {
          var t = this.width,
            r = this.height,
            o = i.width / i.height,
            s = t / r;
          o &gt;= s ? (e.width = "100%", e.height = "".concat(t / o, "px"), i.computedHeight = t / o) : (e.width = "".concat(r * o, "px"), e.height = "100%", i.computedWidth = r * o);
        } else e.maxWidth = "100%", e.maxHeight = "100%";
        return e;
      },
      getImageStyle: function getImageStyle(i) {
        var e = {
          width: "100%",
          height: "100%",
          objectFit: "contain",
          display: "block"
        };
        return this.pictureClass &amp;&amp; (e["class"] = this.pictureClass), e;
      },
      getLabelStyle: function getLabelStyle(i, e) {
        var o = i.labelName ? i.labelName.length : 0,
          s = 8,
          n = 7,
          u = 4,
          d = 4,
          p = 12,
          g = e.computedWidth || this.width,
          S = s + d + o * p + d + n + u * 2,
          A = Math.min(S, g - 12 * 2);
        var D, y, E, b;
        if (i.x !== void 0) {
          var a = i.x,
            c = a / 100 * g;
          c &lt; 12 ? D = "12px" : c + A &gt; g - 12 ? E = "12px" : D = "".concat(a, "%");
        } else if (i.right !== void 0) {
          var _a = i.right;
          _a / 100 * g &lt; 12 + A ? E = "".concat(12 + A, "px") : E = "".concat(_a, "%");
        }
        if (i.y !== void 0) {
          var _a2 = i.y,
            _c = _a2 / 100 * this.height;
          _c &lt; 12 ? y = "12px" : _c + 20.5 &gt; this.height - 12 ? b = "12px" : y = "".concat(_a2, "%");
        } else if (i.bottom !== void 0) {
          var _a3 = i.bottom;
          _a3 / 100 * this.height &lt; 12 + 20.5 ? b = "".concat(12 + 20.5, "px") : b = "".concat(_a3, "%");
        }
        return {
          position: "absolute",
          left: D || "auto",
          top: y || "auto",
          right: E || "auto",
          bottom: b || "auto",
          backgroundColor: i.backgroundColor || "rgba(76, 76, 76, 0.5)",
          color: i.color || "#fff",
          padding: i.padding || "2px 4px",
          borderRadius: i.borderRadius || "100px",
          fontSize: i.fontSize || "12px",
          zIndex: i.zIndex || 1e3,
          maxWidth: "".concat(A, "px"),
          whiteSpace: "nowrap",
          overflow: "hidden",
          textOverflow: "ellipsis",
          boxSizing: "border-box"
        };
      },
      handleTouchStart: function handleTouchStart(i) {
        this.touchStartTime = Date.now();
        var e = i.touches[0];
        this.startClientX = e.clientX, this.startClientY = e.clientY, this.currentClientX = this.innerCurrentIndex * this.width, this.lastClientX = this.currentClientX, this.isFirstTouch = !0, this.catchMove = !0, this.isTransitioning = !1;
      },
      handleTouchMove: function handleTouchMove(i) {
        this.$emit("touchMove", {
          event: i
        });
        var e = i.touches[0];
        if (this.isFirstTouch) {
          this.isFirstTouch = !1;
          var t = Math.abs(e.clientX - this.startClientX);
          Math.abs(e.clientY - this.startClientY) &gt; t ? this.catchMove = !1 : this.catchMove = !0;
        }
        if (this.catchMove) {
          i.preventDefault();
          var _t = e.clientX - this.startClientX;
          this.currentClientX = -(this.innerCurrentIndex * this.width) + _t, this.direction = this.currentClientX &lt; this.lastClientX ? "left" : "right", this.$refs.swiperWrapper.style.transform = "translateX(".concat(this.currentClientX, "px)"), this.lastClientX = this.currentClientX;
        }
      },
      handleTouchEnd: function handleTouchEnd(i) {
        var e = Math.abs(this.lastClientX - this.innerCurrentIndex * this.width);
        var t = -1;
        e &gt; 50 &amp;&amp; (this.direction === "right" ? t = Math.max(this.innerCurrentIndex - 1, 0) : this.direction === "left" &amp;&amp; (t = Math.min(this.innerCurrentIndex + 1, this.swiperList.length - 1)), t !== -1 &amp;&amp; this.innerCurrentIndex !== t &amp;&amp; (this.innerCurrentIndex = t, this.$emit("change", {
          index: t,
          data: this.swiperList[t]
        }), this.$emit("update:currentIndex", t), this.$emit("current-index-change", t))), this.setIndexPosition();
      },
      setIndexPosition: function setIndexPosition() {
        var _this21 = this;
        this.isTransitioning = !0, this.$refs.swiperWrapper.style.transform = "translateX(-".concat(this.innerCurrentIndex * this.width, "px)"), setTimeout(function () {
          _this21.isTransitioning = !1;
        }, 450);
      },
      handleImageLoad: function handleImageLoad(i, e) {},
      handleLabelClick: function handleLabelClick(i, e, t) {
        this.$emit("tagClick", {
          labelPage: i.labelPage,
          productId: i.productId,
          pairingId: e.pairingId
        });
      },
      checkBottomPosition: function checkBottomPosition() {}
    }
  };
  var Ge = function Ge() {
      var e = this,
        t = e._self._c;
      return e.width ? t("div", {
        staticClass: "swiper-out"
      }, [t("div", {
        ref: "swiperWrapper",
        staticClass: "swiper-wrapper",
        style: e.wrapperStyle,
        on: {
          touchstart: e.handleTouchStart,
          touchmove: e.handleTouchMove,
          touchend: e.handleTouchEnd
        }
      }, e._l(e.swiperList, function (r, o) {
        return t("div", {
          key: o,
          staticClass: "swiper-item",
          style: e.getItemStyle(r, o)
        }, [t("div", {
          staticClass: "image-container"
        }, [t("div", {
          staticClass: "image-wrapper",
          style: e.getImageWrapperStyle(r)
        }, [t("img", {
          staticClass: "swiper-image",
          style: e.getImageStyle(r),
          attrs: {
            src: r.src,
            alt: r.alt || ""
          },
          on: {
            load: function load(s) {
              return e.handleImageLoad(s, o);
            }
          }
        }), r.labelList &amp;&amp; r.labelList.length ? t("div", {
          staticClass: "label-container"
        }, e._l(r.labelList, function (s) {
          return t("div", {
            key: s.productId,
            staticClass: "label-item",
            staticStyle: {
              "pointer-events": "auto",
              position: "absolute"
            },
            style: e.getLabelStyle(s, r),
            on: {
              click: function click(n) {
                return e.handleLabelClick(s, r, o);
              }
            }
          }, [e._v(" " + e._s(s.labelName) + " ")]);
        }), 0) : e._e()])])]);
      }), 0), e.swiperList.length &gt; 1 &amp;&amp; !e.hideIndicator ? t("div", {
        staticClass: "swiper-indicator"
      }, [t("span", {
        staticClass: "indicator-text"
      }, [e._v(e._s(e.innerCurrentIndex + 1) + "/" + e._s(e.swiperList.length))])]) : e._e()]) : e._e();
    },
    Ae = [],
    xe = v$2(_e, Ge, Ae, !1, null, null, null, null);
  var Ce = xe.exports,
    Re = {
      name: "SwiperIndicator",
      props: {
        swiperList: {
          type: Array,
          "default": function _default() {
            return [];
          }
        },
        currentIndex: {
          type: Number,
          "default": 0
        },
        hideIndicator: {
          type: Boolean,
          "default": !1
        },
        maxIndicatorIndex: {
          type: Number,
          "default": 0
        }
      },
      data: function data() {
        return {
          innerCurrentIndex: 0
        };
      },
      watch: {
        currentIndex: {
          handler: function handler(i) {
            this.innerCurrentIndex = i;
          },
          immediate: !0
        }
      },
      methods: {
        handleDotClick: function handleDotClick(i) {
          i !== this.currentIndex &amp;&amp; (this.$emit("change", {
            index: i,
            data: this.swiperList[i]
          }), this.$emit("update:currentIndex", i));
        }
      }
    };
  var Be = function Be() {
      var e = this,
        t = e._self._c;
      return e.swiperList.length &gt; 1 &amp;&amp; !e.hideIndicator &amp;&amp; e.maxIndicatorIndex === 0 ? t("div", {
        staticClass: "swiper-indicator-wrap-bg"
      }, [t("div", {
        staticClass: "swiper-indicator-wrap"
      }, e._l(e.swiperList, function (r, o) {
        return t("div", {
          key: o,
          staticClass: "swiper-indicator-dot",
          "class": {
            active: e.innerCurrentIndex === o
          },
          on: {
            click: function click(s) {
              return e.handleDotClick(o);
            }
          }
        });
      }), 0)]) : e._e();
    },
    Ne = [],
    Le = v$2(Re, Be, Ne, !1, null, null, null, null);
  var De = Le.exports,
    O$2 = {
      title: "国风搭配测试测测",
      shopInfo: {
        shopName: "麦当劳",
        path: "/main/pages/shop/shop?&amp;realappid=wx2b255582a7b4bfd0&amp;shopId=10000000089216",
        appid: "wx2b255582a7b4bfd0",
        shopTag: "https://res.wx.qq.com/shop/public/2024-09-26/eb336270-6883-4391-8e4c-4c26230baa2e.svg"
      },
      shopName: "麦当劳",
      shopAppid: "wx2b255582a7b4bfd0",
      shopIcon: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/67aac669000122322aba0bcd0e745415000000a100004f50?imageView2/1/w/583/h/583/format/webp|imageMogr2/auto-orient/strip/ignore-error/1",
      headSwiper: [{
        index: 0,
        src: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/67778ec700022d7518cc772027908e0b000000a100004f50",
        width: 800,
        height: 800,
        pairingId: "4066145054106112",
        labelList: [{
          x: "96",
          y: "32",
          productId: "10000151274966",
          productShortName: "休闲裤",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000151274966"
          },
          labelName: "休闲裤",
          productName: "限购-开发自动化测试专用-勿动！！！",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SH/reserved/6639fef400081a7f009acd91cf86bc1e000000a100004f50",
          productPrice: "100000"
        }, {
          x: "30",
          y: "54",
          productId: "10000128560001",
          productShortName: "宠物配饰",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000128560001"
          },
          labelName: "宠物配饰",
          productName: "狗狗的漂亮衣服-多个限时抢购",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/6641cdc800086320026f8b1d27908e0b000000a000004f50",
          productPrice: "10"
        }, {
          x: "18",
          y: "20",
          productId: "10000072904047",
          productShortName: "羽绒服",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000072904047"
          },
          labelName: "羽绒服",
          productName: "（搭配购）预售测试款女外套冬款黑色M",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/65376f0c0005f86c0be3041984f90115000000a000004f50",
          productPrice: "19900"
        }, {
          x: "48",
          y: "22",
          productId: "10000163612743",
          productShortName: "休闲裤",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000163612743"
          },
          labelName: "休闲裤",
          productName: "(搭配购)韩版牛仔裤修身版型好大码将军同款",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/672c793c000cdecf2d7b0f2995918e0b000000a000004f50",
          productPrice: "15000"
        }],
        type: "pairingImg",
        showLabel: !0,
        showHeight: 520
      }, {
        index: 1,
        src: "https://wst.wxapp.tc.qq.com/161/20304/snscosdownload/SZ/reserved/68a317e100049bee200d67fd6f7c4315000000a100004f50",
        width: 800,
        height: 600,
        pairingId: "4066145054106112",
        labelList: [{
          x: "51",
          y: "40",
          productId: "10000151274966",
          productShortName: "休闲裤",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000151274966"
          },
          labelName: "休闲裤",
          productName: "限购-开发自动化测试专用-勿动！！！",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SH/reserved/6639fef400081a7f009acd91cf86bc1e000000a100004f50",
          productPrice: "100000"
        }, {
          x: "56",
          y: "74",
          productId: "10000128560001",
          productShortName: "宠物配饰",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000128560001"
          },
          labelName: "宠物配饰",
          productName: "狗狗的漂亮衣服-多个限时抢购",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/6641cdc800086320026f8b1d27908e0b000000a000004f50",
          productPrice: "10"
        }, {
          x: "25",
          y: "64",
          productId: "10000072904047",
          productShortName: "羽绒服",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000072904047"
          },
          labelName: "羽绒服",
          productName: "（搭配购）预售测试款女外套冬款黑色M",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/65376f0c0005f86c0be3041984f90115000000a000004f50",
          productPrice: "19900"
        }, {
          x: "77",
          y: "54",
          productId: "10000163612743",
          productShortName: "休闲裤",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000163612743"
          },
          labelName: "休闲裤",
          productName: "(搭配购)韩版牛仔裤修身版型好大码将军同款",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/672c793c000cdecf2d7b0f2995918e0b000000a000004f50",
          productPrice: "15000"
        }, {
          x: "64",
          y: "8",
          productId: "10000000089216",
          productShortName: "家居服套装",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000000089216"
          },
          labelName: "家居服套装",
          productName: "(搭配购)2025款冬季男女保暖睡衣",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/6426b72e000aa70a28f4d1d805618809000000a000004f50",
          productPrice: "1"
        }],
        type: "pairingImg",
        showLabel: !0,
        showHeight: 520
      }, {
        index: 2,
        src: "https://wst.wxapp.tc.qq.com/161/20304/snscosdownload/SZ/reserved/688c891d000674562b1663a705a3ae1e000000a100004f50",
        width: 900,
        height: 1100,
        pairingId: "4066145054106112",
        labelList: [{
          x: "29",
          y: "66",
          productId: "10000151274966",
          productShortName: "休闲裤",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000151274966"
          },
          labelName: "休闲裤",
          productName: "限购-开发自动化测试专用-勿动！！！",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SH/reserved/6639fef400081a7f009acd91cf86bc1e000000a100004f50",
          productPrice: "100000"
        }, {
          x: "34",
          y: "58",
          productId: "10000128560001",
          productShortName: "宠物配饰",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000128560001"
          },
          labelName: "宠物配饰",
          productName: "狗狗的漂亮衣服-多个限时抢购",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/6641cdc800086320026f8b1d27908e0b000000a000004f50",
          productPrice: "10"
        }, {
          x: "8",
          y: "32",
          productId: "10000072904047",
          productShortName: "羽绒服",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000072904047"
          },
          labelName: "羽绒服",
          productName: "（搭配购）预售测试款女外套冬款黑色M",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/65376f0c0005f86c0be3041984f90115000000a000004f50",
          productPrice: "19900"
        }, {
          x: "52",
          y: "32",
          productId: "10000163612743",
          productShortName: "休闲裤",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000163612743"
          },
          labelName: "休闲裤",
          productName: "(搭配购)韩版牛仔裤修身版型好大码将军同款",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/672c793c000cdecf2d7b0f2995918e0b000000a000004f50",
          productPrice: "15000"
        }, {
          x: "71",
          y: "54",
          productId: "10000000089216",
          productShortName: "家居服套装",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000000089216"
          },
          labelName: "家居服套装",
          productName: "(搭配购)2025款冬季男女保暖睡衣",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/6426b72e000aa70a28f4d1d805618809000000a000004f50",
          productPrice: "1"
        }],
        type: "pairingImg",
        showLabel: !0,
        showHeight: 520
      }, {
        index: 3,
        src: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/67778ec700022d7518cc772027908e0b000000a100004f50",
        width: 800,
        height: 800,
        pairingId: "4066145054106112",
        labelList: [{
          x: "66",
          y: "32",
          productId: "10000151274966",
          productShortName: "休闲裤",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000151274966"
          },
          labelName: "休闲裤",
          productName: "限购-开发自动化测试专用-勿动！！！",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SH/reserved/6639fef400081a7f009acd91cf86bc1e000000a100004f50",
          productPrice: "100000"
        }, {
          x: "30",
          y: "54",
          productId: "10000128560001",
          productShortName: "宠物配饰",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000128560001"
          },
          labelName: "宠物配饰",
          productName: "狗狗的漂亮衣服-多个限时抢购",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/6641cdc800086320026f8b1d27908e0b000000a000004f50",
          productPrice: "10"
        }, {
          x: "18",
          y: "20",
          productId: "10000072904047",
          productShortName: "羽绒服",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000072904047"
          },
          labelName: "羽绒服",
          productName: "（搭配购）预售测试款女外套冬款黑色M",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/65376f0c0005f86c0be3041984f90115000000a000004f50",
          productPrice: "19900"
        }, {
          x: "48",
          y: "22",
          productId: "10000163612743",
          productShortName: "休闲裤",
          productAppid: "wx2b255582a7b4bfd0",
          labelPage: {
            appid: "wx2b255582a7b4bfd0",
            path: "/main/pages/productDetail/productDetail?&amp;realappid=wx2b255582a7b4bfd0&amp;productId=10000163612743"
          },
          labelName: "休闲裤",
          productName: "(搭配购)韩版牛仔裤修身版型好大码将军同款",
          productImgUrl: "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SZ/reserved/672c793c000cdecf2d7b0f2995918e0b000000a000004f50",
          productPrice: "15000"
        }],
        type: "pairingImg",
        showLabel: !0,
        showHeight: 520
      }],
      pairingCreator: {
        pairingCreatorName: "罗意威LOEWE",
        pairingCreatorTag: "https://res.wx.qq.com/shop/public/2024-09-26/eb336270-6883-4391-8e4c-4c26230baa2e.svg"
      }
    },
    q = 13;
  var w$1;
  var ye = {
    components: {
      SwiperProduct: Ce,
      SwiperIndicator: De
    },
    mixins: [k$1],
    props: {
      shopAppid: {
        type: String,
        "default": ""
      },
      pairingId: {
        type: String,
        "default": ""
      },
      talentAppid: {
        type: String,
        "default": ""
      },
      isMock: {
        type: Number,
        "default": 0
      }
    },
    data: function data() {
      return {
        getPairingResp: null,
        requestinggetPairing: !1,
        _supportOpenEcs: void 0,
        forceUpdate: !1,
        iframeLoading: !0,
        isDark: window.matchMedia &amp;&amp; window.matchMedia("(prefers-color-scheme: dark)").matches,
        getPairingPromise: null,
        containerWidth: 350,
        swiperHeight: 350,
        currentSwiperIndex: 0,
        pairingData: {
          pairingCreator: {
            pairingCreatorName: "",
            pairingCreatorTag: "",
            pairingCreatorTagDark: ""
          }
        }
      };
    },
    computed: {
      cardStyle: function cardStyle() {
        var i = {};
        return this.platform === "web" ? (i.width = "350px", this.isDark &amp;&amp; (i.background = "rgba(0, 0, 0, 0.02)")) : i.width = "100%", i;
      },
      containerStyle: function containerStyle() {
        var i = {
          background: "rgba(255, 255, 255, 0.03)"
        };
        return this.isDark &amp;&amp; (i.background = "rgba(0, 0, 0, 0.03)"), i;
      },
      placeholderStyle: function placeholderStyle() {
        var i = {
          height: "108px"
        };
        return this.platform === "web" ? i.width = "350px" : i.width = "100%", i;
      },
      pairingCreatorTag: function pairingCreatorTag() {
        return this.isDark ? this.pairingData.pairingCreator.pairingCreatorTagDark : this.pairingData.pairingCreator.pairingCreatorTag;
      }
    },
    created: function created() {
      var _this22 = this;
      console.log("created this.shopAppid=".concat(this.shopAppid, " this.talentAppid=").concat(this.talentAppid)), this.getPairingCard(), window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", function (i) {
        _this22.isDark = i.matches;
      });
    },
    mounted: function mounted() {
      var _this23 = this;
      return asyncToGenerator( _regeneratorRuntime().mark(function _callee22() {
        return _regeneratorRuntime().wrap(function _callee22$(_context22) {
          while (1) switch (_context22.prev = _context22.next) {
            case 0:
              _this23.extraInfo.window &amp;&amp; _this23.extraInfo.window.addEventListener("message", _this23.handleMessage), _this23.extraInfo.window &amp;&amp; _this23.extraInfo.window.addEventListener("click", _this23.handleDocumentClick);
            case 1:
            case "end":
              return _context22.stop();
          }
        }, _callee22);
      }))();
    },
    beforeDestroy: function beforeDestroy() {
      this.extraInfo.window &amp;&amp; this.extraInfo.window.removeEventListener("message", this.handleMessage), this.extraInfo.window &amp;&amp; this.extraInfo.window.removeEventListener("click", this.handleDocumentClick);
    },
    watch: {
      shopAppid: {
        handler: function handler() {
          console.log("shopAppid change to", this.shopAppid), this.forceUpdatePairingCard();
        }
      },
      talentAppid: {
        handler: function handler() {
          console.log("talentAppid change to", this.talentAppid), this.forceUpdatePairingCard();
        }
      }
    },
    methods: {
      handleDocumentClick: function handleDocumentClick(i) {
        this.$refs.js_custom_element.contains(i.target) || this.$emit("document-click", i);
      },
      forceUpdatePairingCard: function forceUpdatePairingCard() {
        var _this24 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee23() {
          return _regeneratorRuntime().wrap(function _callee23$(_context23) {
            while (1) switch (_context23.prev = _context23.next) {
              case 0:
                _this24.forceUpdate = !0;
                _context23.prev = 1;
                _context23.next = 4;
                return _this24.getPairingCard();
              case 4:
                _context23.next = 9;
                break;
              case 6:
                _context23.prev = 6;
                _context23.t0 = _context23["catch"](1);
                console.error(_context23.t0);
              case 9:
                _this24.forceUpdate = !1;
              case 10:
              case "end":
                return _context23.stop();
            }
          }, _callee23, null, [[1, 6]]);
        }))();
      },
      getPairingCard: function getPairingCard() {
        var _this25 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee24() {
          var i, e, o, t, r;
          return _regeneratorRuntime().wrap(function _callee24$(_context24) {
            while (1) switch (_context24.prev = _context24.next) {
              case 0:
                if (!(!_this25.shopAppid &amp;&amp; !_this25.talentAppid)) {
                  _context24.next = 2;
                  break;
                }
                return _context24.abrupt("return", Promise.reject({}));
              case 2:
                if (!(_this25.requestinggetPairing &amp;&amp; _this25.getPairingPromise)) {
                  _context24.next = 4;
                  break;
                }
                return _context24.abrupt("return", _this25.getPairingPromise);
              case 4:
                if (!(_this25.getPairingResp &amp;&amp; !_this25.forceUpdate)) {
                  _context24.next = 6;
                  break;
                }
                return _context24.abrupt("return", _this25.getPairingResp);
              case 6:
                _this25.requestinggetPairing = !0;
                _context24.next = 9;
                return N$1();
              case 9:
                w$1 = _context24.sent;
                i = (w$1 == null ? void 0 : w$1.exportkey) || Url.getQuery("exportkey") || "", e = btoa(JSON.stringify((w$1 == null ? void 0 : w$1.article_info) || {}));
                if (!(_this25.computedContainerWidth(), _this25.isMock)) {
                  _context24.next = 14;
                  break;
                }
                o = _this25;
                return _context24.abrupt("return", new Promise(function (s, n) {
                  o.iframeLoading = !1, o.getPairingResp = O$2, o.pairingData = O$2, o.requestinggetPairing = !1, o.$emit("onFrameReady", {
                    nickName: o.talentAppid
                  }), console.log("this.iframeLoading", o.iframeLoading), console.log("containerWidth----", document.getElementById("shopparing_card_wrap")), _this25.computedSwiperHeight(O$2.headSwiper), s(O$2);
                }));
              case 14:
                t = _this25, r = "/mmec/biz_getproductpairinginfo?shop_appid=".concat(_this25.shopAppid, "&amp;pairing_id=").concat(_this25.pairingId, "&amp;talent_appid=").concat(_this25.talentAppid, "&amp;exportkey=").concat(i, "&amp;cardtype=").concat(q, "&amp;article_info=").concat(e);
                return _context24.abrupt("return", (_this25.getPairingPromise = new Promise(function (o, s) {
                  ajax({
                    type: "GET",
                    url: r,
                    success: function success(n) {
                      if (console.log("/mmec/biz_getproductpairinginfo res", n), typeof n == "string") try {
                        n = JSON.parse(n);
                      } catch (u) {
                        n = {}, Log.error("/mmec/biz_getproductpairinginfo parse res error. res=".concat(n, " err=").concat(u));
                      }
                      t.getPairingResp = n, t.formatPairingData(n), t.requestinggetPairing = !1, t.$emit("onFrameReady", {
                        nickName: t.talentAppid
                      }), t.iframeLoading = !1, o();
                    },
                    error: function error(n) {
                      t.requestinggetPairing = !1, t.iframeLoading = !1, console.error("getPairingCard err", n), s(n);
                    }
                  });
                }), _this25.getPairingPromise));
              case 16:
              case "end":
                return _context24.stop();
            }
          }, _callee24);
        }))();
      },
      formatPairingData: function formatPairingData(i) {
        var _this26 = this;
        var e = be.camelizeKeys(i),
          t = {};
        console.log("formatPairingData------", e), e.productList.forEach(function (o) {
          t[o.productId] = o;
        });
        var r = e.imgList.map(function (o) {
          var s;
          return {
            src: o.imgUrl,
            width: o.imgWidth,
            height: o.imgHeight,
            pairingId: i.pairingId,
            labelList: (s = o == null ? void 0 : o.labelList) == null ? void 0 : s.map(function (n) {
              var u = t[n.productId] || {};
              return _objectSpread$4(_objectSpread$4({}, n), u);
            })
          };
        });
        return this.pairingData = {
          pairingCreator: {
            pairingCreatorName: e.pairingCreatorName,
            pairingCreatorTag: e.pairingCreatorTag,
            pairingCreatorTagDark: e.pairingCreatorTagDark
          },
          jumpInfo: e.ecsJumpInfoBase64Str,
          pairingId: e.pairingId,
          headSwiper: r,
          productNum: e.productList.length,
          title: e.title,
          isOffline: e.status !== 20001
        }, console.log("headSwiper", r), this.computedSwiperHeight(r), r.length &gt; 0 &amp;&amp; (r[0].labelList.forEach(function (o) {
          _this26.report("commodity_card", "element_valid_expose", o.productId);
        }), this.report("match_buy_button", "element_valid_expose", "")), e;
      },
      computedContainerWidth: function computedContainerWidth() {
        var e;
        var i = this.platform === "web" ? 350 : (e = this.$refs.shopparing_warp) == null ? void 0 : e.offsetWidth;
        this.containerWidth = i;
      },
      computedSwiperHeight: function computedSwiperHeight(i) {
        var e = this.containerWidth || 350;
        if (!i || !i.length) return 350;
        var t = i[0],
          r = t.width,
          o = t.height;
        if (!r || !o) return 350;
        var s = r / o,
          n = 16 / 9,
          u = 3 / 4;
        var d = 0;
        s &gt; n ? d = e * 9 / 16 : s &lt; u ? d = e * 4 / 3 : d = e / s, this.swiperHeight = Math.round(d);
      },
      supportOpenEcs: function supportOpenEcs() {
        var _this27 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee25() {
          return _regeneratorRuntime().wrap(function _callee25$(_context25) {
            while (1) switch (_context25.prev = _context25.next) {
              case 0:
                if (!(_typeof$2(_this27._supportOpenEcs) &lt; "u")) {
                  _context25.next = 4;
                  break;
                }
                _context25.t0 = _this27._supportOpenEcs;
                _context25.next = 8;
                break;
              case 4:
                _context25.next = 6;
                return P$1();
              case 6:
                _this27._supportOpenEcs = _context25.sent;
                _context25.t0 = _this27._supportOpenEcs;
              case 8:
                return _context25.abrupt("return", _context25.t0);
              case 9:
              case "end":
                return _context25.stop();
            }
          }, _callee25);
        }))();
      },
      openJumpInfo: function openJumpInfo(i) {
        var _this28 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee26() {
          var e, t, r;
          return _regeneratorRuntime().wrap(function _callee26$(_context26) {
            while (1) switch (_context26.prev = _context26.next) {
              case 0:
                if (!(_this28.platform === "wechat")) {
                  _context26.next = 13;
                  break;
                }
                _context26.next = 3;
                return P$1();
              case 3:
                r = _context26.sent;
                if (!r) {
                  _context26.next = 10;
                  break;
                }
                console.log("supportOpenEcs=".concat(r, ", jumpInfo=").concat(i));
                _context26.next = 8;
                return j(i);
              case 8:
                _context26.next = 11;
                break;
              case 10:
                (e = window == null ? void 0 : window.weui) == null || e.toast("当前版本不支持打开店铺", {
                  extClass: "weui-toast_text"
                });
              case 11:
                _context26.next = 14;
                break;
              case 13:
                console.log("jumpInfo", i), (t = window == null ? void 0 : window.weui) == null || t.toast("请在手机微信中打开", {
                  extClass: "weui-toast_text"
                });
              case 14:
              case "end":
                return _context26.stop();
            }
          }, _callee26);
        }))();
      },
      jumpPairingBuy: function jumpPairingBuy() {
        var _this29 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee27() {
          var i;
          return _regeneratorRuntime().wrap(function _callee27$(_context27) {
            while (1) switch (_context27.prev = _context27.next) {
              case 0:
                console.log("点击"), _this29.openJumpInfo((i = _this29.pairingData) == null ? void 0 : i.jumpInfo), _this29.report("match_buy_button", "element_click", "");
              case 1:
              case "end":
                return _context27.stop();
            }
          }, _callee27);
        }))();
      },
      jumpProduct: function jumpProduct(i) {
        var _this30 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee28() {
          return _regeneratorRuntime().wrap(function _callee28$(_context28) {
            while (1) switch (_context28.prev = _context28.next) {
              case 0:
                console.log("jumpProduct", i), _this30.openJumpInfo(i.labelPage.ecsJumpInfoBase64Str || ""), _this30.report("commodity_card", "element_click", i.productId);
              case 1:
              case "end":
                return _context28.stop();
            }
          }, _callee28);
        }))();
      },
      handleSwiperIndexChange: function handleSwiperIndexChange(i) {
        this.currentSwiperIndex = i;
      },
      handleIndicatorChange: function handleIndicatorChange(i) {
        this.currentSwiperIndex = i.index, this.$refs.swiperProduct &amp;&amp; (this.$refs.swiperProduct.innerCurrentIndex = i.index, this.$refs.swiperProduct.setIndexPosition());
      },
      handleIndicatorUpdate: function handleIndicatorUpdate(i) {
        this.currentSwiperIndex = i, this.$refs.swiperProduct &amp;&amp; (this.$refs.swiperProduct.innerCurrentIndex = i, this.$refs.swiperProduct.setIndexPosition());
      },
      initReport: function initReport() {
        var _this31 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee29() {
          return _regeneratorRuntime().wrap(function _callee29$(_context29) {
            while (1) switch (_context29.prev = _context29.next) {
              case 0:
                _context29.t0 = w$1;
                if (_context29.t0) {
                  _context29.next = 5;
                  break;
                }
                _context29.next = 4;
                return N$1();
              case 4:
                w$1 = _context29.sent;
              case 5:
                _context29.t1 = _this31.pairingData.headSwiper.length;
                if (_context29.t1) {
                  _context29.next = 9;
                  break;
                }
                _context29.next = 9;
                return _this31.getPairingCard();
              case 9:
              case "end":
                return _context29.stop();
            }
          }, _callee29);
        }))();
      },
      report: function report(i, e) {
        var _arguments3 = arguments,
          _this32 = this;
        return asyncToGenerator( _regeneratorRuntime().mark(function _callee30() {
          var t, r;
          return _regeneratorRuntime().wrap(function _callee30$(_context30) {
            while (1) switch (_context30.prev = _context30.next) {
              case 0:
                t = _arguments3.length &gt; 2 &amp;&amp; _arguments3[2] !== undefined ? _arguments3[2] : "";
                if (!(console.log(window, window.source, w$1, "--report"), _this32.platform !== "wechat")) {
                  _context30.next = 3;
                  break;
                }
                return _context30.abrupt("return");
              case 3:
                _context30.next = 5;
                return _this32.initReport();
              case 5:
                r = {
                  logid: "23782",
                  data: {
                    event: e,
                    params: JSON.stringify({
                      page_name: "mp_article_page",
                      element_name: i,
                      productid: t || "",
                      mp_article_bizuin: w$1.article_info.mp_biz,
                      mp_article_appmsgid: w$1.article_info.appmsgid,
                      mp_article_item_idx: w$1.article_info.item_idx,
                      mp_article_item_show_type: w$1.article_info.item_show_type,
                      scene: w$1.article_info.mp_article_scene,
                      cardtype: q,
                      appid: _this32.shopAppid,
                      talent_appid: _this32.talentAppid
                    })
                  }
                };
                O$5(r);
              case 7:
              case "end":
                return _context30.stop();
            }
          }, _callee30);
        }))();
      }
    }
  };
  var Ie = function Ie() {
      var e = this,
        t = e._self._c;
      return t("div", {
        ref: "shopparing_warp",
        "class": e.isDark ? "shopparing_warp dark-mode" : "shopparing_warp",
        style: e.containerStyle
      }, [e.iframeLoading ? t("div", {
        staticClass: "shopparing_wx_img_placeholder",
        style: e.placeholderStyle
      }) : t("div", {
        ref: "shopparing_card_wrap",
        staticClass: "shopparing_card_wrap",
        style: e.cardStyle,
        attrs: {
          id: "shopparing_card_wrap"
        }
      }, [e.pairingData.isOffline ? t("div", {
        staticClass: "shopparing-offline-card"
      }, [t("span", {
        staticClass: "shopparing-offline-card-text"
      }, [e._v("该搭配已下架")])]) : [t("SwiperProduct", {
        ref: "swiperProduct",
        attrs: {
          width: e.containerWidth,
          height: e.swiperHeight,
          list: e.pairingData.headSwiper
        },
        on: {
          tagClick: e.jumpProduct,
          "current-index-change": e.handleSwiperIndexChange
        }
      }), t("SwiperIndicator", {
        attrs: {
          "swiper-list": e.pairingData.headSwiper,
          "current-index": e.currentSwiperIndex,
          "hide-indicator": !1,
          "max-indicator-index": 0
        },
        on: {
          change: e.handleIndicatorChange,
          "update:current-index": e.handleIndicatorUpdate
        }
      }), t("div", {
        staticClass: "pairing-card-footer"
      }, [t("div", {
        staticClass: "pairing-card-footer__info"
      }, [t("div", {
        staticClass: "pairing-card-footer__info-text"
      }, [t("div", {
        staticClass: "pairing-card-footer__title"
      }, [e._v(e._s(e.pairingData.title))]), t("div", {
        staticClass: "pairing-card-footer__desc"
      }, [e._v("共" + e._s(e.pairingData.productNum) + "件")])]), t("button", {
        staticClass: "pairing-card-footer__btn",
        on: {
          click: e.jumpPairingBuy
        }
      }, [e._v("搭配买")])]), t("div", {
        staticClass: "pairing-card-footer__brand"
      }, [t("span", {
        staticClass: "pairing-card-footer__brand-icon"
      }), t("span", {
        staticClass: "pairing-card-footer__brand-text"
      }, [e._v(e._s(e.pairingData.pairingCreator.pairingCreatorName))]), e.pairingCreatorTag ? t("img", {
        staticClass: "pairing-card-footer__brand-rtag",
        attrs: {
          src: e.pairingCreatorTag,
          alt: "RIcon"
        }
      }) : e._e()])])]], 2)]);
    },
    Fe = [],
    Te = v$2(ye, Ie, Fe, !1, null, null, null, null);
  var Oe = Te.exports;
  var ve = {
    components: {
      CommonShopcollection: we,
      CommonShopBuyTogether: Ee,
      CommonShopShopparing: Oe
    },
    mixins: [k$1],
    props: {
      type: {
        type: [Number, String],
        required: !0
      },
      json: {
        type: String,
        required: !0
      }
    },
    computed: {
      data: function data() {
        return _objectSpread$4(_objectSpread$4({}, JSON.parse(this.json || "{}")), {}, {
          platform: this.platform
        });
      },
      classObject: function classObject() {
        var e;
        var i = "";
        return this.type == 1 ? i = "wx_card_root_common_shopcollection" : this.type == 2 &amp;&amp; (i = "wx_card_root_common_buytogether", ["8", "10"].includes(window.item_show_type) &amp;&amp; ((e = this.data) == null ? void 0 : e.cardtype) === R.LINK &amp;&amp; (i = "wx_card_root_common_buytogether wx_card_root_common_buytogether_inline")), i;
      }
    },
    mounted: function mounted() {
      this.extraInfo.window &amp;&amp; this.extraInfo.window.addEventListener("click", this.handleDocumentClick);
    },
    beforeDestroy: function beforeDestroy() {
      this.extraInfo.window &amp;&amp; this.extraInfo.window.removeEventListener("click", this.handleDocumentClick);
    },
    methods: {
      handleDocumentClick: function handleDocumentClick(i) {
        this.$refs.js_custom_element.contains(i.target) || this.$emit("document-click", i);
      }
    }
  };
  var Pe = function Pe() {
      var e = this,
        t = e._self._c;
      return t("div", {
        ref: "js_custom_element",
        staticClass: "wx_card_root",
        "class": e.classObject
      }, [+e.type == 1 ? t("CommonShopcollection", e._b({}, "CommonShopcollection", e.data, !1)) : e._e(), +e.type == 2 ? t("CommonShopBuyTogether", e._b({}, "CommonShopBuyTogether", e.data, !1)) : e._e(), +e.type == 3 ? t("CommonShopShopparing", e._b({}, "CommonShopShopparing", e.data, !1)) : e._e()], 1);
    },
    ke = [],
    Se = v$2(ve, Pe, ke, !1, null, "6cb961c5", null, null);
  var Ue = Se.exports,
    He = ".wx_hover_card:before{content:\" \";position:absolute;top:0;left:0;right:0;bottom:0;border-radius:8px;box-sizing:border-box;border:1px solid rgba(7,193,96,.3);pointer-events:none;z-index:9}.wx_selected_card:before{content:\" \";position:absolute;top:0;left:0;right:0;bottom:0;border-radius:8px;border:1.5px solid #07C160;box-sizing:border-box;background:rgba(7,193,96,.1);pointer-events:none;z-index:9}body,.wx-root{--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #07C160;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0_5: rgba(0, 0, 0, .9);--weui-GLYPH-0: rgba(0, 0, 0, .9);--weui-GLYPH-1: rgba(0, 0, 0, .55);--weui-GLYPH-2: rgba(0, 0, 0, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #91D300;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #1485EE;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #95EC69;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #FA9D3B;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6467F0;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #FA5151;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .05);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #FFC300;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #FA9D3B;--weui-YELLOW: #FFC300;--weui-GREEN: #91D300;--weui-LIGHTGREEN: #95EC69;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1485EE;--weui-PURPLE: #6467F0;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #FA9D3B;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #10AEFF;--weui-REDORANGE: #FF6146;--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-BG-0: #ededed;--weui-BG-1: #f7f7f7;--weui-BG-2: #fff;--weui-BG-3: #f7f7f7;--weui-BG-4: #4c4c4c;--weui-BG-5: #fff;--weui-FG-0: rgba(0, 0, 0, .9);--weui-FG-HALF: rgba(0, 0, 0, .9);--weui-FG-1: rgba(0, 0, 0, .55);--weui-FG-2: rgba(0, 0, 0, .3);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-FG-5: rgba(0, 0, 0, .05);--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #fa9d3b;--weui-YELLOW: #ffc300;--weui-GREEN: #91d300;--weui-LIGHTGREEN: #95ec69;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1485ee;--weui-PURPLE: #6467f0;--weui-WHITE: #fff;--weui-LINK: #576b95;--weui-TEXTGREEN: #06ae56;--weui-FG: #000;--weui-BG: #fff;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: #fa9d3b;--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: #06ae56;--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: #10aeff;--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05);--weui-REDORANGE: #ff6146}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2c2c2c;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-FG-5: rgba(255, 255, 255, .1);--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-FG: #fff;--weui-BG: #000;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-REDORANGE: #ff6146}}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2c2c2c;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-FG-5: rgba(255, 255, 255, .1);--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-FG: #fff;--weui-BG: #000;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-REDORANGE: #ff6146}.wx-root[data-weui-mode=care],body[data-weui-mode=care]{--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #007DBB;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #018942;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0_5: #000000;--weui-GLYPH-0: #000000;--weui-GLYPH-1: rgba(0, 0, 0, .6);--weui-GLYPH-2: rgba(0, 0, 0, .42);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #4F8400;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #0075E2;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #2E8800;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #E17719;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #D14730;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6265F1;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #DC3636;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .1);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #BB8E00;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-RED: #DC3636;--weui-ORANGERED: #D14730;--weui-ORANGE: #E17719;--weui-YELLOW: #BB8E00;--weui-GREEN: #4F8400;--weui-LIGHTGREEN: #2E8800;--weui-TEXTGREEN: #06AE56;--weui-BLUE: #007DBB;--weui-INDIGO: #0075E2;--weui-PURPLE: #6265F1;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #E17719;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #007DBB;--weui-REDORANGE: #D14730;--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-BG-0: #ededed;--weui-BG-1: #f7f7f7;--weui-BG-2: #fff;--weui-BG-3: #f7f7f7;--weui-BG-4: #4c4c4c;--weui-BG-5: #fff;--weui-FG-0: #000000;--weui-FG-HALF: #000000;--weui-FG-1: rgba(0, 0, 0, .6);--weui-FG-2: rgba(0, 0, 0, .42);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-FG-5: rgba(0, 0, 0, .05);--weui-RED: #dc3636;--weui-ORANGERED: #d14730;--weui-ORANGE: #e17719;--weui-YELLOW: #bb8e00;--weui-GREEN: #4f8400;--weui-LIGHTGREEN: #2e8800;--weui-BRAND: #018942;--weui-BLUE: #007dbb;--weui-INDIGO: #0075e2;--weui-PURPLE: #6265f1;--weui-WHITE: #fff;--weui-LINK: #576b95;--weui-TEXTGREEN: #06ae56;--weui-FG: #000;--weui-BG: #fff;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: #e17719;--weui-TAG-BACKGROUND-ORANGE: rgba(225, 119, 25, .1);--weui-TAG-TEXT-GREEN: #06ae56;--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: #007dbb;--weui-TAG-BACKGROUND-BLUE: rgba(0, 125, 187, .1);--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05);--weui-REDORANGE: #d14730}@media (prefers-color-scheme: dark){.wx-root[data-weui-mode=care]:not([data-weui-theme=light]),body[data-weui-mode=care]:not([data-weui-theme=light]){--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2c2c2c;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-FG-5: rgba(255, 255, 255, .1);--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-FG: #fff;--weui-BG: #000;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-REDORANGE: #ff6146}}.wx-root[data-weui-mode=care][data-weui-theme=dark],body[data-weui-mode=care][data-weui-theme=dark]{--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2c2c2c;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-FG-5: rgba(255, 255, 255, .1);--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-FG: #fff;--weui-BG: #000;--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-REDORANGE: #ff6146}.wx-root,body{--weui-BG-COLOR-ACTIVE: #ececec}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-COLOR-ACTIVE: #373737}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-COLOR-ACTIVE: #373737}}body,.wx-root,page{--weui-BTN-HEIGHT: 48;--weui-BTN-HEIGHT-MEDIUM: 40;--weui-BTN-HEIGHT-SMALL: 32}.wx-root,body{--weui-BTN-ACTIVE-MASK: rgba(0, 0, 0, .1)}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BTN-ACTIVE-MASK: rgba(255, 255, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BTN-ACTIVE-MASK: rgba(255, 255, 255, .1)}}.wx-root,body{--weui-BTN-DEFAULT-ACTIVE-BG: #e6e6e6}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BTN-DEFAULT-ACTIVE-BG: rgba(255, 255, 255, .126)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BTN-DEFAULT-ACTIVE-BG: rgba(255, 255, 255, .126)}}.wx-root,body{--weui-DIALOG-LINE-COLOR: rgba(0, 0, 0, .1)}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-DIALOG-LINE-COLOR: rgba(255, 255, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-DIALOG-LINE-COLOR: rgba(255, 255, 255, .1)}}.weui-btn{position:relative;display:block;width:184px;margin-left:auto;margin-right:auto;padding:12px 24px;box-sizing:border-box;font-weight:500;font-size:17px;text-align:center;text-decoration:none;color:#fff;line-height:1.41176471;border-radius:8px;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;-moz-user-select:none;user-select:none}.weui-btn:active:before{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background-color:var(--weui-BTN-ACTIVE-MASK);border-radius:8px}.weui-btn:active.weui-btn_loading:before,.weui-btn:active.weui-btn_disabled:before,.weui-btn:active[disabled]:before{display:none}.weui-btn_block{width:auto}.weui-btn_inline{display:inline-block}.weui-btn_default{color:var(--weui-FG-0);background-color:var(--weui-FG-5)}.weui-btn_default:not(.weui-btn_disabled):visited{color:var(--weui-FG-0)}.weui-btn_primary{background-color:var(--weui-BRAND)}.weui-btn_primary:not(.weui-btn_disabled):visited{color:#fff}.weui-btn_warn{color:var(--weui-RED);background-color:var(--weui-FG-5)}.weui-btn_warn:not(.weui-btn_disabled):visited{color:var(--weui-RED)}.weui-btn_overlay{color:var(--weui-BRAND);background-color:#fff}.weui-btn_overlay:not(.weui-btn_disabled):visited{color:var(--weui-BRAND)}.weui-btn_disabled,.weui-btn[disabled]{color:var(--weui-FG-4);background-color:var(--weui-BG-1)}.weui-btn_loading .weui-loading{margin:-.2em 8px 0 0}.weui-btn_loading .weui-mask-loading{margin:-.2em 8px 0 0;color:currentColor}.weui-btn_loading .weui-primary-loading{margin:-.2em 8px 0 0;vertical-align:middle;color:currentColor}.weui-btn_loading .weui-primary-loading:before{content:\"\"}.weui-btn_loading.weui-btn_primary{color:var(--weui-WHITE)}.weui-btn_cell{position:relative;display:block;margin-left:auto;margin-right:auto;box-sizing:border-box;font-size:17px;text-align:center;text-decoration:none;color:#fff;line-height:1.41176471;padding:16px;-webkit-tap-highlight-color:rgba(0,0,0,0);overflow:hidden;background-color:var(--weui-BG-5)}.weui-btn_cell+.weui-btn_cell{margin-top:16px}.weui-btn_cell:active{background-color:var(--weui-BG-COLOR-ACTIVE)}.weui-btn_cell__icon{display:inline-block;vertical-align:middle;width:24px;height:24px;margin:-.2em .34em 0 0}.weui-btn_cell-default{color:var(--weui-FG-0)}.weui-btn_cell-primary{color:var(--weui-LINK)}.weui-btn_cell-warn{color:var(--weui-RED)}.weui-bottom-fixed-opr-page{height:100%;display:flex;flex-direction:column}.weui-bottom-fixed-opr-page__content{min-height:0;flex:1;padding-bottom:80px;box-sizing:border-box;overflow-y:auto;-webkit-overflow-scrolling:touch}.weui-bottom-fixed-opr-page__tool{padding:16px 32px 24px;padding:16px calc(32px + constant(safe-area-inset-right)) calc(24px + constant(safe-area-inset-bottom)) calc(32px + constant(safe-area-inset-left));padding:16px calc(32px + env(safe-area-inset-right)) calc(24px + env(safe-area-inset-bottom)) calc(32px + env(safe-area-inset-left));background:#ffffff;position:relative;z-index:50}.weui-bottom-fixed-opr-page__tool:before{content:\"\";height:80px;background:linear-gradient(to top,#ffffff,rgba(255,255,255,0));position:absolute;bottom:calc(100% - 1px);left:0;right:0;transform:translateZ(0);pointer-events:none}.wx-root[data-weui-theme=dark] .weui-bottom-fixed-opr-page__tool,body[data-weui-theme=dark] .weui-bottom-fixed-opr-page__tool{background:#191919}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]) .weui-bottom-fixed-opr-page__tool,body:not([data-weui-theme=light]) .weui-bottom-fixed-opr-page__tool{background:#191919}}.wx-root[data-weui-theme=dark] .weui-bottom-fixed-opr-page__tool:before,body[data-weui-theme=dark] .weui-bottom-fixed-opr-page__tool:before{background:linear-gradient(to top,#191919,rgba(25,25,25,0))}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]) .weui-bottom-fixed-opr-page__tool:before,body:not([data-weui-theme=light]) .weui-bottom-fixed-opr-page__tool:before{background:linear-gradient(to top,#191919,rgba(25,25,25,0))}}.weui-bottom-fixed-opr-page__tips{margin-bottom:24px;padding:0 32px;text-align:center}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr{display:flex;align-items:center;justify-content:center}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn{width:184px;padding-left:16px;padding-right:16px}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2),.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn{margin:0 8px;width:136px}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2):first-child,.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn:first-child{margin-left:0}.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2):last-child,.weui-bottom-fixed-opr-page .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn:last-child{margin-right:0}.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr{flex-direction:column}.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2),.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn{width:184px;margin:16px 0 0}.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2):first-child,.weui-bottom-fixed-opr-page_btn-wrap .weui-bottom-fixed-opr .weui-btn:nth-last-child(n+2)+.weui-btn:first-child{margin-top:0}.weui-bottom-fixed-opr-page.weui-form{padding-top:0}.weui-bottom-fixed-opr-page.weui-form .weui-form__bd{padding-top:56px;padding-top:calc(56px + constant(safe-area-inset-top));padding-top:calc(56px + env(safe-area-inset-top))}.weui-bottom-fixed-opr-page.weui-form .weui-form__ft{padding-bottom:0}.weui-bottom-fixed-opr-page.weui-form .weui-form__control-area{margin-bottom:0}.weui-bottom-fixed-opr-page.weui-half-screen-dialog{padding:0}.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__hd,.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__bd,.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__ft{padding-left:24px;padding-left:calc(24px + constant(safe-area-inset-left));padding-left:calc(24px + env(safe-area-inset-left));padding-right:24px;padding-right:calc(24px + constant(safe-area-inset-right));padding-right:calc(24px + env(safe-area-inset-right))}.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__bd{padding-bottom:80px}.weui-bottom-fixed-opr-page.weui-half-screen-dialog .weui-half-screen-dialog__ft{padding-bottom:64px;padding-bottom:calc(64px + constant(safe-area-inset-bottom));padding-bottom:calc(64px + env(safe-area-inset-bottom))}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog{padding:0}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-half-screen-dialog__hd{padding:0 24px;padding:0 calc(24px + constant(safe-area-inset-right)) 0 calc(24px + constant(safe-area-inset-left));padding:0 calc(24px + env(safe-area-inset-right)) 0 calc(24px + env(safe-area-inset-left))}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-half-screen-dialog__bd{padding-bottom:0;display:flex;flex-direction:column}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-half-screen-dialog__ft{padding:0}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-bottom-fixed-opr-page{flex:1;min-height:0}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-bottom-fixed-opr-page__content{padding:0 24px;padding:0 calc(24px + constant(safe-area-inset-right)) 0 calc(24px + constant(safe-area-inset-left));padding:0 calc(24px + env(safe-area-inset-right)) 0 calc(24px + env(safe-area-inset-left))}.weui-half-screen-dialog_bottom-fixed.weui-half-screen-dialog .weui-bottom-fixed-opr{padding:16px 0 64px;padding:16px 0 calc(64px + constant(safe-area-inset-bottom));padding:16px 0 calc(64px + env(safe-area-inset-bottom))}button.weui-btn,input.weui-btn{border-width:0;outline:0;-webkit-appearance:none}button.weui-btn:focus,input.weui-btn:focus{outline:0}button.weui-btn_inline,input.weui-btn_inline,button.weui-btn_mini,input.weui-btn_mini{width:auto}.weui-btn_medium{font-size:14px;padding:10px 24px;line-height:calc((var(--weui-BTN-HEIGHT-MEDIUM) - 20) / 14)}.weui-btn_mini{display:inline-block;width:auto;line-height:calc((32 - 12) / 14);padding:6px 12px;font-size:14px;border-radius:6px}.weui-btn_xmini{display:inline-block;width:auto;padding:4px 12px;line-height:calc((28 - 8) / 14);font-size:14px;font-weight:500;border-radius:4px}.weui-btn+.weui-btn{margin-top:16px}.weui-btn.weui-btn_mini+.weui-btn.weui-btn_mini{margin-top:auto}.weui-btn.weui-btn_xmini+.weui-btn.weui-btn_xmini{margin-top:auto}.weui-btn.weui-btn_inline+.weui-btn.weui-btn_inline{margin-left:16px}.weui-btn-area{margin:48px 16px 8px}.weui-btn-area_inline{display:flex}.weui-btn-area_inline .weui-btn{margin-top:auto;margin-right:16px;width:100%;flex:1}.weui-btn-area_inline .weui-btn:last-child{margin-right:0}.weui-btn_reset{background:transparent;border:0;padding:0;outline:0;font-size:inherit}.weui-btn_icon{background:transparent;border:0;padding:0;outline:0;font-size:0}.weui-btn_icon:active [class*=weui-icon-]{color:var(--weui-FG-1)}.collection_wx_img_placeholder{width:100%;background-color:#00000005;background:var(--weui-BG-2) url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='80px' height='80px' viewBox='0 0 80 80' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3E9.\u5143\u7D20/\u52A0\u8F7D/Black%3C/title%3E%3Cdefs%3E%3ClinearGradient x1='94.0869141%25' y1='0%25' x2='94.0869141%25' y2='90.559082%25' id='linearGradient-1'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.67370605%25' x2='100%25' y2='90.6286621%25' id='linearGradient-2'%3E%3Cstop stop-color='%23606060' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cg id='\u9875\u9762-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' opacity='0.9'%3E%3Cg id='LoadingDefault'%3E%3Cpath d='M40,0 C62.09139,0 80,17.90861 80,40 C80,62.09139 62.09139,80 40,80 L40,73 C58.2253967,73 73,58.2253967 73,40 C73,21.7746033 58.2253967,7 40,7 L40,0 Z' id='\u8DEF\u5F84' fill='url(%23linearGradient-1)'%3E%3C/path%3E%3Cpath d='M40,0 L40,7 C21.7746033,7 7,21.7746033 7,40 C7,58.2253967 21.7746033,73 40,73 L40,80 C17.90861,80 0,62.09139 0,40 C0,17.90861 17.90861,0 40,0 Z' id='\u8DEF\u5F84' fill='url(%23linearGradient-2)'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23606060' cx='40.5' cy='3.5' r='3.5'%3E%3C/circle%3E%3C/g%3E%3CanimateTransform attributeName='transform' begin='0s' dur='1s' type='rotate' values='0 40 40;360 40 40' repeatCount='indefinite'/%3E%3C/g%3E%3C/svg%3E%0A\") no-repeat 50% 50%!important;background-size:16px!important;border-radius:8px}.wx_card_root_common_shopcollection{display:flex;flex-direction:column;-webkit-user-select:none;-moz-user-select:none;user-select:none;align-items:center;position:relative}.wx_card_root_common_shopcollection .shopcollection_warp{width:100%;display:flex;justify-content:center}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap{width:100%;background-color:#00000005;border-radius:8px;padding:16px 16px 8px;margin:0;box-sizing:border-box}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .card_head{width:100%;display:flex;flex-direction:row;justify-content:space-between}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .card_head .head_left{display:flex;align-items:center}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .card_head .head_left .head_mid{display:flex;flex-direction:column}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .card_head .head_left .head_mid .head_mid_top{font-size:17px;font-family:PingFang SC;color:var(--weui-FG-0);line-height:21px;word-break:break-all;margin-right:4px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;opacity:.9}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .card_head .head_right .tap_home_btn{font-weight:400!important;background-color:var(--weui-FG-5, rgba(0, 0, 0, .05));display:flex;align-items:center;height:32px}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .product_list{display:flex;width:100%;justify-content:space-between;margin-top:22px}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .product_list .product{position:relative}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .product_list .product .product_image{width:100%;height:100%;border-radius:2px}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .product_list .product .product_price{bottom:4px;right:4px;position:absolute;border-radius:2px;padding:0 3px;height:15px;font-size:14px;font-family:WeChatSansStd-Medium;font-weight:400;color:#fff;line-height:15px;background-color:#0003}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .product_list :not(:first-child){margin-left:4px}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .shop_icon_wrap{width:100%;display:flex;align-items:center;justify-content:flex-start;margin-top:12px}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .shop_icon_wrap .shop_icon{width:14px;height:14px;margin-right:2px;background-image:url(https://res.wx.qq.com/shop/public/2025-05-10/321b820e-8d8a-4083-8e0f-40b2b01fc8ef.png);background-repeat:no-repeat;background-size:contain}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .shop_icon_wrap .shop_name{font-size:12px;font-family:PingFang SC;font-weight:400;color:var(--weui-GLYPH-1, rgba(0, 0, 0, .55));line-height:16.8px}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .shop_status_desc{color:#0000004d;height:114px;display:flex;align-items:center;justify-content:center}@media (prefers-color-scheme: dark){.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap{background-color:#ffffff05}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .shop_icon_wrap .shop_icon{background-image:url(https://res.wx.qq.com/shop/public/2025-05-21/8f4c69e9-a78b-4c26-a4ce-affa1c47366d.png)}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .shop_status_desc{color:#ffffff4d}.wx_card_root_common_shopcollection .shopcollection_warp .card_wrap .collection_wx_img_placeholder{background-color:#ffffff05}}.wx_card_root_common_buytogether{display:flex;flex-direction:column;-webkit-user-select:none;-moz-user-select:none;user-select:none;position:relative;width:100%}.wx_card_root_common_buytogether_inline{display:inline-block!important;width:auto!important}.common_buytogether_root{display:flex;flex-direction:column;-webkit-user-select:none;-moz-user-select:none;user-select:none;align-items:center;position:relative}.common_buytogether_root .collection_wx_img_placeholder{width:100%;background-color:var(--weui-BG-2, rgba(0, 0, 0, .02)) url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='80px' height='80px' viewBox='0 0 80 80' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3E9.\u5143\u7D20/\u52A0\u8F7D/Black%3C/title%3E%3Cdefs%3E%3ClinearGradient x1='94.0869141%25' y1='0%25' x2='94.0869141%25' y2='90.559082%25' id='linearGradient-1'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.67370605%25' x2='100%25' y2='90.6286621%25' id='linearGradient-2'%3E%3Cstop stop-color='%23606060' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cg id='\u9875\u9762-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' opacity='0.9'%3E%3Cg id='LoadingDefault'%3E%3Cpath d='M40,0 C62.09139,0 80,17.90861 80,40 C80,62.09139 62.09139,80 40,80 L40,73 C58.2253967,73 73,58.2253967 73,40 C73,21.7746033 58.2253967,7 40,7 L40,0 Z' id='\u8DEF\u5F84' fill='url(%23linearGradient-1)'%3E%3C/path%3E%3Cpath d='M40,0 L40,7 C21.7746033,7 7,21.7746033 7,40 C7,58.2253967 21.7746033,73 40,73 L40,80 C17.90861,80 0,62.09139 0,40 C0,17.90861 17.90861,0 40,0 Z' id='\u8DEF\u5F84' fill='url(%23linearGradient-2)'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23606060' cx='40.5' cy='3.5' r='3.5'%3E%3C/circle%3E%3C/g%3E%3CanimateTransform attributeName='transform' begin='0s' dur='1s' type='rotate' values='0 40 40;360 40 40' repeatCount='indefinite'/%3E%3C/g%3E%3C/svg%3E%0A\") no-repeat 50% 50%!important;background-size:16px!important;border-radius:8px}.common_buytogether_root .link-wrap{align-items:center;flex-grow:1;display:flex;justify-content:center}.common_buytogether_root .link-wrap .product_card_text_wrp{-webkit-user-select:none;-moz-user-select:none;user-select:none;display:inline;font-family:PingFang SC}.common_buytogether_root .link-wrap .product_card_text_wrp .product_text_link:before{display:inline-block;mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='25' height='25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.798 13.728c-.32 0-.636-.032-.942-.096-1.792-.378-3.042-1.754-3.042-3.348 0-.426.088-.84.262-1.232l.008-.02 2.008-4.498a3.696 3.696 0 013.372-2.186h9.8A3.697 3.697 0 0120.662 4.6l1.984 4.432c.178.402.268.82.268 1.248 0 1.596-1.252 2.974-3.044 3.348a4.63 4.63 0 01-2.176-.074c-.816-.23-1.514-.68-2.002-1.268-.798.846-2.018 1.368-3.326 1.368-1.308 0-2.52-.52-3.322-1.364-.488.59-1.188 1.042-2.014 1.274-.394.11-.808.168-1.23.168l-.002-.004zM3.46 9.632l-.01.022c-.09.2-.136.412-.136.63 0 .878.762 1.65 1.85 1.88.47.098.994.082 1.458-.048.766-.214 1.368-.728 1.576-1.34a1.43 1.43 0 00.046-.158.748.748 0 111.448-.056l.026.07.012.03c.392.892 1.448 1.49 2.634 1.49s2.25-.602 2.636-1.498c.02-.046.034-.082.046-.12a.744.744 0 01.754-.502.75.75 0 01.688.588c.012.056.026.108.042.152.214.62.802 1.118 1.572 1.334.466.132.99.148 1.46.048 1.092-.228 1.852-1.002 1.852-1.88 0-.216-.046-.43-.138-.636l-1.988-4.44-.008-.018-.018-.036a2.19 2.19 0 00-1.998-1.296h-9.8c-.864 0-1.648.51-2 1.298-.008.016-.014.032-.022.046L3.46 9.634v-.002zm8.904 12.01c-4.142 0-7.566-2.634-7.794-5.996a.75.75 0 111.498-.102c.174 2.578 2.94 4.598 6.298 4.598s6.122-2.02 6.296-4.598a.75.75 0 111.498.102c-.228 3.362-3.652 5.996-7.794 5.996h-.002z' fill='%23576B95'/%3E%3C/svg%3E\");-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='25' height='25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.798 13.728c-.32 0-.636-.032-.942-.096-1.792-.378-3.042-1.754-3.042-3.348 0-.426.088-.84.262-1.232l.008-.02 2.008-4.498a3.696 3.696 0 013.372-2.186h9.8A3.697 3.697 0 0120.662 4.6l1.984 4.432c.178.402.268.82.268 1.248 0 1.596-1.252 2.974-3.044 3.348a4.63 4.63 0 01-2.176-.074c-.816-.23-1.514-.68-2.002-1.268-.798.846-2.018 1.368-3.326 1.368-1.308 0-2.52-.52-3.322-1.364-.488.59-1.188 1.042-2.014 1.274-.394.11-.808.168-1.23.168l-.002-.004zM3.46 9.632l-.01.022c-.09.2-.136.412-.136.63 0 .878.762 1.65 1.85 1.88.47.098.994.082 1.458-.048.766-.214 1.368-.728 1.576-1.34a1.43 1.43 0 00.046-.158.748.748 0 111.448-.056l.026.07.012.03c.392.892 1.448 1.49 2.634 1.49s2.25-.602 2.636-1.498c.02-.046.034-.082.046-.12a.744.744 0 01.754-.502.75.75 0 01.688.588c.012.056.026.108.042.152.214.62.802 1.118 1.572 1.334.466.132.99.148 1.46.048 1.092-.228 1.852-1.002 1.852-1.88 0-.216-.046-.43-.138-.636l-1.988-4.44-.008-.018-.018-.036a2.19 2.19 0 00-1.998-1.296h-9.8c-.864 0-1.648.51-2 1.298-.008.016-.014.032-.022.046L3.46 9.634v-.002zm8.904 12.01c-4.142 0-7.566-2.634-7.794-5.996a.75.75 0 111.498-.102c.174 2.578 2.94 4.598 6.298 4.598s6.122-2.02 6.296-4.598a.75.75 0 111.498.102c-.228 3.362-3.652 5.996-7.794 5.996h-.002z' fill='%23576B95'/%3E%3C/svg%3E\");background-color:currentColor;-webkit-mask-size:contain;mask-size:contain;height:1.1em;width:1.1em;content:\"\";vertical-align:middle;margin-right:2px;margin-top:-.16em}.common_buytogether_root .link-wrap .product_card_text_wrp .product_text_link{text-decoration:none;padding:2px 4px;color:var(--weui-LINK, #576b95);cursor:default;-webkit-user-drag:none;border-radius:4px}.common_buytogether_root .common_buytogether_card_wrap{width:100%;background-color:#00000005;border-radius:8px;padding:16px 16px 8px;margin:0;box-sizing:border-box}.common_buytogether_root .common_buytogether_card_wrap .card_head{width:100%;display:flex;flex-direction:row;justify-content:space-between}.common_buytogether_root .common_buytogether_card_wrap .card_head .head_left{display:flex;flex-direction:column;justify-content:center}.common_buytogether_root .common_buytogether_card_wrap .card_head .head_left .head_left_top{display:flex;justify-content:center}.common_buytogether_root .common_buytogether_card_wrap .card_head .head_left .head_left_top .icon{background-image:url(https://res.wx.qq.com/shop/public/2025-06-05/3c0a6519-c7ac-424b-9d1e-6096a089e49b.png);width:24px;height:24px;background-size:cover}.common_buytogether_root .common_buytogether_card_wrap .card_head .head_left .head_left_top .title{flex:1;margin-right:16px;margin-left:5px;font-size:17px;font-family:PingFang SC;font-weight:500;color:var(--weui-ORANGERED-100, #ff6146);line-height:24px}.common_buytogether_root .common_buytogether_card_wrap .card_head .head_left .head_left_bottom{margin-top:6px;display:flex;align-items:center;text-align:center}.common_buytogether_root .common_buytogether_card_wrap .card_head .head_left .head_left_bottom .avatar_list{display:flex;align-items:center}.common_buytogether_root .common_buytogether_card_wrap .card_head .head_left .head_left_bottom .avatar_list .avatar{width:16px;height:16px;border-radius:2px}.common_buytogether_root .common_buytogether_card_wrap .card_head .head_left .head_left_bottom .avatar_list&gt;:not(:first-child){margin-left:2px}.common_buytogether_root .common_buytogether_card_wrap .card_head .head_left .head_left_bottom .desc{margin-left:6px;font-size:12px;font-family:PingFang SC;font-weight:400;color:var(--weui-GLYPH-1);line-height:16px}.common_buytogether_root .common_buytogether_card_wrap .card_head .head_right .tap_home_btn{padding:0 12px!important;border-radius:6px;white-space:nowrap;text-align:center;display:flex;justify-content:center;align-items:center;height:32px;font-size:14px;font-family:PingFang SC;font-weight:500;color:var(--weui-GLYPH-WHITE-3, #ffffff);background-color:var(--weui-ORANGERED-100, #ff6146);border:0}.common_buytogether_root .common_buytogether_card_wrap .product_list{display:flex;width:100%;margin-top:16px}.common_buytogether_root .common_buytogether_card_wrap .product_list .product{display:flex;flex-direction:column}.common_buytogether_root .common_buytogether_card_wrap .product_list .product .product_image{width:100%;border-radius:4px}.common_buytogether_root .common_buytogether_card_wrap .product_list .product .product_price{margin-top:4px}.common_buytogether_root .common_buytogether_card_wrap .product_list .product .product_price .selling_price{font-size:17px;font-family:WeChatSansStd-Medium;font-weight:500;color:var(--weui-GLYPH-0);line-height:19px}.common_buytogether_root .common_buytogether_card_wrap .product_list .product .product_price .before_selling_price{margin-left:2px;position:relative;font-size:12px;font-family:WeChatSansStd-Medium;font-weight:400;color:#afafaf;line-height:16px}.common_buytogether_root .common_buytogether_card_wrap .product_list .product .product_price .newlineationPrice{position:absolute;height:2px;top:50%;left:50%;transform:scaleY(.5) translate(-50%,-50%);width:100%;background:#AFAFAF;border-top:1px solid #fff;border-bottom:1px solid #fff}.common_buytogether_root .common_buytogether_card_wrap .product_list&gt;:not(:first-child){margin-left:4px}.common_buytogether_root .common_buytogether_card_wrap .shop_icon_wrap{width:100%;display:flex;align-items:center;justify-content:flex-start;margin-top:8px}.common_buytogether_root .common_buytogether_card_wrap .shop_icon_wrap .shop_icon{width:14px;height:14px;margin-right:2px;background-image:url(https://res.wx.qq.com/shop/public/2025-05-10/321b820e-8d8a-4083-8e0f-40b2b01fc8ef.png);background-size:contain;background-position:center center;flex-shrink:0}.common_buytogether_root .common_buytogether_card_wrap .shop_icon_wrap .shop_name{font-size:12px;font-family:PingFang SC;font-weight:400;color:var(--weui-GLYPH-1, rgba(0, 0, 0, .55));line-height:16.8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}.common_buytogether_root .qrcode-wrapper{display:flex;align-items:center;padding:10px 12px 10px 10px}.common_buytogether_root .qrcode-wrapper .qrcode{width:76px;height:76px;margin-right:14px}.common_buytogether_root .qrcode-wrapper .desc{font-size:12px;line-height:17px;font-weight:400;display:flex;flex-direction:column;color:var(--weui-FG-0)}@media (prefers-color-scheme: dark){.common_buytogether_root .common_buytogether_card_wrap{background-color:#ffffff05}.common_buytogether_root .common_buytogether_card_wrap .product_list .product .product_price .before_selling_price{color:#5e5e5e}.common_buytogether_root .common_buytogether_card_wrap .product_list .product .product_price .newlineationPrice{background:#5E5E5E;border-top:1px solid #1E1E1E;border-bottom:1px solid #1E1E1E}.common_buytogether_root .common_buytogether_card_wrap .shop_icon_wrap .shop_icon{background-image:url(https://res.wx.qq.com/shop/public/2025-05-21/8f4c69e9-a78b-4c26-a4ce-affa1c47366d.png)}.common_buytogether_root .collection_wx_img_placeholder{background-color:#ffffff05}.common_buytogether_root .qrcode-wrapper .qrcode{filter:invert(1)}}.shopparing_warp{width:100%;display:flex;justify-content:center;background:rgba(255,255,255,.03);-webkit-user-select:none;-moz-user-select:none;user-select:none}.shopparing_warp .shopparing-offline-card{display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.03);height:120px;border-radius:8px}.shopparing_warp .shopparing-offline-card-text{color:#0000004d;font-size:14px}.pairing-card-footer{background:rgba(0,0,0,.02);border-radius:0 0 16px 16px;padding:8px 16px;box-sizing:border-box;min-height:72px}.pairing-card-footer__info{display:flex;align-items:center;justify-content:space-between;flex:1;min-width:0}.pairing-card-footer__title{font-size:15px;color:#000000e6;font-weight:500;flex:1;margin-right:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pairing-card-footer__desc{font-size:14px;color:#0000004d}.pairing-card-footer__brand{display:flex;align-items:center;font-size:13px;color:#b2b2b2;margin-top:12px}.pairing-card-footer__brand-icon{font-size:14px;height:1em;width:1em;margin:0 2px;background-image:url(https://res.wx.qq.com/op_res/jXYqVlv0Bp4U5kA7rRVadiXJa4OoJ3XBiu6NnGwip81QtLP4_tC88GRmSpCoFfkcr2wD4gexp2x7bkYGGRP4Mw);background-repeat:no-repeat;background-size:contain}.pairing-card-footer__brand-text{color:#0000004d}.pairing-card-footer__brand-rtag{font-size:14px;height:1em;width:1em;margin:0 2px}.pairing-card-footer__btn{background:#ff6146;color:#fff;border:none;border-radius:6px;font-size:15px;font-weight:500;padding:5.5px 18px;cursor:pointer;transition:background .2s}.pairing-card-footer__btn:active{background:#ff6146}.dark-mode .shopparing-offline-card{background:rgba(255,255,255,.03)}.dark-mode .shopparing-offline-card-text{color:#ffffff4d}.dark-mode .swiper-wrapper,.dark-mode .swiper-wrapper .image-container{background:#111}.dark-mode .pairing-card-footer{background:rgba(0,0,0,.03)}.dark-mode .pairing-card-footer__title{color:#fffc}.dark-mode .pairing-card-footer__desc{font-size:14px;color:#ffffff4d}.dark-mode .pairing-card-footer__brand{color:#ffffff4d}.dark-mode .pairing-card-footer__brand-icon{color:#ffffff4d;background-image:url(https://res.wx.qq.com/op_res/jXYqVlv0Bp4U5kA7rRVadr_IVVcYZeY_bErEeSJQ0eAObBEiF9qnYrc_HLdsY8q6nQQ5T3WHhgVq1pF5a9XRbg)}.dark-mode .pairing-card-footer__brand-text{color:#ffffff4d}.swiper-out{overflow:hidden;position:relative;background-color:#ededed;border-radius:8px 8px 0 0}.swiper-out .swiper-wrapper{background-color:#ededed;display:flex;will-change:transform}.swiper-out .swiper-item{display:flex;flex-shrink:0;align-items:center}.swiper-out .swiper-item .image-container{position:relative;width:100%;height:100%;background-color:#ededed;display:flex;align-items:center;justify-content:center}.swiper-out .swiper-item .image-container .image-wrapper{position:relative;display:inline-block;max-width:100%;max-height:100%}.swiper-out .swiper-item .image-container .swiper-image{display:block;max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain;transition:opacity .1s;background-color:#ededed}.swiper-out .swiper-item .image-container .label-container{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;overflow:hidden}.swiper-out .swiper-item .image-container .label-container .label-item{display:flex;align-items:center;border-radius:100px;width:-moz-max-content;width:max-content;padding:0 4px;box-sizing:border-box;background:rgba(76,76,76,.5);pointer-events:fill;position:absolute;min-width:0}.swiper-out .swiper-item .image-container .label-container .label-item:before{content:\"\";width:8px;height:8px;border-radius:50%;border:2px solid #a5a5a5;background-color:#fff;margin-right:4px;z-index:9;box-sizing:border-box;position:relative;flex-shrink:0}.swiper-out .swiper-item .image-container .label-container .label-item:after{content:\"\";display:block;width:7px;height:14px;-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg width='12' height='24' viewBox='0 0 12 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M2.4541 6.58068L3.51476 5.52002L9.29366 11.2989C9.68378 11.689 9.68724 12.3181 9.29366 12.7117L3.51476 18.4906L2.4541 17.4299L7.87872 12.0053L2.4541 6.58068Z' fill='black'/%3E %3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg width='12' height='24' viewBox='0 0 12 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M2.4541 6.58068L3.51476 5.52002L9.29366 11.2989C9.68378 11.689 9.68724 12.3181 9.29366 12.7117L3.51476 18.4906L2.4541 17.4299L7.87872 12.0053L2.4541 6.58068Z' fill='black'/%3E %3C/svg%3E\");-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:cover;mask-size:cover;background-color:#fff;margin-left:4px;flex-shrink:0}.swiper-out .swiper-item .image-container .label-container .label-item:hover{opacity:.8}.swiper-out .swiper-indicator{position:absolute;bottom:4px;right:8px;border-radius:12px;padding:4px 8px;z-index:1000}.swiper-out .swiper-indicator .indicator-text{font-size:12px;color:#fff;font-weight:500;text-shadow:0 0 .5px rgba(0,0,0,.2)}.swiper-out .swiper-indicator-wrap-bg{background-color:#fff;width:100%}.swiper-out .swiper-indicator-wrap-bg .swiper-indicator-wrap{background:rgba(0,0,0,.02);padding-top:4px;width:100%;display:flex;justify-content:center;z-index:10000}.swiper-out .swiper-indicator-wrap-bg .swiper-indicator-wrap .swiper-indicator-dot{background:rgba(0,0,0,.3);width:5px;height:5px;border-radius:50%;margin-right:3px;transition:opacity .3s}.swiper-out .swiper-indicator-wrap-bg .swiper-indicator-wrap .swiper-indicator-dot:last-child{margin-right:0}.swiper-out .swiper-indicator-wrap-bg .swiper-indicator-wrap .swiper-indicator-dot.active{width:12px;height:4.5px;background:rgba(0,0,0,.9);border-radius:3px}.dark-mode .swiper-out,.dark-mode .swiper-out .swiper-wrapper,.dark-mode .swiper-out .swiper-wrapper .image-container,.dark-mode .swiper-out .swiper-wrapper .image-container .swiper-image{background:#111}.swiper-indicator-wrap-bg{background-color:#fff;width:100%}.swiper-indicator-wrap-bg .swiper-indicator-wrap{background:rgba(0,0,0,.02);padding-top:4px;width:100%;display:flex;justify-content:center;z-index:10000}.swiper-indicator-wrap-bg .swiper-indicator-wrap .swiper-indicator-dot{background:rgba(0,0,0,.1);width:5px;height:5px;border-radius:50%;margin-right:3px;transition:opacity .3s;cursor:pointer}.swiper-indicator-wrap-bg .swiper-indicator-wrap .swiper-indicator-dot:last-child{margin-right:0}.swiper-indicator-wrap-bg .swiper-indicator-wrap .swiper-indicator-dot.active{width:12px;height:4.5px;background:rgba(0,0,0,.9);border-radius:3px}.swiper-indicator-wrap-bg .swiper-indicator-wrap .swiper-indicator-dot:hover{opacity:.8}.dark-mode .swiper-indicator-wrap-bg{background:#191919}.dark-mode .swiper-indicator-wrap-bg .swiper-indicator-dot{background:rgba(255,255,255,.1)}.dark-mode .swiper-indicator-wrap-bg .swiper-indicator-dot.active{background:rgba(255,255,255,.8)}\n",
    J = {
      type: "data-type",
      json: "data-json"
    };
  function Ye(i) {
    var e = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : {};
    var t = o$6.call(this, J);
    return _objectSpread$4({
      platform: i,
      extraInfo: e
    }, t);
  }
  function Ze() {
    var i = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    H$3(Object.assign(i, {
      Component: Ue,
      styleText: i.isDev ? i.devStyleText : He,
      customName: i.customName || "mp-common-shoptag",
      watchAttr: Object.values(J),
      getProps: Ye,
      eventName: ["document-click", "onFrameReady", "expose", "element-click"]
    }));
  }

  var g$2 = {
    canJumpOnTap: false,
    isNonWechat: false,
    data: null,
    appidInfoResp: null,
    appidInfoCatchErr: null,
    appInfoSucQueue: [],
    appInfoErrQueue: [],
    appidSnInfo: [],
    appidSnDict: {},
    getInfoState: 0
  };
  var weAppUserNameSuffix = '@app';
  function getWeAppUserName(userName) {
    return userName.indexOf(weAppUserNameSuffix) &gt; -1 ? userName : "".concat(userName).concat(weAppUserNameSuffix);
  }
  function getDefaultWeappScene() {
    var itemShowType = window.item_show_type * 1;
    var serviceType = window.service_type * 1;
    var scene;
    switch (itemShowType) {
      case 8:
        scene = serviceType === 5 ? 1432 : 1426;
        break;
      case 10:
        scene = 1427;
        break;
      case 5:
        scene = 1152;
        break;
      case 7:
        scene = 1429;
        break;
      default:
        scene = 1058;
    }
    return scene;
  }
  initEnv();
  function initEnv() {
    var uaMatch = navigator.userAgent.match(/MicroMessenger\/(\d+)\.(\d+)\.(\d+)/);
    if (uaMatch) {
      var version1 = Number(uaMatch[1]);
      var version2 = Number(uaMatch[2]);
      var version3 = Number(uaMatch[3]);
      if (version1 &gt; 6) g$2.canJumpOnTap = true;else if (version1 === 6 &amp;&amp; version2 &gt; 5) g$2.canJumpOnTap = true;else if (version1 === 6 &amp;&amp; version2 === 5 &amp;&amp; version3 &gt;= 3) g$2.canJumpOnTap = true;
    } else {
      if (!navigator.userAgent.match(/MicroMessenger\//) &amp;&amp; !navigator.userAgent.match(/wxwork/)) {
        g$2.isNonWechat = true;
      }
    }
    
    if (Device.os.windows &amp;&amp; window.clientversion) {
      if (parseInt(window.clientversion, 16) &gt;= 0x63050000) {
        g$2.canJumpOnTap = true;
      }
    } else if (Device.os.Mac &amp;&amp; window.clientversion) {
      if (parseInt(window.clientversion, 16) &gt;= 0x13000000) {
        g$2.canJumpOnTap = true;
      }
    }
    if (navigator.userAgent.match(/wxwork/)) {
      g$2.canJumpOnTap = true;
    }
    batchGetInfo();
  }
  function batchGetInfo() {
    try {
      g$2.appidSnInfo = JSON.parse(window.weapp_sn_arr_json).weapp_card_list;
    } catch (e) {
      g$2.appidSnInfo = [];
    }
    if (!g$2.appidSnInfo || g$2.appidSnInfo.length == 0) {
      g$2.getInfoState = 1;
      excuteQueue();
      return;
    }
    var args = {
      __biz: window.biz || "",
      mid: window.mid || "",
      idx: window.idx || "",
      uin: window.uin || "",
      key: window.key || "",
      pass_ticket: window.pass_ticket || "",
      weapp_num: g$2.appidSnInfo.length
    };
    var appidListDict = {};
    var snListDict = {};
    for (var i = 0; i &lt; args.weapp_num; i++) {
      var appid = g$2.appidSnInfo[i].appid;
      var sn = g$2.appidSnInfo[i].sn;
      if (appidListDict[appid]) {
        appidListDict[appid].push(i);
      } else {
        appidListDict[appid] = [i];
        args["weapp_appid_".concat(i)] = g$2.appidSnInfo[i].appid;
        g$2.appidSnDict[appid] = sn;
      }
      if (snListDict[sn]) {
        snListDict[sn].push(i);
      } else {
        snListDict[sn] = [i];
        args["weapp_sn_".concat(i)] = g$2.appidSnInfo[i].sn;
      }
    }
    var baseUrl = '/mp/appmsg_weapp?action=batch_get_weapp';
    for (var k in args) {
      baseUrl += "&amp;".concat(k, "=").concat(encodeURIComponent(args[k]));
    }
    ajax({
      url: baseUrl,
      type: 'GET',
      dataType: 'json',
      async: true,
      success: function success(ret) {
        try {
          console.log('weapp_common success:', ret);
          g$2.appidInfoResp = ret;
          if (ret.base_resp.ret) throw new Error("Fetch weapp info but get ret=".concat(ret.base_resp.ret));
          g$2.data = {
            infoMap: {},
            appid: ret.appid || "",
            appmsg_compact_url: ret.appmsg_compact_url || "",
            pathArgs: "appid=".concat(encodeURIComponent(ret.appid)).concat(ret.appmsg_compact_url ? "&amp;appmsg_compact_url=".concat(encodeURIComponent(ret.appmsg_compact_url)) : '')
          };
          var appidInfoArr = ret.weapp_info;
          for (var _i = 0; _i &lt; appidInfoArr.length; _i++) {
            var _appid = appidInfoArr[_i].weapp_appid;
            g$2.data.infoMap[_appid] = appidInfoArr[_i];
          }
          g$2.getInfoState = 4;
        } catch (e) {
          g$2.getInfoState = 3;
          g$2.appidInfoCatchErr = e;
        }
        excuteQueue();
      },
      error: function error() {
        g$2.getInfoState = 2;
        excuteQueue();
      }
    });
  }
  function excuteQueue() {
    if (g$2.getInfoState == 1 || g$2.getInfoState == 2) {
      for (var i = 0, il = g$2.appInfoErrQueue.length; i &lt; il; i++) {
        var a = g$2.appInfoErrQueue[i];
        if (typeof a === "function") {
          a({
            code: g$2.getInfoState
          });
        }
      }
    } else if (g$2.getInfoState == 3) {
      for (var _i3 = 0, _il = g$2.appInfoErrQueue.length; _i3 &lt; _il; _i3++) {
        var _a = g$2.appInfoErrQueue[_i3];
        if (typeof _a === "function") {
          _a({
            code: g$2.getInfoState,
            resp: g$2.appidInfoResp,
            catchErr: g$2.appidInfoCatchErr
          });
        }
      }
    } else if (g$2.getInfoState == 4) {
      for (var _i4 = 0, _il2 = g$2.appInfoSucQueue.length; _i4 &lt; _il2; _i4++) {
        var _a2 = g$2.appInfoSucQueue[_i4];
        if (typeof _a2 === "function") {
          _a2({
            resp: g$2.appidInfoResp,
            data: g$2.data
          });
        }
      }
    }
    g$2.appInfoErrQueue = [];
    g$2.appInfoSucQueue = [];
  }
  
  function getAppidInfo(opt) {
    console.log('getAppidInfo', g$2);
    if ((g$2.getInfoState == 1 || g$2.getInfoState == 2) &amp;&amp; typeof opt.onError === "function") {
      opt.onError({
        code: g$2.getInfoState
      });
    } else if (g$2.getInfoState == 3 &amp;&amp; typeof opt.onError === "function") {
      opt.onError({
        code: g$2.getInfoState,
        resp: g$2.appidInfoResp,
        catchErr: g$2.appidInfoCatchErr
      });
    } else if (g$2.getInfoState == 4 &amp;&amp; typeof opt.onSuccess === "function") {
      opt.onSuccess({
        resp: g$2.appidInfoResp,
        data: g$2.data
      });
    } else {
      if (typeof opt.onSuccess === "function") {
        g$2.appInfoSucQueue.push(opt.onSuccess);
      }
      if (typeof opt.onError === "function") {
        g$2.appInfoErrQueue.push(opt.onError);
      }
    }
  }
  function getAppidCode(opt, cb) {
    var args = {
      __biz: window.biz || '',
      mid: window.mid || '',
      idx: window.idx || '',
      weapp_appid: opt.appid || '',
      weapp_sn: g$2.appidSnDict[opt.appid] || '',
      path: opt.path || ''
    };
    var baseUrl = '/mp/appmsg_weapp?action=get_wxa_code';
    for (var k in args) {
      baseUrl += "&amp;".concat(k, "=").concat(encodeURIComponent(args[k]));
    }
    ajax({
      url: baseUrl,
      type: 'GET',
      dataType: 'json',
      async: true,
      success: function success(ret) {
        if (ret.base_resp &amp;&amp; ret.base_resp.ret === 0) {
          cb &amp;&amp; cb(ret.url);
        } else {
          cb &amp;&amp; cb();
        }
      },
      error: function error() {
        cb &amp;&amp; cb();
      }
    });
  }
  function getRelativeURL(path) {
    if (!path) {
      return "";
    }
    var r = "";
    var qmIndex = path.indexOf('?');
    var pathArgs = g$2.data &amp;&amp; g$2.data.pathArgs ? g$2.data.pathArgs : '';
    if (qmIndex &gt;= 0) {
      r = "".concat(path.slice(0, qmIndex) + (qmIndex &gt; 0 ? '.html' : '') + path.slice(qmIndex), "&amp;").concat(pathArgs);
    } else {
      r = path + (path !== '' ? '.html?' : '?') + pathArgs;
    }
    return r.replace(/&amp;amp;/g, '&amp;');
  }
  function getcpsRelativeURL(path) {
    var r = "";
    var qmIndex = path.indexOf('?');
    r = path.slice(0, qmIndex) + (qmIndex &gt; 0 ? '.html' : '') + path.slice(qmIndex);
    return r;
  }
  
  function jumpUrl$1(opt) {
    opt = opt || {};
    var _o;
    if (opt.options) {
      _o = opt.options;
      if (_o.relativeURL) {
        _o.relativeURL = _o.relativeURL.replace(/&amp;amp;/g, '&amp;');
        if (_o.relativeURL.indexOf('.html') &lt; 0) {
          _o.relativeURL = getRelativeURL(_o.relativeURL);
        }
      }
    } else if (opt.appid &amp;&amp; (g$2.data || opt.cps_weapp_username)) {
      var info;
      if (opt.cps_weapp_username)
        {
          info = {};
          info.weapp_username = opt.cps_weapp_username;
          info.app_version = opt.cps_weapp_version;
        } else {
        info = g$2.data.infoMap[opt.appid];
      }
      if (info) {
        _o = {
          userName: info.weapp_username,
          scene: opt.scene,
          sceneNote: opt.sceneNote,
          relativeURL: getRelativeURL(opt.path)
        };
        if (info.app_version !== undefined) {
          _o.appVersion = info.app_version;
        }
        if (opt.cps_weapp_username) _o.relativeURL = getcpsRelativeURL(opt.path);
      }
    }
    if (_o) {
      if (opt.privateExtraData) {
        _o.privateExtraData = opt.privateExtraData;
      }
      if (opt.sourceAppId) {
        _o.sourceAppId = opt.sourceAppId;
      } else {
        _o.sourceAppId = window.source_appid;
      }
      _o.scene = _o.scene || getDefaultWeappScene();
      _o.appVersion = _o.appVersion || 1;
      _o.userName = getWeAppUserName(_o.userName);
      _o.sceneNote = "".concat(opt.weapp_type_name, ":").concat(_o.sourceAppId, ":").concat(_o.sceneNote || '');
      console.log('weapp257', _o);
      if (!g$2.canJumpOnTap) {
        if (g$2.isNonWechat) {
          if (typeof opt.beforeNonWechatWarn !== "function" || opt.beforeNonWechatWarn() !== false) {
            handlingNonWechat();
          }
        } else {
          if (typeof opt.beforeJumpBackupPage !== "function" || opt.beforeJumpBackupPage() !== false) {
            jumpBackupPage(opt.appid);
          }
        }
      } else {
        R$4.invoke('openWeApp', _o, function (res) {
          if (res.err_msg === 'system:function_not_exist') {
            if (g$2.isNonWechat) {
              if (typeof opt.beforeNonWechatWarn !== "function" || opt.beforeNonWechatWarn() !== false) {
                handlingNonWechat();
              }
            } else {
              if (typeof opt.beforeJumpBackupPage !== "function" || opt.beforeJumpBackupPage() !== false) {
                jumpBackupPage(opt.appid);
              }
            }
          } else if (typeof opt.onJsapiCallback === "function") {
            opt.onJsapiCallback(res);
          }
        });
      }
    }
  }
  function jumpBackupPage(appid) {
    location.href = "https://mp.weixin.qq.com/mp/waerrpage?type=upgrade&amp;appid=".concat(encodeURIComponent(appid), "#wechat_redirect");
  }
  function handlingNonWechat() {
    setTimeout(function () {
      try {
        window.weui.alert('请在微信内打开小程序');
      } catch (err) {
        alert('请在微信内打开小程序');
      }
    }, 0);
  }
  
  function preloadMiniProgram(userName) {
    var args = {
      userNames: [getWeAppUserName(userName)]
    };
    R$4.invoke('preloadMiniProgramContacts', args);
    R$4.invoke('preloadMiniProgramEnv', args);
    jsmonitorReport$1.setSum(114217, 2, 1);
  }
  var r$4 = {
    canJumpOnTap: g$2.canJumpOnTap,
    isNonWechat: g$2.isNonWechat,
    getAppidInfo: getAppidInfo,
    getAppidCode: getAppidCode,
    appidSnInfo: g$2.appidSnInfo,
    getRelativeURL: getRelativeURL,
    jumpUrl: jumpUrl$1,
    preloadMiniProgram: preloadMiniProgram,
    getDefaultWeappScene: getDefaultWeappScene
  };

  function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r &amp;&amp; (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
  function _objectSpread$3(e) { for (var r = 1; r &lt; arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) { defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
  var w = function w() {
      var e = this,
        i = e._self._c;
      return i("div", {
        ref: "js_custom_element",
        staticClass: "wx-root weapp_root",
        "class": [e.platformClassname]
      }, [e.type === "text" ? i("a", {
        staticClass: "weapp_text",
        attrs: {
          href: "javascript:;",
          tabindex: "0"
        }
      }, [e._v("\n    " + e._s(e.textContent) + "\u8FD9\u91CC\u662F\u6587\u5B57\u5C0F\u7A0B\u5E8F\n  ")]) : e.type === "card" ? i("div", {
        staticClass: "weapp_card appmsg_card_context wx_tap_card wx_card_root",
        "class": [e.is_hover === 1 ? "wx_hover_card" : "", e.is_selected === 1 ? "wx_selected_card" : ""],
        attrs: {
          role: "option",
          title: e.platform === "wechat" ? "轻点两下打开" : ""
        }
      }, [i("div", {
        staticClass: "weapp_card_bd"
      }, [i("div", {
        staticClass: "weapp_card_profile weui-flex weui-flex_align-center"
      }, [i("img", {
        staticClass: "weapp_card_avatar js_weapp_card_avatar_img",
        attrs: {
          alt: "",
          "data-weappavatar": e.avatar,
          src: e.platform !== "wechat" ? e.avatar : "https://res.wx.qq.com/op_res/NN_GToMiIjsXzgPzF9-74ZzwR3cA9-fv3o9eWo8f5gQWqx71CmGlY8kFxuIxZaG0TB1bFeMCmh1DGN_pWMRg0A"
        }
      }), e._v(" "), i("div", {
        staticClass: "weui-flex__item"
      }, [i("div", {
        staticClass: "weapp_card_nickname_wrp weui-flex weui-flex_align-center"
      }, [i("span", {
        staticClass: "weapp_card_nickname"
      }, [e._v(e._s(e.nickname))]), e._v(" "), i("span", {
        staticClass: "weui-hidden_abs"
      }, [e._v("，")]), e._v(" "), e.hasGuaranteeFlag === 1 ? i("span", {
        staticClass: "guarantee_icon js_guarantee"
      }, [e._v("交易担保")]) : e._e(), e._v(" "), i("span", {
        staticClass: "weui-hidden_abs"
      }, [e._v("，")]), e._v(" "), e.relievedBuyFlag === 1 ? i("span", {
        staticClass: "wx_key_tag safe_buy_icon js_relived_buy"
      }, [e._v("放心买")]) : e._e(), e._v(" "), i("span", {
        staticClass: "weui-hidden_abs"
      }, [e._v("，")])])])]), e._v(" "), i("div", {
        staticClass: "weapp_card_info"
      }, [i("div", {
        staticClass: "weapp_card_title"
      }, [e._v(e._s(e.title))]), e._v(" "), i("div", {
        staticClass: "weapp_card_thumb_wrp weui-circle-loading_before"
      }, [i("img", {
        staticClass: "weapp_card_thumb js_weapp_card_thumb_img",
        attrs: {
          alt: "",
          "data-weappcover": e.imageUrl,
          src: e.platform !== "wechat" ? e.imageUrl : ""
        }
      })])])]), e._v(" "), e._m(0)]) : e.type === "image" ? i("a", {
        staticClass: "weapp_img",
        attrs: {
          href: "javascript:;",
          tabindex: "0"
        }
      }, [e._t("miniprogram_image")], 2) : e.type === "quote" ? i("div", {
        staticClass: "quote-container wx_tap_card",
        on: {
          click: e.onQuoteClick
        }
      }, [i("img", {
        staticClass: "quote-image",
        attrs: {
          src: e.imageUrl
        }
      }), e._v(" "), i("div", {
        staticClass: "quote-caption"
      }, [i("div", {
        staticClass: "quote-nickname"
      }, [e._v(e._s(e.title))]), e._v(" "), e.desc ? i("div", {
        staticClass: "quote-label"
      }, [e._v("\n        \u5C0F\u7A0B\u5E8F"), i("span", {
        staticStyle: {
          margin: "0 4px"
        }
      }, [e._v("·")]), e._v(e._s(e.desc) + "\n      ")]) : i("div", {
        staticClass: "quote-label"
      }, [e._v("小程序")])])]) : e.type === "map" ? i("div", {
        staticClass: "map-container wx_tap_card",
        on: {
          click: e.onQuoteClick
        }
      }, [i("img", {
        staticClass: "map-image",
        attrs: {
          src: e.imageUrl
        }
      }), e._v(" "), i("div", {
        staticClass: "map-caption"
      }, [i("div", {
        staticClass: "map-title"
      }, [e._v("路线：" + e._s(e.title))]), e._v(" "), i("div", {
        staticClass: "map-label"
      }, [e._v("腾讯地图·小程序")])])]) : e._e()]);
    },
    l$1 = [function () {
      var a = this,
        e = a._self._c;
      return e("div", {
        staticClass: "weapp_card_ft"
      }, [e("span", {
        staticClass: "weapp_card_logo"
      }, [a._v("小程序")])]);
    }];
  function s$2(a) {
    var e = typeof a == "function" ? a.options : a;
    return w &amp;&amp; (e.render = w, e.staticRenderFns = l$1, e._compiled = !0), {
      exports: a,
      options: e
    };
  }
  var g$1 = {
      name: "mp-common-miniprogram",
      template: s$2,
      mixins: [k$1],
      props: {
        appid: {
          type: String,
          "default": ""
        },
        desc: {
          type: String,
          "default": ""
        },
        is_hover: {
          type: Number,
          "default": 0
        },
        is_selected: {
          type: Number,
          "default": 0
        },
        path: {
          type: String,
          "default": ""
        },
        avatar: {
          type: String,
          "default": ""
        },
        serviceType: {
          type: String,
          "default": ""
        },
        hasGuaranteeFlag: {
          type: Number,
          "default": 0
        },
        relievedBuyFlag: {
          type: Number,
          "default": 0
        },
        imageUrl: {
          type: String,
          "default": ""
        },
        username: {
          type: String,
          "default": ""
        },
        title: {
          type: String,
          "default": ""
        },
        nickname: {
          type: String,
          "default": ""
        },
        type: {
          type: String,
          "default": "text"
        },
        textContent: {
          type: String,
          "default": ""
        }
      },
      methods: {
        onQuoteClick: function onQuoteClick() {
          this.platform === "wechat" &amp;&amp; r$4.jumpUrl({
            options: {
              userName: this.username,
              relativeURL: Url.addParam(this.path, "appid", this.appid, !0),
              sourceAppId: this.appid
            },
            weapp_type_name: "card"
          });
        }
      }
    },
    n$2 = "body,.wx-root,page{--weui-BTN-HEIGHT: 48;--weui-BTN-HEIGHT-MEDIUM: 40;--weui-BTN-HEIGHT-SMALL: 32}.wx-root,body{--weui-BTN-ACTIVE-MASK: rgba(0, 0, 0, .1)}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BTN-ACTIVE-MASK: rgba(255, 255, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BTN-ACTIVE-MASK: rgba(255, 255, 255, .1)}}.wx-root,body{--weui-BTN-DEFAULT-ACTIVE-BG: #e6e6e6}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BTN-DEFAULT-ACTIVE-BG: rgba(255, 255, 255, .126)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BTN-DEFAULT-ACTIVE-BG: rgba(255, 255, 255, .126)}}.wx-root,body{--weui-DIALOG-LINE-COLOR: rgba(0, 0, 0, .1)}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-DIALOG-LINE-COLOR: rgba(255, 255, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-DIALOG-LINE-COLOR: rgba(255, 255, 255, .1)}}.weui-flex{display:flex}.weui-flex__item{flex:1;min-width:0}.weui-primary-loading{font-size:16px;display:inline-flex;position:relative;width:1em;height:1em;vertical-align:middle;color:#606060;animation:circleLoading 1s steps(60,end) infinite}.weui-primary-loading__dot{position:absolute;top:0;left:50%;margin-left:-.04375em;width:.0875em;height:.0875em;border-top-right-radius:100%;border-bottom-right-radius:100%;background:currentColor}.weui-primary-loading:before,.weui-primary-loading:after{content:\"\";display:block;width:.5em;height:1em;box-sizing:border-box;border:.0875em solid;border-color:currentColor}.weui-primary-loading:before{border-right-width:0;border-top-left-radius:1em;border-bottom-left-radius:1em;-webkit-mask-image:linear-gradient(180deg,#000000 8%,rgba(0,0,0,.3) 95%)}.weui-primary-loading:after{border-left-width:0;border-top-right-radius:1em;border-bottom-right-radius:1em;-webkit-mask-image:linear-gradient(180deg,rgba(0,0,0,0) 8%,rgba(0,0,0,.3) 95%)}.weui-primary-loading__dot{position:absolute;top:0;left:50%;margin-left:-.04375em;width:.0875em;height:.0875em;border-top-right-radius:.0875em;border-bottom-right-radius:.0875em;background:currentColor}@keyframes circleLoading{0%{transform:rotate3d(0,0,1,0)}to{transform:rotate3d(0,0,1,360deg)}}.weui-primary-loading_brand{color:var(--weui-BRAND)}.weui-primary-loading_transparent{color:#ededed}.weui-loading{font-size:16px;width:1em;height:1em;display:inline-block;vertical-align:middle;background:transparent url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='80px' height='80px' viewBox='0 0 80 80' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3Eloading%3C/title%3E%3Cdefs%3E%3ClinearGradient x1='94.0869141%25' y1='0%25' x2='94.0869141%25' y2='90.559082%25' id='linearGradient-1'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.67370605%25' x2='100%25' y2='90.6286621%25' id='linearGradient-2'%3E%3Cstop stop-color='%23606060' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' opacity='0.9'%3E%3Cg%3E%3Cpath d='M40,0 C62.09139,0 80,17.90861 80,40 C80,62.09139 62.09139,80 40,80 L40,73 C58.2253967,73 73,58.2253967 73,40 C73,21.7746033 58.2253967,7 40,7 L40,0 Z' fill='url(%23linearGradient-1)'%3E%3C/path%3E%3Cpath d='M40,0 L40,7 C21.7746033,7 7,21.7746033 7,40 C7,58.2253967 21.7746033,73 40,73 L40,80 C17.90861,80 0,62.09139 0,40 C0,17.90861 17.90861,0 40,0 Z' fill='url(%23linearGradient-2)'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23606060' cx='40.5' cy='3.5' r='3.5'%3E%3C/circle%3E%3C/g%3E%3CanimateTransform attributeName='transform' begin='0s' dur='1s' type='rotate' values='0 40 40;360 40 40' repeatCount='indefinite'/%3E%3C/g%3E%3C/svg%3E%0A\") no-repeat;background-size:100%}.weui-loading.weui-loading_transparent,.weui-loading.weui-icon_toast,.weui-btn_loading.weui-btn_primary .weui-loading{background-image:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='80px' height='80px' viewBox='0 0 80 80' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3Eloading%3C/title%3E%3Cdefs%3E%3ClinearGradient x1='94.0869141%25' y1='0%25' x2='94.0869141%25' y2='90.559082%25' id='linearGradient-1'%3E%3Cstop stop-color='%23ededed' stop-opacity='0' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23ededed' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.67370605%25' x2='100%25' y2='90.6286621%25' id='linearGradient-2'%3E%3Cstop stop-color='%23ededed' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23ededed' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' opacity='0.9'%3E%3Cg%3E%3Cpath d='M40,0 C62.09139,0 80,17.90861 80,40 C80,62.09139 62.09139,80 40,80 L40,73 C58.2253967,73 73,58.2253967 73,40 C73,21.7746033 58.2253967,7 40,7 L40,0 Z' fill='url(%23linearGradient-1)'%3E%3C/path%3E%3Cpath d='M40,0 L40,7 C21.7746033,7 7,21.7746033 7,40 C7,58.2253967 21.7746033,73 40,73 L40,80 C17.90861,80 0,62.09139 0,40 C0,17.90861 17.90861,0 40,0 Z' fill='url(%23linearGradient-2)'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23ededed' cx='40.5' cy='3.5' r='3.5'%3E%3C/circle%3E%3C/g%3E%3CanimateTransform attributeName='transform' begin='0s' dur='1s' type='rotate' values='0 40 40;360 40 40' repeatCount='indefinite'/%3E%3C/g%3E%3C/svg%3E%0A\")}.weui-mask-loading{display:inline-block;vertical-align:middle;font-size:16px;width:1em;height:1em;-webkit-mask:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='80px' height='80px' viewBox='0 0 80 80' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3Eloading%3C/title%3E%3Cdefs%3E%3ClinearGradient x1='94.0869141%25' y1='0%25' x2='94.0869141%25' y2='90.559082%25' id='linearGradient-1'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.67370605%25' x2='100%25' y2='90.6286621%25' id='linearGradient-2'%3E%3Cstop stop-color='%23606060' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' opacity='0.9'%3E%3Cg%3E%3Cpath d='M40,0 C62.09139,0 80,17.90861 80,40 C80,62.09139 62.09139,80 40,80 L40,73 C58.2253967,73 73,58.2253967 73,40 C73,21.7746033 58.2253967,7 40,7 L40,0 Z' fill='url(%23linearGradient-1)'%3E%3C/path%3E%3Cpath d='M40,0 L40,7 C21.7746033,7 7,21.7746033 7,40 C7,58.2253967 21.7746033,73 40,73 L40,80 C17.90861,80 0,62.09139 0,40 C0,17.90861 17.90861,0 40,0 Z' fill='url(%23linearGradient-2)'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23606060' cx='40.5' cy='3.5' r='3.5'%3E%3C/circle%3E%3C/g%3E%3CanimateTransform attributeName='transform' begin='0s' dur='1s' type='rotate' values='0 40 40;360 40 40' repeatCount='indefinite'/%3E%3C/g%3E%3C/svg%3E%0A\") 0 0 no-repeat;mask:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='80px' height='80px' viewBox='0 0 80 80' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3Eloading%3C/title%3E%3Cdefs%3E%3ClinearGradient x1='94.0869141%25' y1='0%25' x2='94.0869141%25' y2='90.559082%25' id='linearGradient-1'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.67370605%25' x2='100%25' y2='90.6286621%25' id='linearGradient-2'%3E%3Cstop stop-color='%23606060' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' opacity='0.9'%3E%3Cg%3E%3Cpath d='M40,0 C62.09139,0 80,17.90861 80,40 C80,62.09139 62.09139,80 40,80 L40,73 C58.2253967,73 73,58.2253967 73,40 C73,21.7746033 58.2253967,7 40,7 L40,0 Z' fill='url(%23linearGradient-1)'%3E%3C/path%3E%3Cpath d='M40,0 L40,7 C21.7746033,7 7,21.7746033 7,40 C7,58.2253967 21.7746033,73 40,73 L40,80 C17.90861,80 0,62.09139 0,40 C0,17.90861 17.90861,0 40,0 Z' fill='url(%23linearGradient-2)'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23606060' cx='40.5' cy='3.5' r='3.5'%3E%3C/circle%3E%3C/g%3E%3CanimateTransform attributeName='transform' begin='0s' dur='1s' type='rotate' values='0 40 40;360 40 40' repeatCount='indefinite'/%3E%3C/g%3E%3C/svg%3E%0A\") 0 0 no-repeat;-webkit-mask-size:cover;mask-size:cover;background-color:currentColor;color:#606060}@keyframes weuiLoading{0%{transform:rotate3d(0,0,1,0)}to{transform:rotate3d(0,0,1,360deg)}}.wx-root,body{--weui-BG-COLOR-ACTIVE: #ececec}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-COLOR-ACTIVE: #373737}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-COLOR-ACTIVE: #373737}}[class^=weui-icon-][class^=weui-icon-],[class^=weui-icon-][class*=\" weui-icon-\"],[class*=\" weui-icon-\"][class^=weui-icon-],[class*=\" weui-icon-\"][class*=\" weui-icon-\"]{display:inline-block;vertical-align:middle;font-size:10px;width:2.4em;height:2.4em;-webkit-mask-position:50% 50%;mask-position:50% 50%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%;background-color:currentColor}.weui-icon-circle{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%221000%22%20height%3D%221000%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M500%20916.667C269.881%20916.667%2083.333%20730.119%2083.333%20500%2083.333%20269.881%20269.881%2083.333%20500%2083.333c230.119%200%20416.667%20186.548%20416.667%20416.667%200%20230.119-186.548%20416.667-416.667%20416.667zm0-50c202.504%200%20366.667-164.163%20366.667-366.667%200-202.504-164.163-366.667-366.667-366.667-202.504%200-366.667%20164.163-366.667%20366.667%200%20202.504%20164.163%20366.667%20366.667%20366.667z%22%20fill-rule%3D%22evenodd%22%20fill-opacity%3D%22.9%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%221000%22%20height%3D%221000%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M500%20916.667C269.881%20916.667%2083.333%20730.119%2083.333%20500%2083.333%20269.881%20269.881%2083.333%20500%2083.333c230.119%200%20416.667%20186.548%20416.667%20416.667%200%20230.119-186.548%20416.667-416.667%20416.667zm0-50c202.504%200%20366.667-164.163%20366.667-366.667%200-202.504-164.163-366.667-366.667-366.667-202.504%200-366.667%20164.163-366.667%20366.667%200%20202.504%20164.163%20366.667%20366.667%20366.667z%22%20fill-rule%3D%22evenodd%22%20fill-opacity%3D%22.9%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-download{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M11.25%2012.04l-1.72-1.72-1.06%201.06%202.828%202.83a1%201%200%20001.414-.001l2.828-2.828-1.06-1.061-1.73%201.73V7h-1.5v5.04zm0-5.04V2h1.5v5h6.251c.55%200%20.999.446.999.996v13.008a.998.998%200%2001-.996.996H4.996A.998.998%200%20014%2021.004V7.996A1%201%200%20014.999%207h6.251z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M11.25%2012.04l-1.72-1.72-1.06%201.06%202.828%202.83a1%201%200%20001.414-.001l2.828-2.828-1.06-1.061-1.73%201.73V7h-1.5v5.04zm0-5.04V2h1.5v5h6.251c.55%200%20.999.446.999.996v13.008a.998.998%200%2001-.996.996H4.996A.998.998%200%20014%2021.004V7.996A1%201%200%20014.999%207h6.251z%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-info{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-.75-12v7h1.5v-7h-1.5zM12%209a1%201%200%20100-2%201%201%200%20000%202z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-.75-12v7h1.5v-7h-1.5zM12%209a1%201%200%20100-2%201%201%200%20000%202z%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-safe-success{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201000%201000%22%3E%3Cpath%20d%3D%22M500.9%204.6C315.5%2046.7%20180.4%2093.1%2057.6%20132c0%20129.3.2%20231.7.2%20339.7%200%20304.2%20248.3%20471.6%20443.1%20523.7C695.7%20943.3%20944%20775.9%20944%20471.7c0-108%20.2-210.4.2-339.7C821.4%2093.1%20686.3%2046.7%20500.9%204.6zm248.3%20349.1l-299.7%20295c-2.1%202-5.3%202-7.4-.1L304.4%20506.1c-2-2.1-2.3-5.7-.6-8l18.3-24.9c1.7-2.3%205-2.8%207.2-1l112.2%2086c2.3%201.8%206%201.7%208.1-.1l274.7-228.9c2.2-1.8%205.7-1.7%207.7.3l17%2016.8c2.2%202.1%202.2%205.3.2%207.4z%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%23070202%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201000%201000%22%3E%3Cpath%20d%3D%22M500.9%204.6C315.5%2046.7%20180.4%2093.1%2057.6%20132c0%20129.3.2%20231.7.2%20339.7%200%20304.2%20248.3%20471.6%20443.1%20523.7C695.7%20943.3%20944%20775.9%20944%20471.7c0-108%20.2-210.4.2-339.7C821.4%2093.1%20686.3%2046.7%20500.9%204.6zm248.3%20349.1l-299.7%20295c-2.1%202-5.3%202-7.4-.1L304.4%20506.1c-2-2.1-2.3-5.7-.6-8l18.3-24.9c1.7-2.3%205-2.8%207.2-1l112.2%2086c2.3%201.8%206%201.7%208.1-.1l274.7-228.9c2.2-1.8%205.7-1.7%207.7.3l17%2016.8c2.2%202.1%202.2%205.3.2%207.4z%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%23070202%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-safe-warn{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201000%201000%22%3E%3Cpath%20d%3D%22M500.9%204.5c-185.4%2042-320.4%2088.4-443.2%20127.3%200%20129.3.2%20231.7.2%20339.6%200%20304.1%20248.2%20471.4%20443%20523.6%20194.7-52.2%20443-219.5%20443-523.6%200-107.9.2-210.3.2-339.6C821.3%2092.9%20686.2%2046.5%20500.9%204.5zm-26.1%20271.1h52.1c5.8%200%2010.3%204.7%2010.1%2010.4l-11.6%20313.8c-.1%202.8-2.5%205.2-5.4%205.2h-38.2c-2.9%200-5.3-2.3-5.4-5.2L464.8%20286c-.2-5.8%204.3-10.4%2010-10.4zm26.1%20448.3c-20.2%200-36.5-16.3-36.5-36.5s16.3-36.5%2036.5-36.5%2036.5%2016.3%2036.5%2036.5-16.4%2036.5-36.5%2036.5z%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%23020202%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201000%201000%22%3E%3Cpath%20d%3D%22M500.9%204.5c-185.4%2042-320.4%2088.4-443.2%20127.3%200%20129.3.2%20231.7.2%20339.6%200%20304.1%20248.2%20471.4%20443%20523.6%20194.7-52.2%20443-219.5%20443-523.6%200-107.9.2-210.3.2-339.6C821.3%2092.9%20686.2%2046.5%20500.9%204.5zm-26.1%20271.1h52.1c5.8%200%2010.3%204.7%2010.1%2010.4l-11.6%20313.8c-.1%202.8-2.5%205.2-5.4%205.2h-38.2c-2.9%200-5.3-2.3-5.4-5.2L464.8%20286c-.2-5.8%204.3-10.4%2010-10.4zm26.1%20448.3c-20.2%200-36.5-16.3-36.5-36.5s16.3-36.5%2036.5-36.5%2036.5%2016.3%2036.5%2036.5-16.4%2036.5-36.5%2036.5z%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%23020202%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-success{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-1.177-7.86l-2.765-2.767L7%2012.431l3.119%203.121a1%201%200%20001.414%200l5.952-5.95-1.062-1.062-5.6%205.6z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-1.177-7.86l-2.765-2.767L7%2012.431l3.119%203.121a1%201%200%20001.414%200l5.952-5.95-1.062-1.062-5.6%205.6z%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-success-circle{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6zm-1.172-6.242l5.809-5.808.848.849-5.95%205.95a1%201%200%2001-1.414%200L7%2012.426l.849-.849%202.98%202.98z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6zm-1.172-6.242l5.809-5.808.848.849-5.95%205.95a1%201%200%2001-1.414%200L7%2012.426l.849-.849%202.98%202.98z%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-success-no-circle{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M8.657%2018.435L3%2012.778l1.414-1.414%204.95%204.95L20.678%205l1.414%201.414-12.02%2012.021a1%201%200%2001-1.415%200z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M8.657%2018.435L3%2012.778l1.414-1.414%204.95%204.95L20.678%205l1.414%201.414-12.02%2012.021a1%201%200%2001-1.415%200z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-waiting{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.75%2011.38V6h-1.5v6l4.243%204.243%201.06-1.06-3.803-3.804zM12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.75%2011.38V6h-1.5v6l4.243%204.243%201.06-1.06-3.803-3.804zM12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-waiting-circle{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.6%2011.503l3.891%203.891-.848.849L11.4%2012V6h1.2v5.503zM12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.6%2011.503l3.891%203.891-.848.849L11.4%2012V6h1.2v5.503zM12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6z%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-warn{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-.763-15.864l.11%207.596h1.305l.11-7.596h-1.525zm.759%2010.967c.512%200%20.902-.383.902-.882%200-.5-.39-.882-.902-.882a.878.878%200%2000-.896.882c0%20.499.396.882.896.882z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-.763-15.864l.11%207.596h1.305l.11-7.596h-1.525zm.759%2010.967c.512%200%20.902-.383.902-.882%200-.5-.39-.882-.902-.882a.878.878%200%2000-.896.882c0%20.499.396.882.896.882z%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-outlined-warn{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12ZM20.8 12C20.8 16.8601 16.8601 20.8 12 20.8C7.13989 20.8 3.2 16.8601 3.2 12C3.2 7.13989 7.13989 3.2 12 3.2C16.8601 3.2 20.8 7.13989 20.8 12ZM12.6592 6.43115L12.5713 13.4917H11.4287L11.3408 6.43115H12.6592ZM11.165 16.2383C11.165 16.707 11.5312 17.0732 12 17.0732C12.4761 17.0732 12.835 16.707 12.835 16.2383C12.835 15.7622 12.4761 15.4033 12 15.4033C11.5312 15.4033 11.165 15.7622 11.165 16.2383Z' fill='black' /%3E%3C/svg%3E%0A\");mask-image:url(\"data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12ZM20.8 12C20.8 16.8601 16.8601 20.8 12 20.8C7.13989 20.8 3.2 16.8601 3.2 12C3.2 7.13989 7.13989 3.2 12 3.2C16.8601 3.2 20.8 7.13989 20.8 12ZM12.6592 6.43115L12.5713 13.4917H11.4287L11.3408 6.43115H12.6592ZM11.165 16.2383C11.165 16.707 11.5312 17.0732 12 17.0732C12.4761 17.0732 12.835 16.707 12.835 16.2383C12.835 15.7622 12.4761 15.4033 12 15.4033C11.5312 15.4033 11.165 15.7622 11.165 16.2383Z' fill='black' /%3E%3C/svg%3E%0A\")}.weui-icon-info-circle{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6zM11.4%2010h1.2v7h-1.2v-7zm.6-1a1%201%200%20110-2%201%201%200%20010%202z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6zM11.4%2010h1.2v7h-1.2v-7zm.6-1a1%201%200%20110-2%201%201%200%20010%202z%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-cancel{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6z%22%20fill-rule%3D%22nonzero%22%2F%3E%3Cpath%20d%3D%22M12.849%2012l3.11%203.111-.848.849L12%2012.849l-3.111%203.11-.849-.848L11.151%2012l-3.11-3.111.848-.849L12%2011.151l3.111-3.11.849.848L12.849%2012z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6z%22%20fill-rule%3D%22nonzero%22%2F%3E%3Cpath%20d%3D%22M12.849%2012l3.11%203.111-.848.849L12%2012.849l-3.111%203.11-.849-.848L11.151%2012l-3.11-3.111.848-.849L12%2011.151l3.111-3.11.849.848L12.849%2012z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E)}.weui-icon-search{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M16.31%2015.561l4.114%204.115-.848.848-4.123-4.123a7%207%200%2011.857-.84zM16.8%2011a5.8%205.8%200%2010-11.6%200%205.8%205.8%200%200011.6%200z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M16.31%2015.561l4.114%204.115-.848.848-4.123-4.123a7%207%200%2011.857-.84zM16.8%2011a5.8%205.8%200%2010-11.6%200%205.8%205.8%200%200011.6%200z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-clear{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M13.06%2012l3.006-3.005-1.06-1.06L12%2010.938%208.995%207.934l-1.06%201.06L10.938%2012l-3.005%203.005%201.06%201.06L12%2013.062l3.005%203.005%201.06-1.06L13.062%2012zM12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M13.06%2012l3.006-3.005-1.06-1.06L12%2010.938%208.995%207.934l-1.06%201.06L10.938%2012l-3.005%203.005%201.06%201.06L12%2013.062l3.005%203.005%201.06-1.06L13.062%2012zM12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010z%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-back{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm1.999-6.563L10.68%2012%2014%208.562%2012.953%207.5%209.29%2011.277a1.045%201.045%200%20000%201.446l3.663%203.777L14%2015.437z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm1.999-6.563L10.68%2012%2014%208.562%2012.953%207.5%209.29%2011.277a1.045%201.045%200%20000%201.446l3.663%203.777L14%2015.437z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-delete{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M6.774%206.4l.812%2013.648a.8.8%200%2000.798.752h7.232a.8.8%200%2000.798-.752L17.226%206.4H6.774zm11.655%200l-.817%2013.719A2%202%200%200115.616%2022H8.384a2%202%200%2001-1.996-1.881L5.571%206.4H3.5v-.7a.5.5%200%2001.5-.5h16a.5.5%200%2001.5.5v.7h-2.071zM14%203a.5.5%200%2001.5.5v.7h-5v-.7A.5.5%200%200110%203h4zM9.5%209h1.2l.5%209H10l-.5-9zm3.8%200h1.2l-.5%209h-1.2l.5-9z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M6.774%206.4l.812%2013.648a.8.8%200%2000.798.752h7.232a.8.8%200%2000.798-.752L17.226%206.4H6.774zm11.655%200l-.817%2013.719A2%202%200%200115.616%2022H8.384a2%202%200%2001-1.996-1.881L5.571%206.4H3.5v-.7a.5.5%200%2001.5-.5h16a.5.5%200%2001.5.5v.7h-2.071zM14%203a.5.5%200%2001.5.5v.7h-5v-.7A.5.5%200%200110%203h4zM9.5%209h1.2l.5%209H10l-.5-9zm3.8%200h1.2l-.5%209h-1.2l.5-9z%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-success-no-circle-thin{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M8.864%2016.617l-5.303-5.303-1.061%201.06%205.657%205.657a1%201%200%20001.414%200L21.238%206.364l-1.06-1.06L8.864%2016.616z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M8.864%2016.617l-5.303-5.303-1.061%201.06%205.657%205.657a1%201%200%20001.414%200L21.238%206.364l-1.06-1.06L8.864%2016.616z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-arrow{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M2.454%206.58l1.06-1.06%205.78%205.779a.996.996%200%20010%201.413l-5.78%205.779-1.06-1.061%205.425-5.425-5.425-5.424z%22%20fill%3D%22%23B2B2B2%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M2.454%206.58l1.06-1.06%205.78%205.779a.996.996%200%20010%201.413l-5.78%205.779-1.06-1.061%205.425-5.425-5.425-5.424z%22%20fill%3D%22%23B2B2B2%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-arrow-bold{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20height%3D%2224%22%20width%3D%2212%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M10.157%2012.711L4.5%2018.368l-1.414-1.414%204.95-4.95-4.95-4.95L4.5%205.64l5.657%205.657a1%201%200%20010%201.414z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20height%3D%2224%22%20width%3D%2212%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M10.157%2012.711L4.5%2018.368l-1.414-1.414%204.95-4.95-4.95-4.95L4.5%205.64l5.657%205.657a1%201%200%20010%201.414z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-back-arrow{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M3.343%2012l7.071%207.071L9%2020.485l-7.778-7.778a1%201%200%20010-1.414L9%203.515l1.414%201.414L3.344%2012z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M3.343%2012l7.071%207.071L9%2020.485l-7.778-7.778a1%201%200%20010-1.414L9%203.515l1.414%201.414L3.344%2012z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-back-arrow-thin{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M10%2019.438L8.955%2020.5l-7.666-7.79a1.02%201.02%200%20010-1.42L8.955%203.5%2010%204.563%202.682%2012%2010%2019.438z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M10%2019.438L8.955%2020.5l-7.666-7.79a1.02%201.02%200%20010-1.42L8.955%203.5%2010%204.563%202.682%2012%2010%2019.438z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-close{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M12.25 10.6932L6.05682 4.5L5 5.55682L11.1932 11.75L5 17.9432L6.05682 19L12.25 12.8068L18.4432 19L19.5 17.9432L13.3068 11.75L19.5 5.55682L18.4432 4.5L12.25 10.6932Z' fill='black' /%3E%3C/svg%3E%0A\");mask-image:url(\"data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M12.25 10.6932L6.05682 4.5L5 5.55682L11.1932 11.75L5 17.9432L6.05682 19L12.25 12.8068L18.4432 19L19.5 17.9432L13.3068 11.75L19.5 5.55682L18.4432 4.5L12.25 10.6932Z' fill='black' /%3E%3C/svg%3E%0A\")}.weui-icon-close-thin{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.25%2010.693L6.057%204.5%205%205.557l6.193%206.193L5%2017.943%206.057%2019l6.193-6.193L18.443%2019l1.057-1.057-6.193-6.193L19.5%205.557%2018.443%204.5z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.25%2010.693L6.057%204.5%205%205.557l6.193%206.193L5%2017.943%206.057%2019l6.193-6.193L18.443%2019l1.057-1.057-6.193-6.193L19.5%205.557%2018.443%204.5z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-back-circle{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6zm1.999-5.363L12.953%2016.5%209.29%2012.723a1.045%201.045%200%20010-1.446L12.953%207.5%2014%208.563%2010.68%2012%2014%2015.438z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6zm1.999-5.363L12.953%2016.5%209.29%2012.723a1.045%201.045%200%20010-1.446L12.953%207.5%2014%208.563%2010.68%2012%2014%2015.438z%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-success{color:var(--weui-BRAND)}.weui-icon-waiting{color:var(--weui-BLUE)}.weui-icon-warn{color:var(--weui-RED)}.weui-icon-info{color:var(--weui-BLUE)}.weui-icon-success-circle,.weui-icon-success-no-circle,.weui-icon-success-no-circle-thin{color:var(--weui-BRAND)}.weui-icon-waiting-circle{color:var(--weui-BLUE)}.weui-icon-circle{color:var(--weui-FG-2)}.weui-icon-download{color:var(--weui-BRAND)}.weui-icon-info-circle{color:var(--weui-FG-2)}.weui-icon-safe-success{color:var(--weui-BRAND)}.weui-icon-safe-warn{color:var(--weui-YELLOW)}.weui-icon-cancel{color:var(--weui-RED)}.weui-icon-search{color:var(--weui-FG-1)}.weui-icon-clear{color:var(--weui-FG-2)}.weui-icon-clear:active{color:var(--weui-FG-1)}.weui-icon-delete.weui-icon_gallery-delete{color:var(--weui-WHITE)}.weui-icon-arrow.weui-icon-arrow,.weui-icon-arrow.weui-icon-arrow-bold,.weui-icon-arrow.weui-icon-back-arrow,.weui-icon-arrow.weui-icon-back-arrow-thin,.weui-icon-arrow-bold.weui-icon-arrow,.weui-icon-arrow-bold.weui-icon-arrow-bold,.weui-icon-arrow-bold.weui-icon-back-arrow,.weui-icon-arrow-bold.weui-icon-back-arrow-thin,.weui-icon-back-arrow.weui-icon-arrow,.weui-icon-back-arrow.weui-icon-arrow-bold,.weui-icon-back-arrow.weui-icon-back-arrow,.weui-icon-back-arrow.weui-icon-back-arrow-thin,.weui-icon-back-arrow-thin.weui-icon-arrow,.weui-icon-back-arrow-thin.weui-icon-arrow-bold,.weui-icon-back-arrow-thin.weui-icon-back-arrow,.weui-icon-back-arrow-thin.weui-icon-back-arrow-thin{width:1.2em}.weui-icon-arrow,.weui-icon-arrow-bold{color:var(--weui-FG-2)}.weui-icon-back-arrow,.weui-icon-back-arrow-thin,.weui-icon-back,.weui-icon-back-circle{color:var(--weui-FG-0)}.weui-icon_msg.weui-icon_msg{width:6.4em;height:6.4em}.weui-icon_msg.weui-icon_msg.weui-icon-warn{color:var(--weui-RED)}.weui-icon_msg.weui-icon_msg.weui-icon-info-circle{color:var(--weui-BLUE)}.weui-icon_msg-primary.weui-icon_msg-primary{width:6.4em;height:6.4em}.weui-icon_msg-primary.weui-icon_msg-primary.weui-icon-warn{color:var(--weui-YELLOW)}.weui-hidden_abs{opacity:0;position:absolute;width:1px;height:1px;overflow:hidden}.weui-a11y_ref{display:none}.weui-hidden-space:empty:before{content:\"\xA0\";position:absolute;width:1px;height:1px;overflow:hidden}.weui-a11y-combo{position:relative}.weui-a11y-combo__helper{opacity:0;position:absolute;width:100%;height:100%;overflow:hidden}.weui-a11y-combo__content{position:relative;z-index:1}.weui-wa-hotarea-el{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);min-width:44px;min-height:44px;width:100%;height:100%}.weui-wa-hotarea-el__wrp,.weui-wa-hotarea,.weui-wa-hotarea_before{position:relative}.weui-wa-hotarea-el__wrp a,.weui-wa-hotarea a,.weui-wa-hotarea_before a,.weui-wa-hotarea-el__wrp button,.weui-wa-hotarea button,.weui-wa-hotarea_before button,.weui-wa-hotarea-el__wrp navigator,.weui-wa-hotarea navigator,.weui-wa-hotarea_before navigator{position:relative;z-index:1}.weui-wa-hotarea_before:before,.weui-wa-hotarea:after{content:\"\";pointer-events:auto;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);min-width:44px;min-height:44px;width:100%;height:100%}.wx-root{position:relative;pointer-events:auto;font-family:system-ui,-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Hiragino Sans GB,Microsoft YaHei UI,Microsoft YaHei,Arial,sans-serif}.wx_card_root{position:relative}.wxw_hide{display:none!important}.wx_uninteractive{pointer-events:none}body,.wx-root{--weui-BG-0: #ededed;--weui-BG-1: #f7f7f7;--weui-BG-2: #fff;--weui-BG-3: #f7f7f7;--weui-BG-4: #4c4c4c;--weui-BG-5: #fff;--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #fa9d3b;--weui-YELLOW: #ffc300;--weui-GREEN: #91d300;--weui-LIGHTGREEN: #95ec69;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1485ee;--weui-PURPLE: #6467f0;--weui-WHITE: #fff;--weui-LINK: #576b95;--weui-TEXTGREEN: #06ae56;--weui-BG: #fff;--weui-TAG-TEXT-ORANGE: #fa9d3b;--weui-TAG-TEXT-GREEN: #06ae56;--weui-TAG-TEXT-BLUE: #10aeff;--weui-REDORANGE: #ff6146;--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #07C160;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0: rgba(0, 0, 0, .9);--weui-FG-0_5: rgba(0, 0, 0, .9);--weui-FG-1: rgba(0, 0, 0, .55);--weui-FG-2: rgba(0, 0, 0, .3);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-GLYPH-0: rgba(0, 0, 0, .9);--weui-GLYPH-1: rgba(0, 0, 0, .55);--weui-GLYPH-2: rgba(0, 0, 0, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #91D300;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #1485EE;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #95EC69;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #FA9D3B;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6467F0;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #FA5151;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .05);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #FFC300;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-FG-HALF: rgba(0, 0, 0, .9);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #FA9D3B;--weui-YELLOW: #FFC300;--weui-GREEN: #91D300;--weui-LIGHTGREEN: #95EC69;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1485EE;--weui-PURPLE: #6467F0;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #FA9D3B;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #10AEFF;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05);--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-FG: #000;--weui-FG-5: rgba(0, 0, 0, .05);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-5: #2c2c2c;--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-REDORANGE: #ff6146;--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG: #fff;--weui-BG: #000;--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6)}}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-5: #2c2c2c;--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-REDORANGE: #ff6146;--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG: #fff;--weui-BG: #000;--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6)}.wx-root[data-weui-mode=care],body[data-weui-mode=care]{--weui-BG-0: #ededed;--weui-BG-1: #f7f7f7;--weui-BG-2: #fff;--weui-BG-3: #f7f7f7;--weui-BG-4: #4c4c4c;--weui-BG-5: #fff;--weui-RED: #dc3636;--weui-ORANGERED: #d14730;--weui-ORANGE: #e17719;--weui-YELLOW: #bb8e00;--weui-GREEN: #4f8400;--weui-LIGHTGREEN: #2e8800;--weui-BLUE: #007dbb;--weui-INDIGO: #0075e2;--weui-PURPLE: #6265f1;--weui-WHITE: #fff;--weui-LINK: #576b95;--weui-TEXTGREEN: #06ae56;--weui-BG: #fff;--weui-TAG-TEXT-ORANGE: #e17719;--weui-TAG-TEXT-GREEN: #06ae56;--weui-TAG-TEXT-BLUE: #007dbb;--weui-REDORANGE: #d14730;--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #007DBB;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #018942;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0: #000000;--weui-FG-0_5: #000000;--weui-FG-1: rgba(0, 0, 0, .6);--weui-FG-2: rgba(0, 0, 0, .42);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-GLYPH-0: #000000;--weui-GLYPH-1: rgba(0, 0, 0, .6);--weui-GLYPH-2: rgba(0, 0, 0, .42);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #4F8400;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #0075E2;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #2E8800;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #E17719;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #D14730;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6265F1;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #DC3636;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .1);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #BB8E00;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-FG-HALF: #000000;--weui-RED: #DC3636;--weui-ORANGERED: #D14730;--weui-ORANGE: #E17719;--weui-YELLOW: #BB8E00;--weui-GREEN: #4F8400;--weui-LIGHTGREEN: #2E8800;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #018942;--weui-BLUE: #007DBB;--weui-INDIGO: #0075E2;--weui-PURPLE: #6265F1;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #E17719;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #007DBB;--weui-REDORANGE: #D14730;--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-FG: #000;--weui-FG-5: rgba(0, 0, 0, .05);--weui-TAG-BACKGROUND-ORANGE: rgba(225, 119, 25, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(0, 125, 187, .1);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05)}@media (prefers-color-scheme: dark){.wx-root[data-weui-mode=care]:not([data-weui-theme=light]),body[data-weui-mode=care]:not([data-weui-theme=light]){--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-5: #2c2c2c;--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-REDORANGE: #ff6146;--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-FG: #fff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-BG: #000;--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5)}}.wx-root[data-weui-mode=care][data-weui-theme=dark],body[data-weui-mode=care][data-weui-theme=dark]{--weui-BG-0: #111;--weui-BG-1: #1e1e1e;--weui-BG-5: #2c2c2c;--weui-RED: #fa5151;--weui-ORANGERED: #ff6146;--weui-ORANGE: #c87d2f;--weui-YELLOW: #cc9c00;--weui-GREEN: #74a800;--weui-LIGHTGREEN: #3eb575;--weui-BRAND: #07c160;--weui-BLUE: #10aeff;--weui-INDIGO: #1196ff;--weui-PURPLE: #8183ff;--weui-LINK: #7d90a9;--weui-TEXTGREEN: #259c5c;--weui-REDORANGE: #ff6146;--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-FG: #fff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-BG: #000;--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5)}.wx-root,body{--APPMSGCARD-BG: #FAFAFA}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--APPMSGCARD-BG: #1E1E1E}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--APPMSGCARD-BG: #1E1E1E}}.wx-root,body{--APPMSGCARD-LINE-BG: rgba(0, 0, 0, .07)}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--APPMSGCARD-LINE-BG: rgba(255, 255, 255, .07)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--APPMSGCARD-LINE-BG: rgba(255, 255, 255, .07)}}.appmsg_card_context{position:relative;background-color:var(--APPMSGCARD-BG);border-radius:8px;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.appmsg_card_context:hover{cursor:pointer}.wxw_img{vertical-align:bottom}.wx_img_link{position:relative;display:inline-block;vertical-align:bottom;-webkit-user-select:none;-moz-user-select:none;user-select:none}.wx_img_link:before,.wx_img_link:after{content:\"\";position:absolute;top:8px;right:8px;width:20px;height:20px;display:flex;align-items:center;justify-content:center;z-index:1}.wx_img_link:before{background:rgba(95,95,95,.5);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:100%}.wx_img_link:after{-webkit-mask:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E  %3Cg fill='%23576B95'%3E    %3Cpath d='M8.566 7.434l-1.98-1.98-.754.755 1.257 1.257H2.333v1.067H7.09L5.832 9.79l.754.755 1.98-1.98a.8.8 0 0 0 0-1.132z'/%3E    %3Cpath d='M4.333 11.8H3.267v1.067a.8.8 0 0 0 .797.8h7.805a.8.8 0 0 0 .798-.798V3.131a.799.799 0 0 0-.798-.798H4.064a.8.8 0 0 0-.797.8V4.2h1.066v-.8H11.6v9.2H4.333v-.8z'/%3E  %3C/g%3E%3C/svg%3E\") no-repeat 50% 50%;mask:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E  %3Cg fill='%23576B95'%3E    %3Cpath d='M8.566 7.434l-1.98-1.98-.754.755 1.257 1.257H2.333v1.067H7.09L5.832 9.79l.754.755 1.98-1.98a.8.8 0 0 0 0-1.132z'/%3E    %3Cpath d='M4.333 11.8H3.267v1.067a.8.8 0 0 0 .797.8h7.805a.8.8 0 0 0 .798-.798V3.131a.799.799 0 0 0-.798-.798H4.064a.8.8 0 0 0-.797.8V4.2h1.066v-.8H11.6v9.2H4.333v-.8z'/%3E  %3C/g%3E%3C/svg%3E\") no-repeat 50% 50%;-webkit-mask-size:14px;mask-size:14px;background:#FFFFFF}.wx_img_link_center:before,.wx_img_link_center:after{top:50%;margin-top:-10px}.wx_key_tag{display:inline-block;vertical-align:middle;padding:2px 4px;font-size:12px;line-height:calc((20 - 4) / 12);border-radius:2px;max-width:70%;width:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;font-style:normal;letter-spacing:normal;background:var(--weui-TAG-BACKGROUND-BLACK);color:var(--weui-FG-2)}.wx_text_link:before{content:\"\";display:inline-block;vertical-align:middle;width:1em;height:1em;-webkit-mask:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E  %3Cg fill='%23576B95'%3E    %3Cpath d='M8.566 7.434l-1.98-1.98-.754.755 1.257 1.257H2.333v1.067H7.09L5.832 9.79l.754.755 1.98-1.98a.8.8 0 0 0 0-1.132z'/%3E    %3Cpath d='M4.333 11.8H3.267v1.067a.8.8 0 0 0 .797.8h7.805a.8.8 0 0 0 .798-.798V3.131a.799.799 0 0 0-.798-.798H4.064a.8.8 0 0 0-.797.8V4.2h1.066v-.8H11.6v9.2H4.333v-.8z'/%3E  %3C/g%3E%3C/svg%3E\") no-repeat 50% 50%;mask:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E  %3Cg fill='%23576B95'%3E    %3Cpath d='M8.566 7.434l-1.98-1.98-.754.755 1.257 1.257H2.333v1.067H7.09L5.832 9.79l.754.755 1.98-1.98a.8.8 0 0 0 0-1.132z'/%3E    %3Cpath d='M4.333 11.8H3.267v1.067a.8.8 0 0 0 .797.8h7.805a.8.8 0 0 0 .798-.798V3.131a.799.799 0 0 0-.798-.798H4.064a.8.8 0 0 0-.797.8V4.2h1.066v-.8H11.6v9.2H4.333v-.8z'/%3E  %3C/g%3E%3C/svg%3E\") no-repeat 50% 50%;-webkit-mask-size:cover;mask-size:cover;background-color:currentColor;margin:-.3em 1px 0 2px}.wx_text_link:empty{display:none}:host(.wx_tap_highlight_active) .wx_tap_link{opacity:.5}:host(.wx_tap_highlight_active) .wx_tap_card{background-color:#f3f3f3}:host(.wx_tap_highlight_active) .wx_tap_cell{background-color:#0000000d}@media (prefers-color-scheme: dark){:host(.wx_tap_highlight_active) .wx_tap_card{background-color:#252525}:host(.wx_tap_highlight_active) .wx_tap_cell{background-color:#ffffff1a}}.wx_css_active :active{opacity:.5}.weui-flex__item{min-width:0}.weui-flex_align-center{align-items:center}[tabindex]{outline:0}.weui-circle-loading,.weui-circle-loading_before:before{display:inline-block;vertical-align:middle;font-size:16px;width:1em;height:1em;-webkit-mask:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='80' viewBox='0 0 80 80'%3E  %3Cdefs%3E    %3ClinearGradient id='42ecdbc5-cb5f-41dc-88b6-1ee9f740fee0-a' x1='94.087%25' x2='94.087%25' y1='0%25' y2='90.559%25'%3E      %3Cstop offset='0%25' stop-color='%23EDEDED' stop-opacity='0'/%3E      %3Cstop offset='100%25' stop-color='%23EDEDED' stop-opacity='.3'/%3E    %3C/linearGradient%3E    %3ClinearGradient id='42ecdbc5-cb5f-41dc-88b6-1ee9f740fee0-b' x1='100%25' x2='100%25' y1='8.674%25' y2='90.629%25'%3E      %3Cstop offset='0%25' stop-color='%23EDEDED'/%3E      %3Cstop offset='100%25' stop-color='%23EDEDED' stop-opacity='.3'/%3E    %3C/linearGradient%3E  %3C/defs%3E  %3Cg fill='none' opacity='.9'%3E    %3Cpath fill='url(%2342ecdbc5-cb5f-41dc-88b6-1ee9f740fee0-a)' d='M40 0c22.091 0 40 17.909 40 40S62.091 80 40 80v-7c18.225 0 33-14.775 33-33S58.225 7 40 7V0z'/%3E    %3Cpath fill='url(%2342ecdbc5-cb5f-41dc-88b6-1ee9f740fee0-b)' d='M40 0v7C21.775 7 7 21.775 7 40s14.775 33 33 33v7C17.909 80 0 62.091 0 40S17.909 0 40 0z'/%3E    %3Ccircle cx='40.5' cy='3.5' r='3.5' fill='%23EDEDED'/%3E  %3C/g%3E%3C/svg%3E\") no-repeat 50% 50%;mask:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='80' viewBox='0 0 80 80'%3E  %3Cdefs%3E    %3ClinearGradient id='42ecdbc5-cb5f-41dc-88b6-1ee9f740fee0-a' x1='94.087%25' x2='94.087%25' y1='0%25' y2='90.559%25'%3E      %3Cstop offset='0%25' stop-color='%23EDEDED' stop-opacity='0'/%3E      %3Cstop offset='100%25' stop-color='%23EDEDED' stop-opacity='.3'/%3E    %3C/linearGradient%3E    %3ClinearGradient id='42ecdbc5-cb5f-41dc-88b6-1ee9f740fee0-b' x1='100%25' x2='100%25' y1='8.674%25' y2='90.629%25'%3E      %3Cstop offset='0%25' stop-color='%23EDEDED'/%3E      %3Cstop offset='100%25' stop-color='%23EDEDED' stop-opacity='.3'/%3E    %3C/linearGradient%3E  %3C/defs%3E  %3Cg fill='none' opacity='.9'%3E    %3Cpath fill='url(%2342ecdbc5-cb5f-41dc-88b6-1ee9f740fee0-a)' d='M40 0c22.091 0 40 17.909 40 40S62.091 80 40 80v-7c18.225 0 33-14.775 33-33S58.225 7 40 7V0z'/%3E    %3Cpath fill='url(%2342ecdbc5-cb5f-41dc-88b6-1ee9f740fee0-b)' d='M40 0v7C21.775 7 7 21.775 7 40s14.775 33 33 33v7C17.909 80 0 62.091 0 40S17.909 0 40 0z'/%3E    %3Ccircle cx='40.5' cy='3.5' r='3.5' fill='%23EDEDED'/%3E  %3C/g%3E%3C/svg%3E\") no-repeat 50% 50%;-webkit-mask-size:cover;mask-size:cover;background-color:currentColor;color:#606060;animation:circleLoading 1s steps(60,end) infinite}.weui-circle-loading_before:before{content:\"\"}.weui-circle-loading.weui-circle-loading_white{color:#ededed}.weui-circle-loading_before.weui-circle-loading_white:before{color:#ededed}.wx_hover_card:before{content:\" \";position:absolute;top:0;left:0;right:0;bottom:0;border-radius:8px;box-sizing:border-box;border:1px solid rgba(7,193,96,.3);pointer-events:none;z-index:9}.wx_selected_card:before{content:\" \";position:absolute;top:0;left:0;right:0;bottom:0;border-radius:8px;border:1.5px solid #07C160;box-sizing:border-box;background:rgba(7,193,96,.1);pointer-events:none;z-index:9}.wx-root,body,.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-REDORANGE: #FF6146}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-REDORANGE: #FF6146}}img{pointer-events:none}.common-web .weapp_card{margin:0 auto;max-width:350px}.weapp_img,.weapp_card{-webkit-user-select:none;-moz-user-select:none;user-select:none}.weapp_text{color:var(--weui-LINK)}.weapp_text:before{content:\"\";display:inline-block;vertical-align:middle;width:1em;height:1em;-webkit-mask:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E  %3Cg fill='%23576B95'%3E    %3Cpath d='M8.566 7.434l-1.98-1.98-.754.755 1.257 1.257H2.333v1.067H7.09L5.832 9.79l.754.755 1.98-1.98a.8.8 0 0 0 0-1.132z'/%3E    %3Cpath d='M4.333 11.8H3.267v1.067a.8.8 0 0 0 .797.8h7.805a.8.8 0 0 0 .798-.798V3.131a.799.799 0 0 0-.798-.798H4.064a.8.8 0 0 0-.797.8V4.2h1.066v-.8H11.6v9.2H4.333v-.8z'/%3E  %3C/g%3E%3C/svg%3E\") no-repeat 50% 50%;mask:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E  %3Cg fill='%23576B95'%3E    %3Cpath d='M8.566 7.434l-1.98-1.98-.754.755 1.257 1.257H2.333v1.067H7.09L5.832 9.79l.754.755 1.98-1.98a.8.8 0 0 0 0-1.132z'/%3E    %3Cpath d='M4.333 11.8H3.267v1.067a.8.8 0 0 0 .797.8h7.805a.8.8 0 0 0 .798-.798V3.131a.799.799 0 0 0-.798-.798H4.064a.8.8 0 0 0-.797.8V4.2h1.066v-.8H11.6v9.2H4.333v-.8z'/%3E  %3C/g%3E%3C/svg%3E\") no-repeat 50% 50%;-webkit-mask-size:cover;mask-size:cover;background-color:currentColor;margin:-.3em 1px 0 2px}.weapp_text:empty{display:none}.weapp_text:before{-webkit-mask-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E  %3Cpath fill='%23576B95' fill-rule='evenodd' d='M10.933 8.529l-.138.002c-.418 0-.662-.3-.505-.644a.902.902 0 0 1 .638-.496c.767-.18 1.288-.765 1.288-1.445 0-.824-.807-1.496-1.815-1.496-1.007 0-1.814.672-1.814 1.496v4.108c0 1.447-1.327 2.613-2.96 2.613-1.634 0-2.96-1.166-2.96-2.613 0-1.269 1.027-2.352 2.426-2.558h.112c.317 0 .545.185.545.45a.488.488 0 0 1-.006.092.348.348 0 0 1-.034.102c-.101.23-.36.429-.638.496-.761.18-1.288.76-1.288 1.418 0 .824.807 1.496 1.815 1.496 1.007 0 1.814-.672 1.814-1.496V5.946c0-1.447 1.327-2.613 2.96-2.613 1.634 0 2.96 1.166 2.96 2.613 0 1.275-1.003 2.346-2.4 2.583z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E  %3Cpath fill='%23576B95' fill-rule='evenodd' d='M10.933 8.529l-.138.002c-.418 0-.662-.3-.505-.644a.902.902 0 0 1 .638-.496c.767-.18 1.288-.765 1.288-1.445 0-.824-.807-1.496-1.815-1.496-1.007 0-1.814.672-1.814 1.496v4.108c0 1.447-1.327 2.613-2.96 2.613-1.634 0-2.96-1.166-2.96-2.613 0-1.269 1.027-2.352 2.426-2.558h.112c.317 0 .545.185.545.45a.488.488 0 0 1-.006.092.348.348 0 0 1-.034.102c-.101.23-.36.429-.638.496-.761.18-1.288.76-1.288 1.418 0 .824.807 1.496 1.815 1.496 1.007 0 1.814-.672 1.814-1.496V5.946c0-1.447 1.327-2.613 2.96-2.613 1.634 0 2.96 1.166 2.96 2.613 0 1.275-1.003 2.346-2.4 2.583z'/%3E%3C/svg%3E\")}.weapp_img{position:relative;display:inline-block;vertical-align:bottom;-webkit-user-select:none;-moz-user-select:none;user-select:none}.weapp_img:before,.weapp_img:after{content:\"\";position:absolute;top:8px;right:8px;width:20px;height:20px;display:flex;align-items:center;justify-content:center;z-index:1}.weapp_img:before{background:rgba(95,95,95,.5);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:100%}.weapp_img:after{-webkit-mask:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E  %3Cg fill='%23576B95'%3E    %3Cpath d='M8.566 7.434l-1.98-1.98-.754.755 1.257 1.257H2.333v1.067H7.09L5.832 9.79l.754.755 1.98-1.98a.8.8 0 0 0 0-1.132z'/%3E    %3Cpath d='M4.333 11.8H3.267v1.067a.8.8 0 0 0 .797.8h7.805a.8.8 0 0 0 .798-.798V3.131a.799.799 0 0 0-.798-.798H4.064a.8.8 0 0 0-.797.8V4.2h1.066v-.8H11.6v9.2H4.333v-.8z'/%3E  %3C/g%3E%3C/svg%3E\") no-repeat 50% 50%;mask:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E  %3Cg fill='%23576B95'%3E    %3Cpath d='M8.566 7.434l-1.98-1.98-.754.755 1.257 1.257H2.333v1.067H7.09L5.832 9.79l.754.755 1.98-1.98a.8.8 0 0 0 0-1.132z'/%3E    %3Cpath d='M4.333 11.8H3.267v1.067a.8.8 0 0 0 .797.8h7.805a.8.8 0 0 0 .798-.798V3.131a.799.799 0 0 0-.798-.798H4.064a.8.8 0 0 0-.797.8V4.2h1.066v-.8H11.6v9.2H4.333v-.8z'/%3E  %3C/g%3E%3C/svg%3E\") no-repeat 50% 50%;-webkit-mask-size:14px;mask-size:14px;background:#FFFFFF}.weapp_img:after{-webkit-mask-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E  %3Cpath fill='%23576B95' fill-rule='evenodd' d='M10.933 8.529l-.138.002c-.418 0-.662-.3-.505-.644a.902.902 0 0 1 .638-.496c.767-.18 1.288-.765 1.288-1.445 0-.824-.807-1.496-1.815-1.496-1.007 0-1.814.672-1.814 1.496v4.108c0 1.447-1.327 2.613-2.96 2.613-1.634 0-2.96-1.166-2.96-2.613 0-1.269 1.027-2.352 2.426-2.558h.112c.317 0 .545.185.545.45a.488.488 0 0 1-.006.092.348.348 0 0 1-.034.102c-.101.23-.36.429-.638.496-.761.18-1.288.76-1.288 1.418 0 .824.807 1.496 1.815 1.496 1.007 0 1.814-.672 1.814-1.496V5.946c0-1.447 1.327-2.613 2.96-2.613 1.634 0 2.96 1.166 2.96 2.613 0 1.275-1.003 2.346-2.4 2.583z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E  %3Cpath fill='%23576B95' fill-rule='evenodd' d='M10.933 8.529l-.138.002c-.418 0-.662-.3-.505-.644a.902.902 0 0 1 .638-.496c.767-.18 1.288-.765 1.288-1.445 0-.824-.807-1.496-1.815-1.496-1.007 0-1.814.672-1.814 1.496v4.108c0 1.447-1.327 2.613-2.96 2.613-1.634 0-2.96-1.166-2.96-2.613 0-1.269 1.027-2.352 2.426-2.558h.112c.317 0 .545.185.545.45a.488.488 0 0 1-.006.092.348.348 0 0 1-.034.102c-.101.23-.36.429-.638.496-.761.18-1.288.76-1.288 1.418 0 .824.807 1.496 1.815 1.496 1.007 0 1.814-.672 1.814-1.496V5.946c0-1.447 1.327-2.613 2.96-2.613 1.634 0 2.96 1.166 2.96 2.613 0 1.275-1.003 2.346-2.4 2.583z'/%3E%3C/svg%3E\");-webkit-mask-size:15px;mask-size:15px}.weapp_card{line-height:1.4}.weapp_card_bd{padding:12px 12px 0}.weapp_card_ft{padding:8px 12px;text-align:left}.weapp_card_profile{overflow:hidden}.weapp_card_avatar{font-size:10px;width:2em;height:2em;margin-right:6px;flex-shrink:0}.avatar-img{border-radius:50%;-o-object-fit:cover;object-fit:cover}.weapp_card_nickname{width:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;font-size:14px;line-height:1.4;color:var(--weui-FG-1)}.weapp_card_title{margin:8px 0 12px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;color:var(--weui-FG-0);font-size:17px;text-align:left}.weapp_card_thumb_wrp{position:relative;padding-bottom:80%;overflow:hidden;border-radius:2px}.weapp_card_thumb_wrp:before{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.weapp_card_thumb{position:absolute;width:100%;top:50%;left:50%;transform:translate(-50%,-50%);-webkit-touch-callout:none}.weapp_card_logo{font-size:14px;color:var(--weui-FG-1)}.weapp_card_logo:before{content:\"\";display:inline-block;vertical-align:middle;width:18px;height:18px;margin-top:-.2em;margin-right:4px;background-size:cover;background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 18 18'%3E  %3Cpath fill='%236467F0' fill-rule='evenodd' d='M12.753 9.743l-.177.003c-.535 0-.846-.393-.645-.845a1.16 1.16 0 0 1 .816-.651c.981-.237 1.648-1.004 1.648-1.897 0-1.081-1.032-1.963-2.322-1.963s-2.322.882-2.322 1.963v5.392c0 1.899-1.698 3.428-3.788 3.428s-3.788-1.53-3.788-3.428c0-1.665 1.314-3.087 3.105-3.357h.144c.405 0 .697.243.697.589a.64.64 0 0 1-.008.122.464.464 0 0 1-.044.134c-.13.301-.46.562-.816.651-.974.236-1.648.998-1.648 1.86 0 1.082 1.032 1.964 2.322 1.964s2.322-.882 2.322-1.963V6.353c0-1.899 1.698-3.428 3.788-3.428s3.788 1.53 3.788 3.428c0 1.674-1.283 3.079-3.072 3.39z'/%3E%3C/svg%3E\")}.guarantee_icon{display:inline-block;flex-shrink:0;margin-left:8px;font-size:10px;vertical-align:middle;width:1.6em;height:1.6em;text-indent:-999em;background-size:cover;background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E  %3Cg fill='none' fill-rule='evenodd'%3E    %3Cpath d='M0 0h16v16H0z'/%3E    %3Cpath fill='%2307C160' fill-opacity='.1' d='M9.155.976l4.357 2.513a2.307 2.307 0 0 1 1.155 1.998v5.026c0 .824-.44 1.586-1.155 1.998l-4.357 2.513a2.311 2.311 0 0 1-2.31 0l-4.357-2.513a2.307 2.307 0 0 1-1.155-1.998V5.487c0-.824.44-1.586 1.155-1.998L6.845.976a2.311 2.311 0 0 1 2.31 0z'/%3E    %3Cpath fill='%2307C160' fill-rule='nonzero' d='M9.155.976l4.357 2.513a2.307 2.307 0 0 1 1.155 1.998v5.026c0 .824-.44 1.586-1.155 1.998l-4.357 2.513a2.311 2.311 0 0 1-2.31 0l-4.357-2.513a2.307 2.307 0 0 1-1.155-1.998V5.487c0-.824.44-1.586 1.155-1.998L6.845.976a2.311 2.311 0 0 1 2.31 0zm-.4.693a1.511 1.511 0 0 0-1.51 0L2.888 4.182c-.467.27-.755.767-.755 1.305v5.026c0 .538.288 1.036.755 1.305l4.357 2.513c.467.27 1.043.27 1.51 0l4.357-2.513c.467-.27.755-.767.755-1.305V5.487c0-.538-.288-1.036-.755-1.305L8.755 1.669z'/%3E    %3Cpath fill='%2307C160' fill-rule='nonzero' d='M6.783 4.804h4.025v2.56H6.783v-2.56zm1.64 6.54V9.289c-.49.69-1.08 1.204-2.023 1.802l-.445-.69c1.05-.514 1.64-.997 2.131-1.672H6.37v-.697h2.055V7.48h.743v.552h2.07v.697h-1.84c.499.629 1.173 1.135 2.093 1.58l-.421.72a7.73 7.73 0 0 1-1.902-1.725v2.04h-.743zm-3.25.023V7.748c-.169.26-.36.514-.56.767l-.467-.69c.529-.729 1.288-2.162 1.594-3.305l.798.192c-.192.59-.391 1.142-.621 1.656v4.999h-.744zm2.4-5.827v1.089h2.445V5.54H7.573z'/%3E  %3C/g%3E%3C/svg%3E\")}.safe_buy_icon{display:inline-flex;align-items:center;padding:2px 4px;margin-left:6px;background-color:#ff61461a;color:transparent;font-size:0}.safe_buy_icon:before{color:#ff6146;font-size:10px;content:\"\";display:inline-block;vertical-align:middle;width:3.3em;height:1.2em;-webkit-mask:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='33' height='12' viewBox='0 0 33 12'%3E  %3Cpath fill='%23FF6146' fill-rule='evenodd' d='M28.196 8.24c.522.221 1.023.473 1.502.755.466.274.907.574 1.325.9a.127.127 0 0 1 .01.19l-.624.617a.127.127 0 0 1-.17.007c-.489-.4-.914-.733-1.275-.998a9.878 9.878 0 0 0-1.21-.762.127.127 0 0 1-.045-.184l.334-.48a.127.127 0 0 1 .153-.045zm-.505-4.714c.07 0 .126.057.126.127v.938c0 .49-.084 1.638-.179 2.044h3.677c.07 0 .127.057.127.127v.683c0 .07-.057.127-.127.127h-4.003a3.584 3.584 0 0 1-.257.461c-.16.24-.315.486-.513.7-1.242 1.345-3.219 2.005-5.93 1.982a.127.127 0 0 1-.125-.127v-.377c0-.067.053-.123.12-.126 2.334-.108 4.066-.776 5.197-2.004a4.16 4.16 0 0 0 .37-.509h-3.867a.127.127 0 0 1-.127-.127v-.683c0-.07.057-.127.127-.127h4.287c.128-.417.243-1.542.243-2.044v-.938c0-.07.057-.127.127-.127zM6.718 1.228l.728.12a.127.127 0 0 1 .103.152c-.098.461-.182.82-.254 1.075l-.034.119h2.813c.056 0 .103.036.12.087l.006.04v.683a.127.127 0 0 1-.086.12l-.04.007h-.58C9.41 5.28 9.02 6.696 8.303 7.857c.451.64 1.064 1.147 1.84 1.524.446.216 1.276.446 2.49.688.044.01.08.04.094.081l.008.044v.376a.126.126 0 0 1-.142.126c-1.426-.178-2.408-.39-2.947-.635a5.608 5.608 0 0 1-1.911-1.41c-.325.393-.61.66-1.09 1.077-.3.26-.695.53-1.187.81a.127.127 0 0 1-.135-.007l-.034-.035-.43-.669a.127.127 0 0 1 .047-.18c.521-.278.92-.533 1.196-.763.446-.372.763-.683 1.063-1.078a12.19 12.19 0 0 1-1.127-2.495 11.178 11.178 0 0 1-.404.502.127.127 0 0 1-.139.016l-.039-.031-.449-.532a.127.127 0 0 1-.005-.157c.246-.334.425-.598.536-.792.355-.62.637-1.333.847-2.138.05-.188.112-.471.188-.851a.127.127 0 0 1 .069-.09l.036-.01h.04zm-3.5.004c.16.344.276.599.347.765.102.24.192.468.271.687h1.391c.07 0 .127.057.127.127v.673c0 .07-.057.126-.127.126h-2.35v.826c0 .162-.01.316-.01.468h1.058c.527 0 .954.42.951.93-.01 2.001-.061 3.26-.144 3.775-.106.59-.559.886-1.36.886-.09 0-.31-.014-.658-.043a.126.126 0 0 1-.112-.094l-.153-.575a.127.127 0 0 1 .133-.159c.294.024.508.036.643.036.338 0 .537-.163.601-.488.06-.313.092-1.363.103-3.132a.241.241 0 0 0-.24-.24h-.864a14.394 14.394 0 0 1-.61 3.334 5.72 5.72 0 0 1-.66 1.362.127.127 0 0 1-.175.039l-.014-.01-.586-.499a.127.127 0 0 1-.025-.163 6.1 6.1 0 0 0 .652-1.38c.332-1.071.519-2.408.532-4.047V3.61h-.884a.127.127 0 0 1-.126-.126V2.81c0-.07.056-.127.126-.127h1.77c-.116-.273-.3-.658-.55-1.153a.127.127 0 0 1 .08-.18l.715-.188a.126.126 0 0 1 .147.069zm11.66 2.124c.055 0 .103.036.12.087l.006.04-.022 4.968c0 .48.43.87.926.87h1.34a.909.909 0 0 0 .638-.257.852.852 0 0 0 .262-.618l-.005-.958a.127.127 0 0 1 .168-.12l.729.254c.05.018.084.065.085.119l.005.7c.003.493-.194.958-.554 1.308-.36.35-.818.542-1.328.542h-1.34c-1.05 0-1.904-.825-1.904-1.84V3.483c0-.07.056-.127.126-.127h.747zm-2.34 1.033l.002.001.71.144a.127.127 0 0 1 .1.147c-.194 1.071-.354 1.852-.48 2.343-.132.511-.355 1.206-.668 2.083a.127.127 0 0 1-.185.066l-.642-.386a.127.127 0 0 1-.055-.15c.298-.85.505-1.501.623-1.954.125-.478.274-1.209.447-2.19a.127.127 0 0 1 .147-.104zm7-.192c.372.89.654 1.602.846 2.135.194.541.426 1.21.695 2.006a.127.127 0 0 1-.07.156l-.684.297a.127.127 0 0 1-.17-.076c-.291-.852-.54-1.558-.743-2.119a35.45 35.45 0 0 0-.832-2.063.127.127 0 0 1 .031-.145l.034-.022a.127.127 0 0 1 .012-.004l.726-.237c.062-.02.13.011.155.072zM8.557 3.631H6.934c-.105.254-.211.5-.327.724A12.43 12.43 0 0 0 7.703 6.95c.495-.947.78-2.057.854-3.32zm14.676.81c.41.16.765.32 1.065.48.29.153.592.328.91.525a.127.127 0 0 1 .039.178l-.372.55a.127.127 0 0 1-.176.035 24.441 24.441 0 0 0-.927-.597 6.58 6.58 0 0 0-.958-.466.127.127 0 0 1-.057-.19l.326-.47a.127.127 0 0 1 .15-.045zm.779-1.235c.404.15.753.295 1.046.44.303.148.63.324.98.527a.127.127 0 0 1 .04.18l-.37.55a.127.127 0 0 1-.174.036 19.512 19.512 0 0 0-.99-.6 7.84 7.84 0 0 0-.947-.436.127.127 0 0 1-.057-.191l.324-.46a.127.127 0 0 1 .148-.046zM30.333.225a.33.33 0 0 1 .333.38c-.005.051 0 .146.005.186l.044.292c.018.116.04.231.071.344.032.111.075.221.14.317a.761.761 0 0 0 .236.222 1.161 1.161 0 0 0 .53.154c.116.007.149.002.223.002a.34.34 0 0 1 .335.344.34.34 0 0 1-.335.344c-.074 0-.107-.005-.224.001a1.162 1.162 0 0 0-.529.155.75.75 0 0 0-.237.222 1.086 1.086 0 0 0-.139.317c-.072.256-.088.52-.115.784-.005.04-.01.135-.005.184a.331.331 0 0 1-.333.382.331.331 0 0 1-.331-.382.999.999 0 0 0-.006-.184c-.033-.264-.041-.526-.115-.784a1.086 1.086 0 0 0-.139-.317.75.75 0 0 0-.237-.222 1.162 1.162 0 0 0-.529-.155c-.116-.006-.149-.001-.223-.001a.34.34 0 0 1-.335-.344.34.34 0 0 1 .335-.344c.074 0 .107.005.223-.002a1.161 1.161 0 0 0 .529-.154.761.761 0 0 0 .237-.222c.065-.096.108-.206.14-.317.03-.113.052-.228.071-.344l.043-.292c.006-.04.01-.135.006-.185a.33.33 0 0 1 .332-.38zm-14.52 1.062c.324.369.586.671.787.909l.18.216.075.091c.257.318.578.75.962 1.296a.127.127 0 0 1-.035.18l-.628.409a.127.127 0 0 1-.175-.036 23.946 23.946 0 0 0-.9-1.268 35.338 35.338 0 0 0-1.06-1.265.127.127 0 0 1 .013-.178l.017-.013.603-.365a.127.127 0 0 1 .161.024zm12.314.701c.054 0 .085.056.056.1-.073.115-.176.247-.18.388-.005.114.076.222.117.32a.065.065 0 0 1-.063.089h-5.382a.127.127 0 0 1-.126-.127v-.643c0-.07.056-.127.126-.127z'/%3E%3C/svg%3E\") no-repeat 50% 50%;mask:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='33' height='12' viewBox='0 0 33 12'%3E  %3Cpath fill='%23FF6146' fill-rule='evenodd' d='M28.196 8.24c.522.221 1.023.473 1.502.755.466.274.907.574 1.325.9a.127.127 0 0 1 .01.19l-.624.617a.127.127 0 0 1-.17.007c-.489-.4-.914-.733-1.275-.998a9.878 9.878 0 0 0-1.21-.762.127.127 0 0 1-.045-.184l.334-.48a.127.127 0 0 1 .153-.045zm-.505-4.714c.07 0 .126.057.126.127v.938c0 .49-.084 1.638-.179 2.044h3.677c.07 0 .127.057.127.127v.683c0 .07-.057.127-.127.127h-4.003a3.584 3.584 0 0 1-.257.461c-.16.24-.315.486-.513.7-1.242 1.345-3.219 2.005-5.93 1.982a.127.127 0 0 1-.125-.127v-.377c0-.067.053-.123.12-.126 2.334-.108 4.066-.776 5.197-2.004a4.16 4.16 0 0 0 .37-.509h-3.867a.127.127 0 0 1-.127-.127v-.683c0-.07.057-.127.127-.127h4.287c.128-.417.243-1.542.243-2.044v-.938c0-.07.057-.127.127-.127zM6.718 1.228l.728.12a.127.127 0 0 1 .103.152c-.098.461-.182.82-.254 1.075l-.034.119h2.813c.056 0 .103.036.12.087l.006.04v.683a.127.127 0 0 1-.086.12l-.04.007h-.58C9.41 5.28 9.02 6.696 8.303 7.857c.451.64 1.064 1.147 1.84 1.524.446.216 1.276.446 2.49.688.044.01.08.04.094.081l.008.044v.376a.126.126 0 0 1-.142.126c-1.426-.178-2.408-.39-2.947-.635a5.608 5.608 0 0 1-1.911-1.41c-.325.393-.61.66-1.09 1.077-.3.26-.695.53-1.187.81a.127.127 0 0 1-.135-.007l-.034-.035-.43-.669a.127.127 0 0 1 .047-.18c.521-.278.92-.533 1.196-.763.446-.372.763-.683 1.063-1.078a12.19 12.19 0 0 1-1.127-2.495 11.178 11.178 0 0 1-.404.502.127.127 0 0 1-.139.016l-.039-.031-.449-.532a.127.127 0 0 1-.005-.157c.246-.334.425-.598.536-.792.355-.62.637-1.333.847-2.138.05-.188.112-.471.188-.851a.127.127 0 0 1 .069-.09l.036-.01h.04zm-3.5.004c.16.344.276.599.347.765.102.24.192.468.271.687h1.391c.07 0 .127.057.127.127v.673c0 .07-.057.126-.127.126h-2.35v.826c0 .162-.01.316-.01.468h1.058c.527 0 .954.42.951.93-.01 2.001-.061 3.26-.144 3.775-.106.59-.559.886-1.36.886-.09 0-.31-.014-.658-.043a.126.126 0 0 1-.112-.094l-.153-.575a.127.127 0 0 1 .133-.159c.294.024.508.036.643.036.338 0 .537-.163.601-.488.06-.313.092-1.363.103-3.132a.241.241 0 0 0-.24-.24h-.864a14.394 14.394 0 0 1-.61 3.334 5.72 5.72 0 0 1-.66 1.362.127.127 0 0 1-.175.039l-.014-.01-.586-.499a.127.127 0 0 1-.025-.163 6.1 6.1 0 0 0 .652-1.38c.332-1.071.519-2.408.532-4.047V3.61h-.884a.127.127 0 0 1-.126-.126V2.81c0-.07.056-.127.126-.127h1.77c-.116-.273-.3-.658-.55-1.153a.127.127 0 0 1 .08-.18l.715-.188a.126.126 0 0 1 .147.069zm11.66 2.124c.055 0 .103.036.12.087l.006.04-.022 4.968c0 .48.43.87.926.87h1.34a.909.909 0 0 0 .638-.257.852.852 0 0 0 .262-.618l-.005-.958a.127.127 0 0 1 .168-.12l.729.254c.05.018.084.065.085.119l.005.7c.003.493-.194.958-.554 1.308-.36.35-.818.542-1.328.542h-1.34c-1.05 0-1.904-.825-1.904-1.84V3.483c0-.07.056-.127.126-.127h.747zm-2.34 1.033l.002.001.71.144a.127.127 0 0 1 .1.147c-.194 1.071-.354 1.852-.48 2.343-.132.511-.355 1.206-.668 2.083a.127.127 0 0 1-.185.066l-.642-.386a.127.127 0 0 1-.055-.15c.298-.85.505-1.501.623-1.954.125-.478.274-1.209.447-2.19a.127.127 0 0 1 .147-.104zm7-.192c.372.89.654 1.602.846 2.135.194.541.426 1.21.695 2.006a.127.127 0 0 1-.07.156l-.684.297a.127.127 0 0 1-.17-.076c-.291-.852-.54-1.558-.743-2.119a35.45 35.45 0 0 0-.832-2.063.127.127 0 0 1 .031-.145l.034-.022a.127.127 0 0 1 .012-.004l.726-.237c.062-.02.13.011.155.072zM8.557 3.631H6.934c-.105.254-.211.5-.327.724A12.43 12.43 0 0 0 7.703 6.95c.495-.947.78-2.057.854-3.32zm14.676.81c.41.16.765.32 1.065.48.29.153.592.328.91.525a.127.127 0 0 1 .039.178l-.372.55a.127.127 0 0 1-.176.035 24.441 24.441 0 0 0-.927-.597 6.58 6.58 0 0 0-.958-.466.127.127 0 0 1-.057-.19l.326-.47a.127.127 0 0 1 .15-.045zm.779-1.235c.404.15.753.295 1.046.44.303.148.63.324.98.527a.127.127 0 0 1 .04.18l-.37.55a.127.127 0 0 1-.174.036 19.512 19.512 0 0 0-.99-.6 7.84 7.84 0 0 0-.947-.436.127.127 0 0 1-.057-.191l.324-.46a.127.127 0 0 1 .148-.046zM30.333.225a.33.33 0 0 1 .333.38c-.005.051 0 .146.005.186l.044.292c.018.116.04.231.071.344.032.111.075.221.14.317a.761.761 0 0 0 .236.222 1.161 1.161 0 0 0 .53.154c.116.007.149.002.223.002a.34.34 0 0 1 .335.344.34.34 0 0 1-.335.344c-.074 0-.107-.005-.224.001a1.162 1.162 0 0 0-.529.155.75.75 0 0 0-.237.222 1.086 1.086 0 0 0-.139.317c-.072.256-.088.52-.115.784-.005.04-.01.135-.005.184a.331.331 0 0 1-.333.382.331.331 0 0 1-.331-.382.999.999 0 0 0-.006-.184c-.033-.264-.041-.526-.115-.784a1.086 1.086 0 0 0-.139-.317.75.75 0 0 0-.237-.222 1.162 1.162 0 0 0-.529-.155c-.116-.006-.149-.001-.223-.001a.34.34 0 0 1-.335-.344.34.34 0 0 1 .335-.344c.074 0 .107.005.223-.002a1.161 1.161 0 0 0 .529-.154.761.761 0 0 0 .237-.222c.065-.096.108-.206.14-.317.03-.113.052-.228.071-.344l.043-.292c.006-.04.01-.135.006-.185a.33.33 0 0 1 .332-.38zm-14.52 1.062c.324.369.586.671.787.909l.18.216.075.091c.257.318.578.75.962 1.296a.127.127 0 0 1-.035.18l-.628.409a.127.127 0 0 1-.175-.036 23.946 23.946 0 0 0-.9-1.268 35.338 35.338 0 0 0-1.06-1.265.127.127 0 0 1 .013-.178l.017-.013.603-.365a.127.127 0 0 1 .161.024zm12.314.701c.054 0 .085.056.056.1-.073.115-.176.247-.18.388-.005.114.076.222.117.32a.065.065 0 0 1-.063.089h-5.382a.127.127 0 0 1-.126-.127v-.643c0-.07.056-.127.126-.127z'/%3E%3C/svg%3E\") no-repeat 50% 50%;-webkit-mask-size:cover;mask-size:cover;background-color:currentColor}.quote-container{padding:12px;border-radius:8px;background-color:var(--weui-BG-1);display:flex;align-items:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.quote-container .quote-image{font-size:44px;width:1em;height:1em;border-radius:50%}.quote-container .quote-nickname{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.quote-container .quote-caption{flex:1;width:200px;margin-left:8px;line-height:1.4;font-size:15px;color:var(--weui-FG-0)}.quote-container .quote-label{color:var(--weui-FG-2);font-size:14px;margin-top:2px}.map-container{padding:12px;border-radius:8px;background-color:var(--weui-BG-1);display:flex;align-items:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.map-container .map-image{font-size:44px;width:1em;height:1em;border-radius:1px}.map-container .map-title{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.map-container .map-caption{flex:1;width:300px;margin-left:8px;line-height:1.4;font-size:15px;color:var(--weui-FG-0)}.map-container .map-label{color:var(--weui-FG-2);font-size:14px}\n",
    c$1 = {
      path: "data-miniprogram-path",
      nickname: "data-miniprogram-nickname",
      avatar: "data-miniprogram-avatar",
      title: "data-miniprogram-title",
      desc: "data-miniprogram-desc",
      imageUrl: "data-miniprogram-imageurl",
      type: "data-miniprogram-type",
      textContent: "data-miniprogram-textcontent",
      serviceType: "data-miniprogram-servicetype",
      appid: "data-miniprogram-appid",
      is_hover: "data-is-hover",
      is_selected: "data-is-selected",
      applink: "data-miniprogram-applink",
      imageurlBack: "data-miniprogram-imageurlback",
      cropperInfo: "data-miniprogram-cropperinfo",
      username: "data-miniprogram-username"
    };
  function d$1(a) {
    var e = {};
    return e = o$6.call(this, c$1), e.is_hover *= 1, e.is_selected *= 1, _objectSpread$3(_objectSpread$3({}, e), {}, {
      platform: a
    });
  }
  function h() {
    var a = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    H$3(Object.assign(a, {
      Component: a.isDev ? a.devComponent : g$1,
      styleText: a.isDev ? a.devStyleText : n$2,
      customName: a.customName || "mp-common-miniprogram",
      watchAttr: ["data-miniprogram-appid", "data-is-hover", "data-is-selected", "data-miniprogram-title", "data-miniprogram-desc"],
      getProps: d$1
    }));
  }

  
  try {
    if (typeof parent.window.hasListenMpPageAction === 'undefined') {
      parent.window.hasListenMpPageAction = false;
    }
    if (typeof parent.window.hasListenStateChange === 'undefined') {
      parent.window.hasListenStateChange = false;
    }
  } catch (error) {
  }
  var mpPageActionCb = [];
  var stateChangeCb = [];
  var HistoryLS = new LS('history4secondopen');
  var HistoryKey = 'from';
  var hasListenPopstateForSecOpenReload = false;
  
  var webComptStatus = {
    status: 'loading'
  };
  var webComptInitCb = [];
  var directionHandlerId = 0;
  var directionChangeHandlersMap = {};
  function isNativePage() {
    return Url.getQuery('isNativePage') === '1' || Url.getQuery('isNativePage') === '2';
  }
  
  function debounce$1(func) {
    var wait = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 50;
    var timeout;
    return function () {
      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key &lt; _len; _key++) {
        args[_key] = arguments[_key];
      }
      var context = this;
      var later = function later() {
        timeout = null;
        func.apply(context, args);
      };
      if (timeout) {
        return;
      }
      timeout = setTimeout(later, wait);
    };
  }
  
  function checkIntersect(rectA, rectB) {
    return !(rectB.right &lt; rectA.left || rectB.left &gt; rectA.right || rectB.bottom &lt; rectA.top || rectB.top &gt; rectA.bottom);
  }
  var utils = {
    isNativePage: isNativePage,
    isNewNativePage: function isNewNativePage() {
      return Url.getQuery('isNativePage') === '2';
    },
    isOldNativePage: function isOldNativePage() {
      return Url.getQuery('isNativePage') === '1';
    },
    __useWcSlPlayer: false,
    isWcSlPage: function isWcSlPage() {
      return utils.__useWcSlPlayer;
    },
    getPlayerType: function getPlayerType() {
      if (isNativePage()) {
        return 2;
      }
      return 1;
    },
    getParam: function getParam(key) {
      if (!key) return null;
      var m = location.href.match(new RegExp("(\\?|&amp;)".concat(key, "=([^&amp;]+)")));
      return m ? m[2] : null;
    },
    
    insertAfter: function insertAfter(newElement, targetElement) {
      var parentElement = targetElement.parentNode;
      if (parentElement.lastChild === targetElement) {
        parentElement.appendChild(newElement);
      } else {
        parentElement.insertBefore(newElement, targetElement.nextSibling);
      }
    },
    getInnerHeight: function getInnerHeight() {
      var innerHeightFromApp = window.getInnerHeight &amp;&amp; window.getInnerHeight();
      return innerHeightFromApp || window.innerHeight || document.documentElement.clientHeight;
    },
    getInnerWidth: function getInnerWidth() {
      return window.innerWidth || document.documentElement.clientWidth;
    },
    getScrollTop: function getScrollTop() {
      return document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
    },
    getDocumentHeight: function getDocumentHeight() {
      return document.body.scrollHeight;
    },
    getElementActualTop: function getElementActualTop(element) {
      var elRect = element.getBoundingClientRect();
      var actualTop = elRect.top + this.getScrollTop();
      return actualTop;
    },
    getElementTop: function getElementTop(element) {
      return element.getBoundingClientRect().top;
    },
    getElementHeight: function getElementHeight(element) {
      return element.getBoundingClientRect().height;
    },
    getOrientation: function getOrientation() {
      var _a, _b;
      return (_b = (_a = window.screen.orientation) === null || _a === void 0 ? void 0 : _a.angle) !== null &amp;&amp; _b !== void 0 ? _b : window.orientation;
    },
    getDirection: function getDirection() {
      var orientation = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : utils.getOrientation();
      return (MMVersion.isIPad ? [90, 270] : [0, 180]).indexOf(orientation) &gt; -1 ? 'vertical' : 'horizontal';
    },
    listenDirectionChange: function listenDirectionChange(cb) {
      var _a, _b;
      if ((_b = (_a = window.screen) === null || _a === void 0 ? void 0 : _a.orientation) === null || _b === void 0 ? void 0 : _b.addEventListener) {
        directionChangeHandlersMap[directionHandlerId] = function (e) {
          cb === null || cb === void 0 ? void 0 : cb(utils.getDirection(e.target.angle), e.target.angle);
        };
        window.screen.orientation.addEventListener('change', directionChangeHandlersMap[directionHandlerId]);
      } else {
        directionChangeHandlersMap[directionHandlerId] = function () {
          var orientation = utils.getOrientation();
          cb === null || cb === void 0 ? void 0 : cb(utils.getDirection(orientation), orientation);
        };
        window.addEventListener('orientationchange', directionChangeHandlersMap[directionHandlerId]);
      }
      return directionHandlerId++;
    },
    unlistenDirectionChange: function unlistenDirectionChange(handlerId) {
      var _a, _b;
      if ((_b = (_a = window.screen) === null || _a === void 0 ? void 0 : _a.orientation) === null || _b === void 0 ? void 0 : _b.removeEventListener) {
        window.screen.orientation.removeEventListener('change', directionChangeHandlersMap[handlerId]);
      } else {
        window.removeEventListener('orientationchange', directionChangeHandlersMap[handlerId]);
      }
      delete directionChangeHandlersMap[handlerId];
    },
    isScrollEnd: function isScrollEnd(threshold) {
      return this.getScrollTop() + this.getInnerHeight() + threshold &gt;= this.getDocumentHeight();
    },
    
    listenStateChange: function listenStateChange() {
      var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
      stateChangeCb.push(opt.cb);
      try {
        if (parent.window.hasListenStateChange) {
          return;
        }
      } catch (error) {
      }
      R$4.on('activity:state_change', function (res) {
        stateChangeCb.forEach(function (callback) {
          callback(res);
        });
      });
      try {
        parent.window.hasListenStateChange = true;
      } catch (error) {
      }
    },
    
    listenMpPageAction: function listenMpPageAction(cb) {
      mpPageActionCb.push(cb);
      try {
        if (parent.window.hasListenMpPageAction) {
          return;
        }
      } catch (error) {
      }
      R$4.on('onMPPageAction', function (res) {
        mpPageActionCb.forEach(function (callback) {
          callback(res);
        });
      });
      try {
        parent.window.hasListenMpPageAction = true;
      } catch (error) {
      }
    },
    getIosMainVersion: function getIosMainVersion() {
      var versionInfo = navigator.userAgent.toLowerCase().match(/cpu iphone os (.*?) like mac os/);
      return versionInfo &amp;&amp; versionInfo[1] &amp;&amp; parseInt(versionInfo[1].split('_')[0], 10);
    },
    
    report120081: function report120081(key, times) {
      jsmonitorReport$1.setSum(120081, key, times);
      jsmonitorReport$1.send();
    },
    loadNewPageKeepingHistoryStackIfSecOpen: function loadNewPageKeepingHistoryStackIfSecOpen(url) {
      if (window.__second_open__ &amp;&amp; typeof url === 'string' &amp;&amp; /^https?:\/\/mp.weixin.qq.com\//.test(url)) {
        HistoryLS.set(HistoryKey, location.href, Date.now() + 10000);
      }
      location.href = "".concat(url.replace(/#.*$/, ''), "#wechat_redirect");
    },
    initNewPageHistoryStackFromSecOpen: function initNewPageHistoryStackFromSecOpen() {
      var fromUrl = HistoryLS.get(HistoryKey);
      if (fromUrl &amp;&amp; typeof fromUrl === 'string' &amp;&amp; /^https?:\/\/mp.weixin.qq.com\//.test(fromUrl)) {
        HistoryLS.remove(HistoryKey);
        if (history &amp;&amp; history.replaceState &amp;&amp; history.pushState) {
          var curUrl = location.href;
          try {
            history.replaceState({
              __mock_secopen_history_stack_reload__: 1
            }, '', fromUrl);
            history.pushState({
              __mock_secopen_history_stack_reload__: 1
            }, '', curUrl);
          } catch (e) {
            console.error('[initNewPageHistoryStackFromSecOpen]', e);
          }
        }
      }
      if (!hasListenPopstateForSecOpenReload) {
        hasListenPopstateForSecOpenReload = true;
        window.addEventListener('popstate', function (e) {
          if (e.state &amp;&amp; e.state.__mock_secopen_history_stack_reload__ === 1) {
            location.reload();
          }
        });
      }
    },
    initWebCompt: function initWebCompt(webComptList, callback) {
      var flushCb = function flushCb() {
        while (webComptInitCb.length) {
          var cb = webComptInitCb.shift();
          cb(webComptStatus);
        }
      };
      if (MMVersion.isWechat &amp;&amp; !MMVersion.isInMiniProgram &amp;&amp; (Device.os.iphone &amp;&amp; Device.os.getNumVersion() &gt;= 10.3 &amp;&amp; (MMVersion.gtVersion('7.0.14', 1) &amp;&amp; Device.os.getNumVersion() &lt; 15 || MMVersion.gtVersion('8.0.7')) || Device.os.android &amp;&amp; MMVersion.gtVersion('7.0.15', 1) &amp;&amp; Device.os.getNumVersion() &gt;= 5 || Device.os.harmony &amp;&amp; MMVersion.compareHexVersion('0xf3800c00'))) {
        document.addEventListener('WeixinOpenTagsReady', function () {
          webComptStatus = {
            status: 'ready'
          };
          flushCb();
        });
        document.addEventListener('WeixinOpenTagsError', function (e) {
          webComptStatus = {
            status: 'error',
            error: e &amp;&amp; e.detail &amp;&amp; e.detail.errMsg
          };
          flushCb();
        });
        R$4.invoke('handleMPPageAction', {
          action: 'wxConfig',
          appid: 'wxmpfakeid',
          webComptList: webComptList,
          url: location.href
        }, function (res) {
          console.log('wx config web compt result', webComptList, res);
          Log.info('wx config web compt result', webComptList, JSON.stringify(res));
          if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf(':ok') === -1) {
            webComptStatus = {
              status: 'error',
              error: res.err_msg
            };
            flushCb();
          }
          if (typeof callback === 'function') {
            callback(res);
          }
        });
      } else {
        var res = {
          err_msg: 'handleMPPageAction:fail_webcompt unsupported'
        };
        console.log('wx config web compt result', webComptList, res);
        Log.info('wx config web compt result', webComptList, JSON.stringify(res));
        webComptStatus = {
          status: 'error',
          error: res.err_msg
        };
        flushCb();
        if (typeof callback === 'function') {
          callback(res);
        }
      }
    },
    initWebComptForWcSlVideoSharePage: function initWebComptForWcSlVideoSharePage() {
      var initAfterConfWxOpen = function initAfterConfWxOpen(res) {
        if (res.err_msg.indexOf(':ok') !== -1) {
          utils.initNewPageHistoryStackFromSecOpen();
        } else {
          window.__failConfigWxOpen = true;
          Log.info('failed to config wxopen: res not ok');
          jsmonitorReport$1.setSum(221515, Device.os.iphone ? 7 : 8, 1);
          window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; res &amp;&amp; window.WX_BJ_REPORT.BadJs.report('WcSlPlayer:CfgError', (window.__second_open__ ? 'secopen:' : 'h5:') + JSON.stringify(res));
        }
      };
      if (MMVersion.isAndroid) {
        var clientVer = MMVersion.getInner();
        if (clientVer &gt; '27001037' &amp;&amp; clientVer &lt; '27001060' || clientVer &gt;= '27001100') {
          utils.initWebCompt(['wxOpen' ], initAfterConfWxOpen);
        } else if (MMVersion.gtVersion('7.0.15', 1)) {
          window.__failConfigWxOpen = true;
          Log.info('failed to config wxopen: android version check failed (gt 7.0.15)');
        } else {
          window.__failConfigWxOpen = true;
          Log.info('failed to config wxopen: android version check failed');
        }
      } else if (MMVersion.isIOS) {
        if (MMVersion.gtVersion('7.0.15', 1)) {
          utils.initWebCompt(['wxOpen' ], initAfterConfWxOpen);
        } else {
          window.__failConfigWxOpen = true;
          Log.info('failed to config wxopen: ios version check failed');
        }
      } else {
        window.__failConfigWxOpen = true;
      }
    },
    
    getWebComptStatus: function getWebComptStatus(cb) {
      if (typeof cb !== 'function') {
        return webComptStatus;
      }
      if (webComptStatus.status === 'loading') {
        webComptInitCb.push(cb);
      } else {
        cb(webComptStatus);
      }
      return true;
    },
    
    supportImmersiveMode: MMVersion.isWechat &amp;&amp; !MMVersion.isInMiniProgram &amp;&amp; (MMVersion.isIOS &amp;&amp; MMVersion.gtVersion('8.0.9', 1) || MMVersion.isAndroid &amp;&amp; MMVersion.gtVersion('8.0.9', 1)),
    debounce: debounce$1,
    
    bindDebounceScrollEvent: function bindDebounceScrollEvent(fn) {
      var scrollEle = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : window;
      var wait = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : 50;
      var useCapture = arguments.length &gt; 3 &amp;&amp; arguments[3] !== undefined ? arguments[3] : false;
      var debounceFn = debounce$1(fn, wait);
      DomEvent.on(scrollEle, 'scroll', '', debounceFn, useCapture);
    },
    checkIntersect: checkIntersect,
    
    clickRange: function clickRange(evt) {
      var selection = window.getSelection();
      var range = selection.rangeCount &amp;&amp; selection.getRangeAt(0);
      if (!range || range.collapsed || !range.intersectsNode(evt.target)) {
        return false;
      }
      var rangeClientRects = range.getClientRects();
      var targetLineHeight = parseFloat(getComputedStyle(evt.target).lineHeight, 10);
      var targetRect = evt.target.getBoundingClientRect();
      for (var i in rangeClientRects) {
        if (rangeClientRects.hasOwnProperty(i)) {
          var rect = rangeClientRects[i];
          var extraHeight = targetLineHeight ? (targetLineHeight - rect.height) / 2 : 0;
          if (rect.width &amp;&amp; checkIntersect(rect, targetRect) &amp;&amp; evt.clientX &gt;= rect.left &amp;&amp; evt.clientX &lt;= rect.right &amp;&amp; evt.clientY &gt;= rect.top - extraHeight &amp;&amp; evt.clientY &lt;= rect.bottom + extraHeight) {
            return true;
          }
        }
      }
    },
    once: function once(fn) {
      return function () {
        if (fn) {
          for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
            args[_key2] = arguments[_key2];
          }
          var ret = fn.apply(this, args);
          fn = null;
          return ret;
        }
      };
    },
    getRealHeightOfIOSNativePanel: function getRealHeightOfIOSNativePanel(oriHeight, callback) {
      if (MMVersion.isIOS) {
        R$4.invoke('handleDeviceInfo', {
          action: 'getUIParams'
        }, function (res) {
          var realHeight = oriHeight;
          if (res.isShowBottomBar) {
            realHeight -= res.bottomBarHeight;
          }
          realHeight = Math.max(realHeight, 0);
          typeof callback === 'function' &amp;&amp; callback(realHeight);
        });
      } else {
        typeof callback === 'function' &amp;&amp; callback(oriHeight);
      }
    }
  };

  
  var dealLikeReadShow_en = function dealLikeReadShow_en(realNum, showZero) {
    var defaultStr = showZero ? '0' : '';
    if (typeof LANG === 'undefined' || !window.LANG) {
      return parseInt(realNum) === 0 ? defaultStr : realNum;
    }
    if (window.LANG == 'en') {
      var showHTML = '';
      if (parseInt(realNum) &gt; 100000) {
        showHTML = "".concat(100, "k+");
      } else if (parseInt(realNum) &gt; 10000 &amp;&amp; parseInt(realNum) &lt;= 100000) {
        var num = "".concat(parseInt(realNum) / 1000);
        var dotIndex = num.indexOf('.');
        if (dotIndex === -1) {
          showHTML = "".concat(num, "k");
        } else {
          showHTML = "".concat(num.substring(0, dotIndex), ".").concat(num.charAt(dotIndex + 1), "k");
        }
      } else if (parseInt(realNum) === 0) {
        showHTML = defaultStr;
      } else {
        showHTML = realNum;
      }
      return showHTML;
    }
    return defaultStr;
  };
  var i18n = {
    dealLikeReadShow_en: dealLikeReadShow_en
  };
  function wxWorkJSAPI() {
    if (MMVersion.isWxWork &amp;&amp; (MMVersion.isAndroid || MMVersion.isIOS)) {
      if (MMVersion.cpVersion('4.1.12', 1, true, 'wxwork')) {
        console.log('[jsapi openMPURLInWechat] mpURL:', window.location.href);
        R$4.invoke('wwapp2.openMPURLInWechat', {
          mpURL: window.location.href
        }, function (res) {
          console.log('[jsapi openMPURLInWechat] res:', res, JSON.stringify(res));
        });
      } else {
        window.weui.alert('请升级企业微信版本');
      }
    } else {
      window.weui.alert('请使用手机版微信');
    }
  }

  MMVersion.isIOS &amp;&amp; MMVersion.compareHexVersion('18003C31') || MMVersion.isAndroid &amp;&amp; MMVersion.compareHexVersion('28003E11');
  var canUsePrivateShare = MMVersion.isIOS &amp;&amp; MMVersion.compareHexVersion('18003622') || MMVersion.isAndroid &amp;&amp; MMVersion.compareHexVersion('2800353C') || Device.os.unifiedPC &amp;&amp; MMVersion.cpVersion('4.0.6', 1, true, 'unifiedpc') &amp;&amp; getOriginExpVal('unified_share_card_style_pc') !== '0'
  ;
  function sendAppMessage(opt, callback) {
    var forceFallback = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    var jsapiName = canUsePrivateShare &amp;&amp; !forceFallback ? 'sendAppMessagePrivate' : 'sendAppMessage';
    console.log('[share] try to share:', jsapiName, opt, forceFallback);
    Log.info("[share] try to share: ".concat(jsapiName, " ").concat(JSON.stringify(opt), " forceFallback:").concat(forceFallback));
    R$4.invoke(jsapiName, opt, function (res) {
      console.log('[share] try to share res:', res, jsapiName, opt, forceFallback);
      if (!(res &amp;&amp; res.err_msg &amp;&amp; (res.err_msg.indexOf(':ok') !== -1 || res.err_msg.indexOf(':confirm') !== -1
      || res.err_msg.indexOf(':cancel') !== -1
      )) &amp;&amp; canUsePrivateShare &amp;&amp; !forceFallback) {
        sendAppMessage(opt, callback, true);
      } else {
        typeof callback === 'function' &amp;&amp; callback(res);
      }
    });
  }
  function shareTimeline(opt, callback) {
    var forceFallback = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    var jsapiName = canUsePrivateShare &amp;&amp; !forceFallback ? 'shareTimelinePrivate' : 'shareTimeline';
    console.log('[share] try to share:', jsapiName, opt, forceFallback);
    Log.info("[share] try to share: ".concat(jsapiName, " ").concat(JSON.stringify(opt), " forceFallback:").concat(forceFallback));
    R$4.invoke(jsapiName, opt, function (res) {
      console.log('[share] try to share res:', res, jsapiName, opt, forceFallback);
      if (!(res &amp;&amp; res.err_msg &amp;&amp; (res.err_msg.indexOf(':ok') !== -1 || res.err_msg.indexOf('cancel') !== -1)) &amp;&amp; canUsePrivateShare &amp;&amp; !forceFallback) {
        shareTimeline(opt, callback, true);
      } else {
        typeof callback === 'function' &amp;&amp; callback(res);
      }
    });
  }

  var e = {
      d: function d(t, r) {
        for (var i in r) e.o(r, i) &amp;&amp; !e.o(t, i) &amp;&amp; Object.defineProperty(t, i, {
          enumerable: !0,
          get: r[i]
        });
      },
      o: function o(e, t) {
        return Object.prototype.hasOwnProperty.call(e, t);
      }
    },
    t = {};
  e.d(t, {
    A: function A() {
      return s$1;
    },
    Q: function Q() {
      return a$2;
    }
  });
  var r$3 = function r(e, t) {
      var r = {};
      for (var i in e) Object.prototype.hasOwnProperty.call(e, i) &amp;&amp; t.indexOf(i) &lt; 0 &amp;&amp; (r[i] = e[i]);
      if (null != e &amp;&amp; "function" == typeof Object.getOwnPropertySymbols) {
        var n = 0;
        for (i = Object.getOwnPropertySymbols(e); n &lt; i.length; n++) t.indexOf(i[n]) &lt; 0 &amp;&amp; Object.prototype.propertyIsEnumerable.call(e, i[n]) &amp;&amp; (r[i[n]] = e[i[n]]);
      }
      return r;
    },
    i$1 = function i(e, t, r) {
      if (r || 2 === arguments.length) for (var i, n = 0, o = t.length; n &lt; o; n++) !i &amp;&amp; n in t || (i || (i = Array.prototype.slice.call(t, 0, n)), i[n] = t[n]);
      return e.concat(i || Array.prototype.slice.call(t));
    },
    n$1 = function n(e) {
      if ("object" == _typeof$3(e) &amp;&amp; e) return e;
      if ("string" == typeof e) try {
        return JSON.parse(e);
      } catch (e) {
        return;
      }
    },
    o = function o(e) {
      return 173 === e ? 95 : 166 === e ? 147 : [205, 207, 206].includes(e) ? 135 : 78;
    };
  function a$2(e) {
    var t,
      a,
      s = e.thirdExtParam,
      d = void 0 === s ? "" : s,
      m = e.kvItems,
      p = void 0 === m ? [] : m,
      l = e.sessionKvItems,
      c = void 0 === l ? [] : l,
      u = e.scene,
      x = void 0 === u ? -1 : u,
      y = (e.query, e.parentType),
      h = r$3(e, ["thirdExtParam", "kvItems", "sessionKvItems", "scene", "query", "parentType"]),
      g = {
        crossExtReqParams: [],
        sessionExtReqParams: [],
        originThirdExtParam: ""
      };
    try {
      if (console.warn("mpThirdExtParamToSearchExtParam init extReqParams:", g), !d) throw new Error("mpThirdExtParamToSearchExtParam thirdExtParam 不存在");
      var _ = JSON.parse(decodeURIComponent(d));
      if (_) {
        if (g.originThirdExtParam = JSON.stringify({
          s1sKeywordsData: null == _ ? void 0 : _.s1sKeywordsData,
          mp_bizuin_msgid_msgidx: null == _ ? void 0 : _.mp_bizuin_msgid_msgidx,
          mp_finger_search_query_pos: null == _ ? void 0 : _.mp_finger_search_query_pos
        }), null == _ ? void 0 : _.s1sKeywordsData) {
          var v = (_ || {}).s1sKeywordsData,
            P = void 0 === v ? {} : v,
            f = P.enterId,
            E = void 0 === f ? 0 : f,
            S = P.s1sContextInfo,
            q = void 0 === S ? "{}" : S,
            T = P.s1sStatInfo,
            I = void 0 === T ? "{}" : T,
            R = P.sessionId,
            O = void 0 === R ? "" : R,
            b = P.postype,
            C = n$1(decodeURIComponent(q)) || {},
            k = n$1(decodeURIComponent(I)) || {},
            w = k.bizuin,
            j = void 0 === w ? 0 : w,
            z = k.msgid,
            J = void 0 === z ? 0 : z,
            N = k.msgidx,
            V = void 0 === N ? 0 : N,
            A = C.mixerCommonContext,
            D = void 0 === A ? "" : A,
            U = (C.isNeedUpdateGPTInfo, C.S1SPageType);
          if ([2, 5].includes(void 0 === U ? 1 : U)) return {
            thirdExtParam: d
          };
          g.crossExtReqParams.push({
            key: "parentSearchID",
            textValue: [y || o(x), E || k.enterId, "", "".concat(j, "_").concat(J, "_").concat(V), encodeURIComponent(JSON.stringify({
              enterId: E || k.enterId,
              sessionId: O,
              s1sStatInfo: k,
              postype: b,
              mpBizuinMsgidMsgidx: (null == _ ? void 0 : _.mp_bizuin_msgid_msgidx) || "".concat(j, "_").concat(J, "_").concat(V),
              mpFingerSearchQueryPos: null == _ ? void 0 : _.mp_finger_search_query_pos,
              docid: null == h ? void 0 : h.docid
            }))].join(":").replace(/,/g, ";")
          }), D &amp;&amp; g.crossExtReqParams.push({
            key: "mixerCommonContext",
            textValue: D
          });
        } else g.crossExtReqParams.push({
          key: "parentSearchID",
          textValue: [y || o(x), 0, "", "", encodeURIComponent(JSON.stringify({
            mpBizuinMsgidMsgidx: null == _ ? void 0 : _.mp_bizuin_msgid_msgidx,
            mpFingerSearchQueryPos: null == _ ? void 0 : _.mp_finger_search_query_pos,
            docid: null == h ? void 0 : h.docid
          }))].join(":").replace(/,/g, ";")
        });
        (null == _ ? void 0 : _.mpSelectedContent) &amp;&amp; g.sessionExtReqParams.push({
          key: "mpSelectedContent",
          textValue: _.mpSelectedContent
        }), (null == _ ? void 0 : _.mpSelectActionType) &amp;&amp; g.sessionExtReqParams.push({
          key: "mpSelectActionType",
          textValue: String(_.mpSelectActionType)
        }), (null == _ ? void 0 : _.mp_bizuin_msgid_msgidx) &amp;&amp; g.sessionExtReqParams.push({
          key: "mpBizuinMsgidMsgidx",
          textValue: _.mp_bizuin_msgid_msgidx
        }), (null == _ ? void 0 : _.mp_finger_search_query_context) &amp;&amp; g.sessionExtReqParams.push({
          key: "mpFingerSearchQueryContext",
          textValue: _.mp_finger_search_query_context
        }), (null == _ ? void 0 : _.mp_finger_search_query_pos) &amp;&amp; g.sessionExtReqParams.push({
          key: "mpFingerSearchQueryPos",
          textValue: String(_.mp_finger_search_query_pos)
        }), !(null == _ ? void 0 : _.aiH5Link) &amp;&amp; !(null == _ ? void 0 : _.aiH5Title) || [206].includes(x) || g.sessionExtReqParams.push({
          key: "aiSearchUploadInfo",
          textValue: JSON.stringify({
            uploadFiles: [{
              fileType: 4,
              fileContentDetail: {
                mpContentDetail: {
                  title: null == _ ? void 0 : _.aiH5Title
                }
              },
              url: String(null == _ ? void 0 : _.aiH5Link)
            }],
            contentType: 4,
            allowedContentType: 4
          })
        });
      }
      return (null == p ? void 0 : p.length) &amp;&amp; (t = g.crossExtReqParams).push.apply(t, p), (null == c ? void 0 : c.length) &amp;&amp; (a = g.sessionExtReqParams).push.apply(a, c), h &amp;&amp; Object.keys(h).length &amp;&amp; (g.otherJsApiParams = h), console.warn("mpThirdExtParamToSearchExtParam extReqParams:", g), {
        thirdExtParam: encodeURIComponent(JSON.stringify(g)),
        extReqParams: JSON.stringify(i$1(i$1([], g.crossExtReqParams, !0), g.sessionExtReqParams, !0))
      };
    } catch (e) {
      return console.error("mpThirdExtParamToSearchExtParam err:", e), {
        thirdExtParam: d
      };
    }
  }
  var s$1 = {
    mpThirdExtParamToSearchExtParam: a$2
  };
  t.A;
    var m = t.Q;

  var pageHeight = utils.getInnerHeight();
  var pageWidth = utils.getInnerWidth();
  var g = {
    inWechat: MMVersion.isWechat,
    windowWechat: MMVersion.isWindowsWechat,
    macWechat: MMVersion.isMacWechat,
    emojiImg: '&lt;img src="https://res.wx.qq.com/mmbizappmsg/zh_CN/images/pic/pic_blank.gif" class="icon_emotion_single #style#" alt="#name#"&gt;',
    emojiDataMap: {}
  };
  function getParam(key) {
    if (!key) return null;
    var m = location.href.match(new RegExp("(\\?|&amp;)".concat(key, "=([^&amp;]+)")));
    return m ? m[2].split('#')[0] : null;
  }
  function getParams(loca) {
    var vars = [];
    var params = {};
    if (!loca) {
      try {
        loca = window.top.location;
        vars = loca.search.substring(1).split('&amp;');
      } catch (e) {
        loca = window.location;
        vars = loca.search.substring(1).split('&amp;');
      }
    }
    if (typeof loca === 'string') {
      loca = new URL(loca);
      vars = loca.search.substring(1).split('&amp;');
    }
    for (var i = 0; i &lt; vars.length; i++) {
      var pair = vars[i].split('=');
      var key = decodeURIComponent(pair.shift());
      if (typeof params[key] === 'undefined') {
        params[key] = decodeURIComponent(pair.join('='));
      }
    }
    return params;
  }
  function genUrl(host, params, hash) {
    if (typeof host !== 'string') {
      return '';
    }
    if (params &amp;&amp; _typeof$3(params) === 'object' &amp;&amp; Object.keys(params).length) {
      host += "?".concat(Object.keys(params).map(function (k) {
        return "".concat(k, "=").concat(encodeURIComponent(params[k]));
      }).join('&amp;'));
    }
    if (hash &amp;&amp; typeof hash === 'string') {
      host += "#".concat(hash);
    }
    return host;
  }
  var jumpUrl = function jumpUrl(url, newWin) {
    var opt = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : {};
    var _a, _b;
    var openUrlWithExtraWebview = function openUrlWithExtraWebview() {
      R$4.invoke('openUrlWithExtraWebview', {
        url: url,
        'openType': 1
      }, function (res) {
        var _a;
        if (((_a = res.err_msg) === null || _a === void 0 ? void 0 : _a.indexOf('ok')) === -1) {
          if (newWin === true) {
            window.parent.open(url);
          } else {
            window.parent.location.href = url;
          }
        }
      });
    };
    if (!g.inWechat) {
      if (newWin === true) {
        window.open(url);
      } else {
        location.href = url;
      }
    } else {
      R$4.invoke('openWebViewUseFastLoad', {
        url: url,
        item_show_type: (_b = (_a = opt.itemShowType) !== null &amp;&amp; _a !== void 0 ? _a : window.item_show_type * 1) !== null &amp;&amp; _b !== void 0 ? _b : 0,
        openType: 0,
        scene: 1
      }, function (res) {
        if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf('ok') === -1) {
          openUrlWithExtraWebview();
        }
      });
    }
  };
  var closeWin = function closeWin() {
    if (!g.inWechat || g.windowWechat || g.macWechat) {
      window.close();
    } else {
      R$4.invoke('closeWindow', function (res) {
        if (res.err_msg.indexOf('ok') == -1) {
          window.close();
        }
      });
    }
  };
  function setTwoTabHeight(id) {
    if (window.hasChannelTwoTab &amp;&amp; utils.isNewNativePage()) {
      var scrollHeight;
      scrollHeight = document.getElementById('tab').offsetTop - window.__minHeight;
      var bodyHeight = document.body.offsetHeight;
      var minMountHeight = pageHeight + scrollHeight;
      if (bodyHeight &lt; minMountHeight) {
        var emptyHeight = scrollHeight + pageHeight - document.body.offsetHeight;
        var emptyElement = document.createElement('div');
        emptyElement.setAttribute('class', 'empty_comment_element');
        emptyElement.style.cssText = "height: ".concat(emptyHeight, "px;");
        document.getElementById(id).appendChild(emptyElement);
      }
      window.minMountHeight = minMountHeight;
    }
  }
  var getId = function getId(id) {
    return document.getElementById(id);
  };
  
  var shareReport = function shareReport(shareSource) {
    var opt = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : {};
    if (shareSource === 'album') {
      var postData = {
        bizuin: window.biz,
        url: "".concat(opt.url),
        ActionType: opt.actionType * 1,
        Scene: window.source * 1,
        Network: "".concat(window.__networkType),
        AlbumId: "".concat(opt.albumId),
        AlbumType: opt.albumType * 1,
        ExpType: window.exptype || '',
        EnterId: window.enterid || '',
        SessionId: window.sessionid || '',
        ExpSessionIdStr: window.expsessionid || '',
        RecReqID: Url.getQuery('req_id') * 1 || 0
      };
      w$5.report(10380, postData, {
        success: function success(res) {
          if (res.err_code * 1 !== 0) {
            if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; window.WX_BJ_REPORT.BadJs) {
              window.WX_BJ_REPORT.BadJs.report('mmdata report failed', 'log_id: 10380', {
                mid: 'mmbizwap:album_Monitor',
                _info: {
                  postData: postData,
                  errCode: res.err_code,
                  errMsg: res.err_msg
                }
              });
            }
          }
        }
      });
    }
  };
  var getByClass = function getByClass(className, el) {
    return (el || document).getElementsByClassName(className);
  };
  var trim = function trim(str) {
    return "".concat(str || '').replace(/^\s+|\s+$/g, '');
  };
  var qs = function qs(selector, el) {
    return (el || document).querySelector(selector);
  };
  var qsAll = function qsAll(selector, el) {
    return (el || document).querySelectorAll(selector);
  };
  
  var changeURLArg = function changeURLArg(url, arg, argVal) {
    var pattern = new RegExp("".concat(arg, "=[^&amp;]*"), 'gi');
    var replaceText = "".concat(arg, "=").concat(argVal);
    if (pattern.test(url)) return url.replace(pattern, replaceText);
    return url.replace(/(#.*)?$/, "".concat(url.indexOf('?') &gt; -1 ? '&amp;' : '?').concat(replaceText, "$1"));
  };
  
  function getNetWorkType() {
    DomEvent.on(window, 'load', function () {
      if (!window.__networkType &amp;&amp; g.inWechat) {
        var nettypeMap = {
          'network_type:fail': 'fail',
          'network_type:edge': '2g/3g',
          'network_type:wwan': '2g/3g',
          'network_type:wifi': 'wifi'
        };
        R$4.invoke('getNetworkType', {}, function (res) {
          window.__networkType = nettypeMap[res.err_msg];
        });
      }
    }, false);
  }
  
  var sceneType = [1, 24, 2, 3, 43, 22, 23, 5];
  function shareMessage() {
    var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    var shareOpt = {
      appId: opt.appId,
      img_url: opt.img_url,
      img_width: opt.img_width,
      img_height: opt.img_height,
      link: opt.link.replace(/&lt;br\/&gt;/g, '\n'),
      desc: opt.desc.replace(/&lt;br\/&gt;/g, '\n'),
      title: opt.title
    };
    getNetWorkType();
    if (!/#wechat_redirect/.test(shareOpt.link)) {
      shareOpt.link += '#wechat_redirect';
    }
    var shareSource = '';
    var reportData = {
      url: shareOpt.link,
      actionType: 0
    };
    var shareReportCallback = shareReport;
    if (opt.isAlbum) {
      shareSource = 'album';
      shareOpt = Object.assign({
        album_id: opt.album_id,
        album_type: opt.album_type
      }, shareOpt);
      reportData = Object.assign({
        albumId: opt.album_id,
        albumType: opt.album_type
      }, reportData);
    } else if (typeof opt.shareReport === 'function') {
      shareReportCallback = function shareReportCallback(shareSource, reportData) {
        return opt.shareReport(reportData.actionType);
      };
    }
    R$4.on('menu:share:appmessage', function (argv) {
      var actionType;
      if (!!argv &amp;&amp; argv.scene === 'favorite') {
        actionType = 24;
        shareOpt.link = changeURLArg(shareOpt.link, 'scene', sceneType[1]);
      } else {
        actionType = 1;
        shareOpt.link = changeURLArg(shareOpt.link, 'scene', sceneType[0]);
      }
      if (typeof opt.beforeShare === 'function') {
        try {
          shareOpt = opt.beforeShare('menu:share:appmessage', shareOpt) || shareOpt;
        } catch (e) {
        }
      }
      reportData.url = shareOpt.link;
      reportData.actionType = actionType;
      shareReportCallback(shareSource, reportData);
      sendAppMessage(shareOpt);
    });
    R$4.on('menu:share:timeline', function () {
      shareOpt.link = changeURLArg(shareOpt.link, 'scene', sceneType[2]);
      reportData.url = shareOpt.link;
      reportData.actionType = 2;
      if (typeof opt.beforeShare === 'function') {
        try {
          shareOpt = opt.beforeShare('menu:share:timeline', shareOpt) || shareOpt;
        } catch (e) {
        }
      }
      shareReportCallback(shareSource, reportData);
      shareTimeline(shareOpt);
    });
    R$4.on('menu:share:weiboApp', function () {
      shareOpt.link = changeURLArg(shareOpt.link, 'scene', sceneType[3]);
      reportData.url = shareOpt.link;
      reportData.actionType = 3;
      if (typeof opt.beforeShare === 'function') {
        try {
          shareOpt = opt.beforeShare('menu:share:weiboApp', shareOpt) || shareOpt;
        } catch (e) {
        }
      }
      shareReportCallback(shareSource, reportData);
      R$4.invoke('shareWeiboApp', {
        img_url: shareOpt.img_url,
        link: shareOpt.link,
        title: shareOpt.title
      });
    });
    R$4.on('menu:share:facebook', function () {
      shareOpt.link = changeURLArg(shareOpt.link, 'scene', sceneType[4]);
      reportData.url = shareOpt.link;
      reportData.actionType = 7;
      if (typeof opt.beforeShare === 'function') {
        try {
          shareOpt = opt.beforeShare('menu:share:facebook', shareOpt) || shareOpt;
        } catch (e) {
        }
      }
      shareReportCallback(shareSource, reportData);
      R$4.invoke('shareFB', shareOpt);
    });
    R$4.on('menu:share:QZone', function () {
      shareOpt.link = changeURLArg(shareOpt.link, 'scene', sceneType[5]);
      reportData.url = shareOpt.link;
      reportData.actionType = 5;
      if (typeof opt.beforeShare === 'function') {
        try {
          shareOpt = opt.beforeShare('menu:share:QZone', shareOpt) || shareOpt;
        } catch (e) {
        }
      }
      shareReportCallback(shareSource, reportData);
      R$4.invoke('shareQZone', shareOpt);
    });
    R$4.on('menu:share:qq', function () {
      shareOpt.link = changeURLArg(shareOpt.link, 'scene', sceneType[6]);
      reportData.url = shareOpt.link;
      reportData.actionType = 5;
      if (typeof opt.beforeShare === 'function') {
        try {
          shareOpt = opt.beforeShare('menu:share:qq', shareOpt) || shareOpt;
        } catch (e) {
        }
      }
      shareReportCallback(shareSource, reportData);
      R$4.invoke('shareQQ', shareOpt);
    });
    R$4.on('menu:share:email', function () {
      shareOpt.link = changeURLArg(shareOpt.link, 'scene', sceneType[7]);
      reportData.url = shareOpt.link;
      reportData.actionType = 5;
      if (typeof opt.beforeShare === 'function') {
        try {
          shareOpt = opt.beforeShare('menu:share:email', shareOpt) || shareOpt;
        } catch (e) {
        }
      }
      shareReportCallback(shareSource, reportData);
      R$4.invoke('sendEmail', {
        content: shareOpt.link,
        title: shareOpt.title
      });
    });
  }
  function getQuery(strName) {
    var strHref = window.location.href;
    var intPos = strHref.indexOf('?');
    var strRight = strHref.substr(intPos + 1);
    var arrTmp = strRight.split('&amp;');
    for (var i = 0; i &lt; arrTmp.length; i++) {
      var arrTemp = arrTmp[i].split('=');
      if (arrTemp[0].toUpperCase() == strName.toUpperCase()) return arrTemp[1];
    }
    return '';
  }
  function goProfile() {
    var urlOpts = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    var jsapiInvokeOpts = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : {};
    var cb = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : function () {};
    var bizAccountStatus = arguments.length &gt; 3 ? arguments[3] : undefined;
    jsapiInvokeOpts.extra = JSON.stringify({
      pageItemShowType: window.item_show_type
    });
    var callProfileJSAPI = function callProfileJSAPI() {
      var _a, _b;
      if ((jsapiInvokeOpts.servicetype * 1 === 5 || ((_b = (_a = jsapiInvokeOpts.username) === null || _a === void 0 ? void 0 : _a.startsWith) === null || _b === void 0 ? void 0 : _b.call(_a, 'phacct_'))) &amp;&amp; !supportPhotoAccounts(false)) {
        if (photoAccountsEnableProfileExt()) {
          R$4.invoke('openUrlWithExtraWebview', {
            url: "https://mp.weixin.qq.com/mp/profile_ext?action=home&amp;__biz=".concat(urlOpts.biz, "#wechat_redirect"),
            openType: 1
          }, cb);
        } else {
          supportPhotoAccounts();
        }
        return;
      } else {
        R$4.invoke('profile', jsapiInvokeOpts, cb);
      }
    };
    if (MMVersion.isWxWork) {
      wxWorkJSAPI();
    } else if (MMVersion.isDonutAPP) {
      callProfileJSAPI();
    } else if (!MMVersion.isWechat) {
      window.weui.alert('请在微信内打开');
    } else if (bizAccountStatus === 1 || bizAccountStatus === 5) {
      openUrl$1.openUrlWithExtraWebview("https://mp.weixin.qq.com/mp/getprofiletransferpage?__biz=".concat(urlOpts.biz, "#wechat_redirect"));
    } else if (MMVersion.isWechat &amp;&amp; (MMVersion.isIOS || MMVersion.isAndroid || MMVersion.isHarmony || MMVersion.isWindows &amp;&amp; MMVersion.cpVersion('3.4.5', 1, true, 'windows') || MMVersion.isMacWechat &amp;&amp; MMVersion.cpVersion('3.5.0', 1, true, 'mac') || Device.os.unifiedPC)) {
      callProfileJSAPI();
    } else {
      location.href = "/mp/profile_ext?action=home&amp;__biz=".concat(urlOpts.biz, "&amp;scene=").concat(urlOpts.scene, "#wechat_redirect");
    }
  }
  function prepareNativePage(list, attr) {
    R$4.invoke('createWebViewForFastLoad', {
      scene: 1
    }, function (res) {
      list.forEach(function (item) {
        R$4.invoke('downloadPageDataForFastLoad', {
          itemList: [{
            item_show_type: 5,
            url: item[attr]
          }]
        }, function (res) {
          console.log(res);
        });
      });
    });
  }
  function debounce(func, wait) {
    var immediate = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    var timeout;
    return function () {
      var context = this;
      var args = arguments;
      var later = function later() {
        timeout = null;
        if (!immediate) func.apply(context, args);
      };
      var callNow = immediate &amp;&amp; !timeout;
      clearTimeout(timeout);
      timeout = setTimeout(later, wait);
      if (callNow) func.apply(context, args);
    };
  }
  function formatSeconds(value) {
    var second = parseInt(value, 10);
    var middle = 0;
    var hour = 0;
    if (second &gt; 60) {
      middle = parseInt(second / 60, 10);
      second = parseInt(second % 60, 10);
      if (middle &gt; 60) {
        hour = parseInt(middle / 60, 10);
        middle = parseInt(middle % 60, 10);
      }
    }
    if (second &lt; 10) {
      second = "0".concat(second);
    }
    var result = ":".concat(second);
    if (middle &gt; 0) {
      if (middle &lt; 10) {
        middle = "0".concat(middle);
      }
      result = middle + result;
    } else {
      result = "00".concat(result);
    }
    if (hour &gt; 0) {
      if (parseInt(hour, 10) === 0) {
        hour = '';
      } else {
        if (hour &lt; 10) {
          hour = "0".concat(hour);
        }
      }
      result = "".concat(hour, ":").concat(result);
    }
    return result;
  }
  function formatReadNum(value, showZero) {
    if (window.LANG === 'en') {
      return i18n.dealLikeReadShow_en(value, showZero);
    }
    var result = '';
    if (parseInt(value, 10) &gt; 100000) {
      result = 10 + '万+';
    } else if (parseInt(value, 10) &gt; 10000 &amp;&amp; parseInt(value, 10) &lt;= 100000) {
      var num = '' + parseInt(value, 10) / 10000;
      var dotIndex = num.indexOf('.');
      if (dotIndex === -1) {
        result = num + '万';
      } else {
        result = num.substr(0, dotIndex) + '.' + num.charAt(dotIndex + 1) + '万';
      }
    } else if (parseInt(value, 10) === 0) {
      result = showZero ? '0' : '';
    } else {
      result = value || '';
    }
    return result;
  }
  function throttle(fun, delay) {
    var last;
    var deferTimer;
    return function () {
      var that = this;
      var args = arguments;
      var now = +new Date();
      if (last &amp;&amp; now &lt; last + delay) {
        clearTimeout(deferTimer);
        deferTimer = setTimeout(function () {
          last = now;
          fun.apply(that, args);
        }, delay);
      } else {
        last = now;
        fun.apply(that, args);
      }
    };
  }
  function getScrollTop() {
    var scrollTop = 0;
    var bodyScrollTop = 0;
    var documentScrollTop = 0;
    if (document.body) {
      bodyScrollTop = document.body.scrollTop;
    }
    if (document.documentElement) {
      documentScrollTop = document.documentElement.scrollTop;
    }
    scrollTop = bodyScrollTop - documentScrollTop &gt; 0 ? bodyScrollTop : documentScrollTop;
    return scrollTop;
  }
  function getScrollHeight() {
    var scrollHeight = 0;
    var bSH;
    var dSH;
    if (document.body) {
      bSH = document.body.scrollHeight;
    }
    if (document.documentElement) {
      dSH = document.documentElement.scrollHeight;
    }
    scrollHeight = bSH - dSH &gt; 0 ? bSH : dSH;
    return scrollHeight;
  }
  function getWindowHeight() {
    var windowHeight = 0;
    if (document.compatMode === 'CSS1Compat') {
      windowHeight = document.documentElement.clientHeight;
    } else {
      windowHeight = document.body.clientHeight;
    }
    return windowHeight;
  }
  function openAllVideoPage() {
    var opts = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    var url = "".concat(location.origin, "/mp/profile_ext?action=home&amp;real_type=43&amp;__biz=").concat(opts.biz, "&amp;scene=").concat(opts.scene, "#wechat_redirect");
    jumpUrl(url, true);
  }
  function openAlbumPage() {
    var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    var url = "".concat(opt.albumLink.replace('#wechat_redirect', ''), "&amp;scene=").concat(opt.scene, "&amp;is_first_screen=1&amp;subscene=").concat(opt.subscene, "&amp;vid=").concat(opt.vid, "&amp;count=").concat(opt.pageCount ? opt.pageCount : 3, "&amp;from_msgid=").concat(opt.curMsgid ? opt.curMsgid : '', "&amp;from_itemidx=").concat(opt.curItemidx ? opt.curItemidx : '', "&amp;scenenote=").concat(opt.scenenote, "#wechat_redirect");
    jumpUrl(url, true);
  }
  function getElementTop(element) {
    return element.getBoundingClientRect().top;
  }
  function getElementHeight(element) {
    return element.getBoundingClientRect().height;
  }
  function isPageEnd() {
    return getScrollTop() + getWindowHeight() + 30 &gt;= getScrollHeight();
  }
  function getMoreVideoInfo(url, vid) {
    return "".concat(Url.getQuery('__biz', url), "_").concat(Url.getQuery('mid', url), "_").concat(Url.getQuery('idx', url), "_").concat(vid);
  }
  function formatAlbumnReadNum(readNum, magnitude) {
    var isEn = window.LANG === 'en';
    var unit = isEn ? 'k' : '万';
    var readNumWording = '';
    var magnit = magnitude * 10000;
    var magnitShow = isEn ? magnitude * 10 : magnitude;
    readNum = parseInt(readNum, 10);
    if (readNum &gt; magnit) {
      readNumWording = "".concat(magnitShow + unit, "+");
    } else if (readNum &gt;= 10000 &amp;&amp; readNum &lt;= magnit) {
      var num = "".concat(isEn ? readNum / 1000 : readNum / 10000);
      var dotIndex = num.indexOf('.');
      if (dotIndex === -1) {
        readNumWording = num + unit;
      } else {
        readNumWording = "".concat(num.substr(0, dotIndex), ".").concat(num.charAt(dotIndex + 1)).concat(unit);
      }
    } else {
      readNumWording = readNum;
    }
    return readNumWording || 0;
  }
  
  var checkExposedStatus = function checkExposedStatus(el) {
    var ratio = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 0.5;
    var direction = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : 'vertical';
    var container = arguments.length &gt; 3 &amp;&amp; arguments[3] !== undefined ? arguments[3] : window;
    if (!el) return false;
    var isExposed = false;
    var verticalRatio = 0;
    var horizontalRatio = 0;
    var checkVertical = false;
    var checkHorizontal = false;
    var containerWidth = container === container.window ? pageWidth : container.getBoundingClientRect().width;
    var containerHeight = container === container.window ? pageHeight : container.getBoundingClientRect().height;
    if (typeof ratio === 'number') {
      verticalRatio = ratio;
      horizontalRatio = ratio;
    } else {
      verticalRatio = ratio.vertical;
      horizontalRatio = ratio.horizontal;
    }
    switch (direction) {
      case 'vertical':
        checkVertical = true;
        break;
      case 'horizontal':
        checkHorizontal = true;
        break;
      case 'all':
        checkVertical = true;
        checkHorizontal = true;
        break;
    }
    var rect = el.getBoundingClientRect();
    if (checkVertical) {
      var offsetHeight = rect.height * verticalRatio;
      if (rect.bottom &gt; offsetHeight &amp;&amp; rect.top &lt; containerHeight - offsetHeight) {
        isExposed = true;
      }
    }
    if (!checkHorizontal) return isExposed;
    
    if (checkVertical &amp;&amp; !isExposed) return isExposed;
    
    var offsetWidth = rect.width * horizontalRatio;
    if (rect.right &gt; offsetWidth &amp;&amp; rect.left &lt; containerWidth - offsetWidth) {
      isExposed = true;
    } else {
      isExposed = false;
    }
    return isExposed;
  };
  var isParent = function isParent(el, parent) {
    while (el) {
      if (el === parent) return true;
      el = el.parentNode;
    }
    return false;
  };
  var goUrl = function goUrl(url) {
    var params = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : {};
    var type = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : 'webview';
    if (!url) return;
    if (!/^http/.test(url)) url = "".concat(location.protocol, "//").concat(location.host).concat(url);
    var paramsStr = (url.indexOf('?') === -1 ? '?' : '&amp;') + Object.keys(params).map(function (key) {
      return "".concat(key, "=").concat(params[key]);
    }).join('&amp;');
    var hashIdx = url.indexOf('#');
    if (hashIdx === -1) {
      url += "".concat(paramsStr, "#wechat_redirect");
    } else {
      url = url.slice(0, hashIdx) + paramsStr + url.slice(hashIdx);
    }
    switch (type) {
      case 'webview':
        if (navigator.userAgent.indexOf('MicroMessenger') !== -1 &amp;&amp; (MMVersion.isIOS || MMVersion.isAndroid || MMVersion.isWp)) {
          R$4.invoke('openUrlWithExtraWebview', {
            url: url,
            openType: 1
          }, function (res) {
            if (res.err_msg.indexOf('ok') === -1) {
              location.href = url;
            }
          });
        } else {
          window.open(url);
        }
        break;
      case 'href':
      default:
        location.href = url;
    }
  };
  var getUrlParamsMap = function getUrlParamsMap(url) {
    if (!url || !url.length) return {};
    var paramStart = url.indexOf('?');
    var paramMap = {};
    if (paramStart &gt; -1) {
      url.slice(paramStart + 1, url.indexOf('#') &gt; -1 ? url.indexOf('#') : undefined).split('&amp;').forEach(function (param) {
        if (param) {
          var valueStart = param.indexOf('=');
          if (valueStart &gt; -1) {
            paramMap[param.slice(0, valueStart)] = param.slice(valueStart + 1);
          } else {
            paramMap[param] = '';
          }
        }
      });
    }
    return paramMap;
  };
  
  var numFormat2Unit = function numFormat2Unit() {
    var num = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : 0;
    var radix = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 1;
    if (typeof num !== 'number' || typeof radix !== 'number') throw new Error("".concat(num, " and ").concat(radix, " should be a number."));
    var param = {
      value: 0,
      unit: ''
    };
    var limit = 10000;
    var units = ['', '万', '亿', '万亿'];
    var factor = 0;
    if (window.LANG === 'en') {
      limit = 1000;
      units = ['', 'k', 'm', 'b'];
    }
    if (num &lt; limit) {
      param.value = num;
      param.unit = '';
    } else {
      factor = Math.floor(Math.log(num) / Math.log(limit));
      param.value = (num / Math.pow(limit, factor)).toFixed(radix);
      param.unit = units[factor];
    }
    return param.value + param.unit;
  };
  var getDefaultFontSize = function getDefaultFontSize(parentElement) {
    parentElement = parentElement || document.body;
    var div = document.createElement('div');
    div.style.width = '1000em';
    parentElement.appendChild(div);
    var pixels = div.offsetWidth / 1000;
    parentElement.removeChild(div);
    return pixels;
  };
  var _ref = function () {
      var style = document.createElement('style');
      style.innerHTML = '*:not(input):not(textarea):not([contenteditable="true"]) { -webkit-touch-callout: none !important; -webkit-user-select: none !important; -khtml-user-select: none !important; -moz-user-select: none !important; -ms-user-select: none !important; user-select: none !important; }';
      return {
        enableSelect: function enableSelect() {
          document.head.contains(style) &amp;&amp; document.head.removeChild(style);
        },
        disableSelect: function disableSelect() {
          Log.log('disableSelect');
          document.head.appendChild(style);
        }
      };
    }(),
    enableSelect = _ref.enableSelect,
    disableSelect = _ref.disableSelect;
  var addZero = function addZero(v) {
    var size = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 2;
    for (var i = 0, len = size - "".concat(v).length; i &lt; len; i++) {
      v = "0".concat(v);
    }
    return "".concat(v);
  };
  
  var formatTimeToMinute = function formatTimeToMinute(createTime) {
    if (createTime.length === 10) {
      createTime *= 1000;
    }
    var date = new Date(+createTime);
    var hours = addZero(date.getHours());
    var minutes = addZero(date.getMinutes());
    return "".concat(hours, ":").concat(minutes);
  };
  function formatTime(timestamp) {
    var now = window.parseInt(Date.now() / 1000);
    var diff = now - timestamp;
    var wording = '';
    if (diff &lt; 2 * 60) {
      wording = '1分钟前';
    } else if (diff &lt; 60 * 60) {
      var t = window.parseInt(diff / 60);
      wording = t + '分钟前';
    } else if (diff &lt; 2 * 60 * 60) {
      wording = '1小时前';
    } else if (diff &lt; 24 * 60 * 60) {
      var _t = window.parseInt(diff / (60 * 60));
      wording = _t + '小时前';
    } else {
      var dayDiff = diff / (24 * 60 * 60);
      if (dayDiff &lt;= 1) {
        wording = '1天前';
      } else if (dayDiff &gt; 1) {
        var _t2 = window.parseInt(dayDiff);
        wording = _t2 + '天前';
      }
    }
    return wording;
  }
  
  function goSouyisou(jsapiOpt) {
    var type = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 'openWXSearchPage';
    var cb = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : function () {};
    jsapiOpt.thirdExtParam = Object.assign(jsapiOpt.thirdExtParam || {}, {
      mp_bizuin_msgid_msgidx: "".concat(atob(window.biz), "_").concat(window.mid, "_").concat(window.idx),
      aiH5Link: location.href,
      aiH5Title: window.msg_title
    });
    jsapiOpt.thirdExtParam = encodeURIComponent(JSON.stringify(jsapiOpt.thirdExtParam));
    Object.assign(jsapiOpt, m(jsapiOpt));
    if (MMVersion.isWechat) {
      R$4.invoke(type, jsapiOpt, cb);
    }
  }
  
  function searchWordToSouyisou(query, contextInfo, statInfo) {
    var options = arguments.length &gt; 3 &amp;&amp; arguments[3] !== undefined ? arguments[3] : {
      useHalfPage: false,
      halfPageParam: {},
      thirdExtParam: {}
    };
    var halfPageParam = options.halfPageParam || {};
    var useHalfPage = options.useHalfPage || false;
    var params = Object.assign(Object.assign({
      query: query
    }, halfPageParam), {
      thirdExtParam: Object.assign({
        s1sKeywordsData: Object.assign({
          s1sContextInfo: contextInfo,
          s1sStatInfo: statInfo
        }, options.postype !== undefined &amp;&amp; {
          postype: options.postype
        })
      }, options.thirdExtParam)
    });
    if (useHalfPage) {
      goSouyisou(params, 'openWXSearchHalfPage');
    } else {
      goSouyisou(params);
    }
  }
  
  var setPubTimeNew = function setPubTimeNew(svrTime, oriCreateTime) {
    var withoutZero = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    var oriTimestamp = oriCreateTime * 1;
    var dateObj = new Date(oriTimestamp * 1000);
    var now = new Date(svrTime * 1000);
    var padStart = function padStart(v) {
      return "0".concat(v).slice(-2);
    };
    var year = dateObj.getFullYear();
    var month = withoutZero ? dateObj.getMonth() + 1 : padStart(dateObj.getMonth() + 1);
    var date = withoutZero ? dateObj.getDate() : padStart(dateObj.getDate());
    var hour = padStart(dateObj.getHours());
    var minute = padStart(dateObj.getMinutes());
    var diffMs = now - dateObj;
    var diffMinutes = Math.floor(diffMs / (1000 * 60));
    var today = new Date(now);
    today.setHours(0, 0, 0, 0);
    var yesterday = new Date(today);
    yesterday.setDate(yesterday.getDate() - 1);
    var yearStart = new Date(now.getFullYear(), 0, 1);
    var showDate = '';
    if (dateObj &gt;= today) {
      if (diffMinutes &lt; 60) {
        if (diffMinutes === 0) {
          showDate = '刚刚';
        } else {
          showDate = "".concat(diffMinutes, "\u5206\u949F\u524D");
        }
      } else {
        showDate = "\u4ECA\u5929".concat(hour, ":").concat(minute);
      }
    } else if (dateObj &gt;= yesterday) {
      showDate = "\u6628\u5929".concat(hour, ":").concat(minute);
    } else if (dateObj &gt;= yearStart) {
      showDate = "".concat(parseInt(month, 10), "\u6708").concat(parseInt(date, 10), "\u65E5").concat(hour, ":").concat(minute);
    } else {
      showDate = "".concat(year, "\u5E74").concat(parseInt(month, 10), "\u6708").concat(parseInt(date, 10), "\u65E5").concat(hour, ":").concat(minute);
    }
    return showDate;
  };
  function formatDate(ts) {
    var now = new Date().getTime();
    var diff = now / 1000 - ts;
    var year = new Date().getFullYear();
    var sDate = new Date(ts * 1000);
    var res = '';
    if (diff &lt; 60) {
      res = "".concat(Math.floor(diff), "\u79D2\u524D");
    } else if (diff &lt; 60 * 60) {
      res = "".concat(Math.floor(diff / 60), "\u5206\u949F\u524D");
    } else if (diff &lt; 24 * 60 * 60) {
      res = "".concat(Math.floor(diff / 60 / 60), "\u5C0F\u65F6\u524D");
    } else if (diff &lt; 2 * 24 * 60 * 60) {
      res = '昨天';
    } else if (diff &lt; 24 * 60 * 60 * 7) {
      res = "".concat(Math.floor(diff / 24 / 60 / 60), "\u5929\u524D");
    } else if (sDate.getFullYear() === year) {
      res = "".concat(sDate.getMonth() + 1, "\u6708").concat(sDate.getDate(), "\u65E5");
    } else {
      res = "".concat(sDate.getFullYear(), "\u5E74").concat(sDate.getMonth() + 1, "\u6708").concat(sDate.getDate(), "\u65E5");
    }
    return res;
  }
  var calLanguageRatio = function calLanguageRatio(htmlContent) {
    var text = htmlContent.replace(/\s+/g, '');
    var chineseMatches = text.match(/[\u4e00-\u9fa5]/g) || [];
    var englishMatches = text.match(/[a-zA-Z]/g) || [];
    var chineseCount = chineseMatches.length;
    var englishCount = englishMatches.length;
    var ratio = englishCount / chineseCount;
    return ratio &gt; 1;
  };
  var A = {
    jumpUrl: jumpUrl,
    closeWin: closeWin,
    trim: trim,
    getId: getId,
    qs: qs,
    qsAll: qsAll,
    inWechat: g.inWechat,
    windowWechat: g.windowWechat,
    macWechat: g.macWechat,
    getParam: getParam,
    getParams: getParams,
    genUrl: genUrl,
    prepareNativePage: prepareNativePage,
    debounce: debounce,
    throttle: throttle,
    formatReadNum: formatReadNum,
    formatSeconds: formatSeconds,
    formatTimeToMinute: formatTimeToMinute,
    setTwoTabHeight: setTwoTabHeight,
    getByClass: getByClass,
    getScrollTop: getScrollTop,
    getScrollHeight: getScrollHeight,
    getWindowHeight: getWindowHeight,
    shareMessage: shareMessage,
    getElementTop: getElementTop,
    formatAlbumnReadNum: formatAlbumnReadNum,
    getElementHeight: getElementHeight,
    getQuery: getQuery,
    openAllVideoPage: openAllVideoPage,
    getNetWorkType: getNetWorkType,
    getMoreVideoInfo: getMoreVideoInfo,
    isPageEnd: isPageEnd,
    openAlbumPage: openAlbumPage,
    checkExposedStatus: checkExposedStatus,
    isParent: isParent,
    goUrl: goUrl,
    changeURLArg: changeURLArg,
    getUrlParamsMap: getUrlParamsMap,
    numFormat2Unit: numFormat2Unit,
    goProfile: goProfile,
    getDefaultFontSize: getDefaultFontSize,
    enableSelect: enableSelect,
    disableSelect: disableSelect,
    formatTime: formatTime,
    goSouyisou: goSouyisou,
    searchWordToSouyisou: searchWordToSouyisou,
    setPubTimeNew: setPubTimeNew,
    formatDate: formatDate,
    calLanguageRatio: calLanguageRatio
  };

  var html = function html(_str, encode) {
    var replace = ['&amp;#96;', '`', '&amp;#39;', '\'', '&amp;quot;', '"', '&amp;nbsp;', ' ', '&amp;gt;', '&gt;', '&amp;lt;', '&lt;', '&amp;yen;', '¥', '&amp;amp;', '&amp;', '&amp;#60;', '&lt;', '&amp;#62;', '&gt;'];
    
    var replaceReverse = ['&amp;', '&amp;amp;', '¥', '&amp;yen;', '&lt;', '&amp;lt;', '&gt;', '&amp;gt;', ' ', '&amp;nbsp;', '"', '&amp;quot;', '\'', '&amp;#39;', '`', '&amp;#96;'];
    var str = _str;
    var target;
    if (encode) {
      target = replaceReverse;
    } else {
      target = replace;
    }
    for (var i = 0; i &lt; target.length; i += 2) {
      str = str.replace(new RegExp(target[i], 'g'), target[i + 1]);
    }
    return str;
  };
  var htmlDecode = function htmlDecode(str) {
    return html(str, false);
  };

  function ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r &amp;&amp; (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
  function _objectSpread$2(e) { for (var r = 1; r &lt; arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) { defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
  var a$1 = {
    name: "mp-common-article",
    mixins: [k$1],
    props: {
      articleData: {
        type: Object,
        required: !0
      }
    },
    computed: {
      bizAttrName: function bizAttrName() {
        return getBizAttrName(this.articleData.service_type, this.platform);
      },
      articleUrl: function articleUrl() {
        return htmlDecode(this.articleData.content_url);
      }
    },
    mounted: function mounted() {
      R$4.invoke("downloadPageDataForFastLoad", {
        itemList: [{
          item_show_type: this.articleData.item_show_type,
          url: this.articleUrl
        }]
      }, function (E) {
        console.log("downloadPageDataForFastLoad", E);
      });
    },
    methods: {
      handleClick: function handleClick() {
        A.jumpUrl(this.articleUrl, !0, {
          itemShowType: this.articleData.item_show_type
        });
      }
    }
  };
  var F$2 = function F() {
      var e = this,
        i = e._self._c;
      return i("div", {
        ref: "js_custom_element",
        staticClass: "article-container wx-root wx_tap_card",
        on: {
          click: e.handleClick
        }
      }, [e.articleData.cover_url ? i("img", {
        staticClass: "article-cover",
        attrs: {
          src: e.articleData.cover_url
        }
      }) : e._e(), i("div", {
        staticClass: "article-header"
      }, [i("div", {
        staticClass: "article-title"
      }, [e._v(e._s(e.articleData.title))]), i("div", {
        staticClass: "article-author"
      }, [e._v(e._s(e.bizAttrName)), i("span", {
        staticStyle: {
          margin: "0 4px"
        }
      }, [e._v("·")]), e._v(e._s(e.articleData.nickname))])])]);
    },
    r$2 = [],
    T$1 = v$2(a$1, F$2, r$2, !1, null, "d9670aa0", null, null);
  var C$1 = T$1.exports,
    I$1 = "body,.wx-root{--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #07C160;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0: rgba(0, 0, 0, .9);--weui-FG-0_5: rgba(0, 0, 0, .9);--weui-FG-1: rgba(0, 0, 0, .55);--weui-FG-2: rgba(0, 0, 0, .3);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-GLYPH-0: rgba(0, 0, 0, .9);--weui-GLYPH-1: rgba(0, 0, 0, .55);--weui-GLYPH-2: rgba(0, 0, 0, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #91D300;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #1485EE;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #95EC69;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #FA9D3B;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6467F0;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #FA5151;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .05);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #FFC300;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-FG-HALF: rgba(0, 0, 0, .9);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #FA9D3B;--weui-YELLOW: #FFC300;--weui-GREEN: #91D300;--weui-LIGHTGREEN: #95EC69;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1485EE;--weui-PURPLE: #6467F0;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #FA9D3B;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #10AEFF;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05);--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-FG: #000;--weui-FG-5: rgba(0, 0, 0, .05);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG: #fff;--weui-BG: #000;--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6)}}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG: #fff;--weui-BG: #000;--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6)}.wx-root[data-weui-mode=care],body[data-weui-mode=care]{--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #007DBB;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #018942;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0: #000000;--weui-FG-0_5: #000000;--weui-FG-1: rgba(0, 0, 0, .6);--weui-FG-2: rgba(0, 0, 0, .42);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-GLYPH-0: #000000;--weui-GLYPH-1: rgba(0, 0, 0, .6);--weui-GLYPH-2: rgba(0, 0, 0, .42);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #4F8400;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #0075E2;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #2E8800;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #E17719;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #D14730;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6265F1;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #DC3636;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .1);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #BB8E00;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-FG-HALF: #000000;--weui-RED: #DC3636;--weui-ORANGERED: #D14730;--weui-ORANGE: #E17719;--weui-YELLOW: #BB8E00;--weui-GREEN: #4F8400;--weui-LIGHTGREEN: #2E8800;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #018942;--weui-BLUE: #007DBB;--weui-INDIGO: #0075E2;--weui-PURPLE: #6265F1;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #E17719;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #007DBB;--weui-REDORANGE: #D14730;--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-FG: #000;--weui-FG-5: rgba(0, 0, 0, .05);--weui-TAG-BACKGROUND-ORANGE: rgba(225, 119, 25, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(0, 125, 187, .1);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05)}@media (prefers-color-scheme: dark){.wx-root[data-weui-mode=care]:not([data-weui-theme=light]),body[data-weui-mode=care]:not([data-weui-theme=light]){--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-FG: #fff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-BG: #000;--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5)}}.wx-root[data-weui-mode=care][data-weui-theme=dark],body[data-weui-mode=care][data-weui-theme=dark]{--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-FG: #fff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-BG: #000;--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5)}.wx-root{position:relative;pointer-events:auto;font-family:system-ui,-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Hiragino Sans GB,Microsoft YaHei UI,Microsoft YaHei,Arial,sans-serif}.wx_card_root{position:relative}.wxw_hide{display:none!important}.wx_uninteractive{pointer-events:none}:host(.wx_tap_highlight_active) .wx_tap_link{opacity:.5}:host(.wx_tap_highlight_active) .wx_tap_card{background-color:#f3f3f3}:host(.wx_tap_highlight_active) .wx_tap_cell{background-color:#0000000d}@media (prefers-color-scheme: dark){:host(.wx_tap_highlight_active) .wx_tap_card{background-color:#252525}:host(.wx_tap_highlight_active) .wx_tap_cell{background-color:#ffffff1a}}.wx_css_active :active{opacity:.5}.wx-root,body{--weui-BG-A2: rgba(0, 0, 0, .02)}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-A2: rgba(255, 255, 255, .02)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-A2: rgba(255, 255, 255, .02)}}.article-container{display:flex;width:100%;box-sizing:border-box;padding:13px 12px;align-items:center;justify-content:space-between;background-color:var(--weui-BG-A2);border-radius:8px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.article-container .article-header{flex:1;width:200px;font-size:15px;color:var(--weui-FG-0);line-height:1.4}.article-container .article-title{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.article-container .article-author{margin-top:1px;font-size:14px;color:var(--weui-FG-2)}.article-container .article-cover{font-size:44px;width:1em;height:1em;border-radius:2px;margin-right:8px}\n",
    u = {
      articleData: "data-article-data"
    };
  function O$1(E) {
    var e = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : {};
    var i = o$6.call(this, u);
    return i.articleData = JSON.parse(i.articleData || "{}"), _objectSpread$2({
      platform: E,
      extraInfo: e
    }, i);
  }
  function c() {
    var E = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    H$3(Object.assign(E, {
      Component: C$1,
      styleText: E.isDev ? E.devStyleText : I$1,
      customName: E.customName || "mp-common-article",
      watchAttr: Object.values(u),
      getProps: O$1
    }));
  }

  var arrayLikeToArray = arrayLikeToArray$2;
  function _arrayWithoutHoles(arr) {
    if (Array.isArray(arr)) return arrayLikeToArray(arr);
  }
  var arrayWithoutHoles$1 = _arrayWithoutHoles;

  function _iterableToArray(iter) {
    if (typeof Symbol !== "undefined" &amp;&amp; Symbol.iterator in Object(iter)) return Array.from(iter);
  }
  var iterableToArray$1 = _iterableToArray;

  function _nonIterableSpread() {
    throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }
  var nonIterableSpread$1 = _nonIterableSpread;

  var arrayWithoutHoles = arrayWithoutHoles$1;
  var iterableToArray = iterableToArray$1;
  var unsupportedIterableToArray = unsupportedIterableToArray$2;
  var nonIterableSpread = nonIterableSpread$1;
  function _toConsumableArray(arr) {
    return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();
  }
  var toConsumableArray = _toConsumableArray;

  var r$1 = function r(e) {
    o__default["default"].config.silent || console.warn(e);
  };
  var i = {
    name: "intersect",
    "abstract": !0,
    props: {
      threshold: {
        type: Array,
        required: !1,
        "default": function _default() {
          return [0, 0.2];
        }
      },
      root: {
        type: (typeof HTMLElement === "undefined" ? "undefined" : _typeof$2(HTMLElement)) &lt; "u" ? HTMLElement : Object,
        required: !1,
        "default": function _default() {
          return null;
        }
      },
      rootMargin: {
        type: String,
        required: !1,
        "default": function _default() {
          return "0px 0px 0px 0px";
        }
      }
    },
    mounted: function mounted() {
      var e = this;
      this.observer = new IntersectionObserver(function (n) {
        n[0].isIntersecting ? e.$emit("enter", [n[0]]) : e.$emit("leave", [n[0]]), e.$emit("change", [n[0]]);
      }, {
        threshold: this.threshold,
        root: this.root,
        rootMargin: this.rootMargin
      }), this.$nextTick(function () {
        if (e.$slots["default"] &amp;&amp; e.$slots["default"].length &gt; 1) r$1("[VueIntersect] You may only wrap one element in a &lt;intersect&gt; component.");else if (!e.$slots["default"] || e.$slots["default"].length &lt; 1) {
          r$1("[VueIntersect] You must have one child inside a &lt;intersect&gt; component.");
          return;
        }
        e.observer.observe(e.$slots["default"][0].elm);
      });
    },
    destroyed: function destroyed() {
      this.$emit("destroyed"), this.observer.disconnect();
    },
    render: function render() {
      return this.$slots["default"] ? this.$slots["default"][0] : null;
    }
  };

  function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r &amp;&amp; (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
  function _objectSpread$1(e) { for (var r = 1; r &lt; arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
  var b$1 = {
    name: "mp-common-gameprofile",
    mixins: [k$1],
    components: {
      Intersect: i
    },
    props: {
      gameprofileData: {
        type: Object,
        required: !0
      }
    },
    data: function data() {
      return {
        isExposed: !1
      };
    },
    computed: {
      userTitleList: function userTitleList() {
        var e;
        var E = (e = this.gameprofileData) == null ? void 0 : e.user_title_list;
        return E != null &amp;&amp; E.length ? toConsumableArray(E).sort(function (i, u) {
          return i.text_color === "#CC9C00" &amp;&amp; u.text_color !== "#CC9C00" ? -1 : i.text_color !== "#CC9C00" &amp;&amp; u.text_color === "#CC9C00" ? 1 : 0;
        }) : [];
      }
    },
    methods: {
      onExposed: function onExposed() {
        var i, u, w, G;
        if (this.isExposed) return;
        console.log("gameprofile onExposed");
        var E = ((u = (i = this.gameprofileData) == null ? void 0 : i.jump_info) == null ? void 0 : u.appid) || "",
          e = ((G = (w = this.gameprofileData) == null ? void 0 : w.jump_info) == null ? void 0 : G.page) || "";
        w$5.report(36513, {
          optype: 1,
          style: 1,
          linktype: 4,
          game: "".concat(E, "_").concat(e)
        }), this.isExposed = !0;
      },
      handleClick: function handleClick() {
        var i, u, w, G, A, B, R, a, r, L, N;
        var E = ((u = (i = this.gameprofileData) == null ? void 0 : i.jump_info) == null ? void 0 : u.appid) || "",
          e = ((G = (w = this.gameprofileData) == null ? void 0 : w.jump_info) == null ? void 0 : G.page) || "";
        if (w$5.report(36513, {
          optype: 2,
          style: 1,
          linktype: 4,
          game: "".concat(E, "_").concat(e)
        }), Device.os.pc) {
          (A = window == null ? void 0 : window.weui) == null || A.alert("请使用移动端微信打开");
          return;
        }
        E &amp;&amp; R$4.invoke("openLiteApp", {
          appId: E,
          page: e,
          isTransparent: !1,
          query: {
            ssid: ((a = (R = (B = this.gameprofileData) == null ? void 0 : B.jump_info) == null ? void 0 : R.query) == null ? void 0 : a.ssid) || 0,
            username: ((N = (L = (r = this.gameprofileData) == null ? void 0 : r.jump_info) == null ? void 0 : L.query) == null ? void 0 : N.username) || ""
          }
        });
      }
    }
  };
  var l = function l() {
      var e = this,
        i = e._self._c;
      return i("Intersect", {
        attrs: {
          "root-margin": "0px 0px -40px 0px"
        },
        on: {
          enter: e.onExposed
        }
      }, [i("div", {
        ref: "js_custom_element",
        staticClass: "game-profile-card wx-root wx_tap_card",
        on: {
          click: e.handleClick
        }
      }, [i("div", {
        staticClass: "game-profile-content"
      }, [e.gameprofileData.user_info.head_img_url ? i("img", {
        staticClass: "game-profile-cover",
        attrs: {
          src: e.gameprofileData.user_info.head_img_url
        }
      }) : e._e(), i("div", {
        staticClass: "game-profile-info"
      }, [i("div", {
        staticClass: "game-profile-nickname"
      }, [e._v(e._s(e.gameprofileData.user_info.nick_name))]), e.userTitleList.length ? i("div", {
        staticClass: "game-profile-logos"
      }, e._l(e.userTitleList, function (u) {
        return i("div", {
          "class": ["game-profile-logo", u.text_color === "#CC9C00" ? "orange" : ""]
        }, [e._v(e._s(u.title))]);
      }), 0) : e._e()])]), i("div", {
        staticClass: "game-profile-footer"
      }, [e._v("游戏名片")])])]);
    },
    n = [],
    P = v$2(b$1, l, n, !1, null, "48c01721", null, null);
  var H = P.exports,
    s = "body,.wx-root{--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #07C160;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0: rgba(0, 0, 0, .9);--weui-FG-0_5: rgba(0, 0, 0, .9);--weui-FG-1: rgba(0, 0, 0, .55);--weui-FG-2: rgba(0, 0, 0, .3);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-GLYPH-0: rgba(0, 0, 0, .9);--weui-GLYPH-1: rgba(0, 0, 0, .55);--weui-GLYPH-2: rgba(0, 0, 0, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #91D300;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #1485EE;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #95EC69;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #FA9D3B;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6467F0;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #FA5151;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .05);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #FFC300;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-FG-HALF: rgba(0, 0, 0, .9);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #FA9D3B;--weui-YELLOW: #FFC300;--weui-GREEN: #91D300;--weui-LIGHTGREEN: #95EC69;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1485EE;--weui-PURPLE: #6467F0;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #FA9D3B;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #10AEFF;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05);--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-FG: #000;--weui-FG-5: rgba(0, 0, 0, .05);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG: #fff;--weui-BG: #000;--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6)}}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG: #fff;--weui-BG: #000;--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6)}.wx-root[data-weui-mode=care],body[data-weui-mode=care]{--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #007DBB;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #018942;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0: #000000;--weui-FG-0_5: #000000;--weui-FG-1: rgba(0, 0, 0, .6);--weui-FG-2: rgba(0, 0, 0, .42);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-GLYPH-0: #000000;--weui-GLYPH-1: rgba(0, 0, 0, .6);--weui-GLYPH-2: rgba(0, 0, 0, .42);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #4F8400;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #0075E2;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #2E8800;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #E17719;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #D14730;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6265F1;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #DC3636;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .1);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #BB8E00;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-FG-HALF: #000000;--weui-RED: #DC3636;--weui-ORANGERED: #D14730;--weui-ORANGE: #E17719;--weui-YELLOW: #BB8E00;--weui-GREEN: #4F8400;--weui-LIGHTGREEN: #2E8800;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #018942;--weui-BLUE: #007DBB;--weui-INDIGO: #0075E2;--weui-PURPLE: #6265F1;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #E17719;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #007DBB;--weui-REDORANGE: #D14730;--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-FG: #000;--weui-FG-5: rgba(0, 0, 0, .05);--weui-TAG-BACKGROUND-ORANGE: rgba(225, 119, 25, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(0, 125, 187, .1);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05)}@media (prefers-color-scheme: dark){.wx-root[data-weui-mode=care]:not([data-weui-theme=light]),body[data-weui-mode=care]:not([data-weui-theme=light]){--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-FG: #fff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-BG: #000;--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5)}}.wx-root[data-weui-mode=care][data-weui-theme=dark],body[data-weui-mode=care][data-weui-theme=dark]{--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-FG: #fff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-BG: #000;--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5)}.wx-root{position:relative;pointer-events:auto;font-family:system-ui,-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Hiragino Sans GB,Microsoft YaHei UI,Microsoft YaHei,Arial,sans-serif}.wx_card_root{position:relative}.wxw_hide{display:none!important}.wx_uninteractive{pointer-events:none}:host(.wx_tap_highlight_active) .wx_tap_link{opacity:.5}:host(.wx_tap_highlight_active) .wx_tap_card{background-color:#f3f3f3}:host(.wx_tap_highlight_active) .wx_tap_cell{background-color:#0000000d}@media (prefers-color-scheme: dark){:host(.wx_tap_highlight_active) .wx_tap_card{background-color:#252525}:host(.wx_tap_highlight_active) .wx_tap_cell{background-color:#ffffff1a}}.wx_css_active :active{opacity:.5}.game-profile-card{display:flex;flex-direction:column;width:100%;box-sizing:border-box;padding:12px 12px 8px;background-color:#00000005;border-radius:8px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.game-profile-card .game-profile-content{width:100%;display:flex;flex-direction:row;align-items:center;overflow:hidden}.game-profile-card .game-profile-content .game-profile-cover{flex-shrink:0;font-size:44px;margin-right:10px;width:1em;height:1em;border:.5px solid var(--weui-SECONDARY-BG);border-radius:50%}.game-profile-card .game-profile-content .game-profile-info{display:flex;flex-direction:column;overflow:hidden}.game-profile-card .game-profile-content .game-profile-info .game-profile-nickname{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:15px;line-height:1.4;color:var(--weui-FG-0)}.game-profile-card .game-profile-content .game-profile-info .game-profile-logos{margin-top:1px;font-size:14px;line-height:1.4;color:var(--weui-FG-2);height:1.4em}.game-profile-card .game-profile-content .game-profile-info .game-profile-logos .game-profile-logo{display:inline-block;margin-right:8px;flex-shrink:0}.game-profile-card .game-profile-content .game-profile-info .game-profile-logos .game-profile-logo.orange{color:var(--weui-ORANGE)}.game-profile-card .game-profile-content .game-profile-info .game-profile-logos .game-profile-logo:last-child{margin-right:0}.game-profile-card .game-profile-footer{margin-top:10px;font-size:14px;line-height:1.4;color:var(--weui-FG-2)}@media (prefers-color-scheme: dark){.game-profile-card{background-color:#ffffff05}}\n",
    F$1 = {
      gameprofileData: "data-gameprofile-data"
    };
  function p(E) {
    var e = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : {};
    var i = o$6.call(this, F$1);
    return i.gameprofileData = JSON.parse(i.gameprofileData || "{}"), _objectSpread$1({
      platform: E,
      extraInfo: e
    }, i);
  }
  function K() {
    var E = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    H$3(Object.assign(E, {
      Component: H,
      styleText: E.isDev ? E.devStyleText : s,
      customName: E.customName || "mp-common-gameprofile",
      watchAttr: Object.values(F$1),
      getProps: p
    }));
  }

  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r &amp;&amp; (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
  function _objectSpread(e) { for (var r = 1; r &lt; arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
  var F = {
      name: "mp-common-read",
      mixins: [k$1],
      props: {
        readData: {
          type: Object,
          required: !0
        }
      },
      components: {
        Intersect: i
      },
      data: function data() {
        return {
          isExposed: !1
        };
      },
      methods: {
        onExposed: function onExposed() {
          var e;
          if (this.isExposed) return;
          var i = ((e = this.readData) == null ? void 0 : e.book_id) || "";
          console.log("read onExposed", i), w$5.report(36513, {
            optype: 1,
            style: 1,
            linktype: 5,
            weread: i
          }), this.isExposed = !0;
        },
        handleClick: function handleClick() {
          var E, u;
          var i = ((E = this.readData) == null ? void 0 : E.url) + "&amp;wtype=mpArticle" || "",
            e = ((u = this.readData) == null ? void 0 : u.book_id) || "";
          w$5.report(36513, {
            optype: 2,
            style: 1,
            linktype: 5,
            weread: e
          }), i &amp;&amp; R$4.invoke("openUrlWithExtraWebview", {
            url: i.htmlDecode(),
            openType: 1
          });
        }
      }
    },
    a = F;
  var r = function r() {
      var e = this,
        E = e._self._c;
      return e._self._setupProxy, E("Intersect", {
        attrs: {
          "root-margin": "0px 0px -40px 0px"
        },
        on: {
          enter: e.onExposed
        }
      }, [E("div", {
        ref: "js_custom_element",
        staticClass: "read-card wx-root wx_tap_card",
        on: {
          click: e.handleClick
        }
      }, [e.readData.cover ? E("img", {
        staticClass: "read-books-image",
        attrs: {
          src: e.readData.cover
        }
      }) : e._e(), E("div", {
        staticClass: "read-books-caption"
      }, [E("div", {
        staticClass: "read-books-nickname"
      }, [e._v(e._s(e.readData.title))]), E("div", {
        staticClass: "read-books-label"
      }, [e._v("微信读书 · " + e._s(e.readData.author))])])])]);
    },
    T = [],
    C = v$2(a, r, T, !1, null, "e3752426", null, null);
  var I = C.exports,
    O = "body,.wx-root{--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #07C160;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0: rgba(0, 0, 0, .9);--weui-FG-0_5: rgba(0, 0, 0, .9);--weui-FG-1: rgba(0, 0, 0, .55);--weui-FG-2: rgba(0, 0, 0, .3);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-GLYPH-0: rgba(0, 0, 0, .9);--weui-GLYPH-1: rgba(0, 0, 0, .55);--weui-GLYPH-2: rgba(0, 0, 0, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #91D300;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #1485EE;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #95EC69;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #FA9D3B;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6467F0;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #FA5151;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .05);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #FFC300;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-FG-HALF: rgba(0, 0, 0, .9);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #FA9D3B;--weui-YELLOW: #FFC300;--weui-GREEN: #91D300;--weui-LIGHTGREEN: #95EC69;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1485EE;--weui-PURPLE: #6467F0;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #FA9D3B;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #10AEFF;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05);--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-FG: #000;--weui-FG-5: rgba(0, 0, 0, .05);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG: #fff;--weui-BG: #000;--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6)}}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .8);--weui-FG-0_5: rgba(255, 255, 255, .6);--weui-FG-1: rgba(255, 255, 255, .5);--weui-FG-2: rgba(255, 255, 255, .3);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .8);--weui-GLYPH-1: rgba(255, 255, 255, .5);--weui-GLYPH-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .8);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .5);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .3);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(95, 95, 95, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .1);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .6);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5);--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG: #fff;--weui-BG: #000;--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6)}.wx-root[data-weui-mode=care],body[data-weui-mode=care]{--weui-BG-0: #EDEDED;--weui-BG-1: #F7F7F7;--weui-BG-2: #FFFFFF;--weui-BG-3: #F7F7F7;--weui-BG-4: #4C4C4C;--weui-BG-5: #FFFFFF;--weui-BLUE-100: #007DBB;--weui-BLUE-120: #3FBEFF;--weui-BLUE-170: #B7E6FF;--weui-BLUE-80: #0C8BCC;--weui-BLUE-90: #0E9CE6;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #5AAFE4;--weui-BLUE-BG-130: #7FC0EA;--weui-BLUE-BG-90: #4095CB;--weui-BRAND-100: #018942;--weui-BRAND-120: #38CD7F;--weui-BRAND-170: #B4ECCE;--weui-BRAND-80: #059A4C;--weui-BRAND-90: #06AE56;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #3EB575;--weui-BRAND-BG-130: #69C694;--weui-BRAND-BG-90: #259C5C;--weui-FG-0: #000000;--weui-FG-0_5: #000000;--weui-FG-1: rgba(0, 0, 0, .6);--weui-FG-2: rgba(0, 0, 0, .42);--weui-FG-3: rgba(0, 0, 0, .1);--weui-FG-4: rgba(0, 0, 0, .15);--weui-GLYPH-0: #000000;--weui-GLYPH-1: rgba(0, 0, 0, .6);--weui-GLYPH-2: rgba(0, 0, 0, .42);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #4F8400;--weui-GREEN-120: #A7DB33;--weui-GREEN-170: #DEF1B3;--weui-GREEN-80: #74A800;--weui-GREEN-90: #82BD00;--weui-GREEN-BG-100: #96BE40;--weui-GREEN-BG-110: #A0C452;--weui-GREEN-BG-130: #B5D179;--weui-GREEN-BG-90: #86AA39;--weui-INDIGO-100: #0075E2;--weui-INDIGO-120: #439DF1;--weui-INDIGO-170: #B8DAF9;--weui-INDIGO-80: #106ABE;--weui-INDIGO-90: #1277D6;--weui-INDIGO-BG-100: #2B77BF;--weui-INDIGO-BG-110: #3F84C5;--weui-INDIGO-BG-130: #6BA0D2;--weui-INDIGO-BG-90: #266AAB;--weui-LIGHTGREEN-100: #2E8800;--weui-LIGHTGREEN-120: #AAEF87;--weui-LIGHTGREEN-170: #DEF9D1;--weui-LIGHTGREEN-80: #77BC54;--weui-LIGHTGREEN-90: #85D35E;--weui-LIGHTGREEN-BG-100: #72CF60;--weui-LIGHTGREEN-BG-110: #80D370;--weui-LIGHTGREEN-BG-130: #9CDD90;--weui-LIGHTGREEN-BG-90: #66B956;--weui-LINK-100: #576B95;--weui-LINK-120: #7888AA;--weui-LINK-170: #CCD2DE;--weui-LINK-80: #455577;--weui-LINK-90: #4E6085;--weui-LINKFINDER-100: #002666;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(245, 245, 245, .95);--weui-MATERIAL-NAVIGATIONBAR: rgba(237, 237, 237, .94);--weui-MATERIAL-REGULAR: rgba(247, 247, 247, .3);--weui-MATERIAL-THICK: rgba(247, 247, 247, .8);--weui-MATERIAL-THIN: rgba(255, 255, 255, .2);--weui-MATERIAL-TOOLBAR: rgba(246, 246, 246, .82);--weui-ORANGE-100: #E17719;--weui-ORANGE-120: #FBB062;--weui-ORANGE-170: #FDE1C3;--weui-ORANGE-80: #C87D2F;--weui-ORANGE-90: #E08C34;--weui-ORANGE-BG-100: #EA7800;--weui-ORANGE-BG-110: #EC8519;--weui-ORANGE-BG-130: #F0A04D;--weui-ORANGE-BG-90: #D26B00;--weui-ORANGERED-100: #D14730;--weui-OVERLAY: rgba(0, 0, 0, .5);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #6265F1;--weui-PURPLE-120: #8385F3;--weui-PURPLE-170: #D0D1FA;--weui-PURPLE-80: #5052C0;--weui-PURPLE-90: #595CD7;--weui-PURPLE-BG-100: #6769BA;--weui-PURPLE-BG-110: #7678C1;--weui-PURPLE-BG-130: #9496CE;--weui-PURPLE-BG-90: #5C5EA7;--weui-RED-100: #DC3636;--weui-RED-120: #FB7373;--weui-RED-170: #FDCACA;--weui-RED-80: #C84040;--weui-RED-90: #E14949;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #D3625A;--weui-RED-BG-130: #DD847E;--weui-RED-BG-90: #B94840;--weui-SECONDARY-BG: rgba(0, 0, 0, .1);--weui-SEPARATOR-0: rgba(0, 0, 0, .1);--weui-SEPARATOR-1: rgba(0, 0, 0, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(0, 0, 0, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(0, 0, 0, .2);--weui-YELLOW-100: #BB8E00;--weui-YELLOW-120: #FFCF33;--weui-YELLOW-170: #FFECB2;--weui-YELLOW-80: #CC9C00;--weui-YELLOW-90: #E6AF00;--weui-YELLOW-BG-100: #EFB600;--weui-YELLOW-BG-110: #F0BD19;--weui-YELLOW-BG-130: #F3CC4D;--weui-YELLOW-BG-90: #D7A400;--weui-FG-HALF: #000000;--weui-RED: #DC3636;--weui-ORANGERED: #D14730;--weui-ORANGE: #E17719;--weui-YELLOW: #BB8E00;--weui-GREEN: #4F8400;--weui-LIGHTGREEN: #2E8800;--weui-TEXTGREEN: #06AE56;--weui-BRAND: #018942;--weui-BLUE: #007DBB;--weui-INDIGO: #0075E2;--weui-PURPLE: #6265F1;--weui-LINK: #576B95;--weui-TAG-TEXT-ORANGE: #E17719;--weui-TAG-TEXT-GREEN: #06AE56;--weui-TAG-TEXT-BLUE: #007DBB;--weui-REDORANGE: #D14730;--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5);--weui-WHITE: #FFFFFF;--weui-BG: #FFFFFF;--weui-FG: #000;--weui-FG-5: rgba(0, 0, 0, .05);--weui-TAG-BACKGROUND-ORANGE: rgba(225, 119, 25, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(0, 125, 187, .1);--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05)}@media (prefers-color-scheme: dark){.wx-root[data-weui-mode=care]:not([data-weui-theme=light]),body[data-weui-mode=care]:not([data-weui-theme=light]){--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-FG: #fff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-BG: #000;--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5)}}.wx-root[data-weui-mode=care][data-weui-theme=dark],body[data-weui-mode=care][data-weui-theme=dark]{--weui-BG-0: #111111;--weui-BG-1: #1E1E1E;--weui-BG-2: #191919;--weui-BG-3: #202020;--weui-BG-4: #404040;--weui-BG-5: #2C2C2C;--weui-BLUE-100: #10AEFF;--weui-BLUE-120: #0C8BCC;--weui-BLUE-170: #04344D;--weui-BLUE-80: #3FBEFF;--weui-BLUE-90: #28B6FF;--weui-BLUE-BG-100: #48A6E2;--weui-BLUE-BG-110: #4095CB;--weui-BLUE-BG-130: #32749E;--weui-BLUE-BG-90: #5AAFE4;--weui-BRAND-100: #07C160;--weui-BRAND-120: #059A4C;--weui-BRAND-170: #023A1C;--weui-BRAND-80: #38CD7F;--weui-BRAND-90: #20C770;--weui-BRAND-BG-100: #2AAE67;--weui-BRAND-BG-110: #259C5C;--weui-BRAND-BG-130: #1D7A48;--weui-BRAND-BG-90: #3EB575;--weui-FG-0: rgba(255, 255, 255, .85);--weui-FG-0_5: rgba(255, 255, 255, .65);--weui-FG-1: rgba(255, 255, 255, .55);--weui-FG-2: rgba(255, 255, 255, .35);--weui-FG-3: rgba(255, 255, 255, .1);--weui-FG-4: rgba(255, 255, 255, .15);--weui-GLYPH-0: rgba(255, 255, 255, .85);--weui-GLYPH-1: rgba(255, 255, 255, .55);--weui-GLYPH-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-0: rgba(255, 255, 255, .85);--weui-GLYPH-WHITE-1: rgba(255, 255, 255, .55);--weui-GLYPH-WHITE-2: rgba(255, 255, 255, .35);--weui-GLYPH-WHITE-3: #FFFFFF;--weui-GREEN-100: #74A800;--weui-GREEN-120: #5C8600;--weui-GREEN-170: #233200;--weui-GREEN-80: #8FB933;--weui-GREEN-90: #82B01A;--weui-GREEN-BG-100: #789833;--weui-GREEN-BG-110: #6B882D;--weui-GREEN-BG-130: #65802B;--weui-GREEN-BG-90: #85A247;--weui-INDIGO-100: #1196FF;--weui-INDIGO-120: #0D78CC;--weui-INDIGO-170: #052D4D;--weui-INDIGO-80: #40ABFF;--weui-INDIGO-90: #28A0FF;--weui-INDIGO-BG-100: #0D78CC;--weui-INDIGO-BG-110: #0B6BB7;--weui-INDIGO-BG-130: #09548F;--weui-INDIGO-BG-90: #2585D1;--weui-LIGHTGREEN-100: #3EB575;--weui-LIGHTGREEN-120: #31905D;--weui-LIGHTGREEN-170: #123522;--weui-LIGHTGREEN-80: #64C390;--weui-LIGHTGREEN-90: #51BC83;--weui-LIGHTGREEN-BG-100: #31905D;--weui-LIGHTGREEN-BG-110: #2C8153;--weui-LIGHTGREEN-BG-130: #226541;--weui-LIGHTGREEN-BG-90: #31905D;--weui-LINK-100: #7D90A9;--weui-LINK-120: #647387;--weui-LINK-170: #252A32;--weui-LINK-80: #97A6BA;--weui-LINK-90: #899AB1;--weui-LINKFINDER-100: #DEE9FF;--weui-MATERIAL-ATTACHMENTCOLUMN: rgba(32, 32, 32, .93);--weui-MATERIAL-NAVIGATIONBAR: rgba(18, 18, 18, .9);--weui-MATERIAL-REGULAR: rgba(37, 37, 37, .6);--weui-MATERIAL-THICK: rgba(34, 34, 34, .9);--weui-MATERIAL-THIN: rgba(245, 245, 245, .4);--weui-MATERIAL-TOOLBAR: rgba(35, 35, 35, .93);--weui-ORANGE-100: #C87D2F;--weui-ORANGE-120: #A06425;--weui-ORANGE-170: #3B250E;--weui-ORANGE-80: #D39758;--weui-ORANGE-90: #CD8943;--weui-ORANGE-BG-100: #BB6000;--weui-ORANGE-BG-110: #A85600;--weui-ORANGE-BG-130: #824300;--weui-ORANGE-BG-90: #C1701A;--weui-ORANGERED-100: #FF6146;--weui-OVERLAY: rgba(0, 0, 0, .8);--weui-OVERLAY-WHITE: rgba(242, 242, 242, .8);--weui-PURPLE-100: #8183FF;--weui-PURPLE-120: #6768CC;--weui-PURPLE-170: #26274C;--weui-PURPLE-80: #9A9BFF;--weui-PURPLE-90: #8D8FFF;--weui-PURPLE-BG-100: #6768CC;--weui-PURPLE-BG-110: #5C5DB7;--weui-PURPLE-BG-130: #48498F;--weui-PURPLE-BG-90: #7677D1;--weui-RED-100: #FA5151;--weui-RED-120: #C84040;--weui-RED-170: #4B1818;--weui-RED-80: #FB7373;--weui-RED-90: #FA6262;--weui-RED-BG-100: #CF5148;--weui-RED-BG-110: #BA4940;--weui-RED-BG-130: #913832;--weui-RED-BG-90: #D3625A;--weui-SECONDARY-BG: rgba(255, 255, 255, .15);--weui-SEPARATOR-0: rgba(255, 255, 255, .05);--weui-SEPARATOR-1: rgba(255, 255, 255, .15);--weui-STATELAYER-HOVERED: rgba(0, 0, 0, .02);--weui-STATELAYER-PRESSED: rgba(255, 255, 255, .1);--weui-STATELAYER-PRESSEDSTRENGTHENED: rgba(255, 255, 255, .2);--weui-YELLOW-100: #CC9C00;--weui-YELLOW-120: #A37C00;--weui-YELLOW-170: #3D2F00;--weui-YELLOW-80: #D6AF33;--weui-YELLOW-90: #D1A519;--weui-YELLOW-BG-100: #BF9100;--weui-YELLOW-BG-110: #AB8200;--weui-YELLOW-BG-130: #866500;--weui-YELLOW-BG-90: #C59C1A;--weui-FG-HALF: rgba(255, 255, 255, .65);--weui-RED: #FA5151;--weui-ORANGERED: #FF6146;--weui-ORANGE: #C87D2F;--weui-YELLOW: #CC9C00;--weui-GREEN: #74A800;--weui-LIGHTGREEN: #3EB575;--weui-TEXTGREEN: #259C5C;--weui-BRAND: #07C160;--weui-BLUE: #10AEFF;--weui-INDIGO: #1196FF;--weui-PURPLE: #8183FF;--weui-LINK: #7D90A9;--weui-REDORANGE: #FF6146;--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, .05);--weui-FG: #fff;--weui-WHITE: rgba(255, 255, 255, .8);--weui-FG-5: rgba(255, 255, 255, .1);--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1);--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1);--weui-TAG-TEXT-RED: rgba(250, 81, 81, .6);--weui-TAG-BACKGROUND-RED: rgba(250, 81, 81, .1);--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1);--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6);--weui-BG: #000;--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6);--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6);--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, .5)}.wx-root{position:relative;pointer-events:auto;font-family:system-ui,-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Hiragino Sans GB,Microsoft YaHei UI,Microsoft YaHei,Arial,sans-serif}.wx_card_root{position:relative}.wxw_hide{display:none!important}.wx_uninteractive{pointer-events:none}:host(.wx_tap_highlight_active) .wx_tap_link{opacity:.5}:host(.wx_tap_highlight_active) .wx_tap_card{background-color:#f3f3f3}:host(.wx_tap_highlight_active) .wx_tap_cell{background-color:#0000000d}@media (prefers-color-scheme: dark){:host(.wx_tap_highlight_active) .wx_tap_card{background-color:#252525}:host(.wx_tap_highlight_active) .wx_tap_cell{background-color:#ffffff1a}}.wx_css_active :active{opacity:.5}.read-card{padding:12px;border-radius:8px;background-color:#00000005;display:flex;align-items:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.read-card .read-books-image{font-size:10px;width:4.4em;height:5.6em;border:.5px solid var(--weui-SEPARATOR-0);border-radius:2px}.read-card .read-books-caption{width:100%;flex:1;overflow:hidden;margin-left:10px;line-height:1.4;font-size:15px;color:var(--weui-FG-0);box-sizing:border-box}.read-card .read-books-nickname{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.read-card .read-books-label{font-size:14px;margin-top:2px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--weui-FG-2)}@media (prefers-color-scheme: dark){.read-card{background-color:#ffffff05}}\n",
    G = {
      readData: "data-read-data"
    };
  function b(i) {
    var e = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : {};
    var E = o$6.call(this, G);
    return E.readData = JSON.parse(E.readData || "{}"), _objectSpread({
      platform: i,
      extraInfo: e
    }, E);
  }
  function d() {
    var i = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    H$3(Object.assign(i, {
      Component: I,
      styleText: i.isDev ? i.devStyleText : O,
      customName: i.customName || "mp-common-read",
      watchAttr: Object.values(G),
      getProps: b
    }));
  }

  var isWp = MMVersion.isWp,
    isIOS = MMVersion.isIOS,
    isAndroid = MMVersion.isAndroid,
    isInMiniProgram = MMVersion.isInMiniProgram,
    isWechat = MMVersion.isWechat,
    isMac = MMVersion.isMac,
    isWindows = MMVersion.isWindows,
    isMacWechat = MMVersion.isMacWechat,
    isWindowsWechat = MMVersion.isWindowsWechat,
    isWxWork = MMVersion.isWxWork,
    isMpapp = MMVersion.isMpapp,
    isIPad = MMVersion.isIPad;
  var commonCompOpts = {
    platform: 'wechat',
    extraInfo: {
      system: {
        isWp: isWp,
        isIOS: isIOS,
        isAndroid: isAndroid,
        isInMiniProgram: isInMiniProgram,
        isWechat: isWechat,
        isMac: isMac,
        isWindows: isWindows,
        isMacWechat: isMacWechat,
        isWindowsWechat: isWindowsWechat,
        isWxWork: isWxWork,
        isMpapp: isMpapp,
        isIPad: isIPad
      },
      device: Device.os
    },
    beforeRender: function beforeRender(data) {
      pageClsCtrl.renderCompSilentlyPreHandler(data);
    },
    afterRender: function afterRender(data) {
      pageClsCtrl.renderCompSilently(data);
    }
  };
  var allRegisterdTags = [];
  function initOpts() {
    var opts = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    if (opts.selector) {
      var selectors = opts.selector.split(',');
      allRegisterdTags.push.apply(allRegisterdTags, _toConsumableArray$1(selectors));
    }
    return Object.assign(opts, commonCompOpts);
  }
  if (!customElements.get('mp-common-product')) {
    ft(initOpts({
      reflowProps: ['customstyle']
    }));
  }
  if (!customElements.get('mp-common-redpacket')) {
    b$4(initOpts({
      selector: 'mp-common-redpacket'
    }));
  }
  if (!customElements.get('mp-common-bluepacket')) {
    Y(initOpts({
      selector: 'mp-common-bluepacket'
    }));
  }
  if (!customElements.get('mp-common-blockquote')) {
    c$3(initOpts({
      selector: 'mp-common-blockquote'
    }));
  }
  if (!customElements.get('mp-common-shopprofile')) {
    aA(initOpts({
      selector: 'mp-common-shopprofile'
    }));
  }
  if (!customElements.get('mp-common-shoptag')) {
    Ze(initOpts({
      selector: 'mp-common-shoptag'
    }));
  }
  if (!customElements.get('mp-common-article')) {
    c(initOpts({
      selector: 'mp-common-article'
    }));
  }
  if (!customElements.get('mp-common-miniprogram')) {
    h(initOpts({
      selector: 'mp-common-miniprogram'
    }));
  }
  if (!customElements.get('mp-common-read')) {
    d(initOpts({
      selector: 'mp-common-read'
    }));
  }
  if (!customElements.get('mp-common-gameprofile')) {
    K(initOpts({
      selector: 'mp-common-gameprofile'
    }));
  }

  if (window.__listenMobileClick__) {
    window.__listenMobileClick__(allRegisterdTags);
  } else {
    window.__listenMobileClick__task__ = window.__listenMobileClick__task__ || [];
    window.__listenMobileClick__task__.push(allRegisterdTags);
  }

  function AppmsgInline(data, tempContent) {
    setImmersiveMode(data.item_show_type);
    setRowImmersiveMode(data.item_show_type);
    __setIpWording(data.ip_wording, data.user_info, data.item_show_type);
    __setTitleModify(data.is_title_modified);
    __setTitle(data.title, +data.item_show_type);
    __setNovelCard(data.appmsgalbuminfo, data.user_info, parseInt(data.user_uin || '0', 10));
    setProfileName();
    setMaskNode(data, tempContent);
  }
  if (!window.__second_open__) {
    AppmsgInline(window.cgiDataNew, document.getElementById('js_content'));
  }

  exports.AppmsgInline = AppmsgInline;

  Object.defineProperty(exports, '__esModule', { value: true });

  return exports;

})({}, Vue);
  &lt;/script&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   var __INLINE_SCRIPT__ = (function () {
    'use strict';

    var _Speed = {};
    var _userDefine;
    var _imgurl = 'https://badjs.weixinbridge.com/frontend/reportspeed?';
    function saveSpeeds$1(obj) {
      if (!obj.pid || !obj.speeds) {
        return -1;
      }
      if (!Array.isArray(obj.speeds)) {
        obj.speeds = [obj.speeds];
      }
      if (obj.user_define) {
        _userDefine = obj.user_define;
      }
      var pid_uin_rid = _conbinUPRid(obj);
      for (var i = 0; i &lt; obj.speeds.length; i++) {
        var os = obj.speeds[i];
        os.time = Math.floor(+os.time);
        if (os.sid &gt; 20 &amp;&amp; os.time &gt;= 0) _setSidTime(pid_uin_rid, os.sid, os.time);
      }
    }
    function send$1() {
      _doFunc(function () {
        setTimeout(function () {
          for (var item in _Speed) {
            _get({
              pid_uin_rid: item,
              speeds: _Speed[item],
              user_define: _userDefine
            }, _imgurl);
          }
          _Speed = {};
        }, 100);
      });
    }
    function setFirstViewTime(obj) {
      _doFunc(function () {
        if (!obj.pid || !obj.time) return -1;
        var pid_uin_rid = _conbinUPRid(obj);
        _setSidTime(pid_uin_rid, 9, obj.time);
      });
    }
    function setBasicTime$1(obj) {
      _doFunc(function () {
        var pid_uin_rid = _conbinUPRid(obj);
        if (!_Speed[pid_uin_rid]) _Speed[pid_uin_rid] = [];
        var performance = window.performance || window.msPerformance || window.webkitPerformance || {};
        if (!!performance &amp;&amp; !!performance.timing) {
          var timing = performance.timing || {};
          _setSidTime(pid_uin_rid, 1, timing.domainLookupEnd - timing.domainLookupStart);
          _setSidTime(pid_uin_rid, 2, location.protocol == "https:" &amp;&amp; timing.secureConnectionStart != 0 ? timing.connectEnd - timing.secureConnectionStart : 0);
          _setSidTime(pid_uin_rid, 3, timing.connectEnd - timing.connectStart);
          _setSidTime(pid_uin_rid, 4, timing.responseStart - timing.requestStart);
          _setSidTime(pid_uin_rid, 5, timing.responseEnd - timing.responseStart);
          _setSidTime(pid_uin_rid, 6, timing.domContentLoadedEventStart - timing.domLoading);
          _setSidTime(pid_uin_rid, 7, timing.domComplete == 0 ? 0 : timing.domComplete - timing.domLoading);
          _setSidTime(pid_uin_rid, 8, timing.loadEventEnd == 0 ? 0 : timing.loadEventEnd - timing.loadEventStart);
          (function (_Speed) {
            setTimeout(function () {
              if (timing.loadEventEnd) {
                _setSidTime(pid_uin_rid, 7, timing.domComplete == 0 ? 0 : timing.domComplete - timing.domLoading);
                _setSidTime(pid_uin_rid, 8, timing.loadEventEnd == 0 ? 0 : timing.loadEventEnd - timing.loadEventStart);
              }
            }, 0);
          })();
          if (!_Speed[pid_uin_rid][9])
            _setSidTime(pid_uin_rid, 9, timing.domContentLoadedEventStart - timing.navigationStart);
          _setSidTime(pid_uin_rid, 10, timing.redirectEnd - timing.redirectStart);
          _setSidTime(pid_uin_rid, 11, timing.domainLookupStart - timing.fetchStart);
          _setSidTime(pid_uin_rid, 12, timing.domLoading - timing.responseStart);
        }
      });
    }
    function _setSidTime(pid_uin_rid, sid, time) {
      _Speed[pid_uin_rid] = _Speed[pid_uin_rid] || [];
      _Speed[pid_uin_rid][sid] = _Speed[pid_uin_rid][sid] || [];
      if (time &lt; 0) return;
      if (sid &lt; 21) _Speed[pid_uin_rid][sid][0] = time;else _Speed[pid_uin_rid][sid].push(time);
    }
    function _conbinUPRid(obj) {
      if (!obj || !obj.pid) {
        console &amp;&amp; console.error('Must provide a pid');
        return '';
      }
      return "".concat(obj.pid, "_").concat(obj.uin || 0, "_").concat(obj.rid || 0);
    }
    function _get(obj, url) {
      var apur = obj.pid_uin_rid.split('_');
      var spur = '';
      if (apur.length == 3) {
        spur = "pid=".concat(apur[0], "&amp;uin=").concat(apur[1], "&amp;rid=").concat(apur[2]);
      } else {
        console &amp;&amp; console.error('pid,uin,rid, invalid args');
        return;
      }
      if (obj.user_define) {
        spur += "&amp;user_define=".concat(obj.user_define);
      }
      var url1 = "".concat(url + spur, "&amp;speeds=");
      var url2 = '';
      var urlarr = [];
      for (var i = 1; i &lt; obj.speeds.length; i++) {
        if (obj.speeds[i]) {
          for (var j = 0; j &lt; obj.speeds[i].length; j++) {
            var s = "".concat(i, "_").concat(obj.speeds[i][j]);
            if (url1.length + url2.length + s.length &lt; 1024) {
              url2 = "".concat(url2 + s, ";");
            } else {
              if (url2.length)
                urlarr.push(url1 + url2.substring(0, url2.length - 1));
              url2 = "".concat(s, ";");
            }
          }
          if (i == obj.speeds.length - 1) {
            urlarr.push(url1 + url2.substring(0, url2.length - 1));
          }
        }
      }
      for (var _i = 0; _i &lt; urlarr.length; _i++) {
        new Image().src = urlarr[_i];
      }
    }
    var cblist = [];
    function _doFunc(fnc) {
      if (document.readyState == "complete") {
        fnc();
      } else {
        cblist.push(fnc);
      }
    }
    window.addEventListener('load', onLoad, false);
    function onLoad() {
      for (var i = 0; i &lt; cblist.length; i++) {
        cblist[i]();
      }
      cblist = [];
    }
    var wxgsdk = {
      saveSpeeds: saveSpeeds$1,
      send: send$1,
      setFirstViewTime: setFirstViewTime,
      setBasicTime: setBasicTime$1
    };

    
    
    var reportLogs = [];
    var reportExtraLogs = [];
    var sendUrl = '/mp/jsmonitor?#wechat_redirect';
    var monitor = {};
    monitor._reportOptions = {
      idkey: {}
    };
    function ObjWithoutProperty(source, exclude) {
      if (source === null) return {};
      var target = {};
      var sourceKeys = Object.keys(source);
      for (var i = 0; i &lt; sourceKeys.length; i++) {
        var key = sourceKeys[i];
        if (exclude.indexOf(key) &gt;= 0) continue;
        target[key] = source[key];
      }
      return target;
    }
    function formatDataToString(data) {
      var reportData = [];
      for (var key in data) {
        if (Object.prototype.hasOwnProperty.call(data, key)) {
          reportData.push(key + '=' + encodeURIComponent(data[key]));
        }
      }
      return reportData.join('&amp;');
    }
    monitor.getReportData = function (opt) {
      opt = opt || {};
      var idkey = monitor._reportOptions.idkey || {};
      var key = null;
      var reportData = {};
      var nextKey;
      try {
        for (key in idkey) {
          if (Object.prototype.hasOwnProperty.call(idkey, key) &amp;&amp; idkey[key]) {
            reportLogs.push(key + '_' + idkey[key]);
          }
        }
      } catch (e) {
        return false;
      }
      if (reportLogs.length === 0) {
        return false;
      }
      if (reportExtraLogs.length) {
        reportData.lc = reportExtraLogs.length;
        reportExtraLogs.forEach(function (extraLog, index) {
          reportData["log".concat(index)] = extraLog;
        });
      }
      try {
        var reportOptions = monitor._reportOptions;
        if (reportOptions !== null &amp;&amp; reportOptions !== undefined) {
          for (nextKey in reportOptions) {
            if (Object.prototype.hasOwnProperty.call(reportOptions, nextKey)) {
              reportData[nextKey] = reportOptions[nextKey];
            }
          }
        }
      } catch (e) {
        reportData = {};
      }
      reportData.idkey = reportLogs.join(';');
      reportData.t = Math.random();
      if (opt.remove !== false) {
        reportLogs = [];
        reportExtraLogs = [];
        monitor._reportOptions = {
          idkey: {}
        };
      }
      return reportData;
    };
    monitor.setLogs = function (opt) {
      var id = opt.id;
      var key = opt.key;
      var value = opt.value;
      var extraLog = opt.log;
      var others = ObjWithoutProperty(opt, ['id', 'key', 'value', 'log']);
      var idkey = monitor._reportOptions.idkey || {};
      var param = id + '_' + key;
      if (idkey[param]) {
        idkey[param] += value;
      } else {
        idkey[param] = value;
      }
      monitor._reportOptions.idkey = idkey;
      if (extraLog) {
        reportExtraLogs.push(extraLog);
      }
      try {
        if (others !== null &amp;&amp; others !== undefined) {
          for (var otherKey in others) {
            if (Object.prototype.hasOwnProperty.call(others, otherKey)) {
              monitor._reportOptions[otherKey] = others[otherKey];
            }
          }
        }
      } catch (e) {
        console.log(e);
      }
      return monitor;
    };
    monitor.setAvg = function (id, key, value) {
      var idkey = monitor._reportOptions.idkey || {};
      var param1 = id + '_' + key;
      var param2 = id + '_' + (key - 1);
      if (idkey[param1]) {
        idkey[param1] += value;
      } else {
        idkey[param1] = value;
      }
      if (idkey[param2]) {
        idkey[param2] += 1;
      } else {
        idkey[param2] = 1;
      }
      monitor._reportOptions.idkey = idkey;
      return monitor;
    };
    monitor.setSum = function (id, key) {
      var value = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : 1;
      var idkey = monitor._reportOptions.idkey;
      var param = id + '_' + key;
      if (idkey[param]) {
        idkey[param] += value;
      } else {
        idkey[param] = value;
      }
      monitor._reportOptions.idkey = idkey;
      return monitor;
    };
    monitor.send = function (async, ajax, origin) {
      if (async !== false) {
        async = true;
      }
      var data = monitor.getReportData();
      origin = origin || '';
      if (!data) {
        return;
      }
      if (!!ajax &amp;&amp; ajax instanceof Function) {
        ajax({
          url: origin + sendUrl,
          type: 'POST',
          mayAbort: true,
          data: data,
          async: async,
          timeout: 2000,
          dontReport: true
        });
      } else {
        new Image().src = origin + '/mp/jsmonitor?' + formatDataToString(data) + '#wechat_redirect';
      }
    };
    if (typeof window !== 'undefined' &amp;&amp; window.__monitor) {
      monitor = window.__monitor;
    } else {
      typeof window !== 'undefined' &amp;&amp; (window.__monitor = monitor);
    }
    var monitor$1 = monitor;

    function _typeof(obj) {
      "@babel/helpers - typeof";

      return _typeof = "function" == typeof Symbol &amp;&amp; "symbol" == typeof Symbol.iterator ? function (obj) {
        return typeof obj;
      } : function (obj) {
        return obj &amp;&amp; "function" == typeof Symbol &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj;
      }, _typeof(obj);
    }

    function _toPrimitive(input, hint) {
      if (_typeof(input) !== "object" || input === null) return input;
      var prim = input[Symbol.toPrimitive];
      if (prim !== undefined) {
        var res = prim.call(input, hint || "default");
        if (_typeof(res) !== "object") return res;
        throw new TypeError("@@toPrimitive must return a primitive value.");
      }
      return (hint === "string" ? String : Number)(input);
    }

    function _toPropertyKey(arg) {
      var key = _toPrimitive(arg, "string");
      return _typeof(key) === "symbol" ? key : String(key);
    }

    function _defineProperty(obj, key, value) {
      key = _toPropertyKey(key);
      if (key in obj) {
        Object.defineProperty(obj, key, {
          value: value,
          enumerable: true,
          configurable: true,
          writable: true
        });
      } else {
        obj[key] = value;
      }
      return obj;
    }

    
    
    var Device = {};
    function detect(ua) {
      var MQQBrowser = ua.match(/MQQBrowser\/(\d+\.\d+)/i);
      var MQQClient = ua.match(/QQ\/(\d+\.(\d+)\.(\d+)\.(\d+))/i) || ua.match(/V1_AND_SQ_([\d\.]+)/);
      var WeChat = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/) || ua.match(/MicroMessenger\/((\d+)\.(\d+))/);
      var MacOS = ua.match(/Mac\sOS\sX\s(\d+[\.|_]\d+)/);
      var WinOS = ua.match(/Windows(\s+\w+)?\s+?(\d+\.\d+)/);
      var Linux = ua.match(/Linux\s/);
      var MiuiBrowser = ua.match(/MiuiBrowser\/(\d+\.\d+)/i);
      var M1 = ua.match(/MI-ONE/);
      var MIPAD = ua.match(/MI PAD/);
      var UC = ua.match(/UCBrowser\/(\d+\.\d+(\.\d+\.\d+)?)/) || ua.match(/\sUC\s/);
      var IEMobile = ua.match(/IEMobile(\/|\s+)(\d+\.\d+)/) || ua.match(/WPDesktop/);
      var ipod = ua.match(/(ipod).*\s([\d_]+)/i);
      var ipad = ua.match(/(ipad).*\s([\d_]+)/i);
      var iphone = ua.match(/(iphone)\sos\s([\d_]+)/i);
      var Chrome = ua.match(/Chrome\/(\d+\.\d+)/);
      var AndriodBrowser = ua.match(/Mozilla.*Linux.*Android.*AppleWebKit.*Mobile Safari/);
      var android = ua.match(/(android)\s([\d\.]+)/i);
      var harmony = ua.match(/(OpenHarmony)\s([\d\.]+)/i);
      Device.browser = Device.browser || {}, Device.os = Device.os || {};
      Device.os.type = -1;
      Device.os.unifiedPC = ua.match(/UnifiedPC/);
      Device.os.unifiedMac = /UnifiedPCMac/i.test(ua);
      Device.os.unifiedWindows = /UnifiedPCWindows/i.test(ua);
      if (window.ActiveXObject) {
        var vie = 6;
        (window.XMLHttpRequest || ua.indexOf('MSIE 7.0') &gt; -1) &amp;&amp; (vie = 7);
        (window.XDomainRequest || ua.indexOf('Trident/4.0') &gt; -1) &amp;&amp; (vie = 8);
        ua.indexOf('Trident/5.0') &gt; -1 &amp;&amp; (vie = 9);
        ua.indexOf('Trident/6.0') &gt; -1 &amp;&amp; (vie = 10);
        Device.browser.ie = true, Device.browser.version = vie;
      } else if (ua.indexOf('Trident/7.0') &gt; -1) {
        Device.browser.ie = true, Device.browser.version = 11;
      }
      if (android) {
        Device.os.android = true;
        Device.os.version = android[2];
        Device.os.type = 2;
      }
      if (harmony) {
        Device.os.harmony = true;
        Device.os.version = harmony[2];
        Device.os.type = 42;
      }
      if (ipod) {
        Device.os.ios = Device.os.ipod = true;
        Device.os.version = ipod[2].replace(/_/g, '.');
      }
      if (ipad) {
        Device.os.ios = Device.os.ipad = true;
        Device.os.version = ipad[2].replace(/_/g, '.');
        Device.os.type = 13;
      }
      if (iphone) {
        Device.os.iphone = Device.os.ios = true;
        Device.os.version = iphone[2].replace(/_/g, '.');
        Device.os.type = 1;
      }
      if (WinOS) Device.os.windows = true, Device.os.version = WinOS[2], Device.os.type = 15;
      if (MacOS) Device.os.Mac = true, Device.os.version = MacOS[1], Device.os.type = 14;
      if (Linux) Device.os.Linux = true, Device.os.type = 33;
      if (ua.indexOf('lepad_hls') &gt; 0) Device.os.LePad = true;
      if (MIPAD) Device.os.MIPAD = true;
      if (MQQBrowser) Device.browser.MQQ = true, Device.browser.version = MQQBrowser[1];
      if (MQQClient) Device.browser.MQQClient = true, Device.browser.version = MQQClient[1];
      if (WeChat) Device.browser.WeChat = true, Device.browser.mmversion = Device.browser.version = WeChat[1];
      if (MiuiBrowser) Device.browser.MIUI = true, Device.browser.version = MiuiBrowser[1];
      if (UC) Device.browser.UC = true, Device.browser.version = UC[1] || NaN;
      if (IEMobile) Device.browser.IEMobile = true, Device.browser.version = IEMobile[2];
      if (AndriodBrowser) {
        Device.browser.AndriodBrowser = true;
      }
      if (M1) {
        Device.browser.M1 = true;
      }
      if (Chrome) {
        Device.browser.Chrome = true, Device.browser.version = Chrome[1];
      }
      if (Device.os.windows) {
        if (typeof navigator.platform !== "undefined" &amp;&amp; navigator.platform.toLowerCase() == "win64") {
          Device.os.win64 = true;
        } else {
          Device.os.win64 = false;
        }
      }
      if (Device.os.Mac || Device.os.windows || Device.os.Linux || Device.os.unifiedPC || /OpenHarmony/i.test(ua) &amp;&amp; /pc/i.test(ua)) {
        Device.os.pc = true;
      }
      var osType = {
        iPad7: 'iPad; CPU OS 7',
        LePad: 'lepad_hls',
        XiaoMi: 'MI-ONE',
        SonyDTV: "SonyDTV",
        SamSung: 'SAMSUNG',
        HTC: 'HTC',
        VIVO: 'vivo'
      };
      for (var os in osType) {
        Device.os[os] = ua.indexOf(osType[os]) !== -1;
      }
      Device.os.phone = Device.os.phone || /windows phone/i.test(ua);
      Device.os.getNumVersion = function () {
        return parseFloat(Device.os.version);
      };
      Device.os.hasTouch = 'ontouchstart' in window;
      if (Device.os.hasTouch &amp;&amp; Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 6) {
        Device.os.hasTouch = false;
      }
      if (Device.browser.WeChat &amp;&amp; Device.browser.version &lt; 5.0) {
        Device.os.hasTouch = false;
      }
      Device.browser.getNumVersion = function () {
        return parseFloat(Device.browser.version);
      };
      Device.browser.isFFCanOcx = function () {
        return !!Device.browser.firefox &amp;&amp; Device.browser.getNumVersion() &gt;= 3.0;
      };
      Device.browser.isCanOcx = function () {
        return !!Device.os.windows &amp;&amp; (!!Device.browser.ie || Device.browser.isFFCanOcx() || !!Device.browser.webkit);
      };
      Device.browser.isNotIESupport = function () {
        return !!Device.os.windows &amp;&amp; (!!Device.browser.webkit || Device.browser.isFFCanOcx());
      };
      Device.userAgent = {};
      Device.userAgent.browserVersion = Device.browser.version;
      Device.userAgent.osVersion = Device.os.version;
      if (Device.os.unifiedPC) {
        if (Device.os.unifiedWindows) Device.os.type = 37;else if (Device.os.unifiedMac) Device.os.type = 38;else Device.os.type = 39;
      }
      delete Device.userAgent.version;
    }
    detect(window.navigator.userAgent);
    function canSupportH5Video() {
      var ua = window.navigator.userAgent,
        m = null;
      if (!!Device.os.android) {
        if (Device.browser.MQQ &amp;&amp; Device.browser.getNumVersion() &gt;= 4.2) {
          return true;
        }
        if (ua.indexOf('MI2') != -1) {
          return true;
        }
        if (Device.os.version &gt;= '4' &amp;&amp; (m = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/))) {
          if (parseFloat(m[1]) &gt;= 4.2) {
            return true;
          }
        }
        if (Device.os.version &gt;= '4.1') {
          return true;
        }
      }
      return false;
    }
    function canSupportVideoMp4() {
      var video = document.createElement('video');
      if (typeof video.canPlayType === 'function') {
        if (video.canPlayType('video/mp4; codecs="mp4v.20.8"') === 'probably') {
          return true;
        }
        if (video.canPlayType('video/mp4; codecs="avc1.42E01E"') === 'probably' || video.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"') === 'probably') {
          return true;
        }
      }
      return false;
    }
    function canSupportAutoPlay() {
      if (Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 10) {
        return false;
      }
      return true;
    }
    function isLockdownMode() {
      if (!Device.os.ios || Device.os.getNumVersion() &lt; 16) {
        return false;
      }
      if (typeof WebAssembly === 'undefined' &amp;&amp; typeof OfflineAudioContext === 'undefined' &amp;&amp; typeof WebGLRenderingContext === 'undefined') {
        return true;
      }
      return false;
    }
    Device.canSupportVideo = canSupportVideoMp4 || canSupportH5Video;
    Device.canSupportVideoMp4 = canSupportVideoMp4;
    Device.canSupportH5Video = canSupportH5Video;
    Device.canSupportAutoPlay = canSupportAutoPlay;
    Device.isLockdownMode = isLockdownMode;
    
    Device.cpVersion = function (version) {
      var cp = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 0;
      var canEqual = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
      var nowVersionStr = Device.os.version;
      if (!nowVersionStr) return false;
      var versionArr = version.split('.');
      var nowVersionArr = nowVersionStr.split('.');
      for (var i = 0; i &lt; Math.max(nowVersionArr.length, versionArr.length); i++) {
        var vi = +versionArr[i];
        var nvi = +nowVersionArr[i];
        if (vi === nvi) continue;
        if (cp &gt; 0) return vi &gt; nvi;
        if (cp &lt; 0) return vi &lt; nvi;
      }
      return canEqual || cp === 0;
    };

    function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
      try {
        var info = gen[key](arg);
        var value = info.value;
      } catch (error) {
        reject(error);
        return;
      }
      if (info.done) {
        resolve(value);
      } else {
        Promise.resolve(value).then(_next, _throw);
      }
    }
    function _asyncToGenerator(fn) {
      return function () {
        var self = this,
          args = arguments;
        return new Promise(function (resolve, reject) {
          var gen = fn.apply(self, args);
          function _next(value) {
            asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
          }
          function _throw(err) {
            asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
          }
          _next(undefined);
        });
      };
    }

    function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" &amp;&amp; o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$1(o)) || allowArrayLike &amp;&amp; o &amp;&amp; typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i &gt;= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion &amp;&amp; it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
    function _unsupportedIterableToArray$1(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$1(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen); }
    function _arrayLikeToArray$1(arr, len) { if (len == null || len &gt; arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i]; return arr2; }
    
    
    var ua = navigator.userAgent;
    var is_ios = /(iPhone|iPad|iPod|iOS)/i.test(ua);
    var is_wp = /Windows\sPhone/i.test(ua);
    var is_android = /(Android)/i.test(ua);
    var is_wechat = /MicroMessenger\/([\d\.]+)/i.test(ua);
    var is_mac = /mac\sos/i.test(ua) &amp;&amp; !is_ios;
    var is_windows = /windows\snt/i.test(ua) &amp;&amp; !is_wp;
    var is_mpapp = /MPAPP\/([\d\.]+)/i.test(ua);
    var is_ipad = /iPad/i.test(ua);
    var is_windows_wechat = /WindowsWechat/i.test(ua);
    var is_mac_wechat = /MacWechat/i.test(ua) || /wechat.*mac os/i.test(ua);
    var is_prefetch = is_wechat &amp;&amp; window.WeixinPrefecherJSBridge;
    var is_donut_app = /SAAASDK/i.test(ua);
    var is_harmony = /OpenHarmony|ArkWeb/i.test(ua);
    var is_linux = /Linux\s/i.test(ua);
    var xweb_match = ua.match(/XWEB\/([\d.]+)/i);
    var xweb_version = xweb_match &amp;&amp; xweb_match[1] ? parseInt(xweb_match[1], 10) : 0;
    var is_unified_pc_wechat = /UnifiedPC\w+Wechat/i.test(ua);
    var is_in_miniProgram = is_android &amp;&amp; /miniprogram/.test(ua.toLowerCase()) || window.__wxjs_environment == 'miniprogram';
    var is_wx_work = /wxwork/i.test(ua);
    function getUrlParams() {
      var vars = location.search.substring(1).split('&amp;');
      var params = {};
      var _iterator = _createForOfIteratorHelper(vars),
        _step;
      try {
        for (_iterator.s(); !(_step = _iterator.n()).done;) {
          var ele = _step.value;
          var pair = ele.split('=');
          var key = decodeURIComponent(pair[0]);
          if (typeof params[key] === 'undefined') {
            params[key] = decodeURIComponent(pair[1]);
          }
        }
      } catch (err) {
        _iterator.e(err);
      } finally {
        _iterator.f();
      }
      return params;
    }
    function get() {
      var reg = /MicroMessenger\/([\d\.]+)/i;
      var ret = ua.match(reg);
      if (ret &amp;&amp; ret[1]) {
        return ret[1];
      }
      return false;
    }
    function getMac() {
      var reg = /MacWechat\/([\d\.]+)/i;
      var ret = ua.match(reg);
      if (ret &amp;&amp; ret[1]) {
        return ret[1];
      }
      return false;
    }
    function getMacOS() {
      var reg = /Mac OS X ([\d_]+)/i;
      var ret = ua.match(reg);
      if (ret &amp;&amp; ret[1]) {
        return ret[1].replace(/_/g, '.');
      }
      return false;
    }
    function getWindows() {
      var reg = /WindowsWechat\(0x(.+?)\)/i;
      var ret = ua.match(reg);
      if (ret &amp;&amp; ret[1]) {
        return ret[1];
      }
      return false;
    }
    function getWxWork() {
      var reg = /wxwork\/([\d\.]+)/i;
      var ret = ua.match(reg);
      if (ret &amp;&amp; ret[1]) {
        return ret[1];
      }
      return false;
    }
    function getMpApp() {
      var appVersion = [2, 4, 5];
      var match = navigator.userAgent.match(/MPAPP\/(\d+(\.\d+)*)/);
      if (match) {
        appVersion = match[1].split('.').map(function (v) {
          return Number(v);
        });
      }
      return appVersion.join('.');
    }
    function getUnifiedPcVer() {
      var versionInfo = navigator.userAgent.match(/UnifiedPC\w+Wechat\(0xf\w{2}(\w+?)\w{2}\)/);
      if (versionInfo &amp;&amp; versionInfo.length === 2) {
        var version = versionInfo[1];
        var mainVersion = getVersionNumber(version.slice(0, 1));
        var subVersion = getVersionNumber(version.slice(1, 2));
        var subVersion2 = getVersionNumber(version.slice(2, 3));
        return [mainVersion, subVersion, subVersion2].join('.');
      }
    }
    function getVersionNumber(hexStr) {
      return Number(Number("0x".concat(hexStr)).toString(10));
    }
    function getWindowsVersionFormat() {
      var versionInfo = navigator.userAgent.match(/WindowsWechat\(0x(\w+?)\)/);
      if (versionInfo &amp;&amp; versionInfo.length === 2) {
        var version = versionInfo[1];
        var mainVersion = getVersionNumber(version.slice(1, 2));
        var subVersion = getVersionNumber(version.slice(2, 4));
        var subVersion2 = getVersionNumber(version.slice(4, 6));
        return [mainVersion, subVersion, subVersion2].join('.');
      }
      return false;
    }
    function getInner() {
      var reg = /MicroMessenger\/[\d\.]+\(0x(.+?)\)/i;
      var ret = ua.match(reg);
      if (ret &amp;&amp; ret[1] &amp;&amp; ret[1] != null) {
        return ret[1];
      }
      if (!ret &amp;&amp; /MicroMessenger\/[\d\.]+/i.test(ua)) {
        var urlParams = getUrlParams();
        if (urlParams.version) {
          return urlParams.version;
        }
      }
      return false;
    }
    var opfunc = {
      'cp-1': function cp1(a, b) {
        return a &lt; b;
      },
      cp0: function cp0(a, b) {
        return a === b;
      },
      cp1: function cp1(a, b) {
        return a &gt; b;
      }
    };
    function cpVersion(ver, op, canEq, type) {
      var mmver = false;
      switch (type) {
        case 'mac':
          mmver = getMac();
          break;
        case 'windows':
          mmver = getWindowsVersionFormat();
          break;
        case 'wxwork':
          mmver = getWxWork();
          break;
        case 'mpapp':
          mmver = getMpApp();
          break;
        case 'unifiedpc':
          mmver = getUnifiedPcVer();
          break;
        default:
          mmver = get();
          break;
      }
      if (!mmver) {
        return;
      }
      var mmversion = mmver.split('.');
      var version = ver.split('.');
      if (!/\d+/g.test(mmversion[mmversion.length - 1])) {
        mmversion.pop();
      }
      for (var i = 0, len = Math.max(mmversion.length, version.length); i &lt; len; ++i) {
        var mmv = mmversion[i] || '';
        var v = version[i] || '';
        var mmvn = parseInt(mmv, 10) || 0;
        var vn = parseInt(v, 10) || 0;
        var eq = opfunc.cp0(mmvn, vn);
        if (eq) {
          continue;
        }
        var cp = opfunc["cp".concat(op)];
        return cp(mmvn, vn);
      }
      return canEq || op === 0;
    }
    function eqVersion(version) {
      return cpVersion(version, 0);
    }
    function gtVersion(version, canEq) {
      return cpVersion(version, 1, canEq);
    }
    function ltVersion(version, canEq) {
      return cpVersion(version, -1, canEq);
    }
    function getPlatform() {
      if (is_ios) {
        return 'ios';
      }
      if (is_android) {
        return 'android';
      }
      if (is_mac) {
        return 'mac_os';
      }
      if (is_windows) {
        return 'windows';
      }
      return 'unknown';
    }
    var is_google_play = false;
    var inner_ver_for_google_play_check = getInner();
    if (is_android &amp;&amp; inner_ver_for_google_play_check) {
      var v = "0x".concat(inner_ver_for_google_play_check.substr(-2));
      if (parseInt(v) &gt;= 64 &amp;&amp; parseInt(v) &lt;= 79) {
        is_google_play = true;
      }
    }
    function compareHexVersion(hexNum) {
      var innerVersion = getInner();
      if (innerVersion &amp;&amp; hexNum) {
        if (typeof hexNum === 'string') {
          hexNum = parseInt(hexNum, 16);
        }
        var version = parseInt(innerVersion, 16);
        return version &gt;= hexNum;
      }
      return false;
    }
    var mmversion = {
      get: get,
      getMac: getMac,
      getMacOS: getMacOS,
      getWindows: getWindows,
      getInner: getInner,
      getWxWork: getWxWork,
      getMpApp: getMpApp,
      cpVersion: cpVersion,
      eqVersion: eqVersion,
      gtVersion: gtVersion,
      ltVersion: ltVersion,
      getPlatform: getPlatform,
      getVersionNumber: getVersionNumber,
      isWp: is_wp,
      isIOS: is_ios,
      isAndroid: is_android,
      isHarmony: is_harmony,
      isHarmonyWechat: is_harmony &amp;&amp; is_wechat &amp;&amp; cpVersion('1.0.0', 1, true),
      isInMiniProgram: is_in_miniProgram,
      isWechat: is_wechat,
      isMac: is_mac,
      isWindows: is_windows,
      isLinux: is_linux,
      isMacWechat: is_mac_wechat,
      isWindowsWechat: is_windows_wechat,
      isWxWork: is_wx_work,
      isOnlyWechat: is_wechat &amp;&amp; !is_wx_work,
      isMpapp: is_mpapp,
      isNewMpApp: false,
      isIPad: is_ipad,
      isGooglePlay: is_google_play,
      isPrefetch: is_prefetch,
      isDonutAPP: is_donut_app,
      compareHexVersion: compareHexVersion,
      isPcWechat: is_windows_wechat || is_mac_wechat,
      xwebVersion: xweb_version,
      isUnifiedPcWechat: is_unified_pc_wechat
    };

    var initJsBridge = false;
    if (!window.JSAPIEventCallbackMap) {
      window.JSAPIEventCallbackMap = {};
    }
    function connectWebViewJavascriptBridge(callback) {
      if (window.WebViewMPapp || window.WebViewJavascriptBridge) {
        return callback(window.WebViewMPapp || window.WebViewJavascriptBridge);
      }
      if (window.WVJBCallbacks) {
        return window.WVJBCallbacks.push(callback);
      }
      window.WVJBCallbacks = [callback];
      if (!mmversion.isMpapp) {
        return false;
      }
      if (!initJsBridge) {
        initJsBridge = true;
        var WVJBIframe = document.createElement('iframe');
        WVJBIframe.style.display = 'none';
        WVJBIframe.src = 'https://__bridge_loaded__';
        document.body.appendChild(WVJBIframe);
        setTimeout(function () {
          initJsBridge = false;
          document.body.removeChild(WVJBIframe);
        }, 0);
      }
      return false;
    }
    function invoke$1(jsapiName, opt, callback) {
      connectWebViewJavascriptBridge(function (bridge) {
        try {
          if (typeof opt === 'function') {
            callback = opt;
          }
          if (_typeof(opt) !== 'object' &amp;&amp; typeof opt !== 'string') {
            opt = {};
          }
          bridge.callHandler(jsapiName, opt, function (res) {
            try {
              var ret = _typeof(res) === 'object' ? res : JSON.parse(res);
              var errMsg = ret.err_msg || ret.errMsg;
              console.info("[mpapp jsapi] invoke-&gt;".concat(jsapiName, " ").concat(opt.action || '', " ").concat(errMsg));
              typeof callback === 'function' &amp;&amp; callback(ret);
            } catch (e) {
              window.WX_BJ_REPORT.BadJs.report('invoke', "callback ".concat(jsapiName, " error:"), {
                mid: 'mmbizwebapp:js_brridge',
                _info: e
              });
              console.error("[mpapp jsapi] ".concat(jsapiName, " ").concat(opt.action || ''), e, res);
            }
          });
        } catch (e) {
          window.WX_BJ_REPORT.BadJs.report('invoke', 'callback error:', {
            mid: 'mmbizwebapp:js_brridge',
            _info: e
          });
          console.error('[mpapp jsapi]', e);
        }
      });
    }

    function _regeneratorRuntime$1() {  _regeneratorRuntime$1 = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
    var doc$1 = {};
    var isAcrossOrigin$1 = false;
    var notFoundedMPPageAction = [];
    var __moon_report$1 = window.__moon_report || function () {};
    var MOON_JSAPI_KEY_OFFSET = 8;
    try {
      doc$1 = top.window.document;
    } catch (e) {
      isAcrossOrigin$1 = true;
    }
    if (!window.JSAPIEventCallbackMap) {
      window.JSAPIEventCallbackMap = {};
    }
    function ready(onBridgeReady) {
      var bridgeReady = function bridgeReady() {
        try {
          if (onBridgeReady) {
            window.onBridgeReadyTime = window.onBridgeReadyTime || Date.now();
            onBridgeReady();
          }
        } catch (e) {
          __moon_report$1([{
            offset: MOON_JSAPI_KEY_OFFSET,
            log: 'ready',
            e: e
          }]);
          throw e;
        }
        window.jsapiReadyTime = Date.now();
      };
      if (!isAcrossOrigin$1 &amp;&amp; (typeof top.window.WeixinJSBridge === 'undefined' || !top.window.WeixinJSBridge.invoke)) {
        if (doc$1.addEventListener) {
          doc$1.addEventListener('WeixinJSBridgeReady', bridgeReady, false);
        } else if (doc$1.attachEvent) {
          doc$1.attachEvent('WeixinJSBridgeReady', bridgeReady);
          doc$1.attachEvent('onWeixinJSBridgeReady', bridgeReady);
        }
      } else {
        bridgeReady();
      }
    }
    var invokeNotWaitA8key = ['notifyPageInfo', 'updatePageAuth'
    ];
    var checkNotFoundedInvoke = function checkNotFoundedInvoke(methodName, args) {
      if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; notFoundedMPPageAction.includes(args === null || args === void 0 ? void 0 : args.action)) {
        return true;
      }
      return false;
    };
    function invoke(_x, _x2, _x3) {
      return _invoke.apply(this, arguments);
    }
    function _invoke() {
      _invoke = _asyncToGenerator( _regeneratorRuntime$1().mark(function _callee(methodName, args, callback) {
        return _regeneratorRuntime$1().wrap(function _callee$(_context) {
          while (1) switch (_context.prev = _context.next) {
            case 0:
              if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__ &amp;&amp; !invokeNotWaitA8key.includes(methodName))) {
                _context.next = 3;
                break;
              }
              _context.next = 3;
              return window.__secPageAuthPromise;
            case 3:
              ready(function () {
                if (isAcrossOrigin$1) return false;
                if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                  alert('请在微信中打开此链接');
                  return false;
                }
                if (checkNotFoundedInvoke(methodName, args)) {
                  setTimeout(function () {
                    if (callback) {
                      callback.apply(window, [{
                        err_msg: "".concat(methodName, ":fail"),
                        err_desc: 'action isn\'t supported'
                      }]);
                    }
                  }, 0);
                } else {
                  top.window.WeixinJSBridge.invoke(methodName, args, function () {
                    try {
                      for (var _len2 = arguments.length, rets = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
                        rets[_key2] = arguments[_key2];
                      }
                      var ret = rets[0];
                      var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
                      if (['handleMPPageAction', 'handleVideoAction', 'handleHaokanAction'].indexOf(methodName) !== -1) {
                        var action = (args === null || args === void 0 ? void 0 : args.action) || '';
                        console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName, ", action-&gt;").concat(action).concat(errMsg));
                      } else {
                        console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName).concat(errMsg));
                      }
                      if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; ((ret === null || ret === void 0 ? void 0 : ret.err_desc) === 'action isn\'t supported' || (ret === null || ret === void 0 ? void 0 : ret.err_msg) === 'handleMPPageAction:fail action is not supported')) {
                        notFoundedMPPageAction.push(args === null || args === void 0 ? void 0 : args.action);
                      }
                      if (callback) {
                        callback.apply(window, rets);
                      }
                    } catch (e) {
                      __moon_report$1([{
                        offset: MOON_JSAPI_KEY_OFFSET,
                        log: "invoke;methodName:".concat(methodName),
                        e: e
                      }]);
                      throw e;
                    }
                  });
                }
              });
            case 4:
            case "end":
              return _context.stop();
          }
        }, _callee);
      }));
      return _invoke.apply(this, arguments);
    }
    function call(_x4) {
      return _call.apply(this, arguments);
    }
    function _call() {
      _call = _asyncToGenerator( _regeneratorRuntime$1().mark(function _callee2(methodName) {
        return _regeneratorRuntime$1().wrap(function _callee2$(_context2) {
          while (1) switch (_context2.prev = _context2.next) {
            case 0:
              if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__)) {
                _context2.next = 3;
                break;
              }
              _context2.next = 3;
              return window.__secPageAuthPromise;
            case 3:
              ready(function () {
                if (isAcrossOrigin$1) return false;
                if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                  return false;
                }
                try {
                  top.window.WeixinJSBridge.call(methodName);
                } catch (e) {
                  __moon_report$1([{
                    offset: MOON_JSAPI_KEY_OFFSET,
                    log: "call;methodName:".concat(methodName),
                    e: e
                  }]);
                  throw e;
                }
              });
            case 4:
            case "end":
              return _context2.stop();
          }
        }, _callee2);
      }));
      return _call.apply(this, arguments);
    }
    function on(eventName, callback) {
      ready(function () {
        if (isAcrossOrigin$1) return false;
        if (_typeof(top.window.WeixinJSBridge) !== 'object' || !top.window.WeixinJSBridge.on) {
          return false;
        }
        if (!window.JSAPIEventCallbackMap[eventName]) {
          window.JSAPIEventCallbackMap[eventName] = [];
        }
        window.JSAPIEventCallbackMap[eventName].push(callback);
        if (window.JSAPIEventCallbackMap[eventName].length &gt; 1) {
          return false;
        }
        top.window.WeixinJSBridge.on(eventName, function () {
          try {
            for (var _len = arguments.length, rets = new Array(_len), _key = 0; _key &lt; _len; _key++) {
              rets[_key] = arguments[_key];
            }
            var ret = rets[0];
            var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
            console.info('[system]', "[jsapi] event-&gt;".concat(eventName).concat(errMsg));
            if (window.JSAPIEventCallbackMap[eventName] &amp;&amp; window.JSAPIEventCallbackMap[eventName].length) {
              var result;
              for (var i = 0; i &lt; window.JSAPIEventCallbackMap[eventName].length; i++) {
                result = window.JSAPIEventCallbackMap[eventName][i].apply(window, rets);
              }
              return result;
            }
          } catch (e) {
            __moon_report$1([{
              offset: MOON_JSAPI_KEY_OFFSET,
              log: "on;eventName:".concat(eventName),
              e: e
            }]);
            throw e;
          }
        });
      });
    }
    function remove(eventName, callback) {
      ready(function () {
        if (!window.JSAPIEventCallbackMap[eventName]) {
          return false;
        }
        var result = false;
        for (var i = window.JSAPIEventCallbackMap[eventName].length - 1; i &gt;= 0; i--) {
          if (window.JSAPIEventCallbackMap[eventName][i] === callback) {
            window.JSAPIEventCallbackMap[eventName].splice(i, 1);
            result = true;
          }
        }
        return result;
      });
    }
    var JSAPI = {
      ready: ready,
      invoke: invoke,
      call: call,
      on: on,
      remove: remove
    };

    
    function _log(level, msg) {
      if (level === 'log') {
        level = 'info';
        msg = "[WechatFe]".concat(msg);
      } else {
        var prefix = "__wap__".concat(window.__second_open__ ? ' (sec)' : '');
        msg = "".concat(prefix, " ").concat(msg, " location:[").concat(location.href, "]");
      }
      msg += new Error().stack;
      if (mmversion.isMpapp) {
        invoke$1('WNNativeCallbackLog', msg);
      } else if (mmversion.isWechat) {
        if (mmversion.isAndroid) {
          console.warn('[system]', "[MicroMsg.JsApiLog][".concat(level, "] jslog : ").concat(msg));
        } else if (mmversion.isIOS) {
          JSAPI.invoke('writeLog', {
            level: level,
            msg: msg
          });
        } else {
          JSAPI.invoke('log', {
            level: level,
            msg: msg
          });
        }
      }
    }
    var Log = {
      info: function info() {
        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key &lt; _len; _key++) {
          args[_key] = arguments[_key];
        }
        _log('info', args.join(' '));
      },
      warn: function warn() {
        for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
          args[_key2] = arguments[_key2];
        }
        _log('warn', args.join(' '));
      },
      error: function error() {
        for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 &lt; _len3; _key3++) {
          args[_key3] = arguments[_key3];
        }
        _log('error', args.join(' '));
      },
      debug: function debug() {
        for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 &lt; _len4; _key4++) {
          args[_key4] = arguments[_key4];
        }
        _log('debug', args.join(' '));
      },
      log: function log() {
        for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 &lt; _len5; _key5++) {
          args[_key5] = arguments[_key5];
        }
        _log('info', args.join(' '));
      }
    };

    
    var logList = [];
    var log = function log(msg) {
      logList.push(msg);
    };
    var printLog = function printLog() {
      for (var i = 0, len = logList.length; i &lt; len; ++i) {
        console.log("[RespType]".concat(logList[i]));
      }
    };
    var isArray = function isArray(val) {
      return Object.prototype.toString.call(val) === '[object Array]';
    };
    var getValueType = function getValueType(value) {
      if (isArray(value)) {
        return 'array';
      }
      return _typeof(value);
    };
    var parseRtDesc = function parseRtDesc(rtDesc, k) {
      var type = 'mix';
      var isRequired = false;
      var key = k;
      if (k) {
        var requireKeyWord = '_R';
        var pos = k.indexOf(requireKeyWord);
        var len = k.length - requireKeyWord.length;
        isRequired = pos !== -1 &amp;&amp; pos === len;
        key = isRequired ? k.substring(0, len) : k;
      }
      if (typeof rtDesc === 'string') {
        type = rtDesc;
      } else if (isArray(rtDesc)) {
        type = 'array';
      } else if (_typeof(rtDesc) === 'object') {
        type = 'object';
      }
      return {
        key: key,
        type: type,
        isRequired: isRequired
      };
    };
    var checkForArrayRtDesc = function checkForArrayRtDesc(arr, rtDescs) {
      if (!isArray(arr)) {
        return false;
      }
      for (var i = 0, len = arr.length; i &lt; len; ++i) {
        var value = arr[i];
        var rtDesc = void 0;
        var j = 0;
        var flag = rtDescs.length === 0;
        while (rtDesc = rtDescs[j++]) {
          if (checkForRtDesc(value, rtDesc)) {
            flag = true;
            break;
          }
        }
        if (!flag) {
          return false;
        }
      }
      return true;
    };
    var checkForStringRtDesc = function checkForStringRtDesc(value, rtDesc) {
      var valueType = getValueType(value);
      var desc = parseRtDesc(rtDesc);
      var ret = desc.type === valueType;
      if (!ret) {
        log("miss match type : ".concat(valueType, " !== ").concat(desc.type));
      }
      return ret;
    };
    var checkForObjectRtDesc = function checkForObjectRtDesc(json, rtDesc) {
      if (_typeof(json) !== 'object' || isArray(json)) {
        log('must be object');
        return false;
      }
      var rootJson = json;
      var nowCheckValue = json;
      for (var k in rtDesc) {
        if (rtDesc.hasOwnProperty(k)) {
          var nowCheckDesc = rtDesc[k];
          var desc = parseRtDesc(nowCheckDesc, k);
          var key = desc.key;
          nowCheckValue = rootJson[key];
          var valueType = getValueType(nowCheckValue);
          if (desc.isRequired &amp;&amp; nowCheckValue === undefined) {
            log("is required @key=".concat(key));
            return false;
          }
          if (nowCheckValue !== undefined) {
            if (valueType !== desc.type &amp;&amp; desc.type !== 'mix') {
              log("miss match type : ".concat(valueType, " !== ").concat(desc.type, " @key=").concat(key));
              return false;
            }
            if ((valueType === 'array' || valueType === 'object') &amp;&amp; desc.type !== 'mix') {
              if (!checkForRtDesc(nowCheckValue, nowCheckDesc)) {
                return false;
              }
            }
          }
        }
      }
      return true;
    };
    var checkForRtDesc = function checkForRtDesc(json, rtDesc) {
      if (isArray(rtDesc)) {
        return checkForArrayRtDesc(json, rtDesc);
      }
      if (_typeof(rtDesc) === 'object') {
        return checkForObjectRtDesc(json, rtDesc);
      }
      if (typeof rtDesc === 'string') {
        return checkForStringRtDesc(json, rtDesc);
      }
      return false;
    };
    var _check = function check(json, rtDescs) {
      if (typeof json === 'string') {
        try {
          json = eval("(".concat(json, ")"));
        } catch (e) {
          log('parse json error');
          return false;
        }
      }
      if (_typeof(json) !== 'object') {
        log('must be object');
        return false;
      }
      if (!isArray(rtDescs)) {
        rtDescs = [rtDescs];
      }
      var rtDesc;
      var i = 0;
      while (rtDesc = rtDescs[i++]) {
        if (checkForRtDesc(json, rtDesc)) {
          return true;
        }
      }
      return false;
    };
    var RespTypes = {
      check: function check(json, rtDesc) {
        logList = [];
        try {
          var ret = _check(json, rtDesc);
          if (!ret) {
            printLog();
          }
          return ret;
        } catch (e) {
          logList.push("[rtException]".concat(e.toString()));
          printLog();
          return false;
        }
      },
      getMsg: function getMsg() {
        return logList.join(';');
      }
    };

    function _arrayWithHoles(arr) {
      if (Array.isArray(arr)) return arr;
    }

    function _iterableToArrayLimit(arr, i) {
      var _i = null == arr ? null : "undefined" != typeof Symbol &amp;&amp; arr[Symbol.iterator] || arr["@@iterator"];
      if (null != _i) {
        var _s,
          _e,
          _x,
          _r,
          _arr = [],
          _n = !0,
          _d = !1;
        try {
          if (_x = (_i = _i.call(arr)).next, 0 === i) {
            if (Object(_i) !== _i) return;
            _n = !1;
          } else for (; !(_n = (_s = _x.call(_i)).done) &amp;&amp; (_arr.push(_s.value), _arr.length !== i); _n = !0);
        } catch (err) {
          _d = !0, _e = err;
        } finally {
          try {
            if (!_n &amp;&amp; null != _i["return"] &amp;&amp; (_r = _i["return"](), Object(_r) !== _r)) return;
          } finally {
            if (_d) throw _e;
          }
        }
        return _arr;
      }
    }

    function _arrayLikeToArray(arr, len) {
      if (len == null || len &gt; arr.length) len = arr.length;
      for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i];
      return arr2;
    }

    function _unsupportedIterableToArray(o, minLen) {
      if (!o) return;
      if (typeof o === "string") return _arrayLikeToArray(o, minLen);
      var n = Object.prototype.toString.call(o).slice(8, -1);
      if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name;
      if (n === "Map" || n === "Set") return Array.from(o);
      if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
    }

    function _nonIterableRest() {
      throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
    }

    function _slicedToArray(arr, i) {
      return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
    }

    function _classCallCheck(instance, Constructor) {
      if (!(instance instanceof Constructor)) {
        throw new TypeError("Cannot call a class as a function");
      }
    }

    function _defineProperties(target, props) {
      for (var i = 0; i &lt; props.length; i++) {
        var descriptor = props[i];
        descriptor.enumerable = descriptor.enumerable || false;
        descriptor.configurable = true;
        if ("value" in descriptor) descriptor.writable = true;
        Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
      }
    }
    function _createClass(Constructor, protoProps, staticProps) {
      if (protoProps) _defineProperties(Constructor.prototype, protoProps);
      if (staticProps) _defineProperties(Constructor, staticProps);
      Object.defineProperty(Constructor, "prototype", {
        writable: false
      });
      return Constructor;
    }

    
    var prefix = '__WXLS__';
    var localStorage = window.localStorage || {
      getItem: function getItem() {},
      setItem: function setItem() {},
      removeItem: function removeItem() {},
      key: function key() {},
      clear: function clear() {
        var _a, _b;
        (_b = (_a = window.localStorage) === null || _a === void 0 ? void 0 : _a.clear) === null || _b === void 0 ? void 0 : _b.call(_a);
      },
      length: 0
    };
    var evictionPolicies = {
      noeviction: function noeviction(data) {
        return data;
      },
      'allkeys-random': function allkeysRandom(data, size) {
        var keys = Object.keys(data);
        var memCnt = 0;
        while (memCnt &lt; size) {
          var len = keys.length;
          var randomKeyIdx = Math.floor(Math.random() * len);
          var randomKey = keys[randomKeyIdx];
          memCnt += JSON.stringify(data[randomKey]).length;
          delete data[randomKey];
          keys = Object.keys(data);
        }
        return data;
      },
      'volatile-ttl': function volatileTtl(data, size) {
        var keys = Object.keys(data);
        keys = keys.sort(function (key1, key2) {
          var d1 = data[key1];
          var d2 = data[key2];
          if (d1.exp &lt; d2.exp) return -1;
          if (d1.exp &gt; d2.exp) return 1;
          return 0;
        });
        var memCnt = 0;
        for (var i = 0; i &lt; keys.length; i++) {
          if (memCnt &gt;= size) break;
          var key = keys[i];
          memCnt += JSON.stringify(data[key]).length;
          delete data[key];
        }
        return data;
      },
      'clear-all': function clearAll() {
        localStorage.clear();
        return {};
      }
    };
    function formatLogMsg(str) {
      return "[WXLS] ".concat(str);
    }
    
    var LS = function () {
      function LS(func, evictionPolicy, logger) {
        _classCallCheck(this, LS);
        this.logger = function () {};
        if (!func) throw 'require function name.';
        this.evictionPolicy = 'noeviction';
        this.key = func;
        if (typeof logger === 'function') {
          this.logger = function (str, type) {
            return logger(formatLogMsg(str), type);
          };
        }
        if (evictionPolicy &amp;&amp; Object.keys(evictionPolicies).indexOf(evictionPolicy) !== -1) {
          this.evictionPolicy = evictionPolicy;
        }
        this.init();
      }
      _createClass(LS, [{
        key: "init",
        value: function init() {
          var _a, _b;
          this.check();
          if (Math.random() * 1000 &lt; 1) {
            (_a = this.logger) === null || _a === void 0 ? void 0 : _a.call(this, "LSlen: ".concat(((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length) || localStorage.length), 'report');
          }
        }
      }, {
        key: "getData",
        value: function getData() {
          var data = LS.getItem(this.key) || '{}';
          try {
            data = JSON.parse(data);
          } catch (e) {
            this.logger("getData error: ".concat(e), 'error');
            localStorage.removeItem(prefix + this.key);
            data = {};
          }
          return data;
        }
      }, {
        key: "check",
        value: function check(isReturn) {
          var data = this.getData();
          var temp = {};
          var now = +new Date();
          var key;
          var val;
          for (key in data) {
            val = data[key];
            if (+val.exp &gt; now) {
              temp[key] = val;
            }
          }
          this.logger("check info: isReturn:".concat(isReturn, " data:").concat(JSON.stringify(temp)), 'info');
          if (isReturn) return temp;
          LS.setItem(this.key, JSON.stringify(temp), this.logger);
        }
      }, {
        key: "set",
        value: function set(key, val, exp) {
          var _a, _b;
          var data = this.check(true);
          data[key] = {
            val: val,
            exp: exp || +new Date()
          };
          try {
            if (localStorage.getItem(prefix + this.key)) localStorage.removeItem(prefix + this.key);
            localStorage.setItem(prefix + this.key, JSON.stringify(data));
            this.logger("first set success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data)), 'success');
          } catch (e) {
            this.logger("first set error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data), " k:").concat(key, " v:").concat(val, " exp:").concat(exp), 'error');
            localStorage.clear();
            LS.setItem(this.key, JSON.stringify(_defineProperty({}, key, {
              val: val,
              exp: exp || +new Date()
            })), this.logger);
          }
        }
      }, {
        key: "get",
        value: function get(key) {
          var data = this.getData();
          data = data[key];
          return data ? data.val || null : null;
        }
      }, {
        key: "remove",
        value: function remove(key) {
          var data = this.getData();
          if (data[key]) delete data[key];
          LS.setItem(this.key, JSON.stringify(data), this.logger);
        }
      }], [{
        key: "getItem",
        value: function getItem(key) {
          key = prefix + key;
          return localStorage.getItem(key);
        }
      }, {
        key: "setItem",
        value: function setItem(key, val, logger) {
          var _a, _b;
          key = prefix + key;
          var n = 3;
          while (n--) {
            try {
              if (localStorage.getItem(key)) localStorage.removeItem(key);
              localStorage.setItem(key, val);
              typeof logger === 'function' &amp;&amp; logger("setItem success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(key, " val:").concat(val), 'success');
              break;
            } catch (e) {
              typeof logger === 'function' &amp;&amp; logger("setItem error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(key, " val:").concat(val), 'error');
              LS.clear();
            }
          }
        }
      }, {
        key: "clear",
        value: function clear() {
          var i;
          var k;
          for (i = localStorage.length - 1; i &gt;= 0; i--) {
            k = localStorage.key(i);
            if (k.indexOf(prefix) == 0) {
              localStorage.removeItem(k);
            }
          }
        }
      }, {
        key: "getSupportEvicationPolicy",
        value: function getSupportEvicationPolicy() {
          return Object.keys(evictionPolicies);
        }
      }]);
      return LS;
    }();
    var innerVersion = (mmversion.getInner() || '').toUpperCase();
    var getBizLS = new LS('get_biz_result');
    var bizMap = {};
    var isGetBizSupported = mmversion.isOnlyWechat &amp;&amp; mmversion.isIOS &amp;&amp; innerVersion &gt;= '18003C2A' || mmversion.isOnlyWechat &amp;&amp; mmversion.isAndroid &amp;&amp; innerVersion &gt;= '28003D3C' || mmversion.isUnifiedPcWechat &amp;&amp; mmversion.cpVersion('4.1.10', 1, true, 'unifiedpc');
    mmversion.isOnlyWechat &amp;&amp; mmversion.isIOS || mmversion.isOnlyWechat &amp;&amp; mmversion.isAndroid || mmversion.isUnifiedPcWechat &amp;&amp; mmversion.cpVersion('4.1.10', 1, true, 'unifiedpc');
    function getBiz(needCheckBiz, bizType) {
      var _a;
      if (needCheckBiz === void 0) {
        needCheckBiz = false;
      }
      if (bizType === void 0) {
        bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
      }
      return new Promise(function (resolve, reject) {
        if (needCheckBiz || bizMap[bizType] === undefined) {
          if (!isGetBizSupported) {
            reject('Not support');
          } else {
            JSAPI.invoke('handleMPPageAction', {
              action: 'getBiz',
              needCheckBiz: needCheckBiz,
              bizType: bizType
            }, function (res) {
              console.log("getBiz with needCheckBiz=".concat(needCheckBiz, " res: ").concat(JSON.stringify(res)));
              if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf('ok') &gt; -1) {
                bizMap[bizType] = res.biz;
                resolve(res.biz);
                getBizLS.set("".concat(bizType, "_get_biz_result"), res.biz, +new Date() + 3 * 24 * 60 * 60 * 1000);
              } else {
                reject('Failed to get biz');
              }
            });
          }
        } else {
          resolve(bizMap[bizType]);
        }
      });
    }
    var getIsAuthor = function getIsAuthor(cb, bizuin, needCheckBiz, bizType) {
      var _a;
      if (bizuin === void 0) {
        bizuin = window.biz;
      }
      if (needCheckBiz === void 0) {
        needCheckBiz = false;
      }
      if (bizType === void 0) {
        bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
      }
      getBiz(needCheckBiz, bizType).then(function (biz) {
        cb(biz &amp;&amp; biz === bizuin);
      })["catch"](function () {
        cb(false);
      });
    };

    function parseUrl(url) {
      var len = url.length;
      var ques_pos = url.indexOf('?');
      var hash_pos = url.indexOf('#');
      hash_pos = hash_pos == -1 ? len : hash_pos;
      ques_pos = ques_pos == -1 ? hash_pos : ques_pos;
      var host = url.substring(0, ques_pos);
      var query_str = url.substring(ques_pos + 1, hash_pos);
      var hash = url.substring(hash_pos + 1);
      return {
        host: host,
        query_str: query_str,
        hash: hash
      };
    }
    function join(url, args, noEncode) {
      var ret = parseUrl(url);
      var query_str = ret.query_str;
      var args_arr = [];
      if (_typeof(args) === 'object') {
        for (var key in args) {
          if (args.hasOwnProperty(key)) {
            args_arr.push("".concat(key, "=").concat(noEncode ? args[key] : encodeURIComponent(args[key])));
          }
        }
      } else {
        args_arr.push(noEncode ? args : encodeURIComponent(args));
      }
      if (args_arr.length &gt; 0) {
        query_str += (query_str !== "" ? "&amp;" : "") + args_arr.join("&amp;");
      }
      return ret.host + (query_str !== "" ? "?".concat(query_str) : "") + (ret.hash !== "" ? "#".concat(ret.hash) : "");
    }
    
    function addParam(url, param, value, forceReplace) {
      url = url || location.href;
      var firstAndPos = url.indexOf("&amp;");
      var len = url.length;
      var reverseUrl = url.replace(/^[\w\d]+:[/\\]+/g, "").split("").reverse();
      if (!Array.prototype.indexOf) {
        Array.prototype.indexOf = function (searchElement, fromIndex) {
          var k;
          if (this == null) {
            throw new TypeError('"this" is null or not defined');
          }
          var O = Object(this);
          var len = O.length &gt;&gt;&gt; 0;
          if (len === 0) {
            return -1;
          }
          var n = fromIndex || 0;
          if (Math.abs(n) === Infinity) {
            n = 0;
          }
          if (n &gt;= len) {
            return -1;
          }
          k = Math.max(n &gt;= 0 ? n : len - Math.abs(n), 0);
          while (k &lt; len) {
            if (k in O &amp;&amp; O[k] === searchElement) {
              return k;
            }
            k++;
          }
          return -1;
        };
      }
      var lastSlashPos = len - 1 - reverseUrl.indexOf("/");
      if (firstAndPos !== -1 &amp;&amp; url.indexOf("?") == -1 &amp;&amp; firstAndPos &gt; lastSlashPos) {
        url = url.replace("&amp;", "?");
      }
      var reg = new RegExp("([\\?&amp;]".concat(param, "=)[^&amp;#]*"));
      if (!url.match(reg)) {
        var urlInfo = parseUrl(url);
        var hash = urlInfo.hash ? '#' + urlInfo.hash : '';
        url = url.replace(hash, '');
        var _pos = url.indexOf("?");
        if (_pos == -1) {
          return "".concat(url, "?").concat(param, "=").concat(value).concat(hash);
        }
        if (_pos == url.length - 1) {
          return "".concat(url + param, "=").concat(value).concat(hash);
        }
        return "".concat(url, "&amp;").concat(param, "=").concat(value).concat(hash);
      }
      if (forceReplace === true) {
        return url.replace(reg, "$1".concat(value));
      }
      return url;
    }
    function addWxfrom(src, wxfrom) {
      var offset = window.service_type === 1 ? 10000 : 0;
      return addParam(src, 'wxfrom', offset + Number(wxfrom), true);
    }
    function removeParam(url, param) {
      var _URL = new URL(url),
        protocol = _URL.protocol,
        host = _URL.host,
        pathname = _URL.pathname,
        search = _URL.search,
        hash = _URL.hash;
      var queryParams = new URLSearchParams(search);
      queryParams["delete"](param);
      var newSearch = queryParams.toString();
      var newUrl = new URL("".concat(protocol, "//").concat(host).concat(pathname).concat(newSearch ? "?".concat(decodeURIComponent(newSearch)) : "").concat(hash));
      return newUrl.toString();
    }
    function getQuery(name, url) {
      var u = url || window.location.search;
      var reg = new RegExp("(^|&amp;)".concat(name, "=([^&amp;]*)(&amp;|$)"));
      var r = u.substring(u.indexOf('?') + 1).match(reg);
      return r !== null ? r[2] : '';
    }
    function encodeBase64(value) {
      try {
        return window.btoa(value);
      } catch (e) {
        return '';
      }
    }
    function decodeBase64(value) {
      try {
        return window.atob(value);
      } catch (e) {
        return '';
      }
    }
    function joinUrl$1(url) {
      var obj = {};
      if (typeof window.uin !== 'undefined') {
        obj.uin = window.uin;
      }
      if (typeof window.key !== 'undefined') {
        obj.key = window.key;
      }
      if (typeof window.pass_ticket !== 'undefined') {
        obj.pass_ticket = window.pass_ticket;
      }
      if (typeof window.wxtoken !== 'undefined') {
        obj.wxtoken = window.wxtoken;
      }
      if (typeof window.devicetype !== 'undefined') {
        obj.devicetype = window.devicetype;
      }
      if (typeof window.clientversion !== 'undefined') {
        obj.clientversion = window.clientversion || mmversion.getInner();
      }
      obj.version = obj.clientversion;
      if (window.biz) {
        obj.__biz = window.biz;
      }
      if (getQuery('enterid')) {
        obj.enterid = getQuery('enterid');
      }
      if (typeof window.appmsg_token !== 'undefined') {
        obj.appmsg_token = window.appmsg_token;
      } else if (url.indexOf('advertisement_report') &gt; -1) {
        new Image().src = "".concat(location.protocol, "//mp.weixin.qq.com/mp/jsmonitor?idkey=68064_13_1&amp;r=").concat(Math.random());
      }
      obj.x5 = navigator.userAgent.indexOf('TBS/') !== -1 ? '1' : '0';
      obj.f = 'json';
      return join(url, obj);
    }
    function joinUserArticleRole(url, notJoin, cb) {
      var bizuin = arguments.length &gt; 3 &amp;&amp; arguments[3] !== undefined ? arguments[3] : window.biz;
      var needCheckBiz = arguments.length &gt; 5 &amp;&amp; arguments[5] !== undefined ? arguments[5] : false;
      if (notJoin) {
        cb(url);
      } else {
        getIsAuthor(function (isAuthor) {
          cb(addParam(url, 'user_article_role', isAuthor ? 1 : 0, true));
        }, bizuin, needCheckBiz);
      }
    }
    function getA8keyQuery(name, url) {
      return new Promise(function (resolve) {
        if (window.__secPageAuthPromise) {
          window.__secPageAuthPromise.then(function () {
            resolve(getQuery(name, url));
          });
        } else {
          resolve(getQuery(name, url));
        }
      });
    }
    function addHash(url, hash) {
      var isReplace = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
      if (isReplace) {
        return "".concat(url.split('#')[0]).concat(hash);
      }
      return "".concat(url).concat(url.indexOf('#') === -1 ? '#' : '').concat(hash);
    }
    function decodeUrl(url) {
      var _url = url;
      while (_url.indexOf('&amp;amp;') !== -1) {
        _url = _url.htmlDecode();
      }
      return _url;
    }
    var Url = {
      parseUrl: parseUrl,
      join: join,
      addParam: addParam,
      addWxfrom: addWxfrom,
      addHash: addHash,
      getQuery: getQuery,
      getA8keyQuery: getA8keyQuery,
      encodeBase64: encodeBase64,
      decodeBase64: decodeBase64,
      joinUrl: joinUrl$1,
      joinUserArticleRole: joinUserArticleRole,
      removeParam: removeParam,
      decodeUrl: decodeUrl
    };

    var _a;
    var doc;
    var isAcrossOrigin = false;
    try {
      doc = (_a = window.top) === null || _a === void 0 ? void 0 : _a.window.document;
    } catch (e) {
      isAcrossOrigin = true;
    }
    var StatusTextMap = {
      200: 'OK',
      302: 'Found',
      400: 'Bad Request',
      500: 'Internal Server Error'
    };
    function getIsAcrossOrigin() {
      return isAcrossOrigin;
    }
    function networkStartLog(item) {
      var _a, _b, _c, _d, _e;
      console.log('[system]', "&lt; [request ".concat(item.requestType, "]"), item.url, item.method, item);
      var rdevRequestId;
      var requestTime = performance.now() / 1000;
      if ((_b = (_a = window.RemoteDevSdk) === null || _a === void 0 ? void 0 : _a.instance) === null || _b === void 0 ? void 0 : _b.Network) {
        try {
          var willBeSentOptions = {
            url: item.url,
            method: item.method,
            requestHeaders: Object.assign({}, item.requestHeader || {}, {
              RDEV_REQUEST_TYPE: item.requestType
            }),
            requestBody: item.postData,
            requestTime: requestTime
          };
          rdevRequestId = window.RemoteDevSdk.instance.Network.customRequestWillBeSent(willBeSentOptions);
        } catch (err) {}
      }
      if ((_c = window.vConsole) === null || _c === void 0 ? void 0 : _c.network) {
        try {
          var vconsoleNetworkItem = (_e = (_d = window.vConsole.network).add) === null || _e === void 0 ? void 0 : _e.call(_d, Object.assign({}, item, {
            startTime: Date.now(),
            endTime: Date.now(),
            status: 0,
            readyState: 2,
            response: ''
          }));
          vconsoleNetworkItem.rdevRequestId = rdevRequestId;
          vconsoleNetworkItem.requestTime = requestTime;
          return vconsoleNetworkItem;
        } catch (err) {}
      }
      if (rdevRequestId) {
        return Object.assign(Object.assign({}, item), {
          id: '__only_rdev_log__',
          rdevRequestId: rdevRequestId,
          requestTime: requestTime
        });
      }
      return Object.assign({}, item, {
        id: '__system_log__'
      });
    }
    function networkEndLog(item) {
      var _a, _b, _c, _d, _e;
      console.log('[system]', "&gt; [response ".concat(item.requestType, "]"), item.url, item.response, item);
      if (item.rdevRequestId &amp;&amp; ((_b = (_a = window.RemoteDevSdk) === null || _a === void 0 ? void 0 : _a.instance) === null || _b === void 0 ? void 0 : _b.Network) &amp;&amp; item.id !== '__system_log__') {
        try {
          var finishedOptions = {
            requestId: item.rdevRequestId,
            url: item.url,
            status: +(item.status || '500'),
            statusText: StatusTextMap[+(item.status || '500')] || 'Error',
            responseHeaders: {
              RDEV_RESPONSE_TYPE: item.requestType
            },
            responseBody: item.response,
            requestTime: item.requestTime || 0,
            duration: item.costTime || (item.endTime &amp;&amp; item.startTime ? item.endTime - item.startTime : performance.now() / 1000 - (item.requestTime || 0))
          };
          window.RemoteDevSdk.instance.Network.customRequestFinished(finishedOptions);
        } catch (err) {}
      }
      if (((_c = window.vConsole) === null || _c === void 0 ? void 0 : _c.network) &amp;&amp; item.id !== '__system_log__') {
        try {
          item.statusText = "".concat(item.status);
          item.responseSize = item.response.length;
          item.responseSizeText = "".concat(item.response.length);
          return (_e = (_d = window.vConsole.network).update) === null || _e === void 0 ? void 0 : _e.call(_d, item.id, Object.assign({}, item, {
            readyState: 4
          }));
        } catch (err) {}
      }
    }
    function reqType(obj, path) {
      return obj.url.indexOf(path) &gt; -1 &amp;&amp; obj.url.indexOf('action=') === -1 &amp;&amp; (!obj.data || !obj.data.action);
    }
    function findAjaxScopeByConfig(url, config) {
      var pathname = new URL(url, location.href).pathname || '';
      var scope = config[pathname.slice(1)];
      if (scope) {
        return scope;
      }
    }
    function getAjaxScope(ajaxUrl) {
      if (Url.getQuery('no_transfer', location.href) !== '1' &amp;&amp; mmversion.isWechat &amp;&amp; !mmversion.isInMiniProgram &amp;&amp; !mmversion.isWxWork &amp;&amp; !mmversion.isMpapp &amp;&amp; !isAcrossOrigin &amp;&amp; window.__ajaxTransferConfig &amp;&amp; _typeof(window.__ajaxTransferConfig) === 'object' &amp;&amp; (
      mmversion.isIOS &amp;&amp; mmversion.compareHexVersion('1800282F') || mmversion.isAndroid &amp;&amp; mmversion.compareHexVersion('28002234') || mmversion.isWindowsWechat &amp;&amp; mmversion.cpVersion('3.9.5', 1, true, 'windows') || mmversion.isMacWechat &amp;&amp; mmversion.cpVersion('3.8.4', 1, true, 'mac') || mmversion.isHarmonyWechat &amp;&amp; mmversion.compareHexVersion('0xf3100b00') &amp;&amp; !mmversion.compareHexVersion('0xf3100c00') || mmversion.compareHexVersion('0xf3800b00'))) {
        try {
          return findAjaxScopeByConfig(ajaxUrl, window.__ajaxTransferConfig);
        } catch (err) {
          
        }
      }
    }
    function getActionByData(data) {
      var _a, _b;
      if (_typeof(data) === 'object' &amp;&amp; !(data instanceof Blob)) {
        if (data.hasOwnProperty('data') &amp;&amp; typeof data.data === 'string') {
          try {
            var workedData = JSON.parse(data.data);
            return workedData.action || '';
          } catch (e) {}
        }
        return data.action || '';
      }
      if (typeof data === 'string') {
        return ((_b = (_a = data.split(/[?&amp;]/).find(function (x) {
          return x.indexOf('action=') &gt;= 0;
        })) === null || _a === void 0 ? void 0 : _a.split('=')) === null || _b === void 0 ? void 0 : _b[1]) || '';
      }
      return '';
    }

    var METHOD_ENUM = {
      GET: 0,
      POST: 1
    };
    var __moon_report = window.__moon_report || function () {};
    var MOON_AJAX_SUCCESS_OFFSET = 3;
    var MOON_AJAX_NETWORK_OFFSET = 4;
    var MOON_AJAX_ERROR_OFFSET = 5;
    var MOON_AJAX_TIMEOUT_OFFSET = 6;
    var MOON_AJAX_COMPLETE_OFFSET = 7;
    var LENGTH_LIMIT = 4096;
    function reportRtError(type, id, key, content) {
      var log = '';
      var prefix = type === 'rt' ? 'rtCheckError' : 'Ajax Length Limit';
      if (content === null || content === void 0 ? void 0 : content.length) {
        var loglen = 1000;
        var len = content.length;
        var lc = Math.ceil(len / loglen);
        log = ["&amp;lc=".concat(lc)];
        for (var i = 0; i &lt; lc; ++i) {
          log.push("&amp;log".concat(i, "=") + "[".concat(prefix, "][").concat(i, "]").concat(encodeURIComponent(content.substring(i * loglen, i * loglen + loglen))));
        }
        log = log.join('');
      }
      var data = "idkey=".concat(id, "_").concat(key, "_1").concat(log, "&amp;r=").concat(Math.random());
      var xmlobj = new XMLHttpRequest();
      xmlobj.open('POST', "".concat(location.protocol, "//").concat(location.host, "/mp/jsmonitor?"), true);
      xmlobj.setRequestHeader('cache-control', 'no-cache');
      xmlobj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
      xmlobj.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
      xmlobj.send(data);
      if (type === 'ajaxLen') {
        monitor$1.setLogs({
          id: id,
          key: key,
          value: 1,
          log: log
        });
      }
    }
    function reportRt(id, key, content) {
      reportRtError('rt', id, key, content);
    }
    function reportAjaxLength(id, key, content) {
      reportRtError('ajaxLen', id, key, content);
    }
    function setXhrHeader(xhr, type, opt) {
      if (opt.contentType) {
        xhr.setRequestHeader('Content-Type', opt.contentType);
      } else if (type === 'POST') {
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
      }
      if (!opt.noXRequestedWidthHeader) {
        xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
      }
    }
    function Ajax(obj) {
      var report36408 = typeof obj.report36408 === 'function' ? obj.report36408 : function () {};
      if (obj.usePb) {
        obj.type = 'POST';
        obj.data = {
          data: JSON.stringify(obj.data)
        };
      }
      var ajaxScope = getAjaxScope(obj.url);
      var type = (obj.type || 'GET').toUpperCase();
      var timer;
      var _url;
      if (obj.notJoinUrl) {
        _url = obj.url;
      } else {
        _url = Url.joinUrl(obj.url);
      }
      Url.joinUserArticleRole(_url, !!obj.notJoinUrl, function (url) {
        var urlObj = new URL(url, location.origin);
        if (obj.f === 'html') {
          url = url.replace('&amp;f=json', '');
        }
        var data = null;
        if (obj.data instanceof Blob) {
          data = obj.data;
        } else if (_typeof(obj.data) === 'object') {
          var d = obj.data;
          var ds = [];
          for (var k in d) {
            if (d.hasOwnProperty(k)) {
              ds.push("".concat(k, "=").concat(encodeURIComponent(d[k])));
            }
          }
          data = ds.join('&amp;');
        } else {
          data = typeof obj.data === 'string' ? obj.data : null;
        }
        var beginTs;
        var beforeReq = function beforeReq() {
          if (reqType(obj, '/mp/getappmsgext')) {
            window.startGetAppmsgExtTime = Date.now();
            Log.log('start get appmsgext, url: ', obj.url);
          }
          if (reqType(obj, '/mp/getappmsgad')) {
            window.startGetAppmsgAdTime = Date.now();
            Log.log('start get appmsgad, url: ', obj.url);
          }
          beginTs = Date.now();
        };
        var beforeResp = function beforeResp(xhr) {
          if (reqType(obj, '/mp/getappmsgext')) {
            window.receiveGetAppmsgExt = "".concat(xhr.status, "|").concat(Date.now());
            Log.log("receive appmsgext response, status: ".concat(xhr.status));
          }
          if (reqType(obj, '/mp/getappmsgad')) {
            window.receiveGetAppmsgAd = "".concat(xhr.status, "|").concat(Date.now());
            Log.log("receive appmsgad response, status: ".concat(xhr.status));
          }
          if (Math.random() &lt; 0.001 &amp;&amp; window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs) {
            try {
              var key = ajaxScope ? 'transfer' : 'xhr';
              var interval = 250;
              var time = Date.now() - beginTs;
              var range = Math.floor(time / interval) * interval;
              var pathname = new URL(obj.url, location.href).pathname || '';
              window.WX_BJ_REPORT.BadJs.report("".concat(key, "_perf:").concat(pathname), JSON.stringify({
                status: xhr.status,
                time: "[".concat(range, "-").concat(range + interval, ")")
              }), {
                mid: 'mmbizwap:ajaxtransfer',
                view: 'wap_business'
              });
            } catch (err) {}
          }
        };
        var handleRespSucc = function handleRespSucc(xhr, requestType) {
          var _a, _b, _c, _d;
          try {
            var responseText = xhr.responseText;
            var resp = responseText;
            if (obj.dataType === 'json') {
              try {
                if (JSON &amp;&amp; JSON.parse) {
                  resp = JSON.parse(resp);
                } else {
                  resp = eval("(".concat(resp, ")"));
                  monitor$1.setSum(523105, 127, 1).send();
                }
                var rtId = obj.rtId;
                var rtKey = obj.rtKey || 0;
                var rtDesc = obj.rtDesc;
                if (rtId &amp;&amp; rtDesc &amp;&amp; RespTypes &amp;&amp; !RespTypes.check(resp, rtDesc)) {
                  reportRt(+rtId, +rtKey, "".concat(RespTypes.getMsg(), "[detail]").concat(responseText, ";").concat(obj.url));
                }
                if (resp &amp;&amp; resp.base_resp &amp;&amp; ((_a = resp.base_resp) === null || _a === void 0 ? void 0 : _a.ret) !== 0 &amp;&amp; typeof window.WX_BJ_REPORT !== 'undefined' &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; Math.random() &lt; 0.001) {
                  var reportUrl = url;
                  if (url.indexOf('?') !== -1) {
                    reportUrl = url.substring(0, url.indexOf('?'));
                    if (Url.getQuery('action', url)) {
                      reportUrl = "".concat(reportUrl, "?action=").concat(Url.getQuery('action', url));
                    }
                  }
                  if (!((reportUrl === '/mp/getappmsgext' || reportUrl === '/mp/getappmsgad') &amp;&amp; typeof resp.base_resp.ret === 'undefined')) {
                    window.WX_BJ_REPORT.BadJs.report(reportUrl, "ret=".concat(resp.base_resp.ret), {
                      mid: window.PAGE_MID,
                      view: 'wap_retcode'
                    });
                  }
                }
              } catch (e) {
                obj.error &amp;&amp; obj.error(xhr, {
                  type: 1,
                  error: e,
                  status: xhr.status
                });
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                    Method: type || '',
                    RequestType: requestType || 0,
                    RetType: 1,
                    HttpCode: xhr.status || 0,
                    Ret: 0
                  });
                }
                return;
              }
            }
            if (_typeof(resp) === 'object' &amp;&amp; ((_b = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _b === void 0 ? void 0 : _b.ret) !== 0) {
              if (!obj.dontReport) {
                report36408({
                  CgiPath: urlObj.pathname || '',
                  Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                  Query: urlObj.search || '',
                  PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                  Method: type || '',
                  RequestType: requestType || 0,
                  RetType: 4,
                  HttpCode: xhr.status || 0,
                  Ret: ((_c = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _c === void 0 ? void 0 : _c.ret) || 0
                });
              }
            } else {
              if (!obj.dontReport) {
                report36408({
                  CgiPath: urlObj.pathname || '',
                  Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                  Query: urlObj.search || '',
                  PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                  Method: type || '',
                  RequestType: requestType || 0,
                  RetType: 0,
                  HttpCode: xhr.status || 0,
                  Ret: ((_d = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _d === void 0 ? void 0 : _d.ret) || 0
                });
              }
            }
            obj.success &amp;&amp; obj.success(resp);
          } catch (e) {
            __moon_report({
              offset: MOON_AJAX_SUCCESS_OFFSET,
              e: e
            });
            throw e;
          }
        };
        var handleRespErr = function handleRespErr(xhr, error, requestType) {
          try {
            obj.error &amp;&amp; obj.error(xhr, {
              type: 2,
              error: error,
              status: xhr.status
            });
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                Method: type,
                RequestType: requestType,
                RetType: 2,
                HttpCode: xhr.status,
                Ret: 0
              });
            }
          } catch (e) {
            __moon_report({
              offset: MOON_AJAX_ERROR_OFFSET,
              e: e
            });
            throw e;
          }
        };
        var handleRespComplete = function handleRespComplete() {
          clearTimeout(timer);
          try {
            obj.complete &amp;&amp; obj.complete();
          } catch (e) {
            __moon_report({
              offset: MOON_AJAX_COMPLETE_OFFSET,
              e: e
            });
            throw e;
          }
          obj.complete = null;
        };
        var handleReqTimeout = function handleReqTimeout(xhr) {
          if (typeof obj.timeout !== 'undefined') {
            timer = setTimeout(function () {
              xhr.abort();
              try {
                obj.complete &amp;&amp; obj.complete();
              } catch (e) {
                __moon_report({
                  offset: MOON_AJAX_COMPLETE_OFFSET,
                  e: e
                });
                throw e;
              }
              obj.complete = null;
              __moon_report({
                offset: MOON_AJAX_TIMEOUT_OFFSET,
                log: "ajax_timeout_error: ".concat(url),
                e: ''
              });
            }, obj.timeout);
          }
        };
        var retryXhrFn = function retryXhrFn(res, isTimeout, reqLogItem) {
          var retryXhr = new XMLHttpRequest();
          try {
            retryXhr._noVConsole = true;
          } catch (err) {}
          retryXhr.open(type, url);
          retryXhr.onreadystatechange = function () {
            if (isTimeout) return;
            if (retryXhr.readyState === 3) {
              obj.received &amp;&amp; obj.received(retryXhr);
            }
            if (retryXhr.readyState === 4) {
              beforeResp(retryXhr);
              var retryStatus = retryXhr.status;
              if (retryStatus &gt;= 200 &amp;&amp; retryStatus &lt; 400) {
                handleRespSucc(retryXhr, 1);
              } else {
                handleRespErr(retryXhr, res, 1);
                window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; window.WX_BJ_REPORT.BadJs.report('req_failure', JSON.stringify({
                  retryXhrStatus: retryStatus,
                  transferRes: res
                }), {
                  mid: 'mmbizwap:ajaxtransfer',
                  view: 'wap_business'
                });
              }
              reqLogItem.status = retryStatus;
              reqLogItem.endTime = Date.now();
              reqLogItem.response = retryXhr.responseText;
              handleRespComplete();
              networkEndLog(reqLogItem);
            }
          };
          setXhrHeader(retryXhr, type, obj);
          retryXhr.send(data);
        };
        if (ajaxScope &amp;&amp; !obj.pureHttp) {
          var header = {
            'User-Agent': navigator.userAgent,
            'Cookie': (window.__test_env__ ? 'uniproxy_route=1; ' : '') + document.cookie,
            'Referer': location.href
          };
          if (obj.contentType) {
            header['Content-Type'] = obj.contentType;
          } else if (type === 'POST') {
            header['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
          }
          if (!obj.noXRequestedWidthHeader) {
            header['X-Requested-With'] = 'XMLHttpRequest';
          }
          var reqUrl = new URL(url, location.href).href;
          var method = METHOD_ENUM[type] || 0;
          var params = Device.os.pc ? {
            url: reqUrl,
            req_json: data || '',
            scope: ajaxScope,
            webcgi_method: method,
            webcgi_header: Object.keys(header).map(function (headerItemKey) {
              return Device.os.Mac ? _defineProperty({}, headerItemKey, header[headerItemKey]) : {
                key: headerItemKey,
                value: header[headerItemKey]
              };
            }),
            cgi_type: 1
          } : {
            reqUrl: reqUrl,
            reqBody: data,
            scope: ajaxScope,
            method: method,
            header: header
          };
          var reqLogItem = networkStartLog({
            method: type,
            url: url,
            postData: obj.data || {},
            requestHeader: header,
            requestType: 'transfer',
            startTime: Date.now(),
            responseType: url.indexOf('f=json') &gt; 0 ? 'json' : undefined
          });
          var isTimeout = false;
          handleReqTimeout({
            abort: function abort() {
              isTimeout = true;
              reqLogItem.endTime = Date.now();
              reqLogItem.response = 'timeout';
              networkEndLog(reqLogItem);
            }
          });
          Device.os.pc &amp;&amp; monitor$1.setSum(115849, 69, 1);
          JSAPI.invoke(Device.os.pc ? 'H5ExtTransfer' : 'webTransfer', params, function (res) {
            var _a, _b, _c, _d, _e, _f;
            if (isTimeout) return;
            var status = 400;
            var result = '';
            if (Device.os.pc) {
              try {
                var retFlag = res.base_resp.ret === 0 &amp;&amp; res.jsapi_resp.ret === 0 &amp;&amp; res.err_msg.indexOf(':ok') &gt; -1;
                var respJsonFlag = res.jsapi_resp.resp_json;
                status = retFlag &amp;&amp; respJsonFlag ? 200 : 400;
                result = res.jsapi_resp.resp_json;
              } catch (err) {
                console.error(err);
              }
            } else {
              status = res &amp;&amp; res.errCode * 1 === 0 &amp;&amp; typeof res.result === 'string' &amp;&amp; res.result ? 200 : 400;
              result = res.result;
            }
            try {
              Log.log("ajax transfer, status: ".concat(status, ", reqUrl: ").concat(reqUrl));
            } catch (err) {
              console.error(err);
            }
            if (status &gt;= 200 &amp;&amp; status &lt; 400) {
              obj.received &amp;&amp; obj.received(null);
              beforeResp({
                status: status
              });
              handleRespSucc({
                status: status,
                responseText: result
              }, 10);
              reqLogItem.status = status;
              reqLogItem.endTime = Date.now();
              reqLogItem.response = result;
              handleRespComplete();
              networkEndLog(reqLogItem);
            } else if (window.__second_open__) {
              JSAPI.invoke('request', {
                url: reqUrl,
                method: type,
                data: data,
                header: header
              }, function (retryRes) {
                try {
                  Log.log("ajax retry request, retryStatus: ".concat((retryRes === null || retryRes === void 0 ? void 0 : retryRes.statusCode) || '', ", reqUrl: ").concat(reqUrl));
                } catch (err) {
                  console.error(err);
                }
                if (isTimeout) return;
                var retryStatus = retryRes.statusCode;
                obj.received &amp;&amp; obj.received(null);
                beforeResp({
                  status: retryStatus
                });
                if (retryRes.err_msg.indexOf(':ok') &gt; -1 &amp;&amp; retryStatus &gt;= 200 &amp;&amp; retryStatus &lt; 400) {
                  handleRespSucc({
                    status: retryStatus,
                    responseText: retryRes.data
                  }, 20);
                } else {
                  retryXhrFn(res, isTimeout, reqLogItem);
                  handleRespErr({
                    status: retryStatus
                  }, res, 20);
                  window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; window.WX_BJ_REPORT.BadJs.report('req_failure_sec_open', JSON.stringify({
                    retryReqJsapiRes: retryRes,
                    transferRes: res,
                    url: reqUrl
                  }), {
                    mid: 'mmbizwap:ajaxtransfer',
                    view: 'wap_business'
                  });
                }
                reqLogItem.status = retryStatus;
                reqLogItem.endTime = Date.now();
                reqLogItem.response = retryRes.data;
                handleRespComplete();
                networkEndLog(reqLogItem);
              });
            } else {
              retryXhrFn(res, isTimeout, reqLogItem);
            }
            if (Device.os.pc) {
              if (!res.err_msg.includes(':ok')) {
                (_b = (_a = window.WX_BJ_REPORT) === null || _a === void 0 ? void 0 : _a.BadJs) === null || _b === void 0 ? void 0 : _b.report("pc transfer res no ok: ".concat(res.err_msg), params.url || '', {
                  mid: window.PAGE_MID,
                  _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
                });
              }
              try {
                if (res.jsapi_resp.resp_json &amp;&amp; JSON.parse(res.jsapi_resp.resp_json).base_resp.ret !== 0 &amp;&amp; JSON.parse(res.jsapi_resp.resp_json).base_resp.ret !== 190001 || res.base_resp.ret !== 0 || res.jsapi_resp.ret !== 0) {
                  (_d = (_c = window.WX_BJ_REPORT) === null || _c === void 0 ? void 0 : _c.BadJs) === null || _d === void 0 ? void 0 : _d.report("pc transfer res invalid ret", params.url || '', {
                    mid: window.PAGE_MID,
                    _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
                  });
                }
              } catch (err) {}
            } else {
              try {
                if (res.errCode !== 0) {
                  (_f = (_e = window.WX_BJ_REPORT) === null || _e === void 0 ? void 0 : _e.BadJs) === null || _f === void 0 ? void 0 : _f.report("mobile transfer res invalid ret", params.url || '', {
                    mid: window.PAGE_MID,
                    _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
                  });
                }
              } catch (err) {}
            }
          });
          beforeReq();
          return;
        }
        var xhr = new XMLHttpRequest();
        var mayAbort = !!obj.mayAbort;
        var async = typeof obj.async === 'undefined' ? true : obj.async;
        var _onreadystatechange = xhr.onreadystatechange;
        xhr.open(type, url, async);
        xhr.onreadystatechange = function () {
          if (typeof _onreadystatechange === 'function') {
            _onreadystatechange.apply(xhr);
          }
          if (xhr.readyState === 3) {
            obj.received &amp;&amp; obj.received(xhr);
          }
          if (xhr.readyState === 4) {
            beforeResp(xhr);
            xhr.onreadystatechange = null;
            var status = xhr.status;
            if (status &gt;= 200 &amp;&amp; status &lt; 400) {
              handleRespSucc(xhr, 1);
            } else {
              handleRespErr(xhr, 'status error', 1);
              if (!!status || !mayAbort) {
                var __ajaxtest = window.__ajaxtest || '0';
                __moon_report({
                  offset: MOON_AJAX_NETWORK_OFFSET,
                  log: "ajax_network_error[".concat(status, "][").concat(__ajaxtest, "]: ").concat(url, ";host:").concat(location.host),
                  e: ''
                });
              }
            }
            handleRespComplete();
          }
        };
        setXhrHeader(xhr, type, obj);
        handleReqTimeout(xhr);
        try {
          xhr.send(data);
          try {
            if (url &amp;&amp; url.length &gt; LENGTH_LIMIT) {
              reportAjaxLength(27613, 17, "ajax get limit[length: ".concat(url.length, "]").concat(url.substring(0, 1024)));
            }
            if (data &amp;&amp; !(data instanceof Blob) &amp;&amp; data.length &gt; LENGTH_LIMIT) {
              reportAjaxLength(27613, 18, "ajax post limit[length: ".concat(data.length, "]").concat(data.substring(0, 1024)));
            }
            if (data &amp;&amp; data instanceof Blob &amp;&amp; data.size &gt; LENGTH_LIMIT) {
              reportAjaxLength(27613, 18, "ajax post limit[length: ".concat(data.size, "]blob"));
            }
          } catch (e) {
          }
        } catch (e) {
          obj.error &amp;&amp; obj.error(xhr, {
            type: 3,
            error: e,
            status: 0
          });
        }
        beforeReq();
      });
    }

    
    mmversion.isWindowsWechat &amp;&amp; mmversion.compareHexVersion('0xf2550000') || mmversion.isMacWechat &amp;&amp; mmversion.compareHexVersion('0xf2650000');

    
    var getBrandServiceType = function getBrandServiceType() {
      var serviceType = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : window.service_type;
      var _a, _b;
      var brandServiceType = 0;
      if (serviceType !== undefined) brandServiceType = serviceType + 1;
      if (((_b = (_a = window.cgiData) === null || _a === void 0 ? void 0 : _a.trans_appmsg_info) === null || _b === void 0 ? void 0 : _b.trans_type) * 1 === 1) brandServiceType = 3;
      return brandServiceType;
    };

    function setCurrentMpInfo(ifShow) {
      var supportNewTopBar = mmversion.isIOS &amp;&amp; mmversion.gtVersion('7.0.10', true) || mmversion.isAndroid &amp;&amp; mmversion.gtVersion('7.0.12', true);
      var supportLiveStatus = mmversion.isIOS &amp;&amp; mmversion.gtVersion('8.0.46', true) || mmversion.isAndroid &amp;&amp; mmversion.gtVersion('8.0.46', true);
      JSAPI.invoke('currentMpInfo', {
        userName: window.user_name,
        brandName: !!supportNewTopBar &amp;&amp; window.nickname === '' ? '未命名账号' : window.title,
        title: window.msg_title || '',
        brandIcon: window.hd_head_img.replace(/\/0$/, '/132'),
        itemShowType: window.item_show_type,
        isPaySubscribe: window.isPaySubscribe,
        topBarStyle: supportNewTopBar ? 1 : 0,
        topBarShowed: ifShow,
        disableShowFinderLiveTopBar: !ifShow &amp;&amp; supportLiveStatus ? 1 : 0,
        brandServiceType: getBrandServiceType()
      }, function () {});
    }
    function AjaxWx(obj) {
      var report36408 = typeof obj.report36408 === 'function' ? obj.report36408 : function () {};
      obj.url += obj.url.indexOf('?') === -1 ? '?fasttmplajax=1' : '&amp;fasttmplajax=1';
      if (getAjaxScope(obj.url)) {
        Ajax(obj);
        return;
      }
      if (obj.usePb) {
        obj.type = 'POST';
        obj.data = {
          data: JSON.stringify(obj.data)
        };
      }
      if (!/^(http:\/\/|https:\/\/|\/\/)/.test(obj.url)) {
        obj.url = "https://mp.weixin.qq.com/".concat(obj.url.replace(/^\//, ''));
      } else if (/^\/\//.test(obj.url)) {
        obj.url = "https:".concat(obj.url);
      }
      if (obj.f !== 'html' &amp;&amp; (obj.url.indexOf('?f=json') === -1 || obj.url.indexOf('&amp;f=json') === -1)) {
        obj.url += '&amp;f=json';
      }
      if (!obj.notJoinUrl &amp;&amp; obj.f !== 'html') {
        obj.url = Url.joinUrl(obj.url);
      }
      Url.joinUserArticleRole(obj.url, !!obj.notJoinUrl, function (url) {
        obj.url = url;
        var urlObj = new URL(url, location.origin);
        var data = null;
        if (_typeof(obj.data) === 'object') {
          var d = obj.data;
          var ds = [];
          for (var k in d) {
            if (d.hasOwnProperty(k)) {
              ds.push("".concat(k, "=").concat(encodeURIComponent(d[k])));
            }
          }
          data = ds.join('&amp;');
        } else {
          data = typeof obj.data === 'string' ? obj.data : null;
        }
        var header = {
          Cookie: document.cookie,
          referer: location.href
        };
        if (obj.contentType) {
          header['Content-Type'] = obj.contentType;
        } else if ((obj.type || 'GET').toUpperCase() === 'POST') {
          header['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
        }
        var reqLogItem = networkStartLog({
          method: obj.type || 'GET',
          url: obj.url,
          postData: obj.data || {},
          requestHeader: header,
          requestType: 'jsapi',
          startTime: Date.now()
        });
        var retryTime = 1;
        var jsapiRequest = function jsapiRequest(obj, data) {
          return JSAPI.invoke('request', {
            url: obj.url,
            method: obj.type,
            data: data,
            header: header
          }, function (res) {
            var _a, _b, _c, _d, _e, _f;
            if (res.err_msg.indexOf(':ok') &gt; -1 &amp;&amp; (!res.statusCode || res.statusCode &gt;= 200 &amp;&amp; res.statusCode &lt; 400)) {
              if (reqType(obj, '/mp/getappmsgext')) {
                window.receiveGetAppmsgExt = "".concat(res.statusCode, "|").concat(Date.now());
              }
              if (reqType(obj, '/mp/getappmsgad')) {
                window.receiveGetAppmsgAd = "".concat(res.statusCode, "|").concat(Date.now());
              }
              if (retryTime === 1) {
                obj.received &amp;&amp; obj.received(null);
              }
              var resData = {};
              if (res.data) {
                try {
                  if (obj.dataType === 'json') {
                    resData = JSON.parse(res.data);
                  } else {
                    resData = res.data;
                  }
                  if (resData &amp;&amp; resData.base_resp &amp;&amp; ((_a = resData.base_resp) === null || _a === void 0 ? void 0 : _a.ret) !== 0 &amp;&amp; typeof window.WX_BJ_REPORT !== 'undefined' &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; Math.random() &lt; 0.001) {
                    var reportUrl = obj.url;
                    if (obj.url.indexOf('?') !== -1) {
                      reportUrl = obj.url.substring(0, obj.url.indexOf('?'));
                      if (Url.getQuery('action', obj.url)) {
                        reportUrl = "".concat(reportUrl, "?action=").concat(Url.getQuery('action', obj.url));
                      }
                    }
                    if (!((reportUrl === '/mp/getappmsgext' || reportUrl === '/mp/getappmsgad') &amp;&amp; typeof resData.base_resp.ret === 'undefined')) {
                      window.WX_BJ_REPORT.BadJs.report(reportUrl, "ret=".concat(resData.base_resp.ret), {
                        mid: window.PAGE_MID,
                        view: 'wap_retcode'
                      });
                    }
                  }
                } catch (e) {
                  if (!obj.dontReport) {
                    report36408({
                      CgiPath: urlObj.pathname || '',
                      Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                      Query: urlObj.search || '',
                      PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                      Method: obj.type || '',
                      RequestType: 20,
                      RetType: 1,
                      HttpCode: res.statusCode || 0,
                      Ret: ((_b = resData === null || resData === void 0 ? void 0 : resData.base_resp) === null || _b === void 0 ? void 0 : _b.ret) || 0
                    });
                  }
                  console.error(e);
                  obj.error &amp;&amp; obj.error(null, {
                    type: 1,
                    error: e,
                    status: res.statusCode
                  });
                  obj.complete &amp;&amp; obj.complete();
                  reqLogItem.endTime = Date.now();
                  reqLogItem.response = res;
                  networkEndLog(reqLogItem);
                  return;
                }
              }
              var tmpResData = {};
              try {
                tmpResData = JSON.parse(res.data);
              } catch (e) {}
              if (tmpResData &amp;&amp; tmpResData.base_resp &amp;&amp; tmpResData.base_resp.ret === -3 &amp;&amp; retryTime &lt; 2 &amp;&amp; (mmversion.isIOS || mmversion.isAndroid &amp;&amp; mmversion.getInner() &gt; '27000600')) {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 1,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_c = resData === null || resData === void 0 ? void 0 : resData.base_resp) === null || _c === void 0 ? void 0 : _c.ret) || 0
                  });
                }
                var _retryTime = retryTime++;
                JSAPI.invoke('updatePageAuth', {}, function (res) {
                  console.log('[skeleton] updatePageAuth', res);
                  monitor$1.setSum(112287, 3, 1);
                  if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf(':ok') &gt; -1) {
                    window.top.pass_ticket = encodeURIComponent(Url.getQuery('pass_ticket', res.fullUrl).html(false).replace(/\s/g, '+'));
                    if (obj.pass_ticket) {
                      obj.pass_ticket = window.top.pass_ticket;
                    }
                    console.warn('[skeleton] updatePageAuth resetTopbar');
                    var supportNewTopBar = mmversion.isIOS &amp;&amp; mmversion.gtVersion('7.0.10', true);
                    var showBottomBar = !!window.is_login;
                    if (window.top.item_show_type === '0' &amp;&amp; supportNewTopBar) {
                      var top = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop || 0;
                      setCurrentMpInfo(top &gt; 40 &amp;&amp; !showBottomBar);
                    }
                    try {
                      obj.url = Url.addParam(obj.url, 'retry', _retryTime, true);
                    } catch (err) {
                      console.error(err);
                    }
                    jsapiRequest(obj, data);
                    monitor$1.setSum(112287, 4, 1);
                  } else {
                    obj.success &amp;&amp; obj.success(resData);
                    obj.complete &amp;&amp; obj.complete();
                    if (mmversion.isIOS) {
                      monitor$1.setSum(112287, 35, 1);
                    } else {
                      monitor$1.setSum(112287, 36, 1);
                    }
                    reqLogItem.status = 200;
                    reqLogItem.endTime = Date.now();
                    reqLogItem.response = resData;
                    networkEndLog(reqLogItem);
                  }
                });
              } else {
                if (((_d = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _d === void 0 ? void 0 : _d.ret) !== 0) {
                  if (!obj.dontReport) {
                    report36408({
                      CgiPath: urlObj.pathname || '',
                      Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                      Query: urlObj.search || '',
                      PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                      Method: obj.type || '',
                      RequestType: 20,
                      RetType: 4,
                      HttpCode: res.statusCode || 0,
                      Ret: ((_e = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _e === void 0 ? void 0 : _e.ret) || 0
                    });
                  }
                } else {
                  if (!obj.dontReport) {
                    report36408({
                      CgiPath: urlObj.pathname || '',
                      Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                      Query: urlObj.search || '',
                      PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                      Method: obj.type || '',
                      RequestType: 20,
                      RetType: 0,
                      HttpCode: res.statusCode || 0,
                      Ret: ((_f = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _f === void 0 ? void 0 : _f.ret) || 0
                    });
                  }
                }
                obj.success &amp;&amp; obj.success(resData);
                obj.complete &amp;&amp; obj.complete();
                reqLogItem.status = 200;
                reqLogItem.endTime = Date.now();
                reqLogItem.response = resData;
                networkEndLog(reqLogItem);
              }
            } else if (res.err_msg.indexOf('no permission') &gt; -1 || !mmversion.isOnlyWechat) {
              if (!obj.dontReport) {
                report36408({
                  CgiPath: urlObj.pathname || '',
                  Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                  Query: urlObj.search || '',
                  PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                  Method: obj.type || '',
                  RequestType: 20,
                  RetType: 1,
                  HttpCode: res.statusCode || 0,
                  Ret: 0
                });
              }
              Ajax(obj);
              if (res.err_msg.indexOf('no permission') &gt; -1) {
                console.warn('[JSAPI Request] No permission');
                monitor$1.setSum(112287, 31, 1);
              }
              reqLogItem.status = 302;
              reqLogItem.endTime = Date.now();
              reqLogItem.response = res;
              networkEndLog(reqLogItem);
            } else {
              if (!obj.dontReport) {
                report36408({
                  CgiPath: urlObj.pathname || '',
                  Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                  Query: urlObj.search || '',
                  PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                  Method: obj.type || '',
                  RequestType: 20,
                  RetType: 2,
                  HttpCode: res.statusCode || 0,
                  Ret: 0
                });
              }
              obj.error &amp;&amp; obj.error(null, {
                type: 3,
                error: res,
                status: 0
              });
              obj.complete &amp;&amp; obj.complete();
              monitor$1.setSum(112287, 32, 1);
              var sample = 0.001;
              if (Math.random() &lt; sample) {
                var msg = "request: ".concat(JSON.stringify(obj.type), " ").concat(JSON.stringify(obj.url), " ;;;; cookie: ").concat(JSON.stringify(document.cookie), " ;;;; data: ").concat(JSON.stringify(data), " ;;;; resp: ").concat(JSON.stringify(res));
                if (window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs) {
                  window.WX_BJ_REPORT.BadJs.report('ajax_wx_request_error', msg, {
                    mid: 'mmbizwap:Monitor'
                  });
                }
              }
              reqLogItem.status = 400;
              reqLogItem.endTime = Date.now();
              reqLogItem.response = res;
              networkEndLog(reqLogItem);
            }
          });
        };
        if (reqType(obj, '/mp/getappmsgext')) {
          window.startGetAppmsgExtTime = Date.now();
        }
        if (reqType(obj, '/mp/getappmsgad')) {
          window.startGetAppmsgAdTime = Date.now();
        }
        jsapiRequest(obj, data);
      });
    }

    function _regeneratorRuntime() {  _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
    var AjaxRouter = function () {
      var _ref = _asyncToGenerator( _regeneratorRuntime().mark(function _callee(obj) {
        return _regeneratorRuntime().wrap(function _callee$(_context) {
          while (1) switch (_context.prev = _context.next) {
            case 0:
              if (!window.__secPageAuthPromise) {
                _context.next = 3;
                break;
              }
              _context.next = 3;
              return window.__secPageAuthPromise;
            case 3:
              if (!(!mmversion.isWxWork &amp;&amp; (window.__second_open__ || !getIsAcrossOrigin() &amp;&amp; top.window.__second_open__) &amp;&amp; window.__is_page_auth_return__ &amp;&amp; !obj.pureHttp)) {
                _context.next = 5;
                break;
              }
              return _context.abrupt("return", AjaxWx(obj));
            case 5:
              return _context.abrupt("return", Ajax(obj));
            case 6:
            case "end":
              return _context.stop();
          }
        }, _callee);
      }));
      return function AjaxRouter(_x) {
        return _ref.apply(this, arguments);
      };
    }();

    var html = function html(_str, encode) {
      if (!_str) return '';
      var replace = ['&amp;#96;', '`', '&amp;#39;', '\'', '&amp;quot;', '"', '&amp;nbsp;', ' ', '&amp;gt;', '&gt;', '&amp;lt;', '&lt;', '&amp;yen;', '¥', '&amp;amp;', '&amp;', '&amp;#60;', '&lt;', '&amp;#62;', '&gt;'];
      
      var replaceReverse = ['&amp;', '&amp;amp;', '¥', '&amp;yen;', '&lt;', '&amp;lt;', '&gt;', '&amp;gt;', ' ', '&amp;nbsp;', '"', '&amp;quot;', '\'', '&amp;#39;', '`', '&amp;#96;'];
      var str = _str;
      var target;
      if (encode) {
        target = replaceReverse;
      } else {
        target = replace;
      }
      for (var i = 0; i &lt; target.length; i += 2) {
        str = str.replace(new RegExp(target[i], 'g'), target[i + 1]);
      }
      return str;
    };
    var htmlLite = function htmlLite(_str, encode) {
      if (!_str) return '';
      var replace = ['&amp;#96;', '`', '&amp;#39;', '\'', '&amp;quot;', '"', '&amp;gt;', '&gt;', '&amp;lt;', '&lt;', '&amp;amp;', '&amp;'];
      
      var replaceReverse = ['&amp;', '&amp;amp;', '&lt;', '&amp;lt;', '&gt;', '&amp;gt;', '"', '&amp;quot;', '\'', '&amp;#39;', '`', '&amp;#96;'];
      var str = _str;
      var target;
      if (encode) {
        target = replaceReverse;
      } else {
        target = replace;
      }
      for (var i = 0; i &lt; target.length; i += 2) {
        str = str.replace(new RegExp(target[i], 'g'), target[i + 1]);
      }
      return str;
    };
    var htmlEncode = function htmlEncode(str) {
      return html(str, true);
    };
    var htmlDecode = function htmlDecode(str) {
      return html(str, false);
    };
    var htmlEncodeLite = function htmlEncodeLite(str) {
      return htmlLite(str, true);
    };
    var htmlDecodeLite = function htmlDecodeLite(str) {
      return htmlLite(str, false);
    };
    String.prototype.html = function (encode) {
      return html(this.toString(), encode);
    };
    String.prototype.htmlEncode = function () {
      return htmlEncode(this.toString());
    };
    String.prototype.htmlDecode = function () {
      return htmlDecode(this.toString());
    };
    String.prototype.htmlLite = function (encode) {
      return htmlLite(this.toString(), encode);
    };
    String.prototype.htmlEncodeLite = function () {
      return htmlEncodeLite(this.toString());
    };
    String.prototype.htmlDecodeLite = function () {
      return htmlDecodeLite(this.toString());
    };

    var isx5 = navigator.userAgent.indexOf('TBS/') !== -1;
    var getDataFunc = [];
    var reportData = [];
    
    var specificData = {};
    function joinUrl(url) {
      var obj = {};
      if (typeof window.uin !== 'undefined') {
        obj.uin = window.uin;
      }
      if (typeof window.key !== 'undefined') {
        obj.key = window.key;
      }
      if (typeof window.pass_ticket !== 'undefined') {
        obj.pass_ticket = window.pass_ticket;
      }
      if (typeof window.wxtoken !== 'undefined') {
        obj.wxtoken = window.wxtoken;
      }
      if (typeof window.devicetype !== 'undefined') {
        obj.devicetype = window.devicetype;
      }
      if (typeof window.clientversion !== 'undefined') {
        obj.clientversion = window.clientversion;
      }
      if (typeof window.appmsg_token !== 'undefined') {
        obj.appmsg_token = window.appmsg_token;
      } else if (url.indexOf('advertisement_report') &gt; -1) {
        new Image().src = "".concat(location.protocol, "//mp.weixin.qq.com/mp/jsmonitor?idkey=68064_13_1&amp;r=").concat(Math.random());
      }
      obj.x5 = isx5 ? '1' : '0';
      obj.f = 'json';
      return Url.join(url, obj);
    }
    function isObj(obj) {
      return obj &amp;&amp; _typeof(obj) === 'object';
    }
    function assign(target, source) {
      if (isObj(target) &amp;&amp; isObj(source)) {
        for (var key in source) {
          if (Object.prototype.hasOwnProperty.call(source, key)) {
            target[key] = source[key];
          }
        }
      }
    }
    function assembleReportData(initiative) {
      var leaveReportLog = [];
      leaveReportLog.push({
        content: "[LeaveReport] specificData keys: ".concat(Object.keys(specificData)),
        timestamp: Date.now()
      });
      Log.log("[LeaveReport] specificData keys: ".concat(Object.keys(specificData)));
      console.log("[LeaveReport] specificData keys: ".concat(Object.keys(specificData)));
      var allReportData = {};
      for (var reportField in specificData) {
        if (!allReportData[reportField]) {
          allReportData[reportField] = {};
        }
        for (var i = 0; i &lt; specificData[reportField].length; i++) {
          var param = specificData[reportField][i];
          if (typeof param === 'function') {
            try {
              assign(allReportData[reportField], param(initiative));
            } catch (err) {
              leaveReportLog.push({
                content: "[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)),
                timestamp: Date.now()
              });
              Log.error("[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)));
              console.error("[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)));
            }
          } else if (isObj(param)) {
            assign(allReportData[reportField], param);
          }
        }
      }
      leaveReportLog.push({
        content: "[LeaveReport] reportData.length: ".concat(reportData.length),
        timestamp: Date.now()
      });
      Log.log("[LeaveReport] reportData.length: ".concat(reportData.length));
      console.log("[LeaveReport] reportData.length: ".concat(reportData.length));
      leaveReportLog.push({
        content: "[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length),
        timestamp: Date.now()
      });
      Log.log("[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length));
      console.log("[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length));
      for (var _i = 0; _i &lt; getDataFunc.length; _i++) {
        try {
          var data = getDataFunc[_i](initiative);
          if (isObj(data)) {
            reportData.push(data);
          }
        } catch (err) {
          leaveReportLog.push({
            content: "[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)),
            timestamp: Date.now()
          });
          Log.error("[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)));
          console.error("[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)));
        }
      }
      for (var _i2 = 0; _i2 &lt; reportData.length; _i2++) {
        if (reportData[_i2].reportUrl) {
          reportData[_i2].reportUrl = joinUrl(reportData[_i2].reportUrl);
        }
      }
      allReportData.data = {
        'requestList': reportData
      };
      leaveReportLog.push({
        content: "[LeaveReport] final reportData.length: ".concat(reportData.length, ", data=").concat(JSON.stringify(reportData)),
        timestamp: Date.now()
      });
      Log.log("[LeaveReport] final reportData.length: ".concat(reportData.length));
      console.log("[LeaveReport] final reportData.length: ".concat(reportData.length));
      allReportData.info = leaveReportLog;
      return allReportData;
    }
    function addReport(param) {
      if (typeof param === 'function') {
        getDataFunc.push(param);
      } else if (isObj(param)) {
        reportData.push(param);
      }
    }
    
    function addSpecificReport(reportField, param) {
      if (!specificData[reportField]) {
        specificData[reportField] = [];
      }
      specificData[reportField].push(param);
    }
    
    function reportNow(callback) {
      var allReportData = assembleReportData(true);
      JSAPI.invoke('handleMPPageAction', {
        action: 'reportByLeaveForMPGateway',
        reportData: allReportData
      }, function (res) {
        if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf(':ok') !== -1) {
          getDataFunc = [];
          reportData = [];
          specificData = {};
          typeof callback === 'function' &amp;&amp; callback(res);
        } else {
          getDataFunc = [];
          reportData = [];
          var len = allReportData.data.requestList.length;
          allReportData.data.requestList.forEach(function (req) {
            if (req.reportUrl) {
              AjaxRouter({
                type: req.method || 'GET',
                url: req.reportUrl,
                data: req.reportData,
                async: false,
                success: function success(resp) {
                  if (--len &lt; 0) {
                    typeof callback === 'function' &amp;&amp; callback({
                      err_msg: 'handleMPPageAction:ok',
                      fallback: true,
                      resp: resp
                    });
                  }
                },
                error: function error(xhr, err) {
                  if (--len &lt; 0) {
                    typeof callback === 'function' &amp;&amp; callback({
                      err_msg: 'handleMPPageAction:fail',
                      fallback: true,
                      err: err
                    });
                  }
                }
              });
            }
          });
        }
      });
    }
    var leaveReport = {
      reportNow: reportNow,
      addReport: addReport,
      addSpecificReport: addSpecificReport
    };
    var _leaveReport = (function () {
      var doc = {};
      var isCrossOrigin = false;
      try {
        doc = top.window.document;
      } catch (e) {
        isCrossOrigin = true;
      }
      if (!isCrossOrigin &amp;&amp; top.window.__leaveReport) {
        return top.window.__leaveReport;
      }
      if (window.__leaveReport) {
        return window.__leaveReport;
      }
      JSAPI.on('reportOnLeaveForMP', function () {
        return assembleReportData(false);
      });
      return window.__leaveReport = leaveReport;
    })();

    var getReportJson = function getReportJson(logId, rawData) {
      var data = JSON.parse(JSON.stringify(rawData));
      data.log_id = Number(logId);
      data.TimeStamp = Math.round(Date.now() / 1000);
      console.log('[comm_report] reportjson: ', data);
      return JSON.stringify(data);
    };
    var getSuccessHandler = function getSuccessHandler(logId, data, opt) {
      return function (res) {
        if (res &amp;&amp; res.err_code !== 0) {
          console.warn("[comm_report] report ".concat(logId, " fail: "), res.err_msg, data);
        }
        if (typeof opt.success === 'function') {
          opt.success(res);
        }
      };
    };
    var getErrorHandler = function getErrorHandler(logId, data, opt) {
      return function (xhr, info) {
        console.error("[comm_report] report ".concat(logId, " error: "), info, data);
        if (typeof opt.error === 'function') {
          opt.error(xhr, info);
        }
      };
    };
    var batchReportDataArr = [];
    var blackLogId = [25587, 18832, 28208, 25574, 29139, 10945];
    var BATCH_SIZE = 4;
    var BATCH_TIME = 1000;
    var getRepeatedReportJson = function getRepeatedReportJson() {
      if (!batchReportDataArr || !batchReportDataArr.length) return false;
      var reportData = {
        count: 0
      };
      reportData.count = batchReportDataArr.length;
      batchReportDataArr.forEach(function (data, index) {
        reportData["reportjson".concat(index)] = data;
      });
      batchReportDataArr = [];
      console.log('[reportData]: ', reportData);
      return reportData;
    };
    var timeOutId;
    function batchReport() {
      if (!batchReportDataArr || !batchReportDataArr.length) return;
      var repeatedReportJson = getRepeatedReportJson();
      if (!repeatedReportJson) return;
      AjaxRouter({
        type: 'POST',
        dataType: 'json',
        url: '/mp/wapcommreport?action=batch_report',
        data: repeatedReportJson,
        dontReport: true,
        success: function success(res) {
          if (res &amp;&amp; res.err_code) {
            console.warn("[comm_report] batch report fail: ", res.err_msg, batchReportDataArr);
          }
        },
        error: function error(xhr, info) {
          console.error("[comm_report] batch report error: ", info, batchReportDataArr);
        }
      });
    }
    function batchReportThrottle(logId, rawData) {
      var reportJsonData = getReportJson(logId, rawData);
      if (!reportJsonData) return;
      batchReportDataArr.push(reportJsonData);
      if (batchReportDataArr.length &gt;= BATCH_SIZE) {
        batchReport();
      } else {
        if (!timeOutId) {
          timeOutId = setTimeout(function () {
            batchReport();
            clearTimeout(timeOutId);
            timeOutId = null;
          }, BATCH_TIME);
        }
      }
    }
    _leaveReport.addReport(function () {
      var repeatedReportJson = getRepeatedReportJson();
      if (!repeatedReportJson) return false;
      var reportData = [];
      for (var _i = 0, _Object$entries = Object.entries(repeatedReportJson); _i &lt; _Object$entries.length; _i++) {
        var _Object_i = _slicedToArray(_Object$entries[_i], 2),
          key = _Object_i[0],
          value = _Object_i[1];
        reportData.push("".concat(key, "=").concat(encodeURIComponent(value)));
      }
      return {
        reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport?action=batch_report',
        reportData: reportData.join('&amp;'),
        method: 'POST'
      };
    });
    var commonReport = {
      report: function report(logId, rawData, rawOpt) {
        var opt = rawOpt || {};
        if (!opt.realTime &amp;&amp; !blackLogId.includes(logId)) {
          batchReportThrottle(logId, rawData);
        } else {
          AjaxRouter({
            type: 'POST',
            dataType: 'json',
            url: '/mp/wapcommreport',
            data: {
              reportjson: getReportJson(logId, rawData)
            },
            async: opt.async,
            success: getSuccessHandler(logId, rawData, opt),
            error: getErrorHandler(logId, rawData, opt)
          });
        }
      },
      leaveReport: function leaveReport(logId, rawData) {
        _leaveReport.addReport(function () {
          var data = typeof rawData === 'function' ? rawData() : rawData;
          if (!data) {
            return false;
          }
          return {
            reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport',
            reportData: "reportjson=".concat(encodeURIComponent(getReportJson(logId, data))),
            method: 'POST'
          };
        });
      },
      reportByBeacon: function reportByBeacon(logId, rawData) {
        try {
          if (!Device.os.android &amp;&amp; !Device.os.ios) {
            var data = typeof rawData === 'function' ? rawData() : rawData;
            if (!data) {
              return false;
            }
            var url = '/mp/wapcommreport';
            var reportJsonData = encodeURIComponent(getReportJson(logId, data));
            console.log("reportByBeacon", JSON.stringify(reportJsonData));
            navigator.sendBeacon(Url.joinUrl(url), "reportjson=".concat(reportJsonData));
          } else {
            _leaveReport.addReport(function () {
              var data = typeof rawData === 'function' ? rawData() : rawData;
              if (!data) {
                return false;
              }
              return {
                reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport',
                reportData: "reportjson=".concat(encodeURIComponent(getReportJson(logId, data))),
                method: 'POST'
              };
            });
          }
        } catch (error) {
          console.log(error);
        }
      }
    };

    function getCommonReportData() {
      return {
        Referer: location.href,
        UserAgent: navigator.userAgent,
        Protocol: location.protocol || '',
        Origin: location.host || ''
      };
    }
    var report36408 = function report36408(data) {
      commonReport.report(36408, Object.assign(Object.assign({}, data), getCommonReportData()));
    };

    
    var ajax = function ajax(obj) {
      obj.report36408 = report36408;
      AjaxRouter(obj);
    };

    
    var timer = null;
    var jsmonitorReport = {
      setSum: function setSum(id, key, value) {
        throw new Error('Function not implemented.');
      },
      setAvg: function setAvg(id, key, value) {
        throw new Error('Function not implemented.');
      },
      setLogs: function setLogs(opt) {
        throw new Error('Function not implemented.');
      },
      send: function send(async) {
        throw new Error('Function not implemented.');
      }
    };
    window.__monitor_unload_has_done__ = false;
    jsmonitorReport.setSum = function (id, key, value) {
      monitor$1.setSum(id, key, value);
      return jsmonitorReport;
    };
    jsmonitorReport.setAvg = function (id, key, value) {
      monitor$1.setAvg(id, key, value);
      return jsmonitorReport;
    };
    jsmonitorReport.setLogs = function (opt) {
      monitor$1.setLogs(opt);
      return jsmonitorReport;
    };
    jsmonitorReport.send = function (async) {
      if (async !== false) {
        async = true;
      }
      monitor$1.send(async, ajax);
      return jsmonitorReport;
    };
    function reportInterval(fn, delay) {
      timer = window.setTimeout(function () {
        fn();
        reportInterval(fn, delay);
      }, delay);
    }
    reportInterval(function () {
      jsmonitorReport.send();
    }, 1 * 1000);
    window.addEventListener('unload', function () {
      if (window.__monitor_report_has_done__) return;
      window.__ajaxtest = '2';
      if (timer) {
        window.clearTimeout(timer);
        timer = null;
      }
      jsmonitorReport.send(false);
      window.__monitor_unload_has_done__ = true;
    }, false);
    if (window.__jsmonitorReport) {
      jsmonitorReport = window.__jsmonitorReport;
    } else {
      window.__jsmonitorReport = jsmonitorReport;
    }
    var jsmonitorReport$1 = jsmonitorReport;
    
    function saveSpeeds(opt) {
      var sample = 0.001;
      if (typeof opt.sample === 'number') {
        sample = opt.sample;
      }
      var rand = Math.random();
      if (rand &lt; sample) {
        wxgsdk.saveSpeeds(opt);
      }
    }
    function setBasicTime(opt) {
      var sample = opt.sample || 0.001;
      var rand = Math.random();
      if (rand &lt; sample) {
        wxgsdk.setBasicTime(opt);
      }
    }
    function send() {
      wxgsdk.send();
    }
    function jsmonitor(opt) {
      opt = opt || [];
      if (!Array.isArray(opt)) {
        var item = opt;
        opt = [];
        opt.push(item);
      }
      for (var i = 0; i &lt; opt.length; i++) {
        var _item = opt[i];
        var id = _item.id;
        var key = _item.key;
        var value = _item.value || 1;
        if (id !== undefined &amp;&amp; key !== undefined) {
          jsmonitorReport$1.setSum(id, key, value);
        }
      }
    }
    var wxgspeedsdk = {
      saveSpeeds: saveSpeeds,
      setBasicTime: setBasicTime,
      send: send,
      jsmonitor: jsmonitor
    };

    function _arrayWithoutHoles(arr) {
      if (Array.isArray(arr)) return _arrayLikeToArray(arr);
    }

    function _iterableToArray(iter) {
      if (typeof Symbol !== "undefined" &amp;&amp; iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
    }

    function _nonIterableSpread() {
      throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
    }

    function _toConsumableArray(arr) {
      return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
    }

    var uuid = function uuid() {
      return ((1 + Math.random()) * 0x10000 | 0).toString(16).substring(1);
    };

    var WRAP_TAG = 'span';
    var IMG_TAG = 'IMG';
    var NODE_TYPE = {
      text: 1,
      img: 2
    };
    var blockEleTagName = ['P', 'DIV', 'SECTION', 'LI', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'TABLE', 'PRE', 'BLOCKQUOTE'];
    var exceptEleClassName = ['js_product_container', 'js_blockquote_wrap'];
    var ignoreTagName = ['IFRAME', 'VIDEO', 'MPVOICE', 'MPGONGYI', 'QQMUSIC', 'MPSHOP', 'MP-WEAPP', 'MP-MINIPROGRAM', 'MPPRODUCT', 'MPCPS'];
    var ignoreEleId = ['js_mpvideo'];
    var ignoreEleClassName = ['js_product_container'];
    var TEMP_NODES = {};

    var childNodesHasEle = function childNodesHasEle(element) {
      var tagNameList = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : blockEleTagName;
      if (!element || element.nodeType !== 1) {
        return false;
      }
      for (var i = 0; i &lt; element.children.length; i++) {
        if (tagNameList.indexOf(element.children[i].tagName) !== -1) {
          return true;
        }
      }
      return false;
    };
    function eleHasAttr(ele) {
      var attr = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 'className';
      var AttrList = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : exceptEleClassName;
      for (var i = 0; i &lt; AttrList.length; i++) {
        if (ele[attr] &amp;&amp; typeof ele[attr] === 'string' &amp;&amp; ele[attr].indexOf(AttrList[i]) &gt; -1) {
          return true;
        }
      }
      return false;
    }
    var removeChildMedia = function removeChildMedia(element) {
      var parentNode = element.parentNode;
      element.parentNode.removeChild(element);
      if (parentNode.children &amp;&amp; parentNode.children.length) {
        return false;
      }
      return true;
    };

    
    var getParaList = function getParaList(element, _ref) {
      var _ref$getNestedStructu = _ref.getNestedStructure,
        getNestedStructure = _refgetNestedStructu,
        _ref$removeIgoreEle = _ref.removeIgoreEle,
        removeIgoreEle = _refremoveIgoreEle;
      var paraList = function getParaListWithIndex(ele, getNested) {
        var childNodes = ele.children;
        if (!childNodes) return [];
        if (!childNodes.length) {
          return childNodes;
        }
        var child;
        var paragraphList = [];
        for (var i = 0; i &lt; childNodes.length; i++) {
          child = childNodes[i];
          if (eleHasAttr(child, 'id', ignoreEleId) || eleHasAttr(child, 'className', ignoreEleClassName)) {
            if (removeIgoreEle) {
              child.parentNode.removeChild(child);
              i -= 1;
            }
            continue;
          }
          if (childNodesHasEle(child, ignoreTagName)) {
            if (removeIgoreEle) {
              removeChildMedia(child);
              i -= 1;
            }
            continue;
          }
          if (childNodesHasEle(child, blockEleTagName) &amp;&amp; !eleHasAttr(child)) {
            paragraphList = paragraphList.concat(getParaListWithIndex(child, getNested));
            if (getNested) {
              if (!child.getAttribute('data-index')) {
                paragraphList.push(child);
              }
            }
          } else {
            if (!child.getAttribute('data-index')) {
              paragraphList.push(child);
            }
          }
        }
        return paragraphList;
      }(element, getNestedStructure);
      return [].slice.call(paraList);
    };
    getParaList.paragraphStartIdx = 1000000;

    
    var getSplitTextNode = function getSplitTextNode($textNode, startOffset, endOffset, paraIndex) {
      try {
        $textNode.splitText(startOffset);
      } catch (err) {
        if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
          WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'splitText Error', {
            mid: 'mmbizwap:articlemask_Monitor',
            view: 'wap_business',
            _info: {
              type: 'getSplitTextNode textnode',
              startOffset: startOffset,
              endOffset: endOffset
            }
          });
        }
      }
      var selectedNode = $textNode.nextSibling;
      try {
        selectedNode.splitText(endOffset - startOffset);
      } catch (e) {
        if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
          WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'splitText Error', {
            mid: 'mmbizwap:articlemask_Monitor',
            view: 'wap_business',
            _info: {
              type: 'getSplitTextNode nextSibling',
              startOffset: startOffset,
              endOffset: endOffset
            }
          });
        }
      }
      return [{
        $node: selectedNode,
        type: NODE_TYPE.text,
        idx: paraIndex
      }];
    };

    
    var getBlockNode = function getBlockNode($node) {
      if (blockEleTagName.indexOf($node.tagName) !== -1 &amp;&amp; typeof $node.dataset.index !== 'undefined') {
        return $node;
      }
      return getBlockNode($node.parentNode);
    };

    
    var getPureBlockNode = function getPureBlockNode($node) {
      if (!$node) return $node;
      if (blockEleTagName.indexOf($node.tagName) !== -1) {
        return $node;
      }
      return getPureBlockNode($node.parentNode);
    };

    
    var getNodesByDFS = function getNodesByDFS(range) {
      var start = range.start,
        end = range.end,
        container;
      var node,
        startOffset = start.offset;
      var node,
        endOffset = end.offset;
      var queue = [];
      var result = [];
      var withinSelectRange = false;
      var achiveSelectRangeEnd = false;
      var paraIndex = 0;
      queue.push($container);
      while (queue.length &gt; 0) {
        var item = queue.pop();
        var nodeType = item.nodeType,
          tagName = item.tagName;
        if (item.dataset &amp;&amp; item.dataset.index) {
          paraIndex = +item.dataset.index;
        }
        if (withinSelectRange &amp;&amp; !achiveSelectRangeEnd) {
          if (nodeType === 3) {
            result.push({
              $node: item,
              type: NODE_TYPE.text,
              idx: paraIndex
            });
          }
          if (tagName === IMG_TAG) {
            result.push({
              $node: item,
              type: NODE_TYPE.img,
              idx: paraIndex
            });
          }
        }
        if (item === $startNode) {
          if (nodeType === 3) {
            try {
              item.splitText(startOffset);
            } catch (e) {
              WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'splitText Error', {
                mid: 'mmbizwap:articlemask_Monitor',
                view: 'wap_business',
                _info: {
                  type: 'getNodes startNode',
                  startOffset: startOffset,
                  endOffset: endOffset
                }
              });
            }
            var $startTextNode = item.nextSibling;
            result.push({
              startTextNode,
              type: NODE_TYPE.text,
              idx: paraIndex
            });
          } else if (tagName === IMG_TAG) {
            result.push({
              $node: item,
              type: NODE_TYPE.img,
              idx: paraIndex
            });
          } else {
            result.push({
              $node: item,
              type: NODE_TYPE.text,
              idx: paraIndex
            });
          }
          withinSelectRange = true;
        }
        if (item === $endNode || achiveSelectRangeEnd) {
          if (!achiveSelectRangeEnd) {
            achiveSelectRangeEnd = true;
          }
          if (item === $endNode) result.pop();
          if (nodeType === 3) {
            try {
              item.splitText(endOffset);
            } catch (e) {
              if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
                WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'splitText Error', {
                  mid: 'mmbizwap:articlemask_Monitor',
                  view: 'wap_business',
                  _info: {
                    type: 'getSplitTextNode endNode',
                    startOffset: startOffset,
                    endOffset: endOffset
                  }
                });
              }
            }
            result.push({
              $node: item,
              type: NODE_TYPE.text,
              idx: paraIndex
            });
            break;
          } else if (tagName === IMG_TAG) {
            result.push({
              $node: item,
              type: NODE_TYPE.img,
              idx: paraIndex
            });
            break;
          } else {
            var _children = item.childNodes;
            for (var i = _children.length - 1; i &gt;= 0; i--) {
              queue.push(_children[i]);
            }
          }
        }
        var children = item.childNodes;
        for (var _i = children.length - 1; _i &gt;= 0; _i--) {
          queue.push(children[_i]);
        }
      }
      return result;
    };

    
    var getSelectedNodes = function getSelectedNodes(range) {
      var start = range.start,
        end = range.end;
      var node,
        startOffset = start.offset;
      var node,
        endOffset = end.offset;
      if (endNode &amp;&amp; $startNode instanceof Text) {
        return getSplitTextNode($startNode, startOffset, endOffset, start.paraIndex);
      }
      return getNodesByDFS(range);
    };

    
    var checkTextNode = function checkTextNode($node) {
      return $node &amp;&amp; (node.innerText);
    };
    var connectSiblingText = function connectSiblingText(prev, next, target) {
      var $delete = target === prev ? next : prev;

      
      if (!checkTextNode(prev) || !checkTextNode(next)) {
        return $delete;
      }
      var text = (prev.nodeValue || prev.innerText) + (next.nodeValue || next.innerText);
      target.nodeValue = text;
      target.parentNode.removeChild($delete);
      return target;
    };

    
    var getTextNodeByOffset = function getTextNodeByOffset($parentNode, offset) {
      var queue = [];
      var curOffset = 0;
      var startOffset = 0;
      var $curNode;
      queue.push($parentNode);
      while (queue.length &gt; 0) {
        $curNode = queue.pop();
        if ($curNode.nodeType === 3) {
          startOffset = offset - curOffset;
          curOffset += $curNode.textContent.length;
          if (curOffset &gt;= offset) {
            break;
          }
        }
        var children = $curNode.childNodes;
        for (var i = children.length - 1; i &gt;= 0; i--) {
          queue.push(children[i]);
        }
      }
      return {
        parentNode,
        curNode,
        offset: startOffset
      };
    };

    
    function getBlockOffset(_ref2) {
      var blockNode,
        node;
      if ($blockNode === null) {
        return null;
      }
      var queue = [];
      var offset = 0;
      queue.push($blockNode);
      while (queue.length &gt; 0) {
        var item = queue.pop();
        if (item.nodeType === 3 &amp;&amp; item.nodeValue !== $node.nodeValue) {
          offset += item.textContent.length;
        } else if (item.nodeType === 1) {
          offset += 1;
          if (item === $node) break;
        } else if (item.nodeValue === $node.nodeValue) {
          offset += item.textContent.length;
          break;
        }
        var children = item.childNodes;
        for (var i = children.length - 1; i &gt;= 0; i--) {
          queue.push(children[i]);
        }
      }
      return offset;
    }

    
    var getDomMeta = function getDomMeta(selection) {
      selection.$node;
        var parentNode;
      var parentIndex = Number($parentNode.dataset.index);
      var offset = getBlockOffset($parentNode);
      return {
        parentIndex: parentIndex,
        fromParentoffset: offset
      };
    };
    function nodeToSelection($node) {
      var $blockNode = getBlockNode($node);
      var paraIndex = +$blockNode.dataset.index;
      var offset = 0;
      var item = {
        blockNode,
        node,
        paraIndex: paraIndex,
        offset: offset
      };
      var id = uuid();
      return {
        start: item,
        end: item,
        id: id
      };
    }

    
    var getSelection = function getSelection() {
      var selection = window.getSelection();
      if (selection.anchorNode === null) {
        return null;
      }
      var selectionRange = selection.getRangeAt(0);
      if (!selectionRange || !selection.toString()) {
        return null;
      }
      var startContainer = selectionRange.startContainer,
        endContainer = selectionRange.endContainer,
        commonAncestorContainer = selectionRange.commonAncestorContainer,
        startOffset = selectionRange.startOffset,
        endOffset = selectionRange.endOffset;
      var $startBlockNode = getBlockNode(startContainer);
      var $endBlockNode = getBlockNode(endContainer);
      var startIndex = startBlockNode.dataset.index;
      var endIndex = endBlockNode.dataset.index;
      var start = {
        startBlockNode,
        $node: startContainer,
        offset: startOffset,
        paraIndex: Number(startIndex)
      };
      var end = {
        endBlockNode,
        $node: endContainer,
        offset: endOffset,
        paraIndex: Number(endIndex)
      };
      var $container = typeof commonAncestorContainer === 'string' ? commonAncestorContainer.parentNode : commonAncestorContainer;
      var id = uuid();
      return {
        start: start,
        end: end,
        container,
        id: id
      };
    };

    
    var transferTextToElement = function transferTextToElement($node, id) {
      if (!$node) return null;
      if ($node.nodeType === 3) {
        var $wrap = document.createElement(WRAP_TAG);
        $wrap.setAttribute('data-splitid', id);
        $wrap.appendChild($node.cloneNode(false));
        if ($node.parentNode) {
          $node.parentNode.replaceChild(node);
        }
        return $wrap;
      }
      return $node;
    };

    
    var serialize = function serialize(selectionRange) {
      var start = selectionRange.start,
        end = selectionRange.end,
        id = selectionRange.id;
      var startParaOffset = getBlockOffset(start);
      var endParaOffset = start.node ? end.offset - start.offset + startParaOffset : getBlockOffset(end);
      var meta = {
        id: id,
        start: {
          para_offset: startParaOffset,
          para_index: start.paraIndex
        },
        end: {
          para_offset: endParaOffset,
          para_index: end.paraIndex
        }
      };
      return meta;
    };
    var mapMetaToLocal = function mapMetaToLocal(paraList) {
      return function (meta) {
        var paraOffset = meta.para_offset,
          paraIndex = meta.para_index;
        var $blockNode = paraList[paraIndex];
        var queue = [];
        var curOffset = 0;
        var offset = 0;
        var $curNode;
        queue.push($blockNode);
        while (queue.length &gt; 0) {
          $curNode = queue.pop();
          if ($curNode.nodeType === 3) {
            offset = paraOffset - curOffset;
            curOffset += $curNode.textContent.length;
            if (curOffset &gt;= paraOffset) {
              break;
            }
          }
          if ($curNode.nodeType === 1) {
            offset = paraOffset - curOffset;
            curOffset += 1;
            if (curOffset &gt;= paraOffset) {
              break;
            }
          }
          var children = $curNode.childNodes;
          for (var i = children.length - 1; i &gt;= 0; i--) {
            queue.push(children[i]);
          }
        }
        return {
          blockNode,
          curNode,
          offset: offset,
          paraIndex: paraIndex
        };
      };
    };
    
    var deSerialize = function deSerialize(meta, paraList, $container) {
      var desparaList = mapMetaToLocal(paraList);
      return {
        start: desparaList(meta.start),
        end: desparaList(meta.end),
        id: meta.id,
        container
      };
    };
    function getTextNode($node) {
      if (node.nodeType === 3) {
        return $node;
      }
      return $node.childNodes[0];
    }
    var resetRange = function resetRange(selectionRange) {
      window.getSelection().removeAllRanges();
      var selection = window.getSelection();
      var range = document.createRange();
      var $startnode = getTextNode(TEMP_NODES.start);
      var $endnode = getTextNode(TEMP_NODES.end);
      range.setStart($startnode, selectionRange.start.offset);
      range.setEnd($endnode, selectionRange.end.offset);
      selection.addRange(range);
    };
    var getNodeIndex = function getNodeIndex(node) {
      var queue = [];
      var index = 0;
      queue.push($block);
      while (queue.length &gt; 0) {
        var $item = queue.pop();
        if (node) break;
        index++;
        var children = $item.children;
        for (var i = 0; i &lt; children.length; i++) {
          queue.push(children[i]);
        }
      }
      return index;
    };
    var getNodeByIndex = function getNodeByIndex($block, index) {
      var queue = [];
      var cursor = 0;
      var $result = null;
      queue.push($block);
      while (queue.length &gt; 0) {
        var $item = queue.pop();
        if (cursor === index) {
          item;
          break;
        }
        cursor++;
        var children = $item.children;
        for (var i = 0; i &lt; children.length; i++) {
          queue.push(children[i]);
        }
      }
      return $result;
    };
    var hasClass = function hasClass(cls, className) {
      if (cls &amp;&amp; typeof cls === 'string' &amp;&amp; cls.indexOf(className) !== -1) {
        return true;
      }
      return false;
    };
    var inWhiteList = function inWhiteList(classAttr) {
      var classWhiteList = 'rich_pages,blockquote_info,blockquote_biz,blockquote_other,blockquote_article,js_jump_icon,h5_image_link,js_banner_container,js_list_container,js_cover,js_tx_video_container,js_product_err_container,js_product_loop_content,js_product_container,img_loading,list-paddingleft-1,list-paddingleft-2,list-paddingleft-3,selectTdClass,noBorderTable,ue-table-interlace-color-single,ue-table-interlace-color-double,__bg_gif,weapp_image_link,js_img_loading,wx_video_context,db,wx_video_thumb_primary,wx_video_play_btn,wx_video_mask,qqmusic_area,tc,tips_global,unsupport_tips,qqmusic_wrp,appmsg_card_context,appmsg_card_active,wx_tap_card,js_wx_tap_highlight,wx_tap_link,qqmusic_bd,play_area,icon_qqmusic_switch,pic_qqmusic_default,qqmusic_thumb,access_area,qqmusic_songname,qqmusic_singername,qqmusic_source,js_audio_frame,share_audio_context,flex_context,pages_reset,share_audio_switch,icon_share_audio_switch,share_audio_info,flex_bd,share_audio_title,share_audio_tips,share_audio_progress_wrp,share_audio_progress,share_audio_progress_inner,share_audio_progress_buffer,share_audio_progress_loading,share_audio_progress_loading_inner,share_audio_progress_handle,share_audio_desc,share_audio_length_current,share_audio_length_total,video_iframe,vote_iframe,js_editor_vote_card,res_iframe,card_iframe,js_editor_card,weapp_display_element,js_weapp_display_element,weapp_card,app_context,weapp_card_bd,weapp_card_profile,radius_avatar,weapp_card_avatar,weapp_card_nickname,weapp_card_info,weapp_card_title,weapp_card_thumb_wrp,weapp_card_ft,weapp_card_logo,js_pay_btn,pay,pay__mask,wx_video_loading,js_redpacketcover,js_uneditable,js_uneditablemouseover,js_editor_qqmusic,js_img_placeholder,js_editor_audio,ct_geography_loc_tip,js_poi_entry,js_mention_entry,product_text_link,js_plain-music_entry'.split(',');
      var qaClassPrefix = 'qa__';
      var classWhiteListReg = [new RegExp('^weui'), new RegExp('^appmsg'), new RegExp('^audio'), new RegExp('^music'), new RegExp('^cps_inner'), new RegExp('^bizsvr_'), new RegExp('^code-snippet'), new RegExp('^' + qaClassPrefix), new RegExp('^wx-edui-'), new RegExp('^wx_'), new RegExp('^wx-'), new RegExp('^custom_select_card_')
      ];
      if (!classAttr) return null;
      var classList = classAttr.split(/\s+/);
      var newClassList = [];
      for (var i = 0, len = classList.length; i &lt; len; ++i) {
        var className = classList[i];
        if (className &amp;&amp; classWhiteList.indexOf(className) !== -1) {
          newClassList.push(className);
        } else {
          for (var j = 0, jl = classWhiteListReg.length; j &lt; jl; j++) {
            if (classWhiteListReg[j].test(className)) {
              newClassList.push(className);
              break;
            }
          }
        }
      }
      var str = newClassList.join('.');
      return str &amp;&amp; '.' + str;
    };
    var getNodeSelector = function getNodeSelector(node) {
      var selector = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : '';
      var root = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : document.body;
      if (!node || node === root) return selector;
      var id = node.getAttribute('id');
      var className = node.getAttribute('class');
      var tagName = node.tagName.toLowerCase();
      var currentSelector = null;
      if (id &amp;&amp; !hasClass(className, 'articlepart-selector-area_choice-button_wrap')) return selector ? "#".concat(id, "&gt;").concat(selector) : "#".concat(id);
      var whiteClassName = inWhiteList(className);
      if (whiteClassName) {
        currentSelector = whiteClassName;
      } else if (hasClass(className, 'js_choice-img')) {
        currentSelector = '.js_choice-img';
      } else if (hasClass(className, 'articlepart-selector-area_choice')) {
        currentSelector = node.dataset.splitid ? '' : tagName;
      } else {
        currentSelector = tagName;
      }
      return getNodeSelector(node.parentNode, [currentSelector, selector].filter(function (item) {
        return !!item;
      }).join('&gt;'), root);
    };
    var getNodeSelectorWrap = function getNodeSelectorWrap(node, root) {
      var selector = getNodeSelector(node, '', root);
      var collect = [];
      try {
        collect = root.querySelectorAll(selector);
      } catch (error) {
        console.log('get node selector wrap err', error);
      }
      var len = collect.length;
      var index = null;
      for (var i = 0; i &lt; len; i++) {
        if (node === collect[i]) {
          index = i;
          break;
        }
      }
      if (index === null) {
        if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
          WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'selector:node not find', {
            mid: 'mmbizwap:articlemask_Monitor',
            view: 'wap_business',
            _info: {
              selector: selector
            }
          });
        }
      }
      var newSelector = (selector || '').replace('&gt;.js_choice-img&gt;', '&gt;') + "|".concat(len, " ").concat(index || 0);
      return newSelector;
    };
    
    var serializeToC = function serializeToC(nodes) {
      return (
        nodes.map(function (item) {
          var node,
            type = item.type,
            idx = item.idx;
          var index = 0;
          var data = null;
          var meta = '';
          var blockItem = getBlockNode($node);
          if (type === NODE_TYPE.text) {
            var nodeIndex = getNodeIndex(blockItem, $node.parentNode);
            if (node.data) {
              index = nodeIndex;
              data = $node.data;
              meta = node.previousSibling.data;
            }
          } else if (type === NODE_TYPE.img) {
            var imgs = blockItem.getElementsByTagName('img');
            data = $node.src;
            index = Array.prototype.slice.call(imgs).slice(0).indexOf($node);
          }
          return {
            data: data,
            index: index,
            idx: idx,
            type: type,
            meta: meta
          };
        }).filter(function (item) {
          return item.index &gt; -1 &amp;&amp; !!item.data;
        })
      );
    }
    ;
    var serializeToC2 = function serializeToC2(nodes, $container) {
      var root = $container || document.getElementById('js_content');
      return nodes.map(function (item) {
        var node,
          type = item.type,
          idx = item.idx;
        var selector = null;
        var data = null;
        var meta = '';
        if (type === NODE_TYPE.text) {
          if (node.data) {
            selector = getNodeSelectorWrap($node.parentNode, root);
            data = $node.data;
            meta = node.previousSibling.data;
          }
        } else if (type === NODE_TYPE.img) {
          selector = getNodeSelectorWrap($node, root);
          data = $node.src;
        }
        return {
          data: data,
          idx: idx,
          type: type,
          meta: meta,
          selector: selector
        };
      }).filter(function (item) {
        return !!item.selector &amp;&amp; !!item.data;
      });
    };
    function setProperty(el, name, value, priority) {
      if (!!el.style.setProperty) {
        priority = priority || null;
        el.style.setProperty(name, value, priority);
      } else if (typeof el.style.cssText !== 'undefined') {
        priority = priority ? '!' + priority : '';
        el.style.cssText += ';' + name + ':' + value + priority + ';';
      }
    }

    
    function hasImgNode($el) {
      if (!$el) return false;
      var nodeType = $el.nodeType,
        tagName = $el.tagName;
      if (nodeType === 3) {
        return false;
      }
      if (tagName === IMG_TAG) {
        return true;
      }
      return false;
    }
    function getContent(tree) {
      return tree.reduce(function (acc, cur, idx) {
        if (idx === 0) {
          if (cur.type === NODE_TYPE.text) {
            acc.text.push(cur.data);
          } else if (cur.type === NODE_TYPE.img) {
            acc.pic.push(cur.data);
          }
          return acc;
        }
        if (cur.type === NODE_TYPE.text) {
          if (tree[idx - 1].type === NODE_TYPE.text) {
            var text = acc.text.pop();
            text += cur.data;
            acc.text.push(text);
          } else {
            acc.text.push(cur.data);
          }
          return acc;
        }
        if (cur.type === NODE_TYPE.img) {
          acc.pic.push(cur.data);
        }
        return acc;
      }, {
        audio: [],
        pic: [],
        video: [],
        text: []
      });
    }
    function saveNode($node, key) {
      TEMP_NODES[key] = $node;
    }

    
    function serializeNode(wrap) {
      var range = nodeToSelection($node);
      var anchorTree = serializeToC2([{
        node,
        type: NODE_TYPE.img,
        idx: range.start.paraIndex
      }], $wrap);
      var anchorMeta = serialize(range);
      var anchorBrief = getContent(anchorTree);
      return {
        meta: {
          anchorTree: anchorTree,
          anchorMeta: anchorMeta,
          anchorBrief: anchorBrief
        },
        range: range
      };
    }
    function findChildIndex(parent, offset) {
      var childNodes = parent.childNodes;
      var realOffset = offset;
      var $node = null;
      var i = 0;
      for (i = 0; i &lt; childNodes.length; i++) {
        $node = childNodes[i];
        if ($node.nodeType === 3) {
          var len = $node.length;
          if (len &gt; realOffset) {
            break;
          } else {
            realOffset -= len;
          }
        }
      }
      return {
        node,
        cursor: realOffset
      };
    }
    
    var qs = function qs(selector, el) {
      return (el || document).querySelector(selector);
    };

    
    var qsAll = function qsAll(selector, el) {
      return (el || document).querySelectorAll(selector);
    };
    var dom = {
      getDomMeta: getDomMeta,
      getContent: getContent,
      getParaList: getParaList,
      getBlockNode: getBlockNode,
      getSelectedNodes: getSelectedNodes,
      connectSiblingText: connectSiblingText,
      getTextNodeByOffset: getTextNodeByOffset,
      getBlockOffset: getBlockOffset,
      getSelection: getSelection,
      transferTextToElement: transferTextToElement,
      serialize: serialize,
      deSerialize: deSerialize,
      resetRange: resetRange,
      serializeToC: serializeToC,
      setProperty: setProperty,
      hasImgNode: hasImgNode,
      nodeToSelection: nodeToSelection,
      saveNode: saveNode,
      serializeNode: serializeNode,
      getNodeByIndex: getNodeByIndex,
      findChildIndex: findChildIndex,
      serializeToC2: serializeToC2,
      blockEleTagName: blockEleTagName,
      getPureBlockNode: getPureBlockNode,
      qs: qs,
      qsAll: qsAll,
      hasClass: hasClass
    };

    function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r &amp;&amp; (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
    function _objectSpread(e) { for (var r = 1; r &lt; arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
    var paraList = [];
    var totalHit = 0;

    var STATUS = {
      auditing: 1,
      ban: 2
    };
    function keyby(arr, key) {
      return arr.reduce(function (acc, item) {
        if (typeof item[key] === 'undefined') return acc;
        if (!acc[item[key]]) acc[item[key]] = [];
        acc[item[key]].push(item);
        return acc;
      }, {});
    }

    function getBannerWord(anchor) {
      return '以下内容存在争议 &lt;a style="color: var(--weui-LINK);" target="_blank" href="https://mp.weixin.qq.com/s/_2kC-fXw7UjneZSrsC9CVQ"&gt;了解更多&lt;/a&gt;';
    }
    function addBanner(node, text) {
      var paraNode = _typeof(node) === 'object' ? node : paraList[node];
      if (paraNode.dataset.hasBanner) return;
      var divNode = document.createElement('div');
      divNode.dataset.hasBanner = 1;
      divNode.style = 'background-color: var(--weui-BG-1);font-size: 14px;color: var(--weui-FG-2);text-align: left;margin-top: 20px;margin-bottom: 4px;padding: 4px 8px 6px 8px;border-radius:4px;';
      var iconNode = document.createElement('span');
      iconNode.style = 'color: var(--weui-FG-0);padding: 2px;display: inline-block;vertical-align: middle; width: 20px;height: 20px;margin-right: 4px; background-size: cover;background-position: center center;-webkit-mask: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' width=\'20\' height=\'20\' viewBox=\'0 0 20 20\'%3E  %3Cpath fill-opacity=\'.3\' fill-rule=\'evenodd\' d=\'M10 1.667a8.333 8.333 0 1 1 0 16.666 8.333 8.333 0 0 1 0-16.666zm-.004 11.115a.732.732 0 0 0-.746.735c0 .416.33.735.746.735a.73.73 0 0 0 .752-.735.73.73 0 0 0-.752-.735zm.638-7.669h-1.27l.091 6.33h1.088l.091-6.33z\'/%3E%3C/svg%3E") no-repeat 50% 50%;mask: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' width=\'20\' height=\'20\' viewBox=\'0 0 20 20\'%3E  %3Cpath fill-opacity=\'.3\' fill-rule=\'evenodd\' d=\'M10 1.667a8.333 8.333 0 1 1 0 16.666 8.333 8.333 0 0 1 0-16.666zm-.004 11.115a.732.732 0 0 0-.746.735c0 .416.33.735.746.735a.73.73 0 0 0 .752-.735.73.73 0 0 0-.752-.735zm.638-7.669h-1.27l.091 6.33h1.088l.091-6.33z\'/%3E%3C/svg%3E") no-repeat 50% 50%;background-color: currentColor;';
      var textNode = document.createElement('span');
      textNode.style = 'display: inline-block;line-height: 14px;vertical-align: middle;';
      textNode.innerHTML = text;
      divNode.appendChild(iconNode);
      divNode.appendChild(textNode);
      paraNode.parentNode.insertBefore(divNode, paraNode, null);
      paraNode.dataset.hasBanner = 1;
    }
    function maskText(data, domNode, cursor) {
      var len = data.length;
      var maskMat = _toConsumableArray(Array(len)).map(function () {
        return '〇';
      }).join('');
      var childNodes = domNode.childNodes;
      var newCursor = cursor;
      for (var i = 0; i &lt; childNodes.length; i++) {
        var node = childNodes[i];
        if (node.nodeType === 3) {
          if (newCursor &gt; node.data.length) {
            newCursor -= node.data.length;
          } else {
            node.data = node.data.slice(0, newCursor).concat(maskMat).concat(node.data.slice(newCursor + len));
          }
        } else if (node.nodeText === 1) {
          newCursor -= node.innerText &amp;&amp; node.innerText.length || 0;
        }
      }
    }
    function disputeText(data, domNode, cursor) {
      var len = data.length;
      var _dom$findChildIndex = dom.findChildIndex(domNode, cursor),
        textNode = _domnode,
        realOffset = _dom$findChildIndex.realOffset;
      try {
        textNode.splitText(realOffset);
      } catch (e) {
        if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
          WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'splitText Error', {
            mid: 'mmbizwap:articlemask_Monitor',
            view: 'wap_business',
            _info: {
              type: 'disputeText textNode',
              data: data,
              cursor: cursor
            }
          });
        }
      }
      var repalcedNode = textNode.nextSibling;
      try {
        repalcedNode.splitText(len);
      } catch (e) {
        if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
          WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'splitText Error', {
            mid: 'mmbizwap:articlemask_Monitor',
            view: 'wap_business',
            _info: {
              type: 'disputeText nextSibling',
              data: data,
              cursor: cursor
            }
          });
        }
      }
      var spanNode = document.createElement('span');
      spanNode.style = 'background-color: rgba(0,0,0,0.10);';
      spanNode.appendChild(repalcedNode.cloneNode(true));
      repalcedNode.parentNode.replaceChild(spanNode, repalcedNode);
    }
    function disputeImage(data, domNode) {
      var spanNode = document.createElement('span');
      spanNode.style = 'position:relative;display: inline-block;';
      var iconNode = document.createElement('span');
      iconNode.style = "\n            position: absolute;\n            top: 4px;\n            left: 4px;\n            display: inline-block;\n            vertical-align: middle;\n            width: 24px;\n            height: 24px;\n            background-size: cover;\n            background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E  %3Cpath fill='%23FFF' fill-rule='evenodd' d='M12 2c5.523 0 10 4.477 10 10s-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2zm-.004 13.339a.878.878 0 0 0-.896.882c0 .499.396.882.896.882.512 0 .902-.383.902-.882 0-.5-.39-.882-.902-.882zm.765-9.203h-1.524l.11 7.596h1.305l.11-7.596z'/%3E%3C/svg%3E\");\n    ";
      var parent = domNode.parentNode;
      spanNode.appendChild(domNode.cloneNode(false));
      parent.replaceChild(spanNode, domNode);
      spanNode.appendChild(iconNode);
    }
    function maskImage(data, domNode) {
      domNode.style.filter = 'blur(10px)';
      domNode.style['-webkit-filter'] = 'blur(10px)';
    }
    function hitMaskText(anchor, domNode) {
      var data = anchor.data,
        meta = anchor.meta,
        index = anchor.index,
        idx = anchor.idx;
      var wholeText = domNode.data;
      var prefixText = (meta || '') + data;
      if (wholeText.indexOf(prefixText) === -1) {
        return {
          hit: false
        };
      }
      var itemNode = dom.getNodeByIndex(paraList[idx], index);
      if (itemNode) {
        totalHit++;
      } else {
        if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
          WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'text node cannot find', {
            mid: 'mmbizwap:articlemask_Monitor',
            view: 'wap_business',
            _info: {
              anchor: anchor,
              wholeText: wholeText
            }
          });
        }
      }
      var cursor = itemNode &amp;&amp; itemNode.innerText.indexOf(prefixText) + (meta || '').length;
      return {
        hit: !!itemNode,
        $hitDom: itemNode,
        cursor: cursor
      };
    }
    function hitMaskImage(anchor, domNode) {
      var index = anchor.index,
        idx = anchor.idx,
        data = anchor.data;
      var para = paraList[idx];
      var allImgNode = para.querySelectorAll('img');
      var hitItenNode = allImgNode[index];
      var src = hitItenNode &amp;&amp; (hitItenNode.getAttribute('data-src') || hitItenNode.getAttribute('src'));
      if (src === data) {
        totalHit++;
        return {
          hit: true,
          $hitDom: domNode,
          cursor: 0
        };
      }
      return {
        hit: false
      };
    }
    function createMask(anchor, domNode) {
      return function (hitFn, maskFn, next) {
        var _hitFn = hitFn(anchor, domNode),
          hit = _hitFn.hit,
          hitDom,
          cursor = _hitFn.cursor;
        if (hit) {
          maskFn(anchor.data, $hitDom, cursor);
          next();
        }
      };
    }
    function maskAnchors(anchors, paraNode) {
      var queue = [];
      var cloneAnchors = _toConsumableArray(anchors);
      queue.push(paraNode);
      var anchor = null;
      var next = function next() {
        anchor = cloneAnchors.shift();
      };
      next();
      while (queue.length &gt; 0 &amp;&amp; cloneAnchors.length &gt;= 0 &amp;&amp; anchor) {
        var itemNode = queue.pop();
        if (!itemNode) continue;
        if (!anchor) continue;
        var nodeType = itemNode.nodeType,
          tagName = itemNode.tagName;
        var createMaskFn = createMask(anchor, itemNode);
        if (nodeType === 3) {
          if (anchor.type === NODE_TYPE.text) {
            createMaskFn(hitMaskText, anchor.status === STATUS.ban ? maskText : disputeText, next);
          }
          continue;
        }
        if (nodeType === 1 &amp;&amp; tagName === IMG_TAG) {
          if (anchor.type === NODE_TYPE.img) {
            createMaskFn(hitMaskImage, anchor.status === STATUS.ban ? maskImage : disputeImage, next);
          }
          continue;
        }
        var children = itemNode.childNodes;
        for (var i = children.length - 1; i &gt;= 0; i--) {
          queue.push(children[i]);
        }
      }
    }
    function parseSelector(selectorStr) {
      if (!selectorStr) return {};
      var _selectorStr$split = selectorStr.split('|'),
        _selectorStr$split2 = _slicedToArray(_selectorStr$split, 2),
        selector = _selectorStr$split2[0],
        other = _selectorStr$split2[1];
      var _other$split = other.split(' '),
        _other$split2 = _slicedToArray(_other$split, 2),
        total = _other$split2[0],
        index = _other$split2[1];
      return {
        selector: selector.replace(/&amp;gt;/g, '&gt;'),
        total: total * 1,
        index: index * 1
      };
    }
    function hitNode(node, anchor) {
      if (!node) return null;
      var type = anchor.type,
        data = anchor.data,
        meta = anchor.meta;
      if (type === NODE_TYPE.text) {
        var nodeText = node.innerText || node.innerHTML || '';
        var prefixText = ((meta || '') + data).replace(/&amp;amp;/g, '&amp;');
        if (nodeText.indexOf(prefixText) !== -1) {
          var cursor = nodeText.indexOf(prefixText) + (meta || '').length;
          return {
            cursor: cursor,
            node: node
          };
        }
      }
      if (type === NODE_TYPE.img) {
        var src = node &amp;&amp; (node.getAttribute('data-src') || node.getAttribute('src'));
        if (src === data.replace(/&amp;amp;/g, '&amp;')) {
          return {
            cursor: 0,
            node: node
          };
        }
      }
      return null;
    }

    function maskNode(anchor, domNode, cursor) {
      var type = anchor.type,
        data = anchor.data,
        status = anchor.status;
      if (status !== STATUS.ban) return;
      if (type === NODE_TYPE.text) maskText(data, domNode, cursor);
      if (type === NODE_TYPE.img) maskImage(data, domNode);
    }
    function initOld(wrapNode, anchors) {
      paraList = dom.getParaList(wrapNode, {
        getNestedStructure: true,
        removeIgoreEle: false
      });
      var formatAnchor = keyby(anchors, 'idx');
      if (!paraList) return;
      (paraList || []).forEach(function (para, index) {
        var paraAnchors = formatAnchor[index];
        if (paraAnchors &amp;&amp; paraAnchors.length &gt; 0) {
          addBanner(index, getBannerWord(paraAnchors[0]));
          maskAnchors(paraAnchors, para);
        }
      });
      if (anchors &amp;&amp; anchors.length !== totalHit) {
        if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
          WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'totalHit', {
            mid: 'mmbizwap:articlemask_Monitor',
            view: 'wap_business',
            _info: {
              totalHit: totalHit,
              anchors: anchors
            }
          });
        }
      }
    }
    function addChildBanner(node, anchor) {
      var blockNode = dom.getPureBlockNode(node);
      if (!blockNode) return;
      addBanner(blockNode, getBannerWord());
    }
    function maskAnchors2(wrapNode, anchors) {
      var missNodes = [];
      var countList = [];
      var maskNodeList = [];
      var cacheSelector = {};
      anchors.forEach(function (anchor, i) {
        var _parseSelector = parseSelector(anchor.selector),
          selector = _parseSelector.selector,
          index = _parseSelector.index,
          total = _parseSelector.total;
        var nodes = cacheSelector[selector] || [];
        if (nodes.length === 0) {
          try {
            nodes = wrapNode.querySelectorAll(selector);
            cacheSelector[selector] = nodes;
          } catch (e) {
            if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
              WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'splitText Error', {
                mid: 'mmbizwap:articlemask_Monitor',
                view: 'wap_business',
                _info: {
                  anchor: anchor
                }
              });
            }
          }
        }
        var cursorLeft = index;
        var cursorRight = index;
        var queue = [];
        var node = null;
        var cursor = 0;
        var count = 0;
        queue.push(nodes[index]);
        while (queue.length) {
          var current = queue.pop();
          var hitData = hitNode(current, anchor);
          count++;
          if (hitData &amp;&amp; hitData.node) {
            node = hitData.node;
            cursor = hitData.cursor;
            break;
          }
          if (cursorLeft - 1 &gt;= 0 &amp;&amp; nodes[cursorLeft - 1]) {
            queue.push(nodes[cursorLeft - 1]);
            cursorLeft -= 1;
          }
          if (cursorRight + 1 &lt; nodes.length &amp;&amp; nodes[cursorRight + 1]) {
            queue.push(nodes[cursorRight + 1]);
            cursorRight += 1;
          }
        }
        if (node) {
          maskNodeList.push({
            anchor: anchor,
            node: node,
            cursor: cursor
          });
          addChildBanner(node);
        } else if (selector &amp;&amp; selector.lastIndexOf('&gt;') !== -1) {
          missNodes.push(_objectSpread(_objectSpread({}, anchor), {}, {
            selector: selector &amp;&amp; selector.slice(0, selector.lastIndexOf('&gt;')) + "|".concat(total, " ").concat(index)
          }));
        }
        countList[i] = count;
      });
      maskNodeList.forEach(function (item) {
        maskNode(item.anchor, item.node, item.cursor);
      });
      if (missNodes.length) {
        maskAnchors2(wrapNode, missNodes);
        if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
          WX_BJ_REPORT.BadJs.report('ArticleMask:Error', 'missNodes', {
            mid: 'mmbizwap:articlemask_Monitor',
            view: 'wap_business',
            _info: {
              missNodes: missNodes
            }
          });
        }
      }
      if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; WX_BJ_REPORT.BadJs) {
        WX_BJ_REPORT.BadJs.report('ArticleMask:Info', 'querycount', {
          mid: 'mmbizwap:articlemask_Monitor',
          view: 'wap_business',
          _info: {
            countList: countList
          }
        });
      }
    }
    function init2(wrapNode, anchors) {
      maskAnchors2(wrapNode, anchors);
    }
    function init(wrapNode, anchors) {
      var oldAnchors = [];
      var newAnchors = [];
      anchors.forEach(function (anchor) {
        if (anchor.selector) {
          newAnchors.push(anchor);
        } else {
          oldAnchors.push(anchor);
        }
      });
      init2(wrapNode, newAnchors);
      if (oldAnchors.length &gt; 0) {
        initOld(wrapNode, oldAnchors);
      }
    }
    var complainPainter = {
      init: init
    };

    function setMaskNode(data, $wrap) {
      try {
        if (data.anchor_tree_msg) {
          var start = Date.now();
          var anchors = data.anchor_tree_msg ? JSON.parse(data.anchor_tree_msg).anchor_tree : [];
          var protocol = window.location.protocol;
          complainPainter.init($wrap, anchors);
          wxgspeedsdk.saveSpeeds({
            sample: 1,
            uin: window.uin,
            pid: protocol == 'https:' ? 462 : 417,
            speeds: {
              sid: 38,
              time: Date.now() - start
            }
          });
          wxgspeedsdk.send();
        }
      } catch (error) {
        if (typeof WX_BJ_REPORT !== 'undefined' &amp;&amp; window.WX_BJ_REPORT.BadJs) {
          window.WX_BJ_REPORT.BadJs.onError(error, {
            anchor_tree_msg: window.anchor_tree_msg
          });
        }
      }
    }

    return setMaskNode;

})();
  &lt;/script&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   (function () {
  'use strict';

  

  
  var AD_TYPE = {
    ANDROID_APP_PRODUCT_TYPE: 12,
    IOS_APP_PRODUCT_TYPE: 19,
    ADD_CONTACT_PRODUCT_TYPE: 23,
    MINI_GAME_PRODUCT_TYPE: 46,
    CARD_PRODUCT_TYPE: 36,
    SHOP_PRODUCT_TYPE: 30,
    WECHATCARD_PRODUCT_TYPE: 47,
    BRAND_WECHAT_PRODUCT_TYPE: 29,
    BRAND_GDT_PRODUCT_TYPE: 31
  };
  var AD_POS = {
    POS_BOTTOM: 0,
    POS_BOTTOM_PC: 38,
    POS_MID: 4,
    POS_MID_PC: 39,
    POS_SPONSOR: 3,
    POS_AD_BEFORE_VIDEO: 7,
    POS_AD_AFTER_VIDEO: 9,
    POS_AD_MID_VIDEO: 16,
    POS_AD_KEYWORD: 36,
    POS_AD_COMMENT: 43,
    PC_POS_AD_COMMENT: 44,
    POS_IMAGE_BOTTOM_SPONSOR: 45
  };
  var AD_DEST_TYPE = {
    AD_DEST_TYPE: 0,
    OUTER_DEST_TYPE: 1,
    APPDETAIL_DEST_TYPE: 2,
    BIZ_DEST_TYPE: 3,
    APPINFO_PAGE_DEST_TYPE: 4,
    WECHAT_SHOP_DEST_TYPE: 5,
    WECHAT_APPLET_DEST_TYPE: 6,
    LEAF_DEST_TYPE: 7,
    CANVAS_AD_DEST_TYPE: 9
  };
  var AD_CACHE_TIME = 0.5 * 60 * 1000;
  var AD_JSAPI_WHITE_LIST = ['openUrlWithExtraWebview', 'openADCanvas', 'addContact', 'profile', 'getInstallState', 'installDownloadTask', 'addDownloadTask', 'pauseDownloadTask', 'resumeDownloadTask', 'queryDownloadTask', 'launchApplication', 'writeCommData', 'adDataReport', 'downloadAppInternal', 'wxdownload:progress_change', 'menu:share:appmessage', 'menu:share:timeline', 'menu:share:weibo', 'menu:share:facebook', 'menu:general:share', 'launch3rdApp', 'addDownloadTaskStraight', 'sendAppMessage', 'shareTimeline', 'getNetworkType', 'openBizChat', 'jumpToBizProfile', 'shareWeibo', 'shareFB', 'imagePreview', 'getBackgroundAudioState', 'openWeApp', 'openEmbeddedWeApp', 'preloadMiniProgramContacts', 'preloadMiniProgramEnv', 'calRqt', 'openCardDetail', 'batchAddCard', 'handleMPPageAction', 'makePhoneCall', 'getOAID', 'saveWaid', 'batchPreloadMiniProgram', 'onScreenShot', 'handleAdAction', 'activity:state_change', 'getAdIdInfo', 'onWebPageUrlExposed', 'openFinderView', 'predownloadMiniProgramPackage', 'openCustomerServiceChat', 'showOpenIMContactProfile', 'openWXSearchPage', 'openWXSearchHalfPage'];
  var AD_REQ_PATH_WHITE_LIST = [
  '/mp/advertisement_report', '/mp/ad_report', '/mp/ad_video_report', '/mp/jsmonitor', '/mp/ad_complaint', '/mp/jsreport', '/tp/datacenter/report', '/mp/getappmsgad', '/mp/ad_biz_info', '/mp/appmsg_video_snap', '/mp/cps_product_info', '/mp/mini_drama_info'];
  var AD_WEB_COMPT_REQ_PATH_WHITE_LIST = [/(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/advertisement_report/, /(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/ad_report/, /(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/ad_video_report/, /(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/jsmonitor/, /(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/ad_complaint/, /(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/jsreport/, /(https?:)?\/\/mp\.weixin\.qq\.com\/tp\/datacenter\/report/, /(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/getappmsgad/, /(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/ad_biz_info/, /(https?:)?\/\/mp\.weixin\.qq\.com\/tp\/goods_info/, /(https?:)?\/\/mp\.weixin\.qq\.com\/tp\/app_mobile/, /(https?:)?\/\/mp\.weixin\.qq\.com\/tp\/datareport\/report/, /(https?:)?\/\/mp\.weixin\.qq\.com\/promotion\/wxalandpage\/getcanvasinfo/];
  var transformText = '转化按钮';
  var extraText = '广告文案或辅助信息';
  var defaultMidAdData = {
    hint_txt: '创意-20200827_1',
    url: 'https://ad.weixin.qq.com/guide/196?weixinadkey=59d5cf0b4fbf7d2f66cd90aaa82a5208057512dd06fcb64d7fd57e71ec15945e1744ac499e05a04999381c3bf30c21ca&amp;amp;gdt_vid=wx0clsqxat6lzly601&amp;amp;weixinadinfo=315019981.wx0clsqxat6lzly601.75.1',
    type: '0',
    rl: 'http://ad.wx.com:12638/cgi-bin/click?viewid=AQM1xOr6MFeZmWeZrowCvQcrvQUBUq4o8ER2yFgwF9grPdtUR9bIJQ8laqMAJjGlkGLuVbyABIPX6Eifa2%2FK%2Buq17IIT21tYcUnpeU4VqEEsEQhc5Pa7C7drAvl0Mz30CNepODMXeD%2BEdny8SmmxN7prV78e1L2S6oqhNjrnTqM1t40ZGU84httoAODXEjmE89IX0ncOiP1oTsgm1tYwahSkxN6HLZIb6bhxZrc5ba3mCKMZ5GV4UEyDuQCyySxtA5QTt0eQJJA%2FSgHe79yTxUrzzoGrtlhK0O3HussVeRjKcvLkE6w%2FpQBnropwT%2FmE23RT2bOoyw%2BVCMlWTtk%2Bvxh%2FIOFAmrWHYzDuNkDNRo3um26RD2TFpeyRasbZoFRAV7RA9k4P3REAH4vemxktbNq24rtuF6MFGEcXpcGOD%2FxZJlBmInM7rguFAhRQWvCy3nIpO7knN2rl2DZv%2FcfkuoP4bedzUMcxtrU2Wz%2B82EG9ULHJunGHT%2F%2BcWj%2Bv8n%2Fh9bUtAtk7Fr1HBQdkQ8SbYadhRDWWuSEC2iMfqpMyzNqLltdxhyXxMRpsruPb2p4WoHnSvuGfbnkXIKcDppOTLB38xStPIbbaaR4FC%2B4AOF1UqbtMor9JJQQNz3vspSngY%2F37uYiQXAKNYB2RAB%2BbfoYMSS2VcJvY%2B0lWH3%2BYFTmBs6%2BxixGTJmB4%2FXZZcNs4PgRs6OoIefEnLz%2FvwoAvrs%2FUPotqevoiHfq%2FlLILAzo28D%2FKSU9hOOHXrS4LrUYhK47WKSeoglnagaOZI5kGZa9iBcwj9V6FR4HEml51P9u5xaTOnPZjfEAx5l6BBxTT4379irAZCB2Zfcd6wBU2Eo5p9yXVSH%2FCH8yVAgIEsrJ9oeqpO%2FwozsQ2PkXw%2Bz77B56hYp1zYG7HK%2BCDjx1NSisa6g8PFa72xOb8wpjZ9Lao70oGSWshIjCH4kWfKX0P8uFJc22L%2FZihKj0J%2BqgC1LgiMc6SXmFHdvTSIxTRKm9GImpbVfLTN3xrT%2BGGutwMTfgWta7EDR7d6HXQBA1orNotnnK37GOw1jHud8fzQkfuMN%2F7DO6kW0wAXs4LDMhJpnHi2%2Ba4VjL8Yjh0wmTZkVy4iIPYDmYSAzuJ3aP3cXuGv%2B1JwF%2Fod7hCA6RBYwZN2fXvO5AUo7FdoRr8ssPB7eAiNhcFonMv5%2Bt8L1b7QLoXGlplvxh9Fz669q43xnDsEy8ucOfyush8RiYLPxGj4YFr2gy6%2BAV5u%2FMgZIShq149jRn42%2B%2BnmzPC8JdiiIe4p5Ec7KFFrv%2F302DcKBPI9lQDsC1xWAvIfJcnxC%2FqYgDikLE1SsurxV2PV1icS%2BpU706S2LmnpyAsZw%3D%3D',
    apurl: 'http://ad.wx.com:12638/cgi-bin/exposure?viewid=AQM1xOr6MFeZmWeZrowCvQcrvQUBUq4o8ER2yFgwF9grPdtUR9bIJQ8laqMAJjGlkGLuVbyABIPX6Eifa2%2FK%2Buq17IIT21tYcUnpeU4VqEEsEQhc5Pa7C7drAvl0Mz30CNepODMXeD%2BEdny8SmmxN7prV78e1L2S6oqhNjrnTqM1t40ZGU84httoAODXEjmE89IX0ncOiP1oTsgm1tYwahSkxN6HLZIb6bhxZrc5ba3mCKMZ5GV4UEyDuQCyySxtA5QTt0eQJJA%2FSgHe79yTxUrzzoGrtlhK0O3HussVeRjKcvLkE6w%2FpQBnropwT%2FmE23RT2bOoyw%2BVCMlWTtk%2Bvxh%2FIOFAmrWHYzDuNkDNRo3um26RD2TFpeyRasbZoFRAV7RA9k4P3REAH4vemxktbNq24rtuF6MFGEcXpcGOD%2FxZJlBmInM7rguFAhRQWvCy3nIpO7knN2rl2DZv%2FcfkuoP4bedzUMcxtrU2Wz%2B82EG9ULHJunGHT%2F%2BcWj%2Bv8n%2Fh9bUtAtk7Fr1HBQdkQ8SbYadhRDWWuSEC2iMfqpMyzNqLltdxhyXxMRpsruPb2p4WoHnSvuGfbnkXIKcDppOTLB38xStPIbbaaR4FC%2B4AOF1UqbtMor9JJQQNz3vspSngY%2F37uYiQXAKNYB2RAB%2BbfoYMSS2VcJvY%2B0lWH3%2BYFTmBs6%2BxixGTJmB4%2FXZZcNs4PgRs6OoIefEnLz%2FvwoAvrs%2FUPotqevoiHfq%2FlLILAzo28D%2FKSU9hOOHXrS4LrUYhK47WKSeoglnagaOZI5kGZa9iBcwj9V6FR4HEml51P9u5xaTOnPZjfEAx5l6BBxTT4379irAZCB2Zfcd6wBU2Eo5p9yXVSH%2FCH8yVAgIEsrJ9oeqpO%2FwozsQ2PkXw%2Bz77B56hYp1zYG7HK%2BCDjx1NSisa6g8PFa72xOb8wpjZ9Lao70oGSWshIjCH4kWfKX0P8uFJc22L%2FZihKj0J%2BqgC1LgiMc6SXmFHdvTSIxTRKm9GImpbVfLTN3xrT%2BGGutwMTfgWta7EDR7d6HXQBA1orNotnnK37GOw1jHud8fzQkfuMN%2F7DO6kW0wAXs4LDMhJpnHi2%2Ba4VjL8Yjh0wmTZkVy4iIPYDmYSAzuJ3aP3cXuGv%2B1JwF%2Fod7hCA6RBYwZN2fXvO5AUo7FdoRr8ssPB7eAiNhcFonMv5%2Bt8L1b7QLoXGlplvxh9Fz669q43xnDsEy8ucOfyush8RiYLPxGj4YFr2gy6%2BAV5u%2FMgZIShq149jRn42%2B%2BnmzPC8JdiiIe4p5Ec7KFFrv%2F302DcKBPI9lQDsC1xWAvIfJcnxC%2FqYgDikLE1SsurxV2PV1icS%2BpU706S2LmnpyAsZw%3D%3D',
    traceid: 'wx0clsqxat6lzly601',
    group_id: 'wx0clsqxat6lzly600_wx0clsqxat6lzly601',
    ticket: '',
    pt: 2,
    image_url: 'http://wxsnsdythumb.wxs.qq.com/141/20204/snscosdownload/SH/reserved/5f4604790009bfd700000000b3679d090000008d00004eec?m=1c9e9086c11018ef774e28ee3b744a67&amp;amp;ck=1c9e9086c11018ef774e28ee3b744a67',
    ad_desc: '',
    biz_appid: 'wx69618ae091cf2c76',
    biz_info: {
      user_name: 'gh_1e80bb81a1d2',
      nick_name: '微信广告',
      head_img: 'https://wxa.wxs.qq.com/res/images/bizsdk/preview/wxlogo.png',
      biz_uin: 3094043316,
      signature: '微信广告'
    },
    pos_type: 4,
    watermark_type: 0,
    logo: '',
    is_cpm: 0,
    dest_type: 1,
    material_width: 960,
    material_height: 540,
    ad_width: 0,
    ad_height: 0,
    use_new_protocol: 2,
    product_type: 29,
    material_type: 0,
    crt_exp_tid: 0,
    crt_exp_info: '',
    flow_exp_info: '[{&amp;quot;exp_para&amp;quot;:[{&amp;quot;name&amp;quot;:94574,&amp;quot;value&amp;quot;:&amp;quot;gb&amp;quot;},{&amp;quot;name&amp;quot;:100036,&amp;quot;value&amp;quot;:&amp;quot;1&amp;quot;}]}]',
    watermark_text: '活动推广',
    crt_size: '484',
    button_action: "{&amp;quot;button_text&amp;quot;:&amp;quot;".concat(transformText, "&amp;quot;,&amp;quot;jump_type&amp;quot;:1,&amp;quot;jump_url&amp;quot;:&amp;quot;https:\\/\\/ad.weixin.qq.com\\/guide\\/196?weixinadkey=bd80a7a5a0e57a3b971b1c372bb06a3748f8f01c44f1bfe1a0aa4fe927e21037fc57ddfe77f5e0648611197259574f4b&amp;amp;gdt_vid=wx0clsqxat6lzly601&amp;amp;weixinadinfo=315019981.wx0clsqxat6lzly601.75.1&amp;quot;,&amp;quot;text_type&amp;quot;:0}"),
    position_index: 21,
    shop_image: [],
    material_id_list: [],
    uxinfo: '315019981|wx0clsqxat6lzly601|289237697|0|1598496949|0|0|9020229299926746||AgI0AyUHOnPeccmEYhaAko8Pr4P95P7Vl6qjqKrxaR/CSGQ3e+STumguP/V43UuYT8o=|315020504',
    ext_info: '{}',
    ad_token: 'bf8463b9a4b692768c820c412bb705a73e8a9dd2c769f22549e4bb5aeaaeccc1358b60b6ce7546f95cfdf7f73d187572',
    crt_info: "[{&amp;quot;width&amp;quot;:960,&amp;quot;height&amp;quot;:540,&amp;quot;thumb_url&amp;quot;:&amp;quot;http://wxsnsdythumb.wxs.qq.com/141/20204/snscosdownload/SH/reserved/5f4604790009bfd700000000b3679d090000008d00004eec?m=1c9e9086c11018ef774e28ee3b744a67&amp;amp;ck=1c9e9086c11018ef774e28ee3b744a67&amp;quot;,&amp;quot;image_url&amp;quot;:&amp;quot;http://wxsnsdythumb.wxs.qq.com/141/20204/snscosdownload/SH/reserved/5f4604790009bfd700000000b3679d090000008d00004eec?m=1c9e9086c11018ef774e28ee3b744a67&amp;amp;ck=1c9e9086c11018ef774e28ee3b744a67&amp;quot;,&amp;quot;size&amp;quot;:18323,&amp;quot;image_md5&amp;quot;:&amp;quot;1c9e9086c11018ef774e28ee3b744a67&amp;quot;,&amp;quot;materialId&amp;quot;:&amp;quot;112199640&amp;quot;,&amp;quot;card_info&amp;quot;:{&amp;quot;mp_tag_type&amp;quot;:2,&amp;quot;mp_brandeffect_isopen&amp;quot;:0,&amp;quot;mp_tags&amp;quot;:[&amp;quot;".concat(extraText, "&amp;quot;]}}]"),
    reranking_ext_info: '{&amp;quot;tid&amp;quot;:315020504}',
    ext_back_comm: '{&amp;quot;pctr&amp;quot;:0.019999999553}'
  };
  var CPS_GOODS_TYPE = {
    OLD_GOODS: 'mp',
    NEW_GOODS: 'cps-to-reader',
    IMAGE_GOODS: 'cps-to-image-reader',
    SHORT_PLAY: 'short-play',
    MINI_GAME: 'mini-game'
  };
  var MOUNT_POINT = {
    BODY: 'body',
    DRAWER: 'drawer'
  };
  var AD_CONFIG = {
    defaultMidAdData: defaultMidAdData,
    AD_TYPE: AD_TYPE,
    AD_POS: AD_POS,
    AD_CACHE_TIME: AD_CACHE_TIME,
    AD_DEST_TYPE: AD_DEST_TYPE,
    MOUNT_POINT: MOUNT_POINT,
    AD_FRAME_DOMAIN: 'https://wxa.wxs.qq.com',
    CPS_AD_FRAME_DOMAIN: 'https://file.daihuo.qq.com',
    INVALID_METHOD_NAME_MSG_PREFIX: 'Invalid methodName',
    INVALID_METHOD_TYPE_MSG_PREFIX: 'Invalid methodType',
    INVALID_ARGS_MSG_PREFIX: 'Invalid args',
    INVALID_REQ_PATH_MSG_PREFIX: 'Invalid request path',
    AD_IFRAME_HIDE_CLASS: 'iframe_ad_dn',
    AD_JSAPI_WHITE_LIST: AD_JSAPI_WHITE_LIST,
    AD_REQ_PATH_WHITE_LIST: AD_REQ_PATH_WHITE_LIST,
    AD_WEB_COMPT_REQ_PATH_WHITE_LIST: AD_WEB_COMPT_REQ_PATH_WHITE_LIST,
    FRAME_ERROR: 'onError',
    FRAME_READY: 'onFrameReadyV2',
    CHANGE_FRAME_STYLE: 'changeFrameStyle',
    PROXY_CONSOLE: 'consoleOnHostEnv',
    PROXY_ACTION: 'onProxyV2',
    PROXY_CALLBACK_ACTION: 'proxyCallbackV2',
    CLICK_OUTSIDE_ACTION: 'clickOutsideV2',
    CLICK_AD_ACTION: 'onAdClick',
    PAGE_SCROLL_ACTION: 'pageScrollV2',
    ORIGIN_VIDEO_VID_PREFIX: 'wxv',
    AD_VIDEO_FIN_ACTION: 'adVideoEnd',
    AD_VIDEO_PLAY_ACTION: 'onVideoPlayV2',
    AD_VIDEO_END_ACTION: 'onVideoEndV2',
    AD_PLAY_VIDEO_ACTION: 'playVideoV2',
    AD_EXPOSE_IMAGE_ACTION: 'exposeImage',
    AD_HIDE_IMAGE_ACTION: 'hideImage',
    AD_CHANGE_VIDEO_STATE: 'changeVideoPlayState',
    AD_VIDEO_SET_SCREEN_STATE_ACTION: 'setScreenState',
    AD_IMAGE_SET_EXPAND_STATE_ACTION: 'setImageExpandState',
    GET_APPMSGAD_READY_STATUS_ACTION: 'getAppmsgadReadyStatus',
    APPMSGAD_READY_ACTION: 'appmsgadReady',
    HAS_AD_DATA_QUERY_KEY: 'has_ad_data',
    GET_AD_DATA_AFTER_VIDEO_ACTION_NAME: 'getAdDataAfterVideo',
    SET_PAGE_DATA_ACTION_NAME: 'setPageDataV2',
    SET_AD_DATA_ACTION_NAME: 'setAdDataV2',
    SEND_AD_VID_ACTION: 'sendAdVid',
    GET_AD_VID_ACTION: 'getAdVid',
    CPS_GOODS_TYPE: CPS_GOODS_TYPE,
    AD_FEED_BACK_ACTION: 'feedback',
    EMIT_AD_DATA_ACTION: 'emitAdData',
    AD_TOUCH_ACTION: 'touchEvent',
    SET_AD_FONT_SIZE_ACTION: 'setAdFontSize',
    DRAWER_OPEN_CHANGE: 'onDrawerOpenChange'
  };

  
  var g = {
    defaultContentTpl: '&lt;span class="js_img_placeholder wx_widget_placeholder" style="width:#width# !important;height:#height#px !important;text-indent: 0"&gt;&lt;span class="weui-primary-loading"&gt;&lt;span class="weui-primary-loading__dot"&gt;&lt;/span&gt;&lt;/span&gt;',
    config: [{
      querySelector: 'redpacketcover',
      
      genId: function genId() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return decodeURIComponent(opt.node.getAttribute('data-coveruri') || '');
      },
      
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return opt.parentWidth * 0.7854;
      },
      
      calH: function calH() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return this.calW({
          parentWidth: opt.parentWidth
        }) / 0.73346 + 27 + 37;
      },
      replaceContentCssText: '',
      outerContainerLeft: '',
      outerContainerRight: ''
    },
    {
      querySelector: 'mppoi',
      genId: function genId() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return opt.node.getAttribute('data-id') || '';
      },
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return opt.parentWidth * 1;
      },
      calH: function calH() {
        return 219;
      },
      replaceContentCssText: '',
      appendContentCssText: 'diplay:block;',
      outerContainerLeft: '',
      outerContainerRight: ''
    },
    {
      querySelector: 'mpsearch',
      genId: function genId() {
        return decodeURIComponent('mp-common-search');
      },
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return opt.parentWidth * 1;
      },
      calH: function calH() {
        return 100;
      },
      replaceContentCssText: '',
      appendContentCssText: 'diplay:block;',
      outerContainerLeft: '',
      outerContainerRight: ''
    },
    {
      querySelector: 'mpvideosnap',
      genId: function genId() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        var type = opt.node.getAttribute('data-type') || 'video';
        if (type === 'live') {
          return decodeURIComponent(opt.node.getAttribute('data-noticeid') || '');
        }
        return decodeURIComponent(opt.node.getAttribute('data-id') || '');
      },
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        var type = opt.node.getAttribute('data-type') || 'video';
        var width = opt.node.getAttribute('data-width') || '';
        var height = opt.node.getAttribute('data-height') || '';
        if (type === 'live' || type === 'topic') {
          return opt.parentWidth;
        }
        var ratio = 1;
        ratio = width / height;
        var computedHeight = 0;
        var computedWidth = 0;
        var isHorizontal = false;
        if (ratio &gt; 1) {
          isHorizontal = true;
          ratio = 4 / 3;
        } else {
          ratio = 3 / 4;
        }
        opt.node.setAttribute('data-ratio', ratio);
        opt.node.setAttribute('data-isHorizontal', isHorizontal);
        if (isHorizontal === true) {
          computedWidth = opt.parentWidth;
        } else {
          if (window.innerWidth &lt; 1024) {
            computedWidth = window.innerWidth * 0.65;
          } else {
            computedWidth = opt.parentWidth * 0.65;
          }
        }
        computedHeight = computedWidth / ratio;
        computedHeight = Math.round(computedHeight);
        computedWidth = Math.round(computedWidth);
        opt.node.setAttribute('data-computedWidth', computedWidth);
        opt.node.setAttribute('data-computedHeight', computedHeight);
        return computedWidth;
      },
      calH: function calH() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        var desc = opt.node.getAttribute('data-desc') || '';
        var type = opt.node.getAttribute('data-type') || 'video';
        var computedHeight = opt.node.getAttribute('data-computedHeight') || '';
        switch (type) {
          case 'live':
            return desc ? 152 : 116;
          case 'topic':
            return 201;
          case 'image':
          case 'video':
            return parseFloat(computedHeight);
        }
      },
      getBorderRadius: function getBorderRadius() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        var type = opt.node.getAttribute('data-type') || 'video';
        if (type === 'video') {
          return 4;
        }
        return 8;
      },
      replaceContentCssText: '',
      appendContentCssText: 'display:flex;margin:0px auto;',
      outerContainerLeft: '',
      outerContainerRight: ''
    }, {
      querySelector: 'mp-wxaproduct',
      genId: function genId() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return decodeURIComponent(opt.node.getAttribute('data-wxaproduct-productid') || '');
      },
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return opt.parentWidth * 1 || '100%';
      },
      calH: function calH() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        var cardtype = opt.node.getAttribute('data-wxaproduct-cardtype') || '';
        return cardtype === 'mini' ? 124 : 466;
      },
      replaceContentCssText: '',
      outerContainerLeft: '',
      outerContainerRight: ''
    }, {
      querySelector: 'mpprofile',
      genId: function genId(opt) {
        return opt.node.getAttribute('data-id') || '';
      },
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return opt.parentWidth * 1;
      },
      calH: function calH() {
        return 143;
      },
      replaceContentCssText: '',
      appendContentCssText: 'diplay:block;',
      outerContainerLeft: '',
      outerContainerRight: ''
    },
    {
      querySelector: 'mp-common-product:not([data-cardtype="2"])',
      genId: function genId(opt) {
        return opt.node.getAttribute('data-windowproduct') || '';
      },
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        if (opt.node.getAttribute('data-cardtype') === "0") {
          return Math.min(opt.parentWidth, 400) * 1 || '100%';
        }
        return opt.parentWidth * 1 || '100%';
      },
      calH: function calH(opt) {
        var customstyle = opt.node.getAttribute('data-customstyle') || '{}';
        if (customstyle) {
          try {
            var _JSON$parse = JSON.parse(customstyle),
              display = _JSON$parse.display,
              height = _JSON$parse.height;
            if (display !== 'none') {
              var customHeight = parseInt(height, 10);
              var ratio;
              if (opt.node.getAttribute('data-cardtype') === "0") {
                ratio = Math.min(400, opt.parentWidth) / 350.0 || 1;
              } else {
                ratio = opt.parentWidth / 350.0 || 1;
              }
              customHeight = Math.round(customHeight * ratio);
              return customHeight;
            }
            return 0;
          } catch (err) {
            console.error(err);
          }
        }
        return 0;
      },
      replaceContentCssText: '',
      appendContentCssText: 'diplay:block;',
      outerContainerLeft: '&lt;div style="display: flex; margin: 0 auto 24px;justify-content: center;"&gt;',
      outerContainerRight: '&lt;/div&gt;'
    }, {
      querySelector: 'mpcps:not([data-templateid="video-play"]),mp-common-cpsad:not([data-templateid="video-play"])',
      genId: function genId(opt) {
        var node = opt.node;
        var planId = node.getAttribute('data-planid');
        var goodId = node.getAttribute('data-pid');
        var traceId = node.getAttribute('data-traceid');
        return goodId || planId || traceId || '';
      },
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        var node = opt.node;
        var templateId = node.getAttribute('data-templateid');
        var adType = node.getAttribute('data-adtype');
        var width = 0;
        if (templateId === 'list') {
          width = '100%';
        } else if (templateId === 'card') {
          if (adType === AD_CONFIG.CPS_GOODS_TYPE.SHORT_PLAY || adType === AD_CONFIG.CPS_GOODS_TYPE.MINI_GAME) {
            width = opt.parentWidth ? opt.parentWidth * 0.65 : '100%';
          } else {
            width = '100%';
          }
        }
        return width;
      },
      calH: function calH(opt) {
        var node = opt.node;
        var templateId = node.getAttribute('data-templateid');
        var adType = node.getAttribute('data-adtype');
        var height = 0;
        if (templateId === 'list') {
          if (adType === AD_CONFIG.CPS_GOODS_TYPE.MINI_GAME) {
            height = 79;
          } else {
            height = 16 + 112 + 16 + 8 + 12 * 1.4;
          }
        } else if (templateId === 'card') {
          if (adType === AD_CONFIG.CPS_GOODS_TYPE.SHORT_PLAY) {
            var width = opt.parentWidth * 0.65;
            height = Math.ceil(width * (4 / 3)) + 68;
          } else if (adType === AD_CONFIG.CPS_GOODS_TYPE.MINI_GAME) {
            var _width = opt.parentWidth * 0.65;
            height = Math.ceil(_width * (4 / 3)) + 64;
          } else {
            height = Math.ceil(opt.parentWidth + 111);
          }
        }
        return height;
      },
      replaceContentCssText: '',
      appendContentCssText: 'diplay:block;',
      outerContainerLeft: '&lt;div style="display: flex; justify-content: center"&gt;',
      outerContainerRight: '&lt;/div&gt;'
    }
    ]
  };
  function preloadingInit() {
    var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    if (typeof document.querySelectorAll !== 'function') {
      return;
    }
    var g = {
      maxWith: document.getElementById('img-content').getBoundingClientRect().width,
      idAttr: 'data-preloadingid'
    };
    for (var i = 0, il = opt.config.length; i &lt; il; i++) {
      var a = opt.config[i];
      var list = document.querySelectorAll(a.querySelector);
      for (var j = 0, jl = list.length; j &lt; jl; j++) {
        var node = list[j];
        var parentWidth = node.parentNode.getBoundingClientRect().width;
        parentWidth = Math.min(parentWidth, g.maxWith);

        if (node.getAttribute('has-insert-preloading')) {
          continue;
        }
        var nodeW = a.calW({
          parentWidth: parentWidth,
          node: node
        });
        var nodeH = a.calH({
          parentWidth: parentWidth,
          node: node
        });
        var nodeId = a.genId({
          index: j,
          node: node
        });
        var nodeBorderRadius = typeof a.getBorderRadius === 'function' ? a.getBorderRadius({
          index: j,
          node: node
        }) : 8;

        if (typeof nodeW === 'number') {
          nodeW += 'px';
        }
        var imgHtml = opt.defaultContentTpl.replace(/#height#/g, nodeH).replace(/#width#/g, nodeW).replace(/#borderRadius#/g, nodeBorderRadius);
        var tmpNode = document.createElement('div');
        tmpNode.innerHTML = imgHtml;
        if (a.replaceContentCssText) {
          var replaceContentCssText = a.replaceContentCssText.replace(/#height#/g, nodeH).replace(/#width#/g, nodeW);
          tmpNode.firstChild.style.cssText = replaceContentCssText;
        } else if (a.appendContentCssText) {
          tmpNode.firstChild.style.cssText += a.appendContentCssText;
        }
        var html = (a.outerContainerLeft || '') + tmpNode.innerHTML + (a.outerContainerRight || '');
        tmpNode.innerHTML = html;
        tmpNode.firstChild.setAttribute(g.idAttr, nodeId);
        node.parentNode.insertBefore(tmpNode.firstChild, node.nextSibling);
        node.setAttribute('has-insert-preloading', '1');
      }
    }
  }
  function lotteryPreloading() {
    Array.from(document.getElementsByTagName('mp-common-bluepacket')).forEach(function (ele) {
      ele.setAttribute('data-customstyle', JSON.stringify({
        height: '349px'
      }));
    });
  }
  function init() {
    preloadingInit(g);
    lotteryPreloading();
  }

  function decode(str) {
    var replace = ["&amp;#96;", "`", "&amp;#39;", "'", "&amp;quot;", '"', "&amp;nbsp;", " ", "&amp;gt;", "&gt;", "&amp;lt;", "&lt;", "&amp;yen;", "¥", "&amp;amp;", "&amp;"];
    for (var i = 0; i &lt; replace.length; i += 2) {
      str = str.replace(new RegExp(replace[i], 'g'), replace[i + 1]);
    }
    return str;
  }
  function getQuery(url) {
    url = url || 'http://qq.com/s?a=b#rd';
    var tmp = url.split('?'),
      query = (tmp[1] || '').split('#')[0].split('&amp;'),
      params = {};
    for (var i = 0; i &lt; query.length; i++) {
      var eqIndex = query[i].indexOf('=');
      if (eqIndex &gt; -1) {
        var arg = query[i].substring(0, eqIndex);
        params[arg] = query[i].substring(eqIndex + 1);
      }
    }
    if (params['pass_ticket']) {
      params['pass_ticket'] = encodeURIComponent(decode(params['pass_ticket']).replace(/\s/g, '+'));
    }
    return params;
  }

  function insertAfter(dom, afterDom) {
    var _p = afterDom.parentNode;
    if (!_p) {
      return;
    }
    if (_p.lastChild === afterDom) {
      _p.appendChild(dom);
    } else {
      _p.insertBefore(dom, afterDom.nextSibling);
    }
  }

  if (typeof getComputedStyle === 'undefined') {
    if (document.body.currentStyle) {
      window.getComputedStyle = function (el) {
        return el.currentStyle;
      };
    } else {
      window.getComputedStyle = {};
    }
  }
  function getMaxWith() {
    var container = document.getElementById('img-content');
    var max_width = container.offsetWidth;
    var container_padding = 0;
    var container_style = getComputedStyle(container);
    container_padding = parseFloat(container_style.paddingLeft) + parseFloat(container_style.paddingRight);
    max_width -= container_padding;
    if (!max_width) {
      max_width = window.innerWidth - 32;
    }
    return max_width;
  }
  function getParentWidth(dom) {
    var parent_width = 0;
    var parent = dom.parentNode;
    var outerWidth = 0;
    while (true) {
      if (!parent || parent.nodeType != 1) break;
      var parent_style = getComputedStyle(parent);
      if (!parent_style) break;
      parent_width = parent.clientWidth - parseFloat(parent_style.paddingLeft) - parseFloat(parent_style.paddingRight) - outerWidth;
      if (parent_width &gt; 0) break;
      outerWidth += parseFloat(parent_style.paddingLeft) + parseFloat(parent_style.paddingRight) + parseFloat(parent_style.marginLeft) + parseFloat(parent_style.marginRight) + parseFloat(parent_style.borderLeftWidth) + parseFloat(parent_style.borderRightWidth);
      parent = parent.parentNode;
    }
    return parent_width;
  }
  function getOuterW(dom) {
    var style = getComputedStyle(dom);
    var w = 0;
    if (!!style) {
      w = parseFloat(style.paddingLeft) + parseFloat(style.paddingRight) + parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);
    }
    return w;
  }
  function getOuterH(dom) {
    var style = getComputedStyle(dom);
    var h = 0;
    if (!!style) {
      h = parseFloat(style.paddingTop) + parseFloat(style.paddingBottom) + parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);
    }
    return h;
  }
  function getVideoWh(dom, vid, data) {
    var max_width = getMaxWith();
    var width = max_width;
    var ratio_ = dom.getAttribute('data-ratio') * 1 || 4 / 3;
    if (data.video_page_infos &amp;&amp; Array.isArray(data.video_page_infos) &amp;&amp; data.video_page_infos.some(function (x) {
      return x.video_id === vid;
    })) {
      var videoData = data.video_page_infos.find(function (x) {
        return x.video_id === vid;
      });
      if (Array.isArray(videoData.mp_video_trans_info) &amp;&amp; videoData.mp_video_trans_info.length) {
        var transInfo = videoData.mp_video_trans_info[0];
        if (!!transInfo.width &amp;&amp; !!transInfo.height) {
          ratio_ = transInfo.width / transInfo.height;
        }
      }
    }
    var arr = [4 / 3, 16 / 9];
    var ret = arr[0];
    var abs = Math.abs(ret - ratio_);
    for (var j = 1, jl = arr.length; j &lt; jl; j++) {
      var _abs = Math.abs(arr[j] - ratio_);
      if (_abs &lt; abs) {
        abs = _abs;
        ret = arr[j];
      }
    }
    ratio_ = ret;
    var parent_width = getParentWidth(dom) || max_width;
    var rwidth = width &gt; parent_width ? parent_width : width;
    var outerW = getOuterW(dom) || 0;
    var outerH = getOuterH(dom) || 0;
    var videoW = rwidth - outerW;
    var videoH = videoW / ratio_;
    var speedDotH = 12;
    var rheight = videoH + outerH + speedDotH;
    return {
      w: Math.ceil(rwidth),
      h: Math.ceil(rheight),
      vh: videoH,
      vw: videoW,
      ratio: ratio_,
      sdh: speedDotH
    };
  }

  
  function setImgSize(item, widthNum, widthUnit, ratio, breakParentWidth, finalSetSize) {
    var imgPaddingBorder = getOuterW(item) || 0;
    var imgPaddingBorderTopBottom = getOuterH(item) || 0;
    if (widthNum &gt; getParentWidth(item) &amp;&amp; !breakParentWidth) {
      widthNum = getParentWidth(item);
    }
    var heightNum = (widthNum - imgPaddingBorder) * ratio + imgPaddingBorderTopBottom;
    widthNum !== 'auto' &amp;&amp; (item.style.cssText += ";width: ".concat(widthNum).concat(widthUnit, " !important;"));
    if (widthNum !== 'auto' &amp;&amp; finalSetSize) {
      if (getComputedStyle(document.body).aspectRatio) {
        item.style.cssText += ";height: auto !important; aspect-ratio: calc(1/".concat(ratio, ");");
      } else {
        item.style.cssText += ";height: ".concat(heightNum).concat(widthUnit, " !important;");
      }
    }
    return {
      finalWidth: widthNum,
      finalHeight: heightNum
    };
  }

  var isAccessibilityKey = 'isMpUserAccessibility';
  var imgPlaceholderClass = 'js_img_placeholder';
  var isAccessMode = window.localStorage.getItem(isAccessibilityKey);
  var imgSizeData;
  var validArr = ',' + [0.875, 1, 1.125, 1.25, 1.375].join(',') + ',';
  var match = window.location.href.match(/winzoom=(\d+(?:\.\d+)?)/);
  if (match &amp;&amp; match[1]) {
    var winzoom = parseFloat(match[1]);
    if (validArr.indexOf(',' + winzoom + ',') &gt;= 0) ;
  }
  function getImgSrcMainInfo(src) {
    var pathName = new URL(src).pathname;
    var lastIndex = pathName.lastIndexOf('/');
    return lastIndex &gt; 0 ? pathName.slice(0, lastIndex) : pathName;
  }
  function setSize(images, videos, data) {
    var bypassPreloading = arguments.length &gt; 3 &amp;&amp; arguments[3] !== undefined ? arguments[3] : false;
    var noWidth = !document.body.clientWidth || !document.getElementById('img-content') || !document.getElementById('img-content').offsetWidth;
    var _loop = function _loop() {
        if (noWidth) {
          return 0;
        }
        if (window.__second_open__ &amp;&amp; videos[vi].getAttribute('__sec_open_place_holder__')) {
          return 1;
        }
        var a = videos[vi];
        var src_ = a.getAttribute('src') || a.getAttribute('data-src') || '';
        var vid = getQuery(src_).vid || a.getAttribute('data-mpvid');
        if (!vid) {
          return 1;
        }
        vid = vid.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
        a.removeAttribute('src');
        a.style.display = 'none';
        var obj = getVideoWh(a, vid, data);
        var videoPlaceHolderSpan = document.createElement('span');
        videoPlaceHolderSpan.className = "".concat(imgPlaceholderClass, " wx_widget_placeholder");
        videoPlaceHolderSpan.setAttribute('data-vid', vid);
        videoPlaceHolderSpan.innerHTML = '&lt;span class="weui-primary-loading"&gt;&lt;span class="weui-primary-loading__dot"&gt;&lt;/span&gt;&lt;/span&gt;';
        videoPlaceHolderSpan.style.cssText = "width: " + obj.w + "px !important;";
        insertAfter(videoPlaceHolderSpan, a);

        a.style.cssText += ';width: ' + obj.w + 'px !important;';
        a.setAttribute('width', obj.w);
        {
          videoPlaceHolderSpan.style.cssText += 'height: ' + (obj.h - obj.sdh) + 'px !important;margin-bottom: ' + obj.sdh + 'px !important;';
          a.style.cssText += 'height: ' + obj.h + 'px !important;';
          a.setAttribute('height', obj.h);
        }
        a.setAttribute('data-vh', obj.vh);
        a.setAttribute('data-vw', obj.vw);
        if (a.getAttribute("data-mpvid")) {
          a.setAttribute("data-src", location.protocol + "//mp.weixin.qq.com/mp/readtemplate?t=pages/video_player_tmpl&amp;auto=0&amp;vid=" + vid);
        } else {
          a.setAttribute("data-src", location.protocol + "//v.qq.com/iframe/player.html?vid=" + vid + "&amp;width=" + obj.vw + "&amp;height=" + obj.vh + "&amp;auto=0");
        }
        a.setAttribute('__sec_open_place_holder__', true);
        var index = vi;
        (function setHitStyle() {
          var hitInfos = data.video_page_infos;
          var ret = (hitInfos || []).find(function (info) {
            return info.video_id === vid;
          });
          if (!ret) return;
          var ori = ret.ori_status;
          var hit_biz_headimg = ret.hit_biz_headimg,
            hit_nickname = ret.hit_nickname,
            hit_username = ret.hit_username;
          var sourceBiz = ret.hit_bizuin;

          var selfUserName = data.user_name;
          if (ori === 2 &amp;&amp; selfUserName !== hit_username) {
            var videoBar = document.createElement('div');
            var videoBarHtml = "\n          &lt;div class=\"wx-edui-video_source_link js_wx_tap_highlight wx_tap_card\" id=\"".concat(hit_username).concat(index, "\" data-hit-username=\"").concat(hit_username, "\" data-hit-biz=\"").concat(sourceBiz, "\"&gt;\n            &lt;div class=\"wx-edui-video_source_word\"&gt;_(\"\u4EE5\u4E0B\u89C6\u9891\u6765\u6E90\u4E8E\")&lt;/div&gt;\n            &lt;div class=\"wx-edui-video_account_info\"&gt;\n              &lt;div class=\"wx-edui-video_account_avatar\" id=\"").concat(hit_biz_headimg).concat(index, "\" data-src=\"").concat(hit_biz_headimg, "\"&gt;&lt;/div&gt;\n              &lt;div class=\"wx-edui-video_account_name\"&gt;").concat(hit_nickname, "&lt;/div&gt;\n              &lt;i class=\"wx-edui-video_account_arrow\"&gt;&lt;/i&gt;\n            &lt;/div&gt;\n            &lt;div class=\"wx-edui-video_source_link__layer_mask\"&gt;&lt;/div&gt;\n          &lt;/div&gt;");
            videoBar.innerHTML = videoBarHtml;
            document.querySelectorAll('.video_iframe').forEach(function (item) {
              if (item.getAttribute('data-mpvid') === vid &amp;&amp; item.getAttribute('data-hasSource') !== '1') {
                item.setAttribute('data-hasSource', 1);
                item.parentNode.insertBefore(videoBar, item);
              }
            });
            var avatorEle = document.getElementById(hit_biz_headimg + index);
            var avatorSrc = avatorEle.dataset.src;
            if (ret.hit_biz_headimg) avatorEle.style.backgroundImage = "url(".concat(avatorSrc, ")");
          }
        })();
      },
      _ret;
    for (var vi = 0, viLen = videos.length; vi &lt; viLen; vi++) {
      _ret = _loop();
      if (_ret === 0) break;
      if (_ret === 1) continue;
    }
    var isCarton = data.copyright_info.is_cartoon_copyright * 1 || data.user_info.is_care_mode * 1 || isAccessMode === '1';
    var max_width = getMaxWith();
    if (!imgSizeData) {
      imgSizeData = {};
      data.picture_page_info_list = data.picture_page_info_list || [];
      var noWidthHeightCount = 0;
      var hasWidthHeightCount = 0;
      data.picture_page_info_list.forEach(function (imgData) {
        try {
          var width = Number(imgData.width);
          var height = Number(imgData.height);
          if (width &amp;&amp; height) {
            imgSizeData[getImgSrcMainInfo(imgData.cdn_url)] = {
              ratio: height / width,
              width: width
            };
            hasWidthHeightCount++;
          } else {
            noWidthHeightCount++;
          }
        } catch (err) {
          console.error(err);
        }
      });
      if (Math.random() &lt; 0.01 &amp;&amp; Number(data.create_timestamp) &gt; 1682352000) {
        hasWidthHeightCount &amp;&amp; (new Image().src = "//mp.weixin.qq.com/mp/jsmonitor?idkey=330742_20_".concat(hasWidthHeightCount, "&amp;r=").concat(Math.random()));
        noWidthHeightCount &amp;&amp; (new Image().src = "//mp.weixin.qq.com/mp/jsmonitor?idkey=330742_21_".concat(noWidthHeightCount, "&amp;r=").concat(Math.random()));
        if (!data.picture_page_info_list.length) {
          setTimeout(function () {
            noWidthHeightCount = document.querySelectorAll('#js_content img').length;
            noWidthHeightCount &amp;&amp; (new Image().src = "//mp.weixin.qq.com/mp/jsmonitor?idkey=330742_21_".concat(noWidthHeightCount, "&amp;r=").concat(Math.random()));
          }, 300);
        }
      }
    }
    function adjustTableColumnWidths() {
      var screenWidth = window.innerWidth;
      var tables = document.querySelectorAll('table');
      tables.forEach(function (table) {
        var rows = table.querySelectorAll('tr');
        var shouldSkipTable = false;
        for (var i = 0; i &lt; rows.length; i++) {
          var row = rows[i];
          var cells = Array.from(row.querySelectorAll('td'));
          var hasAllDataColWidth = cells.every(function (cell) {
            return cell.hasAttribute('data-colwidth');
          });
          console.log('hasAllDataColWidth:', hasAllDataColWidth);
          if (!hasAllDataColWidth) {
            shouldSkipTable = true;
            break;
          }
        }
        if (shouldSkipTable) {
          return;
        }
        rows.forEach(function (row) {
          var cells = Array.from(row.querySelectorAll('td'));
          if (cells.length &gt; 1) {
            var colWidths = cells.map(function (cell) {
              return parseInt(cell.getAttribute('data-colwidth'), 10) || 0;
            });
            var allEqual = colWidths.every(function (width) {
              return width === colWidths[0];
            });
            console.log('allEqual:', allEqual);
            if (!allEqual) {
              return;
            }
            var totalColWidth = colWidths.reduce(function (sum, width) {
              return sum + width;
            }, 0);
            cells.forEach(function (cell, index) {
              var colWidth = colWidths[index];
              if (colWidth &gt; 0 &amp;&amp; totalColWidth &gt; 0) {
                var widthPercentage = colWidth / totalColWidth;
                var newWidth = screenWidth * widthPercentage;
                cell.style.width = "".concat(newWidth, "px");
              }
            });
          }
        });
      });
    }
    adjustTableColumnWidths();

    for (var im = 0, imLen = images.length; im &lt; imLen; im++) {
      if (window.__second_open__ &amp;&amp; images[im].getAttribute('__sec_open_place_holder__')) {
        continue;
      }
      var img = images[im];
      var imgDataSrc = img.getAttribute('data-src');
      var realSrc = img.getAttribute('src');
      var isEmoji = false;
      if (imgDataSrc &amp;&amp; /^https?:\/\/res\.wx\.qq\.com\/t\/wx_fed\/we-emoji\//.test(imgDataSrc)) {
        isEmoji = true;
        img.style = 'display:inline-block;font-size:22px;width:1em;height:1em;vertical-align:middle;background-size:1em;background-repeat:no-repeat;margin-top:-.2em';
      }
      if (!imgDataSrc || realSrc) continue;

      var imgStyle = img.getAttribute('style');
      img.setAttribute('data-original-style', imgStyle);
      var width_ = img.dataset.w;
      var imgRatio = 1 * img.dataset.ratio;
      img.setAttribute('data-index', im);
      var width_num = 0;
      var width_unit = 'px';
      try {
        var imgSizeFromBackend = imgSizeData[getImgSrcMainInfo(imgDataSrc)];
        if (imgSizeFromBackend) {
          if (imgSizeFromBackend.ratio) {
            imgRatio = imgSizeFromBackend.ratio;
            img.setAttribute('data-ratio', imgSizeFromBackend.ratio);
          }
          if (imgSizeFromBackend.width) {
            width_ = imgSizeFromBackend.width;
            img.setAttribute('data-w', imgSizeFromBackend.width);
          }
        }
      } catch (err) {
        console.error(err);
      }
      if (imgRatio &amp;&amp; imgRatio &gt; 0) {
        if (!(isCarton || isEmoji)) {
          img.src = "data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='1px' height='1px' viewBox='0 0 1 1' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3E%3C/title%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' fill-opacity='0'%3E%3Cg transform='translate(-249.000000, -126.000000)' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E";
          if (noWidth) {
            var fallbackWidth = img.style.width || img.getAttribute('width') || width_;
            var fallbackMaxWidth = 360;

            fallbackWidth = parseFloat(fallbackWidth, 10) &gt; fallbackMaxWidth ? fallbackMaxWidth : fallbackWidth;
            if (fallbackWidth === 'inherit') {
              fallbackWidth = fallbackMaxWidth;
            }
            if (fallbackWidth) {
              img.setAttribute('_width', !isNaN(fallbackWidth * 1) ? fallbackWidth + 'px' : fallbackWidth);
            }
            if (typeof fallbackWidth === 'string' &amp;&amp; fallbackWidth.indexOf('%') !== -1) {
              fallbackWidth = parseFloat(fallbackWidth.replace('%', ''), 10) / 100 * fallbackMaxWidth;
            }
            if (fallbackWidth === 'auto') {
              fallbackWidth = width_;
              if (width_ === 'auto' || !width_) {
                fallbackWidth = fallbackMaxWidth;
              } else {
                fallbackWidth = width_;
              }
            }
            var fallbackRes = /^(\d+(?:\.\d+)?)([a-zA-Z%]+)?$/.exec(fallbackWidth);
            var fallbackLastWidth = fallbackRes &amp;&amp; fallbackRes.length &gt;= 2 ? fallbackRes[1] : 0;
            var fallbackUnit = fallbackRes &amp;&amp; fallbackRes.length &gt;= 3 &amp;&amp; fallbackRes[2] ? fallbackRes[2] : 'px';
            setImgSize(img, fallbackLastWidth, fallbackUnit, imgRatio, true);
            img.classList.add(imgPlaceholderClass, "wx_img_placeholder");
            continue;
          }
          img.classList.add(imgPlaceholderClass, "wx_img_placeholder");
        }
        var parent_width = getParentWidth(img) || max_width;
        var init_width = img.style.width || img.getAttribute('width') || width_ || parent_width;
        init_width = parseFloat(init_width, 10) &gt; max_width ? max_width : init_width;
        if (init_width === 'inherit') {
          init_width = parent_width;
        }
        if (init_width) {
          img.setAttribute('_width', !isNaN(init_width * 1) ? init_width + 'px' : init_width);
        }
        if (typeof init_width === 'string' &amp;&amp; init_width.indexOf('%') !== -1) {
          setImgSize(img, width_, 'px', imgRatio, true);
          parent_width = getParentWidth(img) || max_width;
          init_width = parseFloat(init_width.replace('%', ''), 10) / 100 * parent_width;
        }
        if (init_width === 'auto') {
          init_width = width_;
          if (width_ === 'auto' || !width_) {
            init_width = parent_width;
          } else {
            init_width = width_;
          }
        }
        var res = /^(\d+(?:\.\d+)?)([a-zA-Z%]+)?$/.exec(init_width);
        width_num = res &amp;&amp; res.length &gt;= 2 ? res[1] : 0;
        width_unit = res &amp;&amp; res.length &gt;= 3 &amp;&amp; res[2] ? res[2] : 'px';
        var imgWidth = width_num;

        if (isCarton || isEmoji) {
          img.src = imgDataSrc;
          img.style.height = 'auto';
        } else {
          setImgSize(img, imgWidth, width_unit, imgRatio, true);
          var _setImgSize = setImgSize(img, imgWidth, width_unit, imgRatio, false, true),
            finalWidth = _setImgSize.finalWidth,
            finalHeight = _setImgSize.finalHeight;
          if (finalWidth &lt;= 16 || finalHeight &lt;= 16) {
            img.classList.remove(imgPlaceholderClass, "wx_img_placeholder");
            img.classList.add('wx_img_placeholder_mini');
          }
        }
      }
      if (!data.is_h5_render) {
        img.setAttribute('__sec_open_place_holder__', true);
      }
    }
    if (!bypassPreloading) init();
  }

  var ua = navigator.userAgent;
  /mac\sos/i.test(ua) &amp;&amp; !/(iPhone|iPad|iPod|iOS)/i.test(ua) || /windows\snt/i.test(ua);

  var images = document.getElementsByTagName('img');
  var videos = [];

  var user_name = "gh_b2bc148c1cf8";
  var isCartoonCopyright = '0';
  var is_care_mode = '';
  var createTimestamp = '1780125513';
  var picturePageInfoList = "[{'cdn_url':'https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLSs3cbicZle1icfurtWvW8cc5FsYc7tvmwLAicfrjC0QIQNchH2NQJwdeHN4XBe9DSiaJ8Ou06ok5gVW3MBk6Inl2b0wnmLE4k18c/640?wx_fmt=png\x26amp;amp;from=appmsg','width':'1080','height':'660'},{'cdn_url':'https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLzibA7Zxvjb84icaGkF9pIM4NyhZYDoHxlSNNpOic2OJjeNjAMav0qvt4zGDvsg9DHxyK0IBc5UiaJWJPftJJY0aBicumInwFA30rI/640?wx_fmt=png\x26amp;amp;from=appmsg','width':'1080','height':'838'},{'cdn_url':'https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLg3WpgHsRtXibY8lzldk2TfyIibsoFibibic1kyHOFt2vLwlp64V1jUCeHtV8Ae7I2vG1hIbyzYLNOVpZdkrDqbZWw2UgGmCp5cOts/640?wx_fmt=png\x26amp;amp;from=appmsg','width':'500','height':'832'},{'cdn_url':'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKduHQq35tj1kH0iaAEWIJIq7vnyklc1ZHWiao4YFLWyLp9eOwdhtYEtib3Nmw044Qn2vMib4d2gV2iauRVC6pHaF6dkdVhasrpPyZc/640?wx_fmt=png\x26amp;amp;from=appmsg','width':'501','height':'833'},{'cdn_url':'https://mmbiz.qpic.cn/mmbiz_gif/VDCUoW3UiblLqknRzLyyiaTukmQEA2YuSRINkzATCDBOudZia9YA5WZP3uOia3PQAoNX1BWzrtCR0OWcjrGC5UfLBX31TZ5GAPaJx8j99iaSZuxs/640?wx_fmt=gif\x26amp;amp;from=appmsg','width':'1080','height':'712'},{'cdn_url':'https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblK3cPZsmKT9ibCX4m3lAlM0F8iafZ789bu6K2Sp8EYSKI9eu275wNzvHjgyiaVDK7MCr2IiaG6yibW6SPduicX5iaEGbkh5QSRhUw8elg/640?wx_fmt=png\x26amp;amp;from=appmsg','width':'923','height':'823'},{'cdn_url':'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKZ2d8icnPID1xQXibzV6bTlPr8WzPP7aHbrJPf5w7uTRadI2WhDsv9LqXzgxB3M4ic3Gaw0tgk6WzwaVL4oCNbXHvXIcDNYLzGes/640?wx_fmt=png\x26amp;amp;from=appmsg','width':'1063','height':'741'},{'cdn_url':'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIUx3TRrYgCVMmXiafJm5hyQW7f0B6rq9sLYeJbl9icj6EZqESDg56u2qjw9stlOvZSGyMjhGL8UtPWOWoG80Hmp8Zfvia1CVuicoo/640?wx_fmt=png\x26amp;amp;from=appmsg','width':'1000','height':'510'},{'cdn_url':'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJ8z7qyEqFmhAX2picYsSg0o8krbCb000pA0XgYo7icuHJg0DVuLqviciboeTccqcrb07zadwibFIEbTwKJyOshfErNrxEdATqIOxWo/640?wx_fmt=png\x26amp;amp;from=appmsg','width':'953','height':'687'},{'cdn_url':'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblL4MQWZn52xsn1aKZFSNk8S7Z9EPVxBtibuqVicDrEwDClU8FjempibK12kvnmITkIJV5QBnSySu0g4CQNQ4Xav7XcmpYcsc8TiaC0/640?wx_fmt=png\x26amp;amp;from=appmsg','width':'1080','height':'648'},]";
  picturePageInfoList = picturePageInfoList.includes(',]') ? picturePageInfoList.replace(',]', ']') : picturePageInfoList;
  try {
    picturePageInfoList = JSON.parse(picturePageInfoList.replace(/'/g, '"'));
  } catch (err) {
    picturePageInfoList = [];
    console.error(err);
  }
  var data = {
    is_h5_render: true,
    user_name: user_name,
    copyright_info: {
      is_cartoon_copyright: isCartoonCopyright
    },
    picture_page_info_list: picturePageInfoList,
    create_timestamp: createTimestamp,
    user_info: {
      is_care_mode: is_care_mode
    }
  };
  setSize(images, videos, data);

})();
  &lt;/script&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   (function () {
  'use strict';

  

  
  var AD_TYPE = {
    ANDROID_APP_PRODUCT_TYPE: 12,
    IOS_APP_PRODUCT_TYPE: 19,
    ADD_CONTACT_PRODUCT_TYPE: 23,
    MINI_GAME_PRODUCT_TYPE: 46,
    CARD_PRODUCT_TYPE: 36,
    SHOP_PRODUCT_TYPE: 30,
    WECHATCARD_PRODUCT_TYPE: 47,
    BRAND_WECHAT_PRODUCT_TYPE: 29,
    BRAND_GDT_PRODUCT_TYPE: 31
  };
  var AD_POS = {
    POS_BOTTOM: 0,
    POS_BOTTOM_PC: 38,
    POS_MID: 4,
    POS_MID_PC: 39,
    POS_SPONSOR: 3,
    POS_AD_BEFORE_VIDEO: 7,
    POS_AD_AFTER_VIDEO: 9,
    POS_AD_MID_VIDEO: 16,
    POS_AD_KEYWORD: 36,
    POS_AD_COMMENT: 43,
    PC_POS_AD_COMMENT: 44,
    POS_IMAGE_BOTTOM_SPONSOR: 45
  };
  var AD_DEST_TYPE = {
    AD_DEST_TYPE: 0,
    OUTER_DEST_TYPE: 1,
    APPDETAIL_DEST_TYPE: 2,
    BIZ_DEST_TYPE: 3,
    APPINFO_PAGE_DEST_TYPE: 4,
    WECHAT_SHOP_DEST_TYPE: 5,
    WECHAT_APPLET_DEST_TYPE: 6,
    LEAF_DEST_TYPE: 7,
    CANVAS_AD_DEST_TYPE: 9
  };
  var AD_CACHE_TIME = 0.5 * 60 * 1000;
  var AD_JSAPI_WHITE_LIST = ['openUrlWithExtraWebview', 'openADCanvas', 'addContact', 'profile', 'getInstallState', 'installDownloadTask', 'addDownloadTask', 'pauseDownloadTask', 'resumeDownloadTask', 'queryDownloadTask', 'launchApplication', 'writeCommData', 'adDataReport', 'downloadAppInternal', 'wxdownload:progress_change', 'menu:share:appmessage', 'menu:share:timeline', 'menu:share:weibo', 'menu:share:facebook', 'menu:general:share', 'launch3rdApp', 'addDownloadTaskStraight', 'sendAppMessage', 'shareTimeline', 'getNetworkType', 'openBizChat', 'jumpToBizProfile', 'shareWeibo', 'shareFB', 'imagePreview', 'getBackgroundAudioState', 'openWeApp', 'openEmbeddedWeApp', 'preloadMiniProgramContacts', 'preloadMiniProgramEnv', 'calRqt', 'openCardDetail', 'batchAddCard', 'handleMPPageAction', 'makePhoneCall', 'getOAID', 'saveWaid', 'batchPreloadMiniProgram', 'onScreenShot', 'handleAdAction', 'activity:state_change', 'getAdIdInfo', 'onWebPageUrlExposed', 'openFinderView', 'predownloadMiniProgramPackage', 'openCustomerServiceChat', 'showOpenIMContactProfile', 'openWXSearchPage', 'openWXSearchHalfPage'];
  var AD_REQ_PATH_WHITE_LIST = [
  '/mp/advertisement_report', '/mp/ad_report', '/mp/ad_video_report', '/mp/jsmonitor', '/mp/ad_complaint', '/mp/jsreport', '/tp/datacenter/report', '/mp/getappmsgad', '/mp/ad_biz_info', '/mp/appmsg_video_snap', '/mp/cps_product_info', '/mp/mini_drama_info'];
  var AD_WEB_COMPT_REQ_PATH_WHITE_LIST = [/(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/advertisement_report/, /(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/ad_report/, /(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/ad_video_report/, /(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/jsmonitor/, /(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/ad_complaint/, /(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/jsreport/, /(https?:)?\/\/mp\.weixin\.qq\.com\/tp\/datacenter\/report/, /(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/getappmsgad/, /(https?:)?\/\/mp\.weixin\.qq\.com\/mp\/ad_biz_info/, /(https?:)?\/\/mp\.weixin\.qq\.com\/tp\/goods_info/, /(https?:)?\/\/mp\.weixin\.qq\.com\/tp\/app_mobile/, /(https?:)?\/\/mp\.weixin\.qq\.com\/tp\/datareport\/report/, /(https?:)?\/\/mp\.weixin\.qq\.com\/promotion\/wxalandpage\/getcanvasinfo/];
  var transformText = '转化按钮';
  var extraText = '广告文案或辅助信息';
  var defaultMidAdData = {
    hint_txt: '创意-20200827_1',
    url: 'https://ad.weixin.qq.com/guide/196?weixinadkey=59d5cf0b4fbf7d2f66cd90aaa82a5208057512dd06fcb64d7fd57e71ec15945e1744ac499e05a04999381c3bf30c21ca&amp;amp;gdt_vid=wx0clsqxat6lzly601&amp;amp;weixinadinfo=315019981.wx0clsqxat6lzly601.75.1',
    type: '0',
    rl: 'http://ad.wx.com:12638/cgi-bin/click?viewid=AQM1xOr6MFeZmWeZrowCvQcrvQUBUq4o8ER2yFgwF9grPdtUR9bIJQ8laqMAJjGlkGLuVbyABIPX6Eifa2%2FK%2Buq17IIT21tYcUnpeU4VqEEsEQhc5Pa7C7drAvl0Mz30CNepODMXeD%2BEdny8SmmxN7prV78e1L2S6oqhNjrnTqM1t40ZGU84httoAODXEjmE89IX0ncOiP1oTsgm1tYwahSkxN6HLZIb6bhxZrc5ba3mCKMZ5GV4UEyDuQCyySxtA5QTt0eQJJA%2FSgHe79yTxUrzzoGrtlhK0O3HussVeRjKcvLkE6w%2FpQBnropwT%2FmE23RT2bOoyw%2BVCMlWTtk%2Bvxh%2FIOFAmrWHYzDuNkDNRo3um26RD2TFpeyRasbZoFRAV7RA9k4P3REAH4vemxktbNq24rtuF6MFGEcXpcGOD%2FxZJlBmInM7rguFAhRQWvCy3nIpO7knN2rl2DZv%2FcfkuoP4bedzUMcxtrU2Wz%2B82EG9ULHJunGHT%2F%2BcWj%2Bv8n%2Fh9bUtAtk7Fr1HBQdkQ8SbYadhRDWWuSEC2iMfqpMyzNqLltdxhyXxMRpsruPb2p4WoHnSvuGfbnkXIKcDppOTLB38xStPIbbaaR4FC%2B4AOF1UqbtMor9JJQQNz3vspSngY%2F37uYiQXAKNYB2RAB%2BbfoYMSS2VcJvY%2B0lWH3%2BYFTmBs6%2BxixGTJmB4%2FXZZcNs4PgRs6OoIefEnLz%2FvwoAvrs%2FUPotqevoiHfq%2FlLILAzo28D%2FKSU9hOOHXrS4LrUYhK47WKSeoglnagaOZI5kGZa9iBcwj9V6FR4HEml51P9u5xaTOnPZjfEAx5l6BBxTT4379irAZCB2Zfcd6wBU2Eo5p9yXVSH%2FCH8yVAgIEsrJ9oeqpO%2FwozsQ2PkXw%2Bz77B56hYp1zYG7HK%2BCDjx1NSisa6g8PFa72xOb8wpjZ9Lao70oGSWshIjCH4kWfKX0P8uFJc22L%2FZihKj0J%2BqgC1LgiMc6SXmFHdvTSIxTRKm9GImpbVfLTN3xrT%2BGGutwMTfgWta7EDR7d6HXQBA1orNotnnK37GOw1jHud8fzQkfuMN%2F7DO6kW0wAXs4LDMhJpnHi2%2Ba4VjL8Yjh0wmTZkVy4iIPYDmYSAzuJ3aP3cXuGv%2B1JwF%2Fod7hCA6RBYwZN2fXvO5AUo7FdoRr8ssPB7eAiNhcFonMv5%2Bt8L1b7QLoXGlplvxh9Fz669q43xnDsEy8ucOfyush8RiYLPxGj4YFr2gy6%2BAV5u%2FMgZIShq149jRn42%2B%2BnmzPC8JdiiIe4p5Ec7KFFrv%2F302DcKBPI9lQDsC1xWAvIfJcnxC%2FqYgDikLE1SsurxV2PV1icS%2BpU706S2LmnpyAsZw%3D%3D',
    apurl: 'http://ad.wx.com:12638/cgi-bin/exposure?viewid=AQM1xOr6MFeZmWeZrowCvQcrvQUBUq4o8ER2yFgwF9grPdtUR9bIJQ8laqMAJjGlkGLuVbyABIPX6Eifa2%2FK%2Buq17IIT21tYcUnpeU4VqEEsEQhc5Pa7C7drAvl0Mz30CNepODMXeD%2BEdny8SmmxN7prV78e1L2S6oqhNjrnTqM1t40ZGU84httoAODXEjmE89IX0ncOiP1oTsgm1tYwahSkxN6HLZIb6bhxZrc5ba3mCKMZ5GV4UEyDuQCyySxtA5QTt0eQJJA%2FSgHe79yTxUrzzoGrtlhK0O3HussVeRjKcvLkE6w%2FpQBnropwT%2FmE23RT2bOoyw%2BVCMlWTtk%2Bvxh%2FIOFAmrWHYzDuNkDNRo3um26RD2TFpeyRasbZoFRAV7RA9k4P3REAH4vemxktbNq24rtuF6MFGEcXpcGOD%2FxZJlBmInM7rguFAhRQWvCy3nIpO7knN2rl2DZv%2FcfkuoP4bedzUMcxtrU2Wz%2B82EG9ULHJunGHT%2F%2BcWj%2Bv8n%2Fh9bUtAtk7Fr1HBQdkQ8SbYadhRDWWuSEC2iMfqpMyzNqLltdxhyXxMRpsruPb2p4WoHnSvuGfbnkXIKcDppOTLB38xStPIbbaaR4FC%2B4AOF1UqbtMor9JJQQNz3vspSngY%2F37uYiQXAKNYB2RAB%2BbfoYMSS2VcJvY%2B0lWH3%2BYFTmBs6%2BxixGTJmB4%2FXZZcNs4PgRs6OoIefEnLz%2FvwoAvrs%2FUPotqevoiHfq%2FlLILAzo28D%2FKSU9hOOHXrS4LrUYhK47WKSeoglnagaOZI5kGZa9iBcwj9V6FR4HEml51P9u5xaTOnPZjfEAx5l6BBxTT4379irAZCB2Zfcd6wBU2Eo5p9yXVSH%2FCH8yVAgIEsrJ9oeqpO%2FwozsQ2PkXw%2Bz77B56hYp1zYG7HK%2BCDjx1NSisa6g8PFa72xOb8wpjZ9Lao70oGSWshIjCH4kWfKX0P8uFJc22L%2FZihKj0J%2BqgC1LgiMc6SXmFHdvTSIxTRKm9GImpbVfLTN3xrT%2BGGutwMTfgWta7EDR7d6HXQBA1orNotnnK37GOw1jHud8fzQkfuMN%2F7DO6kW0wAXs4LDMhJpnHi2%2Ba4VjL8Yjh0wmTZkVy4iIPYDmYSAzuJ3aP3cXuGv%2B1JwF%2Fod7hCA6RBYwZN2fXvO5AUo7FdoRr8ssPB7eAiNhcFonMv5%2Bt8L1b7QLoXGlplvxh9Fz669q43xnDsEy8ucOfyush8RiYLPxGj4YFr2gy6%2BAV5u%2FMgZIShq149jRn42%2B%2BnmzPC8JdiiIe4p5Ec7KFFrv%2F302DcKBPI9lQDsC1xWAvIfJcnxC%2FqYgDikLE1SsurxV2PV1icS%2BpU706S2LmnpyAsZw%3D%3D',
    traceid: 'wx0clsqxat6lzly601',
    group_id: 'wx0clsqxat6lzly600_wx0clsqxat6lzly601',
    ticket: '',
    pt: 2,
    image_url: 'http://wxsnsdythumb.wxs.qq.com/141/20204/snscosdownload/SH/reserved/5f4604790009bfd700000000b3679d090000008d00004eec?m=1c9e9086c11018ef774e28ee3b744a67&amp;amp;ck=1c9e9086c11018ef774e28ee3b744a67',
    ad_desc: '',
    biz_appid: 'wx69618ae091cf2c76',
    biz_info: {
      user_name: 'gh_1e80bb81a1d2',
      nick_name: '微信广告',
      head_img: 'https://wxa.wxs.qq.com/res/images/bizsdk/preview/wxlogo.png',
      biz_uin: 3094043316,
      signature: '微信广告'
    },
    pos_type: 4,
    watermark_type: 0,
    logo: '',
    is_cpm: 0,
    dest_type: 1,
    material_width: 960,
    material_height: 540,
    ad_width: 0,
    ad_height: 0,
    use_new_protocol: 2,
    product_type: 29,
    material_type: 0,
    crt_exp_tid: 0,
    crt_exp_info: '',
    flow_exp_info: '[{&amp;quot;exp_para&amp;quot;:[{&amp;quot;name&amp;quot;:94574,&amp;quot;value&amp;quot;:&amp;quot;gb&amp;quot;},{&amp;quot;name&amp;quot;:100036,&amp;quot;value&amp;quot;:&amp;quot;1&amp;quot;}]}]',
    watermark_text: '活动推广',
    crt_size: '484',
    button_action: "{&amp;quot;button_text&amp;quot;:&amp;quot;".concat(transformText, "&amp;quot;,&amp;quot;jump_type&amp;quot;:1,&amp;quot;jump_url&amp;quot;:&amp;quot;https:\\/\\/ad.weixin.qq.com\\/guide\\/196?weixinadkey=bd80a7a5a0e57a3b971b1c372bb06a3748f8f01c44f1bfe1a0aa4fe927e21037fc57ddfe77f5e0648611197259574f4b&amp;amp;gdt_vid=wx0clsqxat6lzly601&amp;amp;weixinadinfo=315019981.wx0clsqxat6lzly601.75.1&amp;quot;,&amp;quot;text_type&amp;quot;:0}"),
    position_index: 21,
    shop_image: [],
    material_id_list: [],
    uxinfo: '315019981|wx0clsqxat6lzly601|289237697|0|1598496949|0|0|9020229299926746||AgI0AyUHOnPeccmEYhaAko8Pr4P95P7Vl6qjqKrxaR/CSGQ3e+STumguP/V43UuYT8o=|315020504',
    ext_info: '{}',
    ad_token: 'bf8463b9a4b692768c820c412bb705a73e8a9dd2c769f22549e4bb5aeaaeccc1358b60b6ce7546f95cfdf7f73d187572',
    crt_info: "[{&amp;quot;width&amp;quot;:960,&amp;quot;height&amp;quot;:540,&amp;quot;thumb_url&amp;quot;:&amp;quot;http://wxsnsdythumb.wxs.qq.com/141/20204/snscosdownload/SH/reserved/5f4604790009bfd700000000b3679d090000008d00004eec?m=1c9e9086c11018ef774e28ee3b744a67&amp;amp;ck=1c9e9086c11018ef774e28ee3b744a67&amp;quot;,&amp;quot;image_url&amp;quot;:&amp;quot;http://wxsnsdythumb.wxs.qq.com/141/20204/snscosdownload/SH/reserved/5f4604790009bfd700000000b3679d090000008d00004eec?m=1c9e9086c11018ef774e28ee3b744a67&amp;amp;ck=1c9e9086c11018ef774e28ee3b744a67&amp;quot;,&amp;quot;size&amp;quot;:18323,&amp;quot;image_md5&amp;quot;:&amp;quot;1c9e9086c11018ef774e28ee3b744a67&amp;quot;,&amp;quot;materialId&amp;quot;:&amp;quot;112199640&amp;quot;,&amp;quot;card_info&amp;quot;:{&amp;quot;mp_tag_type&amp;quot;:2,&amp;quot;mp_brandeffect_isopen&amp;quot;:0,&amp;quot;mp_tags&amp;quot;:[&amp;quot;".concat(extraText, "&amp;quot;]}}]"),
    reranking_ext_info: '{&amp;quot;tid&amp;quot;:315020504}',
    ext_back_comm: '{&amp;quot;pctr&amp;quot;:0.019999999553}'
  };
  var CPS_GOODS_TYPE = {
    OLD_GOODS: 'mp',
    NEW_GOODS: 'cps-to-reader',
    IMAGE_GOODS: 'cps-to-image-reader',
    SHORT_PLAY: 'short-play',
    MINI_GAME: 'mini-game'
  };
  var MOUNT_POINT = {
    BODY: 'body',
    DRAWER: 'drawer'
  };
  var AD_CONFIG = {
    defaultMidAdData: defaultMidAdData,
    AD_TYPE: AD_TYPE,
    AD_POS: AD_POS,
    AD_CACHE_TIME: AD_CACHE_TIME,
    AD_DEST_TYPE: AD_DEST_TYPE,
    MOUNT_POINT: MOUNT_POINT,
    AD_FRAME_DOMAIN: 'https://wxa.wxs.qq.com',
    CPS_AD_FRAME_DOMAIN: 'https://file.daihuo.qq.com',
    INVALID_METHOD_NAME_MSG_PREFIX: 'Invalid methodName',
    INVALID_METHOD_TYPE_MSG_PREFIX: 'Invalid methodType',
    INVALID_ARGS_MSG_PREFIX: 'Invalid args',
    INVALID_REQ_PATH_MSG_PREFIX: 'Invalid request path',
    AD_IFRAME_HIDE_CLASS: 'iframe_ad_dn',
    AD_JSAPI_WHITE_LIST: AD_JSAPI_WHITE_LIST,
    AD_REQ_PATH_WHITE_LIST: AD_REQ_PATH_WHITE_LIST,
    AD_WEB_COMPT_REQ_PATH_WHITE_LIST: AD_WEB_COMPT_REQ_PATH_WHITE_LIST,
    FRAME_ERROR: 'onError',
    FRAME_READY: 'onFrameReadyV2',
    CHANGE_FRAME_STYLE: 'changeFrameStyle',
    PROXY_CONSOLE: 'consoleOnHostEnv',
    PROXY_ACTION: 'onProxyV2',
    PROXY_CALLBACK_ACTION: 'proxyCallbackV2',
    CLICK_OUTSIDE_ACTION: 'clickOutsideV2',
    CLICK_AD_ACTION: 'onAdClick',
    PAGE_SCROLL_ACTION: 'pageScrollV2',
    ORIGIN_VIDEO_VID_PREFIX: 'wxv',
    AD_VIDEO_FIN_ACTION: 'adVideoEnd',
    AD_VIDEO_PLAY_ACTION: 'onVideoPlayV2',
    AD_VIDEO_END_ACTION: 'onVideoEndV2',
    AD_PLAY_VIDEO_ACTION: 'playVideoV2',
    AD_EXPOSE_IMAGE_ACTION: 'exposeImage',
    AD_HIDE_IMAGE_ACTION: 'hideImage',
    AD_CHANGE_VIDEO_STATE: 'changeVideoPlayState',
    AD_VIDEO_SET_SCREEN_STATE_ACTION: 'setScreenState',
    AD_IMAGE_SET_EXPAND_STATE_ACTION: 'setImageExpandState',
    GET_APPMSGAD_READY_STATUS_ACTION: 'getAppmsgadReadyStatus',
    APPMSGAD_READY_ACTION: 'appmsgadReady',
    HAS_AD_DATA_QUERY_KEY: 'has_ad_data',
    GET_AD_DATA_AFTER_VIDEO_ACTION_NAME: 'getAdDataAfterVideo',
    SET_PAGE_DATA_ACTION_NAME: 'setPageDataV2',
    SET_AD_DATA_ACTION_NAME: 'setAdDataV2',
    SEND_AD_VID_ACTION: 'sendAdVid',
    GET_AD_VID_ACTION: 'getAdVid',
    CPS_GOODS_TYPE: CPS_GOODS_TYPE,
    AD_FEED_BACK_ACTION: 'feedback',
    EMIT_AD_DATA_ACTION: 'emitAdData',
    AD_TOUCH_ACTION: 'touchEvent',
    SET_AD_FONT_SIZE_ACTION: 'setAdFontSize',
    DRAWER_OPEN_CHANGE: 'onDrawerOpenChange'
  };

  
  var g = {
    defaultContentTpl: '&lt;span class="js_img_placeholder wx_widget_placeholder" style="width:#width# !important;height:#height#px !important;text-indent: 0"&gt;&lt;span class="weui-primary-loading"&gt;&lt;span class="weui-primary-loading__dot"&gt;&lt;/span&gt;&lt;/span&gt;',
    config: [{
      querySelector: 'redpacketcover',
      
      genId: function genId() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return decodeURIComponent(opt.node.getAttribute('data-coveruri') || '');
      },
      
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return opt.parentWidth * 0.7854;
      },
      
      calH: function calH() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return this.calW({
          parentWidth: opt.parentWidth
        }) / 0.73346 + 27 + 37;
      },
      replaceContentCssText: '',
      outerContainerLeft: '',
      outerContainerRight: ''
    },
    {
      querySelector: 'mppoi',
      genId: function genId() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return opt.node.getAttribute('data-id') || '';
      },
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return opt.parentWidth * 1;
      },
      calH: function calH() {
        return 219;
      },
      replaceContentCssText: '',
      appendContentCssText: 'diplay:block;',
      outerContainerLeft: '',
      outerContainerRight: ''
    },
    {
      querySelector: 'mpsearch',
      genId: function genId() {
        return decodeURIComponent('mp-common-search');
      },
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return opt.parentWidth * 1;
      },
      calH: function calH() {
        return 100;
      },
      replaceContentCssText: '',
      appendContentCssText: 'diplay:block;',
      outerContainerLeft: '',
      outerContainerRight: ''
    },
    {
      querySelector: 'mpvideosnap',
      genId: function genId() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        var type = opt.node.getAttribute('data-type') || 'video';
        if (type === 'live') {
          return decodeURIComponent(opt.node.getAttribute('data-noticeid') || '');
        }
        return decodeURIComponent(opt.node.getAttribute('data-id') || '');
      },
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        var type = opt.node.getAttribute('data-type') || 'video';
        var width = opt.node.getAttribute('data-width') || '';
        var height = opt.node.getAttribute('data-height') || '';
        if (type === 'live' || type === 'topic') {
          return opt.parentWidth;
        }
        var ratio = 1;
        ratio = width / height;
        var computedHeight = 0;
        var computedWidth = 0;
        var isHorizontal = false;
        if (ratio &gt; 1) {
          isHorizontal = true;
          ratio = 4 / 3;
        } else {
          ratio = 3 / 4;
        }
        opt.node.setAttribute('data-ratio', ratio);
        opt.node.setAttribute('data-isHorizontal', isHorizontal);
        if (isHorizontal === true) {
          computedWidth = opt.parentWidth;
        } else {
          if (window.innerWidth &lt; 1024) {
            computedWidth = window.innerWidth * 0.65;
          } else {
            computedWidth = opt.parentWidth * 0.65;
          }
        }
        computedHeight = computedWidth / ratio;
        computedHeight = Math.round(computedHeight);
        computedWidth = Math.round(computedWidth);
        opt.node.setAttribute('data-computedWidth', computedWidth);
        opt.node.setAttribute('data-computedHeight', computedHeight);
        return computedWidth;
      },
      calH: function calH() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        var desc = opt.node.getAttribute('data-desc') || '';
        var type = opt.node.getAttribute('data-type') || 'video';
        var computedHeight = opt.node.getAttribute('data-computedHeight') || '';
        switch (type) {
          case 'live':
            return desc ? 152 : 116;
          case 'topic':
            return 201;
          case 'image':
          case 'video':
            return parseFloat(computedHeight);
        }
      },
      getBorderRadius: function getBorderRadius() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        var type = opt.node.getAttribute('data-type') || 'video';
        if (type === 'video') {
          return 4;
        }
        return 8;
      },
      replaceContentCssText: '',
      appendContentCssText: 'display:flex;margin:0px auto;',
      outerContainerLeft: '',
      outerContainerRight: ''
    }, {
      querySelector: 'mp-wxaproduct',
      genId: function genId() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return decodeURIComponent(opt.node.getAttribute('data-wxaproduct-productid') || '');
      },
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return opt.parentWidth * 1 || '100%';
      },
      calH: function calH() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        var cardtype = opt.node.getAttribute('data-wxaproduct-cardtype') || '';
        return cardtype === 'mini' ? 124 : 466;
      },
      replaceContentCssText: '',
      outerContainerLeft: '',
      outerContainerRight: ''
    }, {
      querySelector: 'mpprofile',
      genId: function genId(opt) {
        return opt.node.getAttribute('data-id') || '';
      },
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        return opt.parentWidth * 1;
      },
      calH: function calH() {
        return 143;
      },
      replaceContentCssText: '',
      appendContentCssText: 'diplay:block;',
      outerContainerLeft: '',
      outerContainerRight: ''
    },
    {
      querySelector: 'mp-common-product:not([data-cardtype="2"])',
      genId: function genId(opt) {
        return opt.node.getAttribute('data-windowproduct') || '';
      },
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        if (opt.node.getAttribute('data-cardtype') === "0") {
          return Math.min(opt.parentWidth, 400) * 1 || '100%';
        }
        return opt.parentWidth * 1 || '100%';
      },
      calH: function calH(opt) {
        var customstyle = opt.node.getAttribute('data-customstyle') || '{}';
        if (customstyle) {
          try {
            var _JSON$parse = JSON.parse(customstyle),
              display = _JSON$parse.display,
              height = _JSON$parse.height;
            if (display !== 'none') {
              var customHeight = parseInt(height, 10);
              var ratio;
              if (opt.node.getAttribute('data-cardtype') === "0") {
                ratio = Math.min(400, opt.parentWidth) / 350.0 || 1;
              } else {
                ratio = opt.parentWidth / 350.0 || 1;
              }
              customHeight = Math.round(customHeight * ratio);
              return customHeight;
            }
            return 0;
          } catch (err) {
            console.error(err);
          }
        }
        return 0;
      },
      replaceContentCssText: '',
      appendContentCssText: 'diplay:block;',
      outerContainerLeft: '&lt;div style="display: flex; margin: 0 auto 24px;justify-content: center;"&gt;',
      outerContainerRight: '&lt;/div&gt;'
    }, {
      querySelector: 'mpcps:not([data-templateid="video-play"]),mp-common-cpsad:not([data-templateid="video-play"])',
      genId: function genId(opt) {
        var node = opt.node;
        var planId = node.getAttribute('data-planid');
        var goodId = node.getAttribute('data-pid');
        var traceId = node.getAttribute('data-traceid');
        return goodId || planId || traceId || '';
      },
      calW: function calW() {
        var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
        var node = opt.node;
        var templateId = node.getAttribute('data-templateid');
        var adType = node.getAttribute('data-adtype');
        var width = 0;
        if (templateId === 'list') {
          width = '100%';
        } else if (templateId === 'card') {
          if (adType === AD_CONFIG.CPS_GOODS_TYPE.SHORT_PLAY || adType === AD_CONFIG.CPS_GOODS_TYPE.MINI_GAME) {
            width = opt.parentWidth ? opt.parentWidth * 0.65 : '100%';
          } else {
            width = '100%';
          }
        }
        return width;
      },
      calH: function calH(opt) {
        var node = opt.node;
        var templateId = node.getAttribute('data-templateid');
        var adType = node.getAttribute('data-adtype');
        var height = 0;
        if (templateId === 'list') {
          if (adType === AD_CONFIG.CPS_GOODS_TYPE.MINI_GAME) {
            height = 79;
          } else {
            height = 16 + 112 + 16 + 8 + 12 * 1.4;
          }
        } else if (templateId === 'card') {
          if (adType === AD_CONFIG.CPS_GOODS_TYPE.SHORT_PLAY) {
            var width = opt.parentWidth * 0.65;
            height = Math.ceil(width * (4 / 3)) + 68;
          } else if (adType === AD_CONFIG.CPS_GOODS_TYPE.MINI_GAME) {
            var _width = opt.parentWidth * 0.65;
            height = Math.ceil(_width * (4 / 3)) + 64;
          } else {
            height = Math.ceil(opt.parentWidth + 111);
          }
        }
        return height;
      },
      replaceContentCssText: '',
      appendContentCssText: 'diplay:block;',
      outerContainerLeft: '&lt;div style="display: flex; justify-content: center"&gt;',
      outerContainerRight: '&lt;/div&gt;'
    }
    ]
  };
  function preloadingInit() {
    var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    if (typeof document.querySelectorAll !== 'function') {
      return;
    }
    var g = {
      maxWith: document.getElementById('img-content').getBoundingClientRect().width,
      idAttr: 'data-preloadingid'
    };
    for (var i = 0, il = opt.config.length; i &lt; il; i++) {
      var a = opt.config[i];
      var list = document.querySelectorAll(a.querySelector);
      for (var j = 0, jl = list.length; j &lt; jl; j++) {
        var node = list[j];
        var parentWidth = node.parentNode.getBoundingClientRect().width;
        parentWidth = Math.min(parentWidth, g.maxWith);

        if (node.getAttribute('has-insert-preloading')) {
          continue;
        }
        var nodeW = a.calW({
          parentWidth: parentWidth,
          node: node
        });
        var nodeH = a.calH({
          parentWidth: parentWidth,
          node: node
        });
        var nodeId = a.genId({
          index: j,
          node: node
        });
        var nodeBorderRadius = typeof a.getBorderRadius === 'function' ? a.getBorderRadius({
          index: j,
          node: node
        }) : 8;

        if (typeof nodeW === 'number') {
          nodeW += 'px';
        }
        var imgHtml = opt.defaultContentTpl.replace(/#height#/g, nodeH).replace(/#width#/g, nodeW).replace(/#borderRadius#/g, nodeBorderRadius);
        var tmpNode = document.createElement('div');
        tmpNode.innerHTML = imgHtml;
        if (a.replaceContentCssText) {
          var replaceContentCssText = a.replaceContentCssText.replace(/#height#/g, nodeH).replace(/#width#/g, nodeW);
          tmpNode.firstChild.style.cssText = replaceContentCssText;
        } else if (a.appendContentCssText) {
          tmpNode.firstChild.style.cssText += a.appendContentCssText;
        }
        var html = (a.outerContainerLeft || '') + tmpNode.innerHTML + (a.outerContainerRight || '');
        tmpNode.innerHTML = html;
        tmpNode.firstChild.setAttribute(g.idAttr, nodeId);
        node.parentNode.insertBefore(tmpNode.firstChild, node.nextSibling);
        node.setAttribute('has-insert-preloading', '1');
      }
    }
  }
  function lotteryPreloading() {
    Array.from(document.getElementsByTagName('mp-common-bluepacket')).forEach(function (ele) {
      ele.setAttribute('data-customstyle', JSON.stringify({
        height: '349px'
      }));
    });
  }
  function init() {
    preloadingInit(g);
    lotteryPreloading();
  }

  
  init();

})();
  &lt;/script&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   function htmlDecode(str) {
  return str
    .replace(/&amp;#39;/g, '\'')
    .replace(/&lt;br\s*(\/)?\s*&gt;/g, '\n')
    .replace(/&amp;nbsp;/g, ' ')
    .replace(/&amp;lt;/g, '&lt;')
    .replace(/&amp;gt;/g, '&gt;')
    .replace(/&amp;quot;/g, '"')
    .replace(/&amp;amp;/g, '&amp;')
    .replace(/&amp;nbsp;/g, ' ');
}

var previewtype = "" * 1;
var uin = '';
var key = '';
var pass_ticket = '';
var new_appmsg = 1;
var real_item_show_type = "0";
var can_see_complaint = "";
var tid = "";
var aid = "";
var clientversion = "";
var appuin = "" || "Mzg3NzU0NzIxMA==";
var voiceid = "";
var create_time = "1780125513" * 1;

var source = "";
var ascene = "";
var subscene = "";
var sessionid = "" || "svr_e693be7652c";
var abtest_cookie = "";

var finder_biz_enter_id = "" * 1;

var scene = 75;

var itemidx = "" || "";
var appmsg_token = "" || "";
var _copyright_stat = "1";
var _ori_article_type = "";

var is_follow = "";
var nickname = htmlDecode("开源日记");
var appmsg_type = "9";
var ct = "1780125513";
var user_name = "gh_b2bc148c1cf8";
var fakeid = "";
var version = "";
var is_limit_user = "0";
var cps_article_data = "";
var round_head_img = "http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png";
var profile_signature = "分享优质开源项目 , 探索AI生产力。";
var profile_signature_new = "";
var hd_head_img = "http://wx.qlogo.cn/mmhead/iahdQicCC5VBTkicysbQccT1ic6swx2OJ6WhlNEPhoZF3pb2NQVDkwJbLT1iadha8M2ZSskQ93NsKYRw/0" || "";
var ori_head_img_url = "http://wx.qlogo.cn/mmhead/iahdQicCC5VBTkicysbQccT1ic6swx2OJ6WhlNEPhoZF3pb2NQVDkwJbLT1iadha8M2ZSskQ93NsKYRw/132";
var msg_title = '一键做有声书 ，终于找到了本地方案 。'.html(false);
var msg_desc = htmlDecode("");
var msg_cdn_url = "https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblJFjcx91vib3omibttTB8DdY7iabxzGU8zzwawHEwesPWWmEyIl4xicKb9FzicZF8bocib4BvdLBFblBsPx4c9LCYABzdXKOibflLZuI4/0?wx_fmt=jpeg";
var cdn_url_1_1 = "https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblJzHjCia1RblcgTgAWOkKyrMoiaicOg8jmmfPosGmqmgDowDKchE1wvPGiagmqowhFpMmhljFC356vn00YvWKntmiczWeiaVlEc9ibOFs/0?wx_fmt=jpeg";
var cdn_url_235_1 = "https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblJFjcx91vib3omibttTB8DdY7iabxzGU8zzwawHEwesPWWmEyIl4xicKb9FzicZF8bocib4BvdLBFblBsPx4c9LCYABzdXKOibflLZuI4/0?wx_fmt=jpeg";
var msg_link = "https://mp.weixin.qq.com/s/Ot3Jei2u_-t2vDOF5qxy6A";
var user_uin = "" * 1;
var open_id = "";
var msg_source_url = '';
var img_format = 'jpeg';
var srcid = '';
var req_id = '0219vZ4FdL6bEPXZiKZfpNDg';
var networkType;
var appmsgid = "2247512454" || '' || '';
var comment_id = '4538794093002571784' || '0';
var mp_comment_id = "" || "" * 1;
var comment_enabled = "" * 1;
var open_fansmsg = "0" * 1;
var is_https_res = ("" * 1) &amp;&amp; (location.protocol == "https:");
var msg_daily_idx = "1" || "";
var profileReportInfo = "" || "";

var devicetype = "";
var source_encode_biz = "";
var source_username = "";
var reprint_ticket = "";
var source_mid = "";
var source_idx = "";
var source_biz = "";
var author = "开源日记";
var author_id = "";
var reward_wording = "";
var reward_author_head = "";
var reward_can_whisper = "" * 1 || 0;
var reward_total_count = "" * 1 || 0;


var optimizing_flag = "" * 1;


var show_comment = "";
var __appmsgCgiData = {
  wxa_product: "" * 1,
  wxa_cps: "" * 1,
  show_msg_voice: "0" * 1,
  can_use_page: "" * 1,
  is_wxg_stuff_uin: "0" * 1,
  card_pos: "",
  copyright_stat: "1",
  source_biz: "",
  hd_head_img: "http://wx.qlogo.cn/mmhead/iahdQicCC5VBTkicysbQccT1ic6swx2OJ6WhlNEPhoZF3pb2NQVDkwJbLT1iadha8M2ZSskQ93NsKYRw/0" || (window.location.protocol + "//" + window.location.host + "//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/pic/pic_rumor_link7e6959.jpg"),
  has_red_packet_cover: "0" * 1 || 0,
  minishopCardData: ""
};
var _empty_v = "//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/audios/empty7e6959.mp3";
var album_info_list = [
  ];
var target_album_info = (function () {
  var curAlbumId = '';
  if (curAlbumId) {
    for (var i = 0; i &lt; album_info_list.length; i++) {
      if (curAlbumId === album_info_list[i].id) {
        return album_info_list[i];
      }
    }
  }
  return album_info_list &amp;&amp; album_info_list[0];
})();
var albumInfo =  '';
if (window.novel_album_info) window.novel_album_info.show_novel_link = '' === 'true';
var copyright_stat = "1" * 1;
var hideSource = "" * 1;

var pay_fee = "" * 1;
var pay_timestamp = "";
var need_pay = "" * 1;
var is_pay_subscribe = "0" * 1;

var need_report_cost = "0" * 1;
var use_tx_video_player = "0" * 1;
var appmsg_fe_filter = "contenteditable";

var friend_read_source = "" || "";
var friend_read_version = "" || "";
var friend_read_class_id = "" || "";

var is_only_read = "1" * 1;
var read_num = "" * 1;
var read_num_new = '' * 1;
var show_read_new = '' * 1;
var like_num = "" * 1;
var liked = "" == 'true' ? true : false;
var is_temp_url = "" ? 1 : 0;
var tempkey = "";
var send_time = "";
var icon_emotion_switch = "//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/icon/emotion/icon_emotion_switch7e6959.svg";
var icon_emotion_switch_active = "//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/icon/emotion/icon_emotion_switch_active7e6959.svg";
var icon_emotion_switch_primary = "//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/icon/emotion/icon_emotion_switch_primary7e6959.svg";
var icon_emotion_switch_active_primary = "//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/icon/emotion/icon_emotion_switch_active_primary7e6959.svg";
var icon_loading_white = "//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/icon/common/icon_loading_white7e6959.gif";
var icon_audio_unread = "//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/icon/audio/icon_audio_unread7e6959.png";
var icon_qqmusic_default = "//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/icon/audio/icon_qqmusic_default7e6959.png";
var icon_qqmusic_source = "//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/icon/audio/icon_qqmusic_source7e6959.svg";
var icon_kugou_source = "//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/icon/audio/icon_kugou_source7e6959.png";

var topic_default_img = '//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/pic/pic_book_thumb7e6959.png';
var comment_edit_icon = '//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/icon/common/icon_edit7e6959.png';
var comment_loading_img = '//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/icon/common/icon_loading_white7e6959.gif';
var comment_c2c_not_support_img = '//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/pic/pic_discuss_more7e6959.png';
var line_info = {
  };
var can_feedback = '' * 1;

var yqj_info = {
  };

var frontend_exp_list = [
        ];
var tts_is_ban = '' * 1 || 0;
var tts_is_show = '' * 1 || 0;
var noneed_tts = '' * 1 || 0;
var tts_heard_person_cnt = '' * 1 || 0;

var can_use_star = '' * 1 || 0;;

var star_person_cnt = '' * 1 || 0;


var voice_in_appmsg = {
  };
var voiceList = {};
voiceList={"voice_in_appmsg":[]}
var reprint_style = '' * 1;
var reprint_type = '' * 1;
var wxa_img_alert = "" != 'false';

var weapp_sn_arr_json = "" || "";

var videoPageInfos = [
  ];
window.__videoPageInfos = videoPageInfos;
if ([1, 2].indexOf('0' * 1) !== -1) {
  var pageInfoList = [];
  for(var i = 0; i&lt;videoPageInfos.length; i++){
    if (videoPageInfos[i].mp_video_overseas_limit) {
      videoPageInfos[i].mp_video_trans_info = [];
    }
    pageInfoList.push(videoPageInfos[i]);
  }
  window.__videoPageInfos = pageInfoList;
}

window.watermark_setting = '2' * 1;

var video_snap_json = "" || "";
var rumor_data_json = "" || "";

function recursiveHtmlDecode(input) {
    const textarea = document.createElement("textarea");
    let previous = input;
    let current = input;
    do {
        previous = current;
        textarea.innerHTML = previous;
        current = textarea.value;
    } while (current !== previous);
    return current;
}
if(rumor_data_json){
    try {
        video_snap_json = JSON.stringify({list:[JSON.parse(recursiveHtmlDecode(rumor_data_json))]})
    }catch (e) {
        console.error('解构谣言信息报错',e)
    }

}
var mp_profile = [
          {
      fakeid: 'Mzg3NzU0NzIxMA==',
      nickname: '开源日记',
      alias: '',
      round_head_img: 'http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png',
      signature: '分享优质开源项目 , 探索AI生产力。',
      original_num: '1145' * 1,
      is_biz_ban: '0' * 1,
      biz_account_status: '0' * 1,
      verify_status: '0' * 1,
      username: 'gh_b2bc148c1cf8',
    },
        {
      fakeid: 'Mzg3NzU0NzIxMA==',
      nickname: '开源日记',
      alias: '',
      round_head_img: 'http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png',
      signature: '分享优质开源项目 , 探索AI生产力。',
      original_num: '1145' * 1,
      is_biz_ban: '0' * 1,
      biz_account_status: '0' * 1,
      verify_status: '0' * 1,
      username: 'gh_b2bc148c1cf8',
    },
      ];


var ban_scene = "0" * 1;

var ban_jump_link = {
    };

var svr_time = "1780398078" * 1;
var is_transfer_msg = "" * 1 || 0;

var malicious_title_reason_id = "0" * 1;
var malicious_content_type = "0" * 1;

var modify_time = "" * 1;
var modify_detail = [];

var isprofileblock = "0";

var jumpInfo = [
    ];

window.service_type = '0' * 1;

var hasRelatedArticleInfo = '0' * 1 || 0;
var relatedArticleFlag = '' * 1 || 0;

var canUseAutoTypeSetting;
canUseAutoTypeSetting = '3' * 1 || 0;
var styleType = '3';
var originTypeSetting = '';
var originStyleType = '';
var reprintEditable = '';
var currentSvrStyleType, originSvrStyleType;

if (!isNaN(parseInt(styleType)) &amp;&amp; parseInt(styleType) &gt; 0) {
  currentSvrStyleType = parseInt(styleType);
} else if (!isNaN(parseInt(canUseAutoTypeSetting))) {
  currentSvrStyleType = parseInt(canUseAutoTypeSetting);
} else {
  currentSvrStyleType = 0;
}

if (!isNaN(parseInt(originStyleType)) &amp;&amp; parseInt(originStyleType) &gt; 0) {
  originSvrStyleType = parseInt(originStyleType);
} else if (!isNaN(parseInt(originTypeSetting))) {
  originSvrStyleType = parseInt(originTypeSetting);
} else {
  originSvrStyleType = 0;
}

if (reprint_type &gt; 0 &amp;&amp; originSvrStyleType !== currentSvrStyleType &amp;&amp; parseInt(reprintEditable) === 0) {
  var dc = document.getElementById('js_content').classList;

  dc.remove('autoTypeSetting');
  dc.remove('autoTypeSetting24');
  dc.remove('autoTypeSetting24psection');

  var finalSetting = parseInt(originSvrStyleType);

  if (finalSetting === 1) {
    dc.add('autoTypeSetting');
  } else if (finalSetting === 2) {
    dc.add('autoTypeSetting24');
  } else if (finalSetting === 3) {
    dc.add('autoTypeSetting24psection');
  }
}

window.wxtoken = "777";
window.is_login = '' * 1;

var title = "开源日记";

var is_new_msg = true;

var is_wash = '' * 1;
var topbarEnable = false;
var enterid = "1780398078" * 1 || "1780398078" * 1 || "" * 1 || parseInt(Date.now() / 1000);
var reloadid = '' * 1 || parseInt(Date.now() / 1000);
var reloadseq = '' * 1 || 1;
var miniprogram_appid = "";

var defaultAvatarUrl = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfNDIyMF8yNjc0KSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTAgMGg0MHY0MEgweiIvPjxwYXRoIGZpbGw9IiNFREVERUQiIGQ9Ik0wIDBoNDB2NDBIMHoiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExLjUgMjlhMSAxIDAgMCAxLTEtMXYtLjY4NGMwLS42ODYuNDk4LTEuNDg0IDEuMTE0LTEuNzg1bDUuNjYtMi43NjJjLjgyMS0uNCAxLjAxMi0xLjI4OC40Mi0xLjk5bC0uMzYyLS40MjljLS43MzYtLjg3Mi0xLjMzMi0yLjUtMS4zMzItMy42NFYxNWMwLTIuMjEgMS43OTUtNCA0LTQgMi4yMSAwIDQgMS43OTMgNCA0djEuNzFjMCAxLjE0LS42IDIuNzczLTEuMzMyIDMuNjQybC0uMzYxLjQyOGMtLjU5LjY5OS0uNDA2IDEuNTg4LjQxOSAxLjk5bDUuNjYgMi43NjJjLjYxNS4zIDEuMTE0IDEuMDkzIDEuMTE0IDEuNzg0VjI4YTEgMSAwIDAgMS0xIDFoLTE3eiIgZmlsbD0iIzAwMCIgZmlsbC1vcGFjaXR5PSIuOSIgb3BhY2l0eT0iLjIiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPSJjbGlwMF80MjIwXzI2NzQiPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0wIDBoNDB2NDBIMHoiLz48L2NsaXBQYXRoPjwvZGVmcz48L3N2Zz4=';

document.addEventListener('DOMContentLoaded', function () {
  window.domCompleteTime = Date.now();
});

      var hasRecommendMsg = 0;
  ;
var isPayTopic = '' * 1;
var payTopicPrice = '' * 1;
var isRemovedFromPayTopic = '' * 1;
var isPaySubscribe = '0' * 1;
var isPaid = '0' * 1;
var isRefund = '' * 1;
var payShowIAPPrice = 1;
var payProductId = '' || '';
var previewPercent = '0' || '';
var payGiftsCount = '0' * 1 || 0;
var payDesc = htmlDecode('');
var payFreeGift = '' * 1 || 0;
var is_finished_preview = 0;
var jump2pay = '' * 1;

var isFans;
var can_reward = '0' * 1 || 0;
var is_need_reward = (isPaySubscribe &amp;&amp; !isPaid) ? 0 : "0" * 1;
var rewardsn = '';
var rewardTimestamp = '' * 1 || 0;
var is_teenager = '' * 1 || 0;
var is_care_mode = '' * 1 || 0;
var zhuge_user_limit = '' * 1 || 0;
var segment_comment_id = '4538794113353334788';
var showRewardListDialog = '' * 1 || 0;

var colorScheme = '';

var iapPriceInfo = {
  };
var productPayPackage = {
    iap_price_info: iapPriceInfo
};

var isCartoonCopyright = '0' * 1;

var show_msg_voice = '' * 1;
var qnaCardData = '';
var exptype = '' || '';
var expsessionid = '' || '';

var goContentId = '';
var goReplyId = '';
var fromCommentShare = '';

var extra_comment_id = '4538794112631914496' || '0';
var goAddedInfo = '' * 1;
var goAddedInfoContentId = '';

var hitProduct = '' * 1;

var preload_comment_list = '';
var preload_comment_total_cnt = '' * 1;

var show_related_article = '' * 1;

var wwdistype = '';
var refuteSourceUrl = '';

var verify_status = "0" * 1;

window.cgiData = {
  appImg: '//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/pic/pic_tencent_video7e6959.png',
}

var loveNotifyMsg = '' * 1;
var loveFriendId = '';

window.ip_wording = {
  countryName: '中国',
  countryId: '156',
  provinceName: '湖北',
  provinceId: '',
  cityName: '',
  cityId: ''
};
window.show_ip_wording = '1' * 1;

  window.source_appid = 'wx145b5b1fb309352f' || 'wxc3923acb47c0d396';
window.is_over_sea = '0' * 1;
window.showAdMark = "0" * 1;
window.is_title_modified = "" * 1;

window.alias = "" || "";

window.claim_source = {
  claim_source_type: '' * 1 || 0,
  claim_source: '',
  media_source_type_info: {
      },
  aigc_type: '' * 1 || 0,
  aigc_wording: '',
};
window.hideAdMarkOnCps = ("" || "0" * 1) ? 1 : 0;
window.bar_version = '' * 1;
window.short_link = '' || '';

window.appmsg_bar_data = {
      verify_status: '' * 1,
  show_like: '' * 1,
  like_count: '' * 1,
  show_share: '' * 1,
  share_count: '' * 1,
  show_old_like: '' * 1,
  old_like_count: '' * 1,
  show_collect: '' * 1,
  collect_count: '' * 1,
  comment_enabled: '' * 1,
  comment_count: '' * 1,
  show_friend_seen: '' * 1,
  friend_seen_info: {
      },
  is_subscribed: '' * 1,
  friend_subscribe_count: '' * 1,
    ecs_jump_info_str: '',
    red_flower_like_info: {
    is_red_flower_like: '0' * 1 || 0,
    red_flower_wording: '',
    tencent_gongyi_wxa_path: '',
    tencent_gongyi_wxa_appid: '',
    red_flower_like_sn: '',
    tencent_gongyi_wxa_username: '',
  },
      is_show_newsflash_feeds: '' * 1 === 1,
  newsflash_feeds_url: '',
};
window.subcount_version = '' * 1;
window.show_comment_bar = '' * 1;

window.picture_page_info_list = [
    {
    width: '1080' * 1,
    height: '660' * 1,
    cdn_url: 'https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLSs3cbicZle1icfurtWvW8cc5FsYc7tvmwLAicfrjC0QIQNchH2NQJwdeHN4XBe9DSiaJ8Ou06ok5gVW3MBk6Inl2b0wnmLE4k18c/640?wx_fmt=png\x26amp;amp;from=appmsg',
    show_watermark: 'true' === 'true',
    bottom_right_brightness: '0.93512195' * 1,
        watermark_info: {
      cdn_url: 'http://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLtmdAQICZoGvFf4UQibzZMtynibWy1ibGNLeVj3sx2yjL1JO9zJFicwtYIkWoTIB2H4icZiaV5KXX8FosMlUkXDM77mp6jwlnKphKl8/0?wx_fmt=png',
      is_uploader: 'true' === 'true',
    },
          },
    {
    width: '1080' * 1,
    height: '838' * 1,
    cdn_url: 'https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLzibA7Zxvjb84icaGkF9pIM4NyhZYDoHxlSNNpOic2OJjeNjAMav0qvt4zGDvsg9DHxyK0IBc5UiaJWJPftJJY0aBicumInwFA30rI/640?wx_fmt=png\x26amp;amp;from=appmsg',
    show_watermark: 'true' === 'true',
    bottom_right_brightness: '0.10038553' * 1,
        watermark_info: {
      cdn_url: 'http://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblI3I5mKHDzbJXZU6wQW3Wdoc3RasT25ibwVSQicDZQYuia32vUK2AbBqfvXUI2rM8woxyGBAakSK5Fmr0occg1BHsbicgrvC20gY44/0?wx_fmt=png',
      is_uploader: 'true' === 'true',
    },
          },
    {
    width: '500' * 1,
    height: '832' * 1,
    cdn_url: 'https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLg3WpgHsRtXibY8lzldk2TfyIibsoFibibic1kyHOFt2vLwlp64V1jUCeHtV8Ae7I2vG1hIbyzYLNOVpZdkrDqbZWw2UgGmCp5cOts/640?wx_fmt=png\x26amp;amp;from=appmsg',
    show_watermark: 'true' === 'true',
    bottom_right_brightness: '0.2014582' * 1,
        watermark_info: {
      cdn_url: 'http://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKwMiblldWUQBd9kxkxThrWhdgT4icMWn8G8Yia3TutVRp7prXZibvwia4N7qWhx6uAicsvZupcLENUJtNUK8hGoMiaOYELiaIrvOxRfs4/0?wx_fmt=png',
      is_uploader: 'true' === 'true',
    },
          },
    {
    width: '501' * 1,
    height: '833' * 1,
    cdn_url: 'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKduHQq35tj1kH0iaAEWIJIq7vnyklc1ZHWiao4YFLWyLp9eOwdhtYEtib3Nmw044Qn2vMib4d2gV2iauRVC6pHaF6dkdVhasrpPyZc/640?wx_fmt=png\x26amp;amp;from=appmsg',
    show_watermark: 'true' === 'true',
    bottom_right_brightness: '0.19853443' * 1,
        watermark_info: {
      cdn_url: 'http://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJj2eLibafqrQInr6hwDeyTJJboosYw2qcwBRPGoCeVJWGSviauAYh63M4q1GbJ3pnynvMjVNhdOsbiaRknl29tFDJmWNGDjiblMko/0?wx_fmt=png',
      is_uploader: 'true' === 'true',
    },
          },
    {
    width: '1080' * 1,
    height: '712' * 1,
    cdn_url: 'https://mmbiz.qpic.cn/mmbiz_gif/VDCUoW3UiblLqknRzLyyiaTukmQEA2YuSRINkzATCDBOudZia9YA5WZP3uOia3PQAoNX1BWzrtCR0OWcjrGC5UfLBX31TZ5GAPaJx8j99iaSZuxs/640?wx_fmt=gif\x26amp;amp;from=appmsg',
    show_watermark: '' === 'true',
    bottom_right_brightness: '' * 1,
          },
    {
    width: '923' * 1,
    height: '823' * 1,
    cdn_url: 'https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblK3cPZsmKT9ibCX4m3lAlM0F8iafZ789bu6K2Sp8EYSKI9eu275wNzvHjgyiaVDK7MCr2IiaG6yibW6SPduicX5iaEGbkh5QSRhUw8elg/640?wx_fmt=png\x26amp;amp;from=appmsg',
    show_watermark: 'true' === 'true',
    bottom_right_brightness: '0.90625513' * 1,
        watermark_info: {
      cdn_url: 'http://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJ80q27H2sQI92cBoOQYsk3hicJmyOvY0Y69o8kE73IXXu32Np6DNcgmk6HHKhicz1qOTNbwQlgZ5mE1x40xqQ6XHH4JLf7rjpCo/0?wx_fmt=png',
      is_uploader: 'true' === 'true',
    },
          },
    {
    width: '1063' * 1,
    height: '741' * 1,
    cdn_url: 'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKZ2d8icnPID1xQXibzV6bTlPr8WzPP7aHbrJPf5w7uTRadI2WhDsv9LqXzgxB3M4ic3Gaw0tgk6WzwaVL4oCNbXHvXIcDNYLzGes/640?wx_fmt=png\x26amp;amp;from=appmsg',
    show_watermark: 'true' === 'true',
    bottom_right_brightness: '0.94195288' * 1,
        watermark_info: {
      cdn_url: 'http://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKHuGyHAze4VGSiaG1jdAmpGgvaibNnciar7N9171OOTE7wW4kIFxPzQn7wiaJqiaUVbdKHN4ItZdfAASXBDVib8WEFz7BgmyK32oERM/0?wx_fmt=png',
      is_uploader: 'true' === 'true',
    },
          },
    {
    width: '1000' * 1,
    height: '510' * 1,
    cdn_url: 'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIUx3TRrYgCVMmXiafJm5hyQW7f0B6rq9sLYeJbl9icj6EZqESDg56u2qjw9stlOvZSGyMjhGL8UtPWOWoG80Hmp8Zfvia1CVuicoo/640?wx_fmt=png\x26amp;amp;from=appmsg',
    show_watermark: 'true' === 'true',
    bottom_right_brightness: '0.18785843' * 1,
        watermark_info: {
      cdn_url: 'http://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblL6YHqHziczBaHOrasDLAibXqG6hsyZUtTbNdLDJ9CSC2yNsGLicDOk7yCWzfNc38eYcNr8WNicU6BmAXtFUqKgqx8DTHMHsXBnomI/0?wx_fmt=png',
      is_uploader: 'true' === 'true',
    },
          },
    {
    width: '953' * 1,
    height: '687' * 1,
    cdn_url: 'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJ8z7qyEqFmhAX2picYsSg0o8krbCb000pA0XgYo7icuHJg0DVuLqviciboeTccqcrb07zadwibFIEbTwKJyOshfErNrxEdATqIOxWo/640?wx_fmt=png\x26amp;amp;from=appmsg',
    show_watermark: 'true' === 'true',
    bottom_right_brightness: '0.2014109' * 1,
        watermark_info: {
      cdn_url: 'http://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJUVJ4vU0R5E9Fg88NOs5JtgVBEN5vicf1b52prgu6gDwHNHZ7iceRWoDM9saFHZKJuS5SiaBfCH33Tgh5IhjPvYH1xqGvuEvMEibA/0?wx_fmt=png',
      is_uploader: 'true' === 'true',
    },
          },
    {
    width: '1080' * 1,
    height: '648' * 1,
    cdn_url: 'https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblL4MQWZn52xsn1aKZFSNk8S7Z9EPVxBtibuqVicDrEwDClU8FjempibK12kvnmITkIJV5QBnSySu0g4CQNQ4Xav7XcmpYcsc8TiaC0/640?wx_fmt=png\x26amp;amp;from=appmsg',
    show_watermark: 'true' === 'true',
    bottom_right_brightness: '0.13825442' * 1,
        watermark_info: {
      cdn_url: 'http://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIZkglG8hHPSNVPekwiak3Jq7BgAC7sfFY98xI25icSVfZmFXthBUNLibSAeOLbbEoTTNNXRb04XwvNAqvgiblCCh3ib2KHxC0m6pA0/0?wx_fmt=png',
      is_uploader: 'true' === 'true',
    },
          },
  ];
window.show_comment_entrance = '' * 1;


window.search_keywords = [
                        {
        keyword: htmlDecode("abogen"),
        s1s_stat_info: htmlDecode('%7B%22bizuin%22%3A3877547210%2C%22msgid%22%3A2247512454%2C%22msgidx%22%3A1%2C%22docid%22%3A%227435081178421197963%22%2C%22keywordItem%22%3A%7B%22keyword%22%3A%22abogen%22%2C%22section_idx%22%3A10%2C%22begin_idx%22%3A10%2C%22end_idx%22%3A15%2C%22type%22%3A1024%2C%22lemma_id%22%3A%22%22%7D%2C%22category%22%3A%22%E7%A7%91%E6%8A%80_%E4%BF%A1%E6%81%AF%E6%8A%80%E6%9C%AF%3A0.675523%22%2C%22reqId%22%3A4786090038455782038%2C%22S1SPageType%22%3A1%2C%22strReqId%22%3A%224786090038455782038%22%2C%22orgReqId%22%3A%223932930843802348251%22%2C%22item_show_type%22%3A0%2C%22common_value_expt%22%3A0%2C%22highlight_preload%22%3A0%7D'),
        s1s_context_info: htmlDecode('%7B%22keyword%22%3A%22abogen%22%2C%22isNeedUpdateGPTInfo%22%3Afalse%2C%22S1SPageType%22%3A1%2C%22search_id%22%3A%223932930843802348251%22%2C%22doc_info%22%3A%7B%22triple%22%3A%7B%22bizuin%22%3A3877547210%2C%22msgid%22%3A2247512454%2C%22msgidx%22%3A1%7D%2C%22docid%22%3A7435081178421197824%2C%22publish_time%22%3A1780125480%7D%2C%22idx_range%22%3A%7B%22section_idx%22%3A10%2C%22begin_idx%22%3A10%2C%22end_idx%22%3A15%7D%2C%22expt_value%22%3A4294967295%2C%22source%22%3A1024%2C%22needPreRender%22%3Afalse%7D'),
        s1s_jsapi_paras: htmlDecode('{&amp;quot;query&amp;quot;:&amp;quot;abogen&amp;quot;,&amp;quot;scene&amp;quot;:139,&amp;quot;hiddenSearchHeader&amp;quot;:0,&amp;quot;webviewHeightRatio&amp;quot;:0.699999988,&amp;quot;kvItems&amp;quot;:[{&amp;quot;key&amp;quot;:&amp;quot;mpEndHalfPageResultTab&amp;quot;,&amp;quot;textValue&amp;quot;:&amp;quot;0&amp;quot;},{&amp;quot;key&amp;quot;:&amp;quot;firstSearchRequest&amp;quot;,&amp;quot;uintValue&amp;quot;:1},{&amp;quot;key&amp;quot;:&amp;quot;MPHalfSearchAIBox&amp;quot;,&amp;quot;uintValue&amp;quot;:3}],&amp;quot;sessionKvItems&amp;quot;:[{&amp;quot;key&amp;quot;:&amp;quot;mpEndHalfPageResultTab&amp;quot;,&amp;quot;textValue&amp;quot;:&amp;quot;0&amp;quot;},{&amp;quot;key&amp;quot;:&amp;quot;MPHalfSearchAIBox&amp;quot;,&amp;quot;uintValue&amp;quot;:3}],&amp;quot;parentType&amp;quot;:135,&amp;quot;isAutoShowUnitInHalfScreen&amp;quot;:1}'),
        s1s_jsapi_name: 'openWXSearchHalfPage',
        idx_range_list: [
                                  {
            begin_idx: '10',
            end_idx: '15',
            section_idx: '10',
          }
                        ],
      }
                  ,      {
        keyword: htmlDecode("LLM"),
        s1s_stat_info: htmlDecode('%7B%22bizuin%22%3A3877547210%2C%22msgid%22%3A2247512454%2C%22msgidx%22%3A1%2C%22docid%22%3A%227435081178421197963%22%2C%22keywordItem%22%3A%7B%22keyword%22%3A%22LLM%22%2C%22section_idx%22%3A61%2C%22begin_idx%22%3A32%2C%22end_idx%22%3A34%2C%22type%22%3A4%2C%22lemma_id%22%3A%22%22%7D%2C%22category%22%3A%22%E7%A7%91%E6%8A%80_%E4%BF%A1%E6%81%AF%E6%8A%80%E6%9C%AF%3A0.675523%22%2C%22reqId%22%3A4786090038455782038%2C%22S1SPageType%22%3A1%2C%22strReqId%22%3A%224786090038455782038%22%2C%22orgReqId%22%3A%223932930843802348251%22%2C%22item_show_type%22%3A0%2C%22common_value_expt%22%3A0%2C%22highlight_preload%22%3A0%7D'),
        s1s_context_info: htmlDecode('%7B%22keyword%22%3A%22llm%22%2C%22isNeedUpdateGPTInfo%22%3Afalse%2C%22S1SPageType%22%3A1%2C%22search_id%22%3A%223932930843802348251%22%2C%22doc_info%22%3A%7B%22triple%22%3A%7B%22bizuin%22%3A3877547210%2C%22msgid%22%3A2247512454%2C%22msgidx%22%3A1%7D%2C%22docid%22%3A7435081178421197824%2C%22publish_time%22%3A1780125480%7D%2C%22idx_range%22%3A%7B%22section_idx%22%3A61%2C%22begin_idx%22%3A32%2C%22end_idx%22%3A34%7D%2C%22expt_value%22%3A4294967295%2C%22source%22%3A4%2C%22needPreRender%22%3Afalse%7D'),
        s1s_jsapi_paras: htmlDecode('{&amp;quot;query&amp;quot;:&amp;quot;LLM&amp;quot;,&amp;quot;scene&amp;quot;:139,&amp;quot;hiddenSearchHeader&amp;quot;:0,&amp;quot;webviewHeightRatio&amp;quot;:0.699999988,&amp;quot;kvItems&amp;quot;:[{&amp;quot;key&amp;quot;:&amp;quot;mpEndHalfPageResultTab&amp;quot;,&amp;quot;textValue&amp;quot;:&amp;quot;0&amp;quot;},{&amp;quot;key&amp;quot;:&amp;quot;firstSearchRequest&amp;quot;,&amp;quot;uintValue&amp;quot;:1},{&amp;quot;key&amp;quot;:&amp;quot;MPHalfSearchAIBox&amp;quot;,&amp;quot;uintValue&amp;quot;:3}],&amp;quot;sessionKvItems&amp;quot;:[{&amp;quot;key&amp;quot;:&amp;quot;mpEndHalfPageResultTab&amp;quot;,&amp;quot;textValue&amp;quot;:&amp;quot;0&amp;quot;},{&amp;quot;key&amp;quot;:&amp;quot;MPHalfSearchAIBox&amp;quot;,&amp;quot;uintValue&amp;quot;:3}],&amp;quot;parentType&amp;quot;:135,&amp;quot;isAutoShowUnitInHalfScreen&amp;quot;:1}'),
        s1s_jsapi_name: 'openWXSearchHalfPage',
        idx_range_list: [
                                  {
            begin_idx: '32',
            end_idx: '34',
            section_idx: '61',
          }
                        ],
      }
                  ,      {
        keyword: htmlDecode("pip"),
        s1s_stat_info: htmlDecode('%7B%22bizuin%22%3A3877547210%2C%22msgid%22%3A2247512454%2C%22msgidx%22%3A1%2C%22docid%22%3A%227435081178421197963%22%2C%22keywordItem%22%3A%7B%22keyword%22%3A%22pip%22%2C%22section_idx%22%3A67%2C%22begin_idx%22%3A4%2C%22end_idx%22%3A6%2C%22type%22%3A64%2C%22baike_docid%22%3A%225502328693396915381%22%2C%22lemma_id%22%3A%22%22%7D%2C%22category%22%3A%22%E7%A7%91%E6%8A%80_%E4%BF%A1%E6%81%AF%E6%8A%80%E6%9C%AF%3A0.675523%22%2C%22reqId%22%3A4786090038455782038%2C%22S1SPageType%22%3A1%2C%22strReqId%22%3A%224786090038455782038%22%2C%22orgReqId%22%3A%223932930843802348251%22%2C%22item_show_type%22%3A0%2C%22common_value_expt%22%3A0%2C%22highlight_preload%22%3A0%7D'),
        s1s_context_info: htmlDecode('%7B%22keyword%22%3A%22pip%22%2C%22isNeedUpdateGPTInfo%22%3Afalse%2C%22S1SPageType%22%3A1%2C%22search_id%22%3A%223932930843802348251%22%2C%22doc_info%22%3A%7B%22triple%22%3A%7B%22bizuin%22%3A3877547210%2C%22msgid%22%3A2247512454%2C%22msgidx%22%3A1%7D%2C%22docid%22%3A7435081178421197824%2C%22publish_time%22%3A1780125480%7D%2C%22idx_range%22%3A%7B%22section_idx%22%3A67%2C%22begin_idx%22%3A4%2C%22end_idx%22%3A6%7D%2C%22expt_value%22%3A4294967295%2C%22source%22%3A64%2C%22needPreRender%22%3Afalse%7D'),
        s1s_jsapi_paras: htmlDecode('{&amp;quot;query&amp;quot;:&amp;quot;pip&amp;quot;,&amp;quot;scene&amp;quot;:139,&amp;quot;hiddenSearchHeader&amp;quot;:0,&amp;quot;webviewHeightRatio&amp;quot;:0.699999988,&amp;quot;kvItems&amp;quot;:[{&amp;quot;key&amp;quot;:&amp;quot;mpEndHalfPageResultTab&amp;quot;,&amp;quot;textValue&amp;quot;:&amp;quot;0&amp;quot;},{&amp;quot;key&amp;quot;:&amp;quot;firstSearchRequest&amp;quot;,&amp;quot;uintValue&amp;quot;:1},{&amp;quot;key&amp;quot;:&amp;quot;MPHalfSearchAIBox&amp;quot;,&amp;quot;uintValue&amp;quot;:3}],&amp;quot;sessionKvItems&amp;quot;:[{&amp;quot;key&amp;quot;:&amp;quot;mpEndHalfPageResultTab&amp;quot;,&amp;quot;textValue&amp;quot;:&amp;quot;0&amp;quot;},{&amp;quot;key&amp;quot;:&amp;quot;MPHalfSearchAIBox&amp;quot;,&amp;quot;uintValue&amp;quot;:3}],&amp;quot;parentType&amp;quot;:135,&amp;quot;isAutoShowUnitInHalfScreen&amp;quot;:1}'),
        s1s_jsapi_name: 'openWXSearchHalfPage',
        idx_range_list: [
                                  {
            begin_idx: '4',
            end_idx: '6',
            section_idx: '67',
          }
                        ],
      }
              ];
window.s1s_keywords_exp_info = 'CMrZ+rgOEIaj2a8IGAEiEzc0MzUwODExNzg0MjExOTc5NjMo29WQ+Lz4pMo2';
  var need_baike_preload = true;
;

window.ad_keywords = [
              ];
window.show_ad_keyword = 'false';
window.get_search_keyword_realtime = '0' * 1;

window.clear_desc_flag = "" * 1;

window.mmlisten_playlist_info_buffer = '';

window.key_text = '';

window.appmsg_listen_id = '150441636227863149';
  if (window.isPaySubscribe) {
  function onWeixinJsBridgeReady() {
    window.WeixinJSBridge.invoke('hideMenuItems', {
      menuList: ['control:showButtonScreenShot']
    }, function (res) {});
  }

  if (typeof WeixinJSBridge === 'undefined') {
    if (document.addEventListener) {
      document.addEventListener('WeixinJSBridgeReady', onWeixinJsBridgeReady, false);
    } else if (document.attachEvent) {
      document.attachEvent('WeixinJSBridgeReady', onWeixinJsBridgeReady);
      document.attachEvent('onWeixinJSBridgeReady', onWeixinJsBridgeReady);
    }
  } else {
    onWeixinJsBridgeReady();
  }
}
  &lt;/script&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   var __INLINE_SCRIPT__ = (function () {
  'use strict';

  

  var dealLikeReadShow_en = function dealLikeReadShow_en(realNum, showZero) {
    var defaultStr = showZero ? '0' : '';
    if (typeof LANG === 'undefined' || !window.LANG) {
      return parseInt(realNum) === 0 ? defaultStr : realNum;
    }
    if (window.LANG == 'en') {
      var showHTML = '';
      if (parseInt(realNum) &gt; 100000) {
        showHTML = 100 + 'k+';
      } else if (parseInt(realNum) &gt; 10000 &amp;&amp; parseInt(realNum) &lt;= 100000) {
        var num = '' + parseInt(realNum) / 1000;
        var dotIndex = num.indexOf('.');
        if (dotIndex === -1) {
          showHTML = num + 'k';
        } else {
          showHTML = num.substring(0, dotIndex) + '.' + num.charAt(dotIndex + 1) + 'k';
        }
      } else if (parseInt(realNum) === 0) {
        showHTML = defaultStr;
      } else {
        showHTML = realNum;
      }
      return showHTML;
    }
    return defaultStr;
  };
  var i18n = {
    dealLikeReadShow_en: dealLikeReadShow_en
  };

  function _createForOfIteratorHelper$1(o, allowArrayLike) { var it = typeof Symbol !== "undefined" &amp;&amp; o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$2(o)) || allowArrayLike &amp;&amp; o &amp;&amp; typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i &gt;= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion &amp;&amp; it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
  function _unsupportedIterableToArray$2(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$2(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$2(o, minLen); }
  function _arrayLikeToArray$2(arr, len) { if (len == null || len &gt; arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i]; return arr2; }
  
  
  var ua = navigator.userAgent;
  var is_ios = /(iPhone|iPad|iPod|iOS)/i.test(ua);
  var is_wp = /Windows\sPhone/i.test(ua);
  var is_android = /(Android)/i.test(ua);
  var is_wechat = /MicroMessenger\/([\d\.]+)/i.test(ua);
  var is_mac = /mac\sos/i.test(ua) &amp;&amp; !is_ios;
  var is_windows = /windows\snt/i.test(ua) &amp;&amp; !is_wp;
  var is_mpapp = /MPAPP\/([\d\.]+)/i.test(ua);
  var is_ipad = /iPad/i.test(ua);
  var is_windows_wechat = /WindowsWechat/i.test(ua);
  var is_mac_wechat = /MacWechat/i.test(ua) || /wechat.*mac os/i.test(ua);
  var is_prefetch = is_wechat &amp;&amp; window.WeixinPrefecherJSBridge;
  var is_donut_app = /SAAASDK/i.test(ua);
  var is_harmony = /OpenHarmony|ArkWeb/i.test(ua);
  var is_linux = /Linux\s/i.test(ua);
  var xweb_match = ua.match(/XWEB\/([\d.]+)/i);
  var xweb_version = xweb_match &amp;&amp; xweb_match[1] ? parseInt(xweb_match[1], 10) : 0;
  var is_unified_pc_wechat = /UnifiedPC\w+Wechat/i.test(ua);
  var is_in_miniProgram = is_android &amp;&amp; /miniprogram/.test(ua.toLowerCase()) || window.__wxjs_environment == 'miniprogram';
  var is_wx_work = /wxwork/i.test(ua);
  function getUrlParams() {
    var vars = location.search.substring(1).split('&amp;');
    var params = {};
    var _iterator = _createForOfIteratorHelper$1(vars),
      _step;
    try {
      for (_iterator.s(); !(_step = _iterator.n()).done;) {
        var ele = _step.value;
        var pair = ele.split('=');
        var key = decodeURIComponent(pair[0]);
        if (typeof params[key] === 'undefined') {
          params[key] = decodeURIComponent(pair[1]);
        }
      }
    } catch (err) {
      _iterator.e(err);
    } finally {
      _iterator.f();
    }
    return params;
  }
  function get() {
    var reg = /MicroMessenger\/([\d\.]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMac() {
    var reg = /MacWechat\/([\d\.]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMacOS() {
    var reg = /Mac OS X ([\d_]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1].replace(/_/g, '.');
    }
    return false;
  }
  function getWindows() {
    var reg = /WindowsWechat\(0x(.+?)\)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getWxWork() {
    var reg = /wxwork\/([\d\.]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMpApp() {
    var appVersion = [2, 4, 5];
    var match = navigator.userAgent.match(/MPAPP\/(\d+(\.\d+)*)/);
    if (match) {
      appVersion = match[1].split('.').map(function (v) {
        return Number(v);
      });
    }
    return appVersion.join('.');
  }
  function getUnifiedPcVer() {
    var versionInfo = navigator.userAgent.match(/UnifiedPC\w+Wechat\(0xf\w{2}(\w+?)\w{2}\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(0, 1));
      var subVersion = getVersionNumber(version.slice(1, 2));
      var subVersion2 = getVersionNumber(version.slice(2, 3));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
  }
  function getVersionNumber(hexStr) {
    return Number(Number("0x".concat(hexStr)).toString(10));
  }
  function getWindowsVersionFormat() {
    var versionInfo = navigator.userAgent.match(/WindowsWechat\(0x(\w+?)\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(1, 2));
      var subVersion = getVersionNumber(version.slice(2, 4));
      var subVersion2 = getVersionNumber(version.slice(4, 6));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
    return false;
  }
  function getInner() {
    var reg = /MicroMessenger\/[\d\.]+\(0x(.+?)\)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1] &amp;&amp; ret[1] != null) {
      return ret[1];
    }
    if (!ret &amp;&amp; /MicroMessenger\/[\d\.]+/i.test(ua)) {
      var urlParams = getUrlParams();
      if (urlParams.version) {
        return urlParams.version;
      }
    }
    return false;
  }
  var opfunc = {
    'cp-1': function cp1(a, b) {
      return a &lt; b;
    },
    cp0: function cp0(a, b) {
      return a === b;
    },
    cp1: function cp1(a, b) {
      return a &gt; b;
    }
  };
  function cpVersion(ver, op, canEq, type) {
    var mmver = false;
    switch (type) {
      case 'mac':
        mmver = getMac();
        break;
      case 'windows':
        mmver = getWindowsVersionFormat();
        break;
      case 'wxwork':
        mmver = getWxWork();
        break;
      case 'mpapp':
        mmver = getMpApp();
        break;
      case 'unifiedpc':
        mmver = getUnifiedPcVer();
        break;
      default:
        mmver = get();
        break;
    }
    if (!mmver) {
      return;
    }
    var mmversion = mmver.split('.');
    var version = ver.split('.');
    if (!/\d+/g.test(mmversion[mmversion.length - 1])) {
      mmversion.pop();
    }
    for (var i = 0, len = Math.max(mmversion.length, version.length); i &lt; len; ++i) {
      var mmv = mmversion[i] || '';
      var v = version[i] || '';
      var mmvn = parseInt(mmv, 10) || 0;
      var vn = parseInt(v, 10) || 0;
      var eq = opfunc.cp0(mmvn, vn);
      if (eq) {
        continue;
      }
      var cp = opfunc["cp".concat(op)];
      return cp(mmvn, vn);
    }
    return canEq || op === 0;
  }
  function eqVersion(version) {
    return cpVersion(version, 0);
  }
  function gtVersion(version, canEq) {
    return cpVersion(version, 1, canEq);
  }
  function ltVersion(version, canEq) {
    return cpVersion(version, -1, canEq);
  }
  function getPlatform() {
    if (is_ios) {
      return 'ios';
    }
    if (is_android) {
      return 'android';
    }
    if (is_mac) {
      return 'mac_os';
    }
    if (is_windows) {
      return 'windows';
    }
    return 'unknown';
  }
  var is_google_play = false;
  var inner_ver_for_google_play_check = getInner();
  if (is_android &amp;&amp; inner_ver_for_google_play_check) {
    var v = "0x".concat(inner_ver_for_google_play_check.substr(-2));
    if (parseInt(v) &gt;= 64 &amp;&amp; parseInt(v) &lt;= 79) {
      is_google_play = true;
    }
  }
  function compareHexVersion$1(hexNum) {
    var innerVersion = getInner();
    if (innerVersion &amp;&amp; hexNum) {
      if (typeof hexNum === 'string') {
        hexNum = parseInt(hexNum, 16);
      }
      var version = parseInt(innerVersion, 16);
      return version &gt;= hexNum;
    }
    return false;
  }
  var mmVersion = {
    get: get,
    getMac: getMac,
    getMacOS: getMacOS,
    getWindows: getWindows,
    getInner: getInner,
    getWxWork: getWxWork,
    getMpApp: getMpApp,
    cpVersion: cpVersion,
    eqVersion: eqVersion,
    gtVersion: gtVersion,
    ltVersion: ltVersion,
    getPlatform: getPlatform,
    getVersionNumber: getVersionNumber,
    isWp: is_wp,
    isIOS: is_ios,
    isAndroid: is_android,
    isHarmony: is_harmony,
    isHarmonyWechat: is_harmony &amp;&amp; is_wechat &amp;&amp; cpVersion('1.0.0', 1, true),
    isInMiniProgram: is_in_miniProgram,
    isWechat: is_wechat,
    isMac: is_mac,
    isWindows: is_windows,
    isLinux: is_linux,
    isMacWechat: is_mac_wechat,
    isWindowsWechat: is_windows_wechat,
    isWxWork: is_wx_work,
    isOnlyWechat: is_wechat &amp;&amp; !is_wx_work,
    isMpapp: is_mpapp,
    isNewMpApp: false,
    isIPad: is_ipad,
    isGooglePlay: is_google_play,
    isPrefetch: is_prefetch,
    isDonutAPP: is_donut_app,
    compareHexVersion: compareHexVersion$1,
    isPcWechat: is_windows_wechat || is_mac_wechat,
    xwebVersion: xweb_version,
    isUnifiedPcWechat: is_unified_pc_wechat
  };

  function _typeof(obj) {
    "@babel/helpers - typeof";

    return _typeof = "function" == typeof Symbol &amp;&amp; "symbol" == typeof Symbol.iterator ? function (obj) {
      return typeof obj;
    } : function (obj) {
      return obj &amp;&amp; "function" == typeof Symbol &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj;
    }, _typeof(obj);
  }

  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
    try {
      var info = gen[key](arg);
      var value = info.value;
    } catch (error) {
      reject(error);
      return;
    }
    if (info.done) {
      resolve(value);
    } else {
      Promise.resolve(value).then(_next, _throw);
    }
  }
  function _asyncToGenerator(fn) {
    return function () {
      var self = this,
        args = arguments;
      return new Promise(function (resolve, reject) {
        var gen = fn.apply(self, args);
        function _next(value) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
        }
        function _throw(err) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
        }
        _next(undefined);
      });
    };
  }

  var initJsBridge = false;
  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }
  function connectWebViewJavascriptBridge(callback) {
    if (window.WebViewMPapp || window.WebViewJavascriptBridge) {
      return callback(window.WebViewMPapp || window.WebViewJavascriptBridge);
    }
    if (window.WVJBCallbacks) {
      return window.WVJBCallbacks.push(callback);
    }
    window.WVJBCallbacks = [callback];
    if (!mmVersion.isMpapp) {
      return false;
    }
    if (!initJsBridge) {
      initJsBridge = true;
      var WVJBIframe = document.createElement('iframe');
      WVJBIframe.style.display = 'none';
      WVJBIframe.src = 'https://__bridge_loaded__';
      document.body.appendChild(WVJBIframe);
      setTimeout(function () {
        initJsBridge = false;
        document.body.removeChild(WVJBIframe);
      }, 0);
    }
    return false;
  }
  function invoke$1(jsapiName, opt, callback) {
    connectWebViewJavascriptBridge(function (bridge) {
      try {
        if (typeof opt === 'function') {
          callback = opt;
        }
        if (_typeof(opt) !== 'object' &amp;&amp; typeof opt !== 'string') {
          opt = {};
        }
        bridge.callHandler(jsapiName, opt, function (res) {
          try {
            var ret = _typeof(res) === 'object' ? res : JSON.parse(res);
            var errMsg = ret.err_msg || ret.errMsg;
            console.info("[mpapp jsapi] invoke-&gt;".concat(jsapiName, " ").concat(opt.action || '', " ").concat(errMsg));
            typeof callback === 'function' &amp;&amp; callback(ret);
          } catch (e) {
            window.WX_BJ_REPORT.BadJs.report('invoke', "callback ".concat(jsapiName, " error:"), {
              mid: 'mmbizwebapp:js_brridge',
              _info: e
            });
            console.error("[mpapp jsapi] ".concat(jsapiName, " ").concat(opt.action || ''), e, res);
          }
        });
      } catch (e) {
        window.WX_BJ_REPORT.BadJs.report('invoke', 'callback error:', {
          mid: 'mmbizwebapp:js_brridge',
          _info: e
        });
        console.error('[mpapp jsapi]', e);
      }
    });
  }

  function _regeneratorRuntime$4() {  _regeneratorRuntime$4 = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  var doc$1 = {};
  var isAcrossOrigin$1 = false;
  var notFoundedMPPageAction = [];
  var __moon_report$1 = window.__moon_report || function () {};
  var MOON_JSAPI_KEY_OFFSET = 8;
  try {
    doc$1 = top.window.document;
  } catch (e) {
    isAcrossOrigin$1 = true;
  }
  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }
  function ready(onBridgeReady) {
    var bridgeReady = function bridgeReady() {
      try {
        if (onBridgeReady) {
          window.onBridgeReadyTime = window.onBridgeReadyTime || Date.now();
          onBridgeReady();
        }
      } catch (e) {
        __moon_report$1([{
          offset: MOON_JSAPI_KEY_OFFSET,
          log: 'ready',
          e: e
        }]);
        throw e;
      }
      window.jsapiReadyTime = Date.now();
    };
    if (!isAcrossOrigin$1 &amp;&amp; (typeof top.window.WeixinJSBridge === 'undefined' || !top.window.WeixinJSBridge.invoke)) {
      if (doc$1.addEventListener) {
        doc$1.addEventListener('WeixinJSBridgeReady', bridgeReady, false);
      } else if (doc$1.attachEvent) {
        doc$1.attachEvent('WeixinJSBridgeReady', bridgeReady);
        doc$1.attachEvent('onWeixinJSBridgeReady', bridgeReady);
      }
    } else {
      bridgeReady();
    }
  }
  var invokeNotWaitA8key = ['notifyPageInfo', 'updatePageAuth'
  ];
  var checkNotFoundedInvoke = function checkNotFoundedInvoke(methodName, args) {
    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; notFoundedMPPageAction.includes(args === null || args === void 0 ? void 0 : args.action)) {
      return true;
    }
    return false;
  };
  function invoke(_x, _x2, _x3) {
    return _invoke.apply(this, arguments);
  }
  function _invoke() {
    _invoke = _asyncToGenerator( _regeneratorRuntime$4().mark(function _callee(methodName, args, callback) {
      return _regeneratorRuntime$4().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__ &amp;&amp; !invokeNotWaitA8key.includes(methodName))) {
              _context.next = 3;
              break;
            }
            _context.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin$1) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                alert('请在微信中打开此链接');
                return false;
              }
              if (checkNotFoundedInvoke(methodName, args)) {
                setTimeout(function () {
                  if (callback) {
                    callback.apply(window, [{
                      err_msg: "".concat(methodName, ":fail"),
                      err_desc: 'action isn\'t supported'
                    }]);
                  }
                }, 0);
              } else {
                top.window.WeixinJSBridge.invoke(methodName, args, function () {
                  try {
                    for (var _len2 = arguments.length, rets = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
                      rets[_key2] = arguments[_key2];
                    }
                    var ret = rets[0];
                    var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
                    if (['handleMPPageAction', 'handleVideoAction', 'handleHaokanAction'].indexOf(methodName) !== -1) {
                      var action = (args === null || args === void 0 ? void 0 : args.action) || '';
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName, ", action-&gt;").concat(action).concat(errMsg));
                    } else {
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName).concat(errMsg));
                    }
                    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; ((ret === null || ret === void 0 ? void 0 : ret.err_desc) === 'action isn\'t supported' || (ret === null || ret === void 0 ? void 0 : ret.err_msg) === 'handleMPPageAction:fail action is not supported')) {
                      notFoundedMPPageAction.push(args === null || args === void 0 ? void 0 : args.action);
                    }
                    if (callback) {
                      callback.apply(window, rets);
                    }
                  } catch (e) {
                    __moon_report$1([{
                      offset: MOON_JSAPI_KEY_OFFSET,
                      log: "invoke;methodName:".concat(methodName),
                      e: e
                    }]);
                    throw e;
                  }
                });
              }
            });
          case 4:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return _invoke.apply(this, arguments);
  }
  function call(_x4) {
    return _call.apply(this, arguments);
  }
  function _call() {
    _call = _asyncToGenerator( _regeneratorRuntime$4().mark(function _callee2(methodName) {
      return _regeneratorRuntime$4().wrap(function _callee2$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__)) {
              _context2.next = 3;
              break;
            }
            _context2.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin$1) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                return false;
              }
              try {
                top.window.WeixinJSBridge.call(methodName);
              } catch (e) {
                __moon_report$1([{
                  offset: MOON_JSAPI_KEY_OFFSET,
                  log: "call;methodName:".concat(methodName),
                  e: e
                }]);
                throw e;
              }
            });
          case 4:
          case "end":
            return _context2.stop();
        }
      }, _callee2);
    }));
    return _call.apply(this, arguments);
  }
  function on(eventName, callback) {
    ready(function () {
      if (isAcrossOrigin$1) return false;
      if (_typeof(top.window.WeixinJSBridge) !== 'object' || !top.window.WeixinJSBridge.on) {
        return false;
      }
      if (!window.JSAPIEventCallbackMap[eventName]) {
        window.JSAPIEventCallbackMap[eventName] = [];
      }
      window.JSAPIEventCallbackMap[eventName].push(callback);
      if (window.JSAPIEventCallbackMap[eventName].length &gt; 1) {
        return false;
      }
      top.window.WeixinJSBridge.on(eventName, function () {
        try {
          for (var _len = arguments.length, rets = new Array(_len), _key = 0; _key &lt; _len; _key++) {
            rets[_key] = arguments[_key];
          }
          var ret = rets[0];
          var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
          console.info('[system]', "[jsapi] event-&gt;".concat(eventName).concat(errMsg));
          if (window.JSAPIEventCallbackMap[eventName] &amp;&amp; window.JSAPIEventCallbackMap[eventName].length) {
            var result;
            for (var i = 0; i &lt; window.JSAPIEventCallbackMap[eventName].length; i++) {
              result = window.JSAPIEventCallbackMap[eventName][i].apply(window, rets);
            }
            return result;
          }
        } catch (e) {
          __moon_report$1([{
            offset: MOON_JSAPI_KEY_OFFSET,
            log: "on;eventName:".concat(eventName),
            e: e
          }]);
          throw e;
        }
      });
    });
  }
  function remove(eventName, callback) {
    ready(function () {
      if (!window.JSAPIEventCallbackMap[eventName]) {
        return false;
      }
      var result = false;
      for (var i = window.JSAPIEventCallbackMap[eventName].length - 1; i &gt;= 0; i--) {
        if (window.JSAPIEventCallbackMap[eventName][i] === callback) {
          window.JSAPIEventCallbackMap[eventName].splice(i, 1);
          result = true;
        }
      }
      return result;
    });
  }
  var JSAPI = {
    ready: ready,
    invoke: invoke,
    call: call,
    on: on,
    remove: remove
  };

  
  
  function createErrorResult(message, details, playbackMethod) {
    var result = {
      success: false,
      error: {
        message: message,
        details: details
      }
    };
    if (playbackMethod) {
      result.playbackMethod = playbackMethod;
    }
    return result;
  }
  
  function createSuccessResult(playbackMethod, action, data) {
    var result = {
      success: true,
      playbackMethod: playbackMethod,
      action: action
    };
    if (data !== undefined) {
      result.data = data;
    }
    return result;
  }
  
  function createResultFromJSAPI(res, playbackMethod, action, errorMessage, successMessage) {
    var errMsg = res.err_msg || res.errMsg;
    if (errMsg &amp;&amp; errMsg.indexOf('ok') !== -1) {
      return createSuccessResult(playbackMethod, action, res);
    } else {
      return createErrorResult(errMsg || errorMessage, res, playbackMethod);
    }
  }
  var PlayMode;
  (function (PlayMode) {
    
    PlayMode[PlayMode["SEQUENCE"] = 0] = "SEQUENCE";
    
    PlayMode[PlayMode["LIST_LOOP"] = 1] = "LIST_LOOP";
    
    PlayMode[PlayMode["SINGLE_LOOP"] = 2] = "SINGLE_LOOP";
  })(PlayMode || (PlayMode = {}));
  var PlayStatus = {
    IDLE: 'idle',
    PLAYING: 'playing',
    PAUSED: 'paused',
    LOADING: 'loading'
  };
  var PlaybackMethod;
  (function (PlaybackMethod) {
    PlaybackMethod["TING"] = "ting";
    PlaybackMethod["BACKGROUND"] = "background";
    PlaybackMethod["H5_AUDIO"] = "h5_audio";
  })(PlaybackMethod || (PlaybackMethod = {}));
  var currentBackgroundItem = null;
  
  function getBackgroundAudioState(callback) {
    return new Promise(function (resolve) {
      JSAPI.invoke('getBackgroundAudioState', {}, function (res) {
        if (!res.status &amp;&amp; !res.state) {
          if (!res.src &amp;&amp; !res.dataUrl) {
            res.status = PlayStatus.IDLE;
          } else if (res.paused === true || res.paused === 1) {
            res.status = PlayStatus.PAUSED;
          } else {
            res.status = PlayStatus.PLAYING;
          }
        }
        if (!res.item &amp;&amp; currentBackgroundItem) {
          res.item = currentBackgroundItem;
        }
        if (callback) callback(res);
        resolve(createResultFromJSAPI(res, PlaybackMethod.BACKGROUND, 'get', 'Failed to get background audio state'));
      });
    });
  }
  
  function onBackgroundAudioStateChanged(callback) {
    try {
      var listener = function listener(res) {
        var status = res.state || res.status;
        if (status === 'ended' || status === 'stop') {
          status = PlayStatus.IDLE;
        } else if (status === 'play' || status === 'playing') {
          status = PlayStatus.PLAYING;
        } else if (status === 'pause' || status === 'paused') {
          status = PlayStatus.PAUSED;
        } else if (status === 'waiting' || status === 'canplay') {
          status = PlayStatus.LOADING;
        }
        var state = {
          status: status || (res.paused ? 'paused' : 'playing'),
          currentTime: res.currentTime || res.position || 0,
          duration: res.duration || 0,
          item: res.item || currentBackgroundItem || {},
          source: PlaybackMethod.BACKGROUND
        };
        callback(state);
      };
      JSAPI.on('onBackgroundAudioStateChange', listener);
      return listener;
    } catch (error) {
      console.error('Failed to register onBackgroundAudioStateChange:', error);
      return null;
    }
  }

  
  function getH5AudioState() {
    try {
      var audio = window.__tingAudioInstance;
      if (audio) {
        return createSuccessResult(PlaybackMethod.H5_AUDIO, 'get', {
          status: audio.paused ? 'paused' : 'playing',
          currentTime: audio.currentTime || 0,
          duration: audio.duration || 0,
          item: window.__tingAudioCurrentItem || {},
          source: PlaybackMethod.H5_AUDIO
        });
      }
      return createErrorResult('No H5 Audio instance available', undefined, PlaybackMethod.H5_AUDIO);
    } catch (error) {
      console.error('[play_voice][h5] getState error:', error);
      return createErrorResult('Failed to get H5 Audio state', error, PlaybackMethod.H5_AUDIO);
    }
  }

  function _regeneratorRuntime$3() {  _regeneratorRuntime$3 = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" &amp;&amp; o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$1(o)) || allowArrayLike &amp;&amp; o &amp;&amp; typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i &gt;= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion &amp;&amp; it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
  function _unsupportedIterableToArray$1(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$1(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen); }
  function _arrayLikeToArray$1(arr, len) { if (len == null || len &gt; arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i]; return arr2; }
  
  var isWechat = mmVersion.isWechat;
  
  var isDebugXwebVersion = mmVersion.xwebVersion &lt;= 1000;
  var isTingSupportedPC = mmVersion.isUnifiedPcWechat &amp;&amp; (mmVersion.xwebVersion &gt;= 18720 || isDebugXwebVersion);
  
  var TING_SUPPORT_TYPES = [0, 1, 2, 3, 4, 7, 10, 11];
  
  var KUGOU_TYPES = [5, 6, 9];
  
  function isSupportTing(type) {
    var isPlatformSupported = isWechat &amp;&amp; !mmVersion.isPcWechat || isTingSupportedPC;
    if (!isPlatformSupported) return false;
    if (type === undefined || type === null) return true;
    if (KUGOU_TYPES.includes(type)) {
      return !mmVersion.isIOS || mmVersion.compareHexVersion('18004600');
    }
    return TING_SUPPORT_TYPES.includes(type);
  }
  
  var isTingSupportedPCVersion = isTingSupportedPC;
  
  typeof navigator !== 'undefined' &amp;&amp; (navigator.userAgent.indexOf('QQMusic/') &gt; 0 || typeof location !== 'undefined' &amp;&amp; location.href.indexOf('_qqclient=1') &gt; 0);
  var PLAYBACK_METHODS_FALLBACK = [PlaybackMethod.TING, PlaybackMethod.BACKGROUND, PlaybackMethod.H5_AUDIO];
  
  function tryAllMethods(_x, _x2, _x3, _x4, _x5) {
    return _tryAllMethods.apply(this, arguments);
  }
  
  function _tryAllMethods() {
    _tryAllMethods = _asyncToGenerator( _regeneratorRuntime$3().mark(function _callee(executor, errorMessage, onSuccess, callback, methods) {
      var errors, _iterator2, _step2, method, result, finalResult;
      return _regeneratorRuntime$3().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            errors = {};
            _iterator2 = _createForOfIteratorHelper(methods || PLAYBACK_METHODS_FALLBACK);
            _context.prev = 2;
            _iterator2.s();
          case 4:
            if ((_step2 = _iterator2.n()).done) {
              _context.next = 23;
              break;
            }
            method = _step2.value;
            _context.prev = 6;
            _context.next = 9;
            return executor(method);
          case 9:
            result = _context.sent;
            if (!result.success) {
              _context.next = 13;
              break;
            }
            onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(method);
            return _context.abrupt("return", result);
          case 13:
            errors[method] = result.error;
            console.warn("".concat(method, " failed, trying next..."), result.error);
            _context.next = 21;
            break;
          case 17:
            _context.prev = 17;
            _context.t0 = _context["catch"](6);
            errors[method] = _context.t0;
            console.warn("".concat(method, " exception, trying next..."), _context.t0);
          case 21:
            _context.next = 4;
            break;
          case 23:
            _context.next = 28;
            break;
          case 25:
            _context.prev = 25;
            _context.t1 = _context["catch"](2);
            _iterator2.e(_context.t1);
          case 28:
            _context.prev = 28;
            _iterator2.f();
            return _context.finish(28);
          case 31:
            console.error(errorMessage, errors);
            finalResult = createErrorResult(errorMessage, errors);
            callback === null || callback === void 0 ? void 0 : callback(finalResult);
            return _context.abrupt("return", finalResult);
          case 35:
          case "end":
            return _context.stop();
        }
      }, _callee, null, [[2, 25, 28, 31], [6, 17]]);
    }));
    return _tryAllMethods.apply(this, arguments);
  }

  
  function getTingAudioState(callback) {
    return new Promise(function (resolve) {
      JSAPI.invoke('getTingAudioState', {
        sourceType: 2
      }, function (res2) {
        if (res2 &amp;&amp; res2.status &amp;&amp; res2.status === 'idle') {
          JSAPI.invoke('getTingAudioState', {
            sourceType: 1
          }, function (res1) {
            if (callback) callback(res1);
            resolve(createResultFromJSAPI(res1, PlaybackMethod.TING, 'get', 'Failed to get Ting audio state'));
          });
        } else {
          if (callback) callback(res2);
          resolve(createResultFromJSAPI(res2, PlaybackMethod.TING, 'get', 'Failed to get Ting audio state'));
        }
      });
    });
  }
  
  function onTingAudioStateChanged(callback) {
    try {
      if (isTingSupportedPCVersion) {
        JSAPI.invoke('getTingAudioState', {}, function () {});
      }
      var listener = function listener(res) {
        if (!res.status &amp;&amp; !res.item) {
          return;
        }
        var state = {
          status: res.status,
          currentTime: res.currentTime || 0,
          duration: res.duration || 0,
          item: res.item,
          source: PlaybackMethod.TING
        };
        callback(state);
      };
      JSAPI.on('onTingAudioStateChanged', listener);
      return listener;
    } catch (error) {
      console.error('Failed to register onTingAudioStateChanged:', error);
      return null;
    }
  }
  var callbackQueue = [];
  var listenersRegistered = false;
  var tingListener = null;
  var backgroundListener = null;
  
  function notifyListeners(state) {
    callbackQueue.forEach(function (callback) {
      try {
        callback(state);
      } catch (error) {
        console.error('Error in audio state listener:', error);
      }
    });
  }
  
  function registerAllListeners() {
    if (listenersRegistered) return;
    listenersRegistered = true;
    if (!tingListener) {
      tingListener = onTingAudioStateChanged(function (state) {
        notifyListeners(state);
      });
    }
    if (!backgroundListener) {
      backgroundListener = onBackgroundAudioStateChanged(function (state) {
        notifyListeners(state);
      });
    }
  }
  
  function addListener(callback) {
    if (!callbackQueue.includes(callback)) {
      callbackQueue.push(callback);
      registerAllListeners();
    }
  }
  
  function removeListener(callback) {
    var index = callbackQueue.indexOf(callback);
    if (index &gt; -1) {
      callbackQueue.splice(index, 1);
    }
  }

  function _regeneratorRuntime$2() {  _regeneratorRuntime$2 = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  undefined &amp;&amp; undefined.__rest || function (s, e) {
    var t = {};
    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) &amp;&amp; e.indexOf(p) &lt; 0) t[p] = s[p];
    if (s != null &amp;&amp; typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i &lt; p.length; i++) {
      if (e.indexOf(p[i]) &lt; 0 &amp;&amp; Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
    }
    return t;
  };
  var currentPlaybackMethod = null;
  
  function getCurrentPlaybackMethod() {
    return currentPlaybackMethod;
  }
  
  function onAudioStateChanged(callback) {
    addListener(callback);
    return function () {
      removeListener(callback);
    };
  }
  function getAudioStateByMethod(_x4, _x5) {
    return _getAudioStateByMethod.apply(this, arguments);
  }
  
  function _getAudioStateByMethod() {
    _getAudioStateByMethod = _asyncToGenerator( _regeneratorRuntime$2().mark(function _callee2(method, callback) {
      return _regeneratorRuntime$2().wrap(function _callee2$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            _context2.t0 = method;
            _context2.next = _context2.t0 === PlaybackMethod.TING ? 3 : _context2.t0 === PlaybackMethod.BACKGROUND ? 6 : _context2.t0 === PlaybackMethod.H5_AUDIO ? 9 : 12;
            break;
          case 3:
            _context2.next = 5;
            return getTingAudioState(callback);
          case 5:
            return _context2.abrupt("return", _context2.sent);
          case 6:
            _context2.next = 8;
            return getBackgroundAudioState(callback);
          case 8:
            return _context2.abrupt("return", _context2.sent);
          case 9:
            _context2.next = 11;
            return getH5AudioState();
          case 11:
            return _context2.abrupt("return", _context2.sent);
          case 12:
            return _context2.abrupt("return", createErrorResult('Unknown playback method'));
          case 13:
          case "end":
            return _context2.stop();
        }
      }, _callee2);
    }));
    return _getAudioStateByMethod.apply(this, arguments);
  }
  function getAudioState(_x13) {
    return _getAudioState.apply(this, arguments);
  }
  
  function _getAudioState() {
    _getAudioState = _asyncToGenerator( _regeneratorRuntime$2().mark(function _callee5(callback) {
      return _regeneratorRuntime$2().wrap(function _callee5$(_context5) {
        while (1) switch (_context5.prev = _context5.next) {
          case 0:
            {
              _context5.next = 2;
              break;
            }
          case 2:
            _context5.next = 4;
            return tryAllMethods(function (method) {
              return getAudioStateByMethod(method, callback);
            }, 'No audio state available from any playback method');
          case 4:
            return _context5.abrupt("return", _context5.sent);
          case 5:
          case "end":
            return _context5.stop();
        }
      }, _callee5);
    }));
    return _getAudioState.apply(this, arguments);
  }

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  function _toPrimitive(input, hint) {
    if (_typeof(input) !== "object" || input === null) return input;
    var prim = input[Symbol.toPrimitive];
    if (prim !== undefined) {
      var res = prim.call(input, hint || "default");
      if (_typeof(res) !== "object") return res;
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return (hint === "string" ? String : Number)(input);
  }

  function _toPropertyKey(arg) {
    var key = _toPrimitive(arg, "string");
    return _typeof(key) === "symbol" ? key : String(key);
  }

  function _defineProperties(target, props) {
    for (var i = 0; i &lt; props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor) descriptor.writable = true;
      Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
    }
  }
  function _createClass(Constructor, protoProps, staticProps) {
    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
    if (staticProps) _defineProperties(Constructor, staticProps);
    Object.defineProperty(Constructor, "prototype", {
      writable: false
    });
    return Constructor;
  }

  function _regeneratorRuntime$1() {  _regeneratorRuntime$1 = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  var AudioStateManagerClass = function () {
    function AudioStateManagerClass() {
      var _this = this;
      _classCallCheck(this, AudioStateManagerClass);
      this.POLLING_INTERVAL = 1000;
      this.subscribers = new Set();
      this.pollingTimer = null;
      this.listenerUnsubscribe = null;
      this.lastFullState = null;
      
      this.subscribe = function (callback) {
        _this.subscribers.add(callback);
        if (_this.subscribers.size === 1) {
          _this.startGlobalSubscription();
        }
        return function () {
          _this.subscribers["delete"](callback);
          if (_this.subscribers.size === 0) {
            _this.stopGlobalSubscription();
          }
        };
      };
      
      this.getCachedState = function () {
        return _this.lastFullState;
      };
      this.poll = _asyncToGenerator( _regeneratorRuntime$1().mark(function _callee() {
        var result;
        return _regeneratorRuntime$1().wrap(function _callee$(_context) {
          while (1) switch (_context.prev = _context.next) {
            case 0:
              if (!(!_this.pollingTimer &amp;&amp; _this.subscribers.size === 0)) {
                _context.next = 2;
                break;
              }
              return _context.abrupt("return");
            case 2:
              _context.prev = 2;
              _context.next = 5;
              return getAudioState();
            case 5:
              result = _context.sent;
              if (result.success &amp;&amp; result.data) {
                _this.lastFullState = _this.buildExtendedState(result.data, 'polling');
                _this.notifySubscribers(_this.lastFullState);
              }
              _context.next = 12;
              break;
            case 9:
              _context.prev = 9;
              _context.t0 = _context["catch"](2);
              console.warn('[AudioStateManager] Polling error:', _context.t0);
            case 12:
              if (_this.subscribers.size &gt; 0) {
                _this.pollingTimer = setTimeout(_this.poll, _this.POLLING_INTERVAL);
              } else {
                _this.stopPolling();
              }
            case 13:
            case "end":
              return _context.stop();
          }
        }, _callee, null, [[2, 9]]);
      }));
      this.handleEventStateChange = function (eventState) {
        _this.lastFullState = _this.buildExtendedState(eventState, 'event');
        _this.notifySubscribers(_this.lastFullState);
        _this.startPolling();
      };
    }
    
    _createClass(AudioStateManagerClass, [{
      key: "buildExtendedState",
      value: function buildExtendedState(data, updateSource) {
        var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
        var currListenId = (_a = data.item) === null || _a === void 0 ? void 0 : _a.listenId;
        var isSameAudio = !!(currListenId &amp;&amp; currListenId === ((_c = (_b = this.lastFullState) === null || _b === void 0 ? void 0 : _b.item) === null || _c === void 0 ? void 0 : _c.listenId));
        var status = data.status || ((_d = this.lastFullState) === null || _d === void 0 ? void 0 : _d.status) || 'idle';
        var item = data.item &amp;&amp; _typeof(data.item) === 'object' ? data.item : (_f = (_e = this.lastFullState) === null || _e === void 0 ? void 0 : _e.item) !== null &amp;&amp; _f !== void 0 ? _f : data;
        return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, isSameAudio ? Object.assign({}, this.lastFullState) : {}), {
          status: status,
          currentTime: (_g = data.currentTime) !== null &amp;&amp; _g !== void 0 ? _g : 0,
          duration: (_h = data.duration) !== null &amp;&amp; _h !== void 0 ? _h : 0,
          item: item,
          source: (_k = (_j = data.source) !== null &amp;&amp; _j !== void 0 ? _j : getCurrentPlaybackMethod()) !== null &amp;&amp; _k !== void 0 ? _k : PlaybackMethod.TING
        }), data.playRate !== undefined &amp;&amp; {
          playRate: data.playRate
        }), data.shutdown !== undefined &amp;&amp; {
          shutdown: data.shutdown
        }), data.categoryId !== undefined &amp;&amp; {
          categoryId: data.categoryId
        }), data.buffered !== undefined &amp;&amp; {
          buffered: data.buffered
        }), {
          updateSource: updateSource,
          timestamp: Date.now()
        });
      }
    }, {
      key: "notifySubscribers",
      value: function notifySubscribers(state) {
        this.subscribers.forEach(function (cb) {
          try {
            cb(state);
          } catch (e) {
            console.error('[AudioStateManager] Callback error:', e);
          }
        });
      }
    }, {
      key: "stopPolling",
      value: function stopPolling() {
        if (this.pollingTimer) {
          clearTimeout(this.pollingTimer);
          this.pollingTimer = null;
        }
      }
    }, {
      key: "startPolling",
      value: function startPolling() {
        if (this.pollingTimer) return;
        this.pollingTimer = setTimeout(this.poll, this.POLLING_INTERVAL);
      }
    }, {
      key: "startGlobalSubscription",
      value: function () {
        var _startGlobalSubscription = _asyncToGenerator( _regeneratorRuntime$1().mark(function _callee2() {
          return _regeneratorRuntime$1().wrap(function _callee2$(_context2) {
            while (1) switch (_context2.prev = _context2.next) {
              case 0:
                if (!this.listenerUnsubscribe) {
                  this.listenerUnsubscribe = onAudioStateChanged(this.handleEventStateChange);
                }
                _context2.next = 3;
                return this.poll();
              case 3:
              case "end":
                return _context2.stop();
            }
          }, _callee2, this);
        }));
        function startGlobalSubscription() {
          return _startGlobalSubscription.apply(this, arguments);
        }
        return startGlobalSubscription;
      }()
    }, {
      key: "stopGlobalSubscription",
      value: function stopGlobalSubscription() {
        this.stopPolling();
        if (this.listenerUnsubscribe) {
          this.listenerUnsubscribe();
          this.listenerUnsubscribe = null;
        }
        this.lastFullState = null;
      }
    }], [{
      key: "getInstance",
      value: function getInstance() {
        if (!AudioStateManagerClass.instance) {
          AudioStateManagerClass.instance = new AudioStateManagerClass();
        }
        return AudioStateManagerClass.instance;
      }
    }]);
    return AudioStateManagerClass;
  }();
  var AudioStateManager = AudioStateManagerClass.getInstance();
  
  AudioStateManager.subscribe;
  
  AudioStateManager.getCachedState;

  function _defineProperty(obj, key, value) {
    key = _toPropertyKey(key);
    if (key in obj) {
      Object.defineProperty(obj, key, {
        value: value,
        enumerable: true,
        configurable: true,
        writable: true
      });
    } else {
      obj[key] = value;
    }
    return obj;
  }

  
  
  var Device = {};
  function detect(ua) {
    var MQQBrowser = ua.match(/MQQBrowser\/(\d+\.\d+)/i);
    var MQQClient = ua.match(/QQ\/(\d+\.(\d+)\.(\d+)\.(\d+))/i) || ua.match(/V1_AND_SQ_([\d\.]+)/);
    var WeChat = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/) || ua.match(/MicroMessenger\/((\d+)\.(\d+))/);
    var MacOS = ua.match(/Mac\sOS\sX\s(\d+[\.|_]\d+)/);
    var WinOS = ua.match(/Windows(\s+\w+)?\s+?(\d+\.\d+)/);
    var Linux = ua.match(/Linux\s/);
    var MiuiBrowser = ua.match(/MiuiBrowser\/(\d+\.\d+)/i);
    var M1 = ua.match(/MI-ONE/);
    var MIPAD = ua.match(/MI PAD/);
    var UC = ua.match(/UCBrowser\/(\d+\.\d+(\.\d+\.\d+)?)/) || ua.match(/\sUC\s/);
    var IEMobile = ua.match(/IEMobile(\/|\s+)(\d+\.\d+)/) || ua.match(/WPDesktop/);
    var ipod = ua.match(/(ipod).*\s([\d_]+)/i);
    var ipad = ua.match(/(ipad).*\s([\d_]+)/i);
    var iphone = ua.match(/(iphone)\sos\s([\d_]+)/i);
    var Chrome = ua.match(/Chrome\/(\d+\.\d+)/);
    var AndriodBrowser = ua.match(/Mozilla.*Linux.*Android.*AppleWebKit.*Mobile Safari/);
    var android = ua.match(/(android)\s([\d\.]+)/i);
    var harmony = ua.match(/(OpenHarmony)\s([\d\.]+)/i);
    Device.browser = Device.browser || {}, Device.os = Device.os || {};
    Device.os.type = -1;
    Device.os.unifiedPC = ua.match(/UnifiedPC/);
    Device.os.unifiedMac = /UnifiedPCMac/i.test(ua);
    Device.os.unifiedWindows = /UnifiedPCWindows/i.test(ua);
    if (window.ActiveXObject) {
      var vie = 6;
      (window.XMLHttpRequest || ua.indexOf('MSIE 7.0') &gt; -1) &amp;&amp; (vie = 7);
      (window.XDomainRequest || ua.indexOf('Trident/4.0') &gt; -1) &amp;&amp; (vie = 8);
      ua.indexOf('Trident/5.0') &gt; -1 &amp;&amp; (vie = 9);
      ua.indexOf('Trident/6.0') &gt; -1 &amp;&amp; (vie = 10);
      Device.browser.ie = true, Device.browser.version = vie;
    } else if (ua.indexOf('Trident/7.0') &gt; -1) {
      Device.browser.ie = true, Device.browser.version = 11;
    }
    if (android) {
      Device.os.android = true;
      Device.os.version = android[2];
      Device.os.type = 2;
    }
    if (harmony) {
      Device.os.harmony = true;
      Device.os.version = harmony[2];
      Device.os.type = 42;
    }
    if (ipod) {
      Device.os.ios = Device.os.ipod = true;
      Device.os.version = ipod[2].replace(/_/g, '.');
    }
    if (ipad) {
      Device.os.ios = Device.os.ipad = true;
      Device.os.version = ipad[2].replace(/_/g, '.');
      Device.os.type = 13;
    }
    if (iphone) {
      Device.os.iphone = Device.os.ios = true;
      Device.os.version = iphone[2].replace(/_/g, '.');
      Device.os.type = 1;
    }
    if (WinOS) Device.os.windows = true, Device.os.version = WinOS[2], Device.os.type = 15;
    if (MacOS) Device.os.Mac = true, Device.os.version = MacOS[1], Device.os.type = 14;
    if (Linux) Device.os.Linux = true, Device.os.type = 33;
    if (ua.indexOf('lepad_hls') &gt; 0) Device.os.LePad = true;
    if (MIPAD) Device.os.MIPAD = true;
    if (MQQBrowser) Device.browser.MQQ = true, Device.browser.version = MQQBrowser[1];
    if (MQQClient) Device.browser.MQQClient = true, Device.browser.version = MQQClient[1];
    if (WeChat) Device.browser.WeChat = true, Device.browser.mmversion = Device.browser.version = WeChat[1];
    if (MiuiBrowser) Device.browser.MIUI = true, Device.browser.version = MiuiBrowser[1];
    if (UC) Device.browser.UC = true, Device.browser.version = UC[1] || NaN;
    if (IEMobile) Device.browser.IEMobile = true, Device.browser.version = IEMobile[2];
    if (AndriodBrowser) {
      Device.browser.AndriodBrowser = true;
    }
    if (M1) {
      Device.browser.M1 = true;
    }
    if (Chrome) {
      Device.browser.Chrome = true, Device.browser.version = Chrome[1];
    }
    if (Device.os.windows) {
      if (typeof navigator.platform !== "undefined" &amp;&amp; navigator.platform.toLowerCase() == "win64") {
        Device.os.win64 = true;
      } else {
        Device.os.win64 = false;
      }
    }
    if (Device.os.Mac || Device.os.windows || Device.os.Linux || Device.os.unifiedPC || /OpenHarmony/i.test(ua) &amp;&amp; /pc/i.test(ua)) {
      Device.os.pc = true;
    }
    var osType = {
      iPad7: 'iPad; CPU OS 7',
      LePad: 'lepad_hls',
      XiaoMi: 'MI-ONE',
      SonyDTV: "SonyDTV",
      SamSung: 'SAMSUNG',
      HTC: 'HTC',
      VIVO: 'vivo'
    };
    for (var os in osType) {
      Device.os[os] = ua.indexOf(osType[os]) !== -1;
    }
    Device.os.phone = Device.os.phone || /windows phone/i.test(ua);
    Device.os.getNumVersion = function () {
      return parseFloat(Device.os.version);
    };
    Device.os.hasTouch = 'ontouchstart' in window;
    if (Device.os.hasTouch &amp;&amp; Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 6) {
      Device.os.hasTouch = false;
    }
    if (Device.browser.WeChat &amp;&amp; Device.browser.version &lt; 5.0) {
      Device.os.hasTouch = false;
    }
    Device.browser.getNumVersion = function () {
      return parseFloat(Device.browser.version);
    };
    Device.browser.isFFCanOcx = function () {
      return !!Device.browser.firefox &amp;&amp; Device.browser.getNumVersion() &gt;= 3.0;
    };
    Device.browser.isCanOcx = function () {
      return !!Device.os.windows &amp;&amp; (!!Device.browser.ie || Device.browser.isFFCanOcx() || !!Device.browser.webkit);
    };
    Device.browser.isNotIESupport = function () {
      return !!Device.os.windows &amp;&amp; (!!Device.browser.webkit || Device.browser.isFFCanOcx());
    };
    Device.userAgent = {};
    Device.userAgent.browserVersion = Device.browser.version;
    Device.userAgent.osVersion = Device.os.version;
    if (Device.os.unifiedPC) {
      if (Device.os.unifiedWindows) Device.os.type = 37;else if (Device.os.unifiedMac) Device.os.type = 38;else Device.os.type = 39;
    }
    delete Device.userAgent.version;
  }
  detect(window.navigator.userAgent);
  function canSupportH5Video() {
    var ua = window.navigator.userAgent,
      m = null;
    if (!!Device.os.android) {
      if (Device.browser.MQQ &amp;&amp; Device.browser.getNumVersion() &gt;= 4.2) {
        return true;
      }
      if (ua.indexOf('MI2') != -1) {
        return true;
      }
      if (Device.os.version &gt;= '4' &amp;&amp; (m = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/))) {
        if (parseFloat(m[1]) &gt;= 4.2) {
          return true;
        }
      }
      if (Device.os.version &gt;= '4.1') {
        return true;
      }
    }
    return false;
  }
  function canSupportVideoMp4() {
    var video = document.createElement('video');
    if (typeof video.canPlayType === 'function') {
      if (video.canPlayType('video/mp4; codecs="mp4v.20.8"') === 'probably') {
        return true;
      }
      if (video.canPlayType('video/mp4; codecs="avc1.42E01E"') === 'probably' || video.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"') === 'probably') {
        return true;
      }
    }
    return false;
  }
  function canSupportAutoPlay() {
    if (Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 10) {
      return false;
    }
    return true;
  }
  function isLockdownMode() {
    if (!Device.os.ios || Device.os.getNumVersion() &lt; 16) {
      return false;
    }
    if (typeof WebAssembly === 'undefined' &amp;&amp; typeof OfflineAudioContext === 'undefined' &amp;&amp; typeof WebGLRenderingContext === 'undefined') {
      return true;
    }
    return false;
  }
  Device.canSupportVideo = canSupportVideoMp4 || canSupportH5Video;
  Device.canSupportVideoMp4 = canSupportVideoMp4;
  Device.canSupportH5Video = canSupportH5Video;
  Device.canSupportAutoPlay = canSupportAutoPlay;
  Device.isLockdownMode = isLockdownMode;
  
  Device.cpVersion = function (version) {
    var cp = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 0;
    var canEqual = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    var nowVersionStr = Device.os.version;
    if (!nowVersionStr) return false;
    var versionArr = version.split('.');
    var nowVersionArr = nowVersionStr.split('.');
    for (var i = 0; i &lt; Math.max(nowVersionArr.length, versionArr.length); i++) {
      var vi = +versionArr[i];
      var nvi = +nowVersionArr[i];
      if (vi === nvi) continue;
      if (cp &gt; 0) return vi &gt; nvi;
      if (cp &lt; 0) return vi &lt; nvi;
    }
    return canEqual || cp === 0;
  };

  
  function _log(level, msg) {
    if (level === 'log') {
      level = 'info';
      msg = "[WechatFe]".concat(msg);
    } else {
      var prefix = "__wap__".concat(window.__second_open__ ? ' (sec)' : '');
      msg = "".concat(prefix, " ").concat(msg, " location:[").concat(location.href, "]");
    }
    msg += new Error().stack;
    if (mmVersion.isMpapp) {
      invoke$1('WNNativeCallbackLog', msg);
    } else if (mmVersion.isWechat) {
      if (mmVersion.isAndroid) {
        console.warn('[system]', "[MicroMsg.JsApiLog][".concat(level, "] jslog : ").concat(msg));
      } else if (mmVersion.isIOS) {
        JSAPI.invoke('writeLog', {
          level: level,
          msg: msg
        });
      } else {
        JSAPI.invoke('log', {
          level: level,
          msg: msg
        });
      }
    }
  }
  var Log = {
    info: function info() {
      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key &lt; _len; _key++) {
        args[_key] = arguments[_key];
      }
      _log('info', args.join(' '));
    },
    warn: function warn() {
      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
        args[_key2] = arguments[_key2];
      }
      _log('warn', args.join(' '));
    },
    error: function error() {
      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 &lt; _len3; _key3++) {
        args[_key3] = arguments[_key3];
      }
      _log('error', args.join(' '));
    },
    debug: function debug() {
      for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 &lt; _len4; _key4++) {
        args[_key4] = arguments[_key4];
      }
      _log('debug', args.join(' '));
    },
    log: function log() {
      for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 &lt; _len5; _key5++) {
        args[_key5] = arguments[_key5];
      }
      _log('info', args.join(' '));
    }
  };

  
  
  var reportLogs = [];
  var reportExtraLogs = [];
  var sendUrl = '/mp/jsmonitor?#wechat_redirect';
  var monitor = {};
  monitor._reportOptions = {
    idkey: {}
  };
  function ObjWithoutProperty(source, exclude) {
    if (source === null) return {};
    var target = {};
    var sourceKeys = Object.keys(source);
    for (var i = 0; i &lt; sourceKeys.length; i++) {
      var key = sourceKeys[i];
      if (exclude.indexOf(key) &gt;= 0) continue;
      target[key] = source[key];
    }
    return target;
  }
  function formatDataToString(data) {
    var reportData = [];
    for (var key in data) {
      if (Object.prototype.hasOwnProperty.call(data, key)) {
        reportData.push(key + '=' + encodeURIComponent(data[key]));
      }
    }
    return reportData.join('&amp;');
  }
  monitor.getReportData = function (opt) {
    opt = opt || {};
    var idkey = monitor._reportOptions.idkey || {};
    var key = null;
    var reportData = {};
    var nextKey;
    try {
      for (key in idkey) {
        if (Object.prototype.hasOwnProperty.call(idkey, key) &amp;&amp; idkey[key]) {
          reportLogs.push(key + '_' + idkey[key]);
        }
      }
    } catch (e) {
      return false;
    }
    if (reportLogs.length === 0) {
      return false;
    }
    if (reportExtraLogs.length) {
      reportData.lc = reportExtraLogs.length;
      reportExtraLogs.forEach(function (extraLog, index) {
        reportData["log".concat(index)] = extraLog;
      });
    }
    try {
      var reportOptions = monitor._reportOptions;
      if (reportOptions !== null &amp;&amp; reportOptions !== undefined) {
        for (nextKey in reportOptions) {
          if (Object.prototype.hasOwnProperty.call(reportOptions, nextKey)) {
            reportData[nextKey] = reportOptions[nextKey];
          }
        }
      }
    } catch (e) {
      reportData = {};
    }
    reportData.idkey = reportLogs.join(';');
    reportData.t = Math.random();
    if (opt.remove !== false) {
      reportLogs = [];
      reportExtraLogs = [];
      monitor._reportOptions = {
        idkey: {}
      };
    }
    return reportData;
  };
  monitor.setLogs = function (opt) {
    var id = opt.id;
    var key = opt.key;
    var value = opt.value;
    var extraLog = opt.log;
    var others = ObjWithoutProperty(opt, ['id', 'key', 'value', 'log']);
    var idkey = monitor._reportOptions.idkey || {};
    var param = id + '_' + key;
    if (idkey[param]) {
      idkey[param] += value;
    } else {
      idkey[param] = value;
    }
    monitor._reportOptions.idkey = idkey;
    if (extraLog) {
      reportExtraLogs.push(extraLog);
    }
    try {
      if (others !== null &amp;&amp; others !== undefined) {
        for (var otherKey in others) {
          if (Object.prototype.hasOwnProperty.call(others, otherKey)) {
            monitor._reportOptions[otherKey] = others[otherKey];
          }
        }
      }
    } catch (e) {
      console.log(e);
    }
    return monitor;
  };
  monitor.setAvg = function (id, key, value) {
    var idkey = monitor._reportOptions.idkey || {};
    var param1 = id + '_' + key;
    var param2 = id + '_' + (key - 1);
    if (idkey[param1]) {
      idkey[param1] += value;
    } else {
      idkey[param1] = value;
    }
    if (idkey[param2]) {
      idkey[param2] += 1;
    } else {
      idkey[param2] = 1;
    }
    monitor._reportOptions.idkey = idkey;
    return monitor;
  };
  monitor.setSum = function (id, key) {
    var value = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : 1;
    var idkey = monitor._reportOptions.idkey;
    var param = id + '_' + key;
    if (idkey[param]) {
      idkey[param] += value;
    } else {
      idkey[param] = value;
    }
    monitor._reportOptions.idkey = idkey;
    return monitor;
  };
  monitor.send = function (async, ajax, origin) {
    if (async !== false) {
      async = true;
    }
    var data = monitor.getReportData();
    origin = origin || '';
    if (!data) {
      return;
    }
    if (!!ajax &amp;&amp; ajax instanceof Function) {
      ajax({
        url: origin + sendUrl,
        type: 'POST',
        mayAbort: true,
        data: data,
        async: async,
        timeout: 2000,
        dontReport: true
      });
    } else {
      new Image().src = origin + '/mp/jsmonitor?' + formatDataToString(data) + '#wechat_redirect';
    }
  };
  if (typeof window !== 'undefined' &amp;&amp; window.__monitor) {
    monitor = window.__monitor;
  } else {
    typeof window !== 'undefined' &amp;&amp; (window.__monitor = monitor);
  }
  var monitor$1 = monitor;

  
  var logList = [];
  var log = function log(msg) {
    logList.push(msg);
  };
  var printLog = function printLog() {
    for (var i = 0, len = logList.length; i &lt; len; ++i) {
      console.log("[RespType]".concat(logList[i]));
    }
  };
  var isArray = function isArray(val) {
    return Object.prototype.toString.call(val) === '[object Array]';
  };
  var getValueType = function getValueType(value) {
    if (isArray(value)) {
      return 'array';
    }
    return _typeof(value);
  };
  var parseRtDesc = function parseRtDesc(rtDesc, k) {
    var type = 'mix';
    var isRequired = false;
    var key = k;
    if (k) {
      var requireKeyWord = '_R';
      var pos = k.indexOf(requireKeyWord);
      var len = k.length - requireKeyWord.length;
      isRequired = pos !== -1 &amp;&amp; pos === len;
      key = isRequired ? k.substring(0, len) : k;
    }
    if (typeof rtDesc === 'string') {
      type = rtDesc;
    } else if (isArray(rtDesc)) {
      type = 'array';
    } else if (_typeof(rtDesc) === 'object') {
      type = 'object';
    }
    return {
      key: key,
      type: type,
      isRequired: isRequired
    };
  };
  var checkForArrayRtDesc = function checkForArrayRtDesc(arr, rtDescs) {
    if (!isArray(arr)) {
      return false;
    }
    for (var i = 0, len = arr.length; i &lt; len; ++i) {
      var value = arr[i];
      var rtDesc = void 0;
      var j = 0;
      var flag = rtDescs.length === 0;
      while (rtDesc = rtDescs[j++]) {
        if (checkForRtDesc(value, rtDesc)) {
          flag = true;
          break;
        }
      }
      if (!flag) {
        return false;
      }
    }
    return true;
  };
  var checkForStringRtDesc = function checkForStringRtDesc(value, rtDesc) {
    var valueType = getValueType(value);
    var desc = parseRtDesc(rtDesc);
    var ret = desc.type === valueType;
    if (!ret) {
      log("miss match type : ".concat(valueType, " !== ").concat(desc.type));
    }
    return ret;
  };
  var checkForObjectRtDesc = function checkForObjectRtDesc(json, rtDesc) {
    if (_typeof(json) !== 'object' || isArray(json)) {
      log('must be object');
      return false;
    }
    var rootJson = json;
    var nowCheckValue = json;
    for (var k in rtDesc) {
      if (rtDesc.hasOwnProperty(k)) {
        var nowCheckDesc = rtDesc[k];
        var desc = parseRtDesc(nowCheckDesc, k);
        var key = desc.key;
        nowCheckValue = rootJson[key];
        var valueType = getValueType(nowCheckValue);
        if (desc.isRequired &amp;&amp; nowCheckValue === undefined) {
          log("is required @key=".concat(key));
          return false;
        }
        if (nowCheckValue !== undefined) {
          if (valueType !== desc.type &amp;&amp; desc.type !== 'mix') {
            log("miss match type : ".concat(valueType, " !== ").concat(desc.type, " @key=").concat(key));
            return false;
          }
          if ((valueType === 'array' || valueType === 'object') &amp;&amp; desc.type !== 'mix') {
            if (!checkForRtDesc(nowCheckValue, nowCheckDesc)) {
              return false;
            }
          }
        }
      }
    }
    return true;
  };
  var checkForRtDesc = function checkForRtDesc(json, rtDesc) {
    if (isArray(rtDesc)) {
      return checkForArrayRtDesc(json, rtDesc);
    }
    if (_typeof(rtDesc) === 'object') {
      return checkForObjectRtDesc(json, rtDesc);
    }
    if (typeof rtDesc === 'string') {
      return checkForStringRtDesc(json, rtDesc);
    }
    return false;
  };
  var _check = function check(json, rtDescs) {
    if (typeof json === 'string') {
      try {
        json = eval("(".concat(json, ")"));
      } catch (e) {
        log('parse json error');
        return false;
      }
    }
    if (_typeof(json) !== 'object') {
      log('must be object');
      return false;
    }
    if (!isArray(rtDescs)) {
      rtDescs = [rtDescs];
    }
    var rtDesc;
    var i = 0;
    while (rtDesc = rtDescs[i++]) {
      if (checkForRtDesc(json, rtDesc)) {
        return true;
      }
    }
    return false;
  };
  var RespTypes = {
    check: function check(json, rtDesc) {
      logList = [];
      try {
        var ret = _check(json, rtDesc);
        if (!ret) {
          printLog();
        }
        return ret;
      } catch (e) {
        logList.push("[rtException]".concat(e.toString()));
        printLog();
        return false;
      }
    },
    getMsg: function getMsg() {
      return logList.join(';');
    }
  };

  function _arrayWithHoles(arr) {
    if (Array.isArray(arr)) return arr;
  }

  function _iterableToArrayLimit(arr, i) {
    var _i = null == arr ? null : "undefined" != typeof Symbol &amp;&amp; arr[Symbol.iterator] || arr["@@iterator"];
    if (null != _i) {
      var _s,
        _e,
        _x,
        _r,
        _arr = [],
        _n = !0,
        _d = !1;
      try {
        if (_x = (_i = _i.call(arr)).next, 0 === i) {
          if (Object(_i) !== _i) return;
          _n = !1;
        } else for (; !(_n = (_s = _x.call(_i)).done) &amp;&amp; (_arr.push(_s.value), _arr.length !== i); _n = !0);
      } catch (err) {
        _d = !0, _e = err;
      } finally {
        try {
          if (!_n &amp;&amp; null != _i["return"] &amp;&amp; (_r = _i["return"](), Object(_r) !== _r)) return;
        } finally {
          if (_d) throw _e;
        }
      }
      return _arr;
    }
  }

  function _arrayLikeToArray(arr, len) {
    if (len == null || len &gt; arr.length) len = arr.length;
    for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i];
    return arr2;
  }

  function _unsupportedIterableToArray(o, minLen) {
    if (!o) return;
    if (typeof o === "string") return _arrayLikeToArray(o, minLen);
    var n = Object.prototype.toString.call(o).slice(8, -1);
    if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name;
    if (n === "Map" || n === "Set") return Array.from(o);
    if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
  }

  function _nonIterableRest() {
    throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }

  function _slicedToArray(arr, i) {
    return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
  }

  
  var prefix = '__WXLS__';
  var localStorage = window.localStorage || {
    getItem: function getItem() {},
    setItem: function setItem() {},
    removeItem: function removeItem() {},
    key: function key() {},
    clear: function clear() {
      var _a, _b;
      (_b = (_a = window.localStorage) === null || _a === void 0 ? void 0 : _a.clear) === null || _b === void 0 ? void 0 : _b.call(_a);
    },
    length: 0
  };
  var evictionPolicies = {
    noeviction: function noeviction(data) {
      return data;
    },
    'allkeys-random': function allkeysRandom(data, size) {
      var keys = Object.keys(data);
      var memCnt = 0;
      while (memCnt &lt; size) {
        var len = keys.length;
        var randomKeyIdx = Math.floor(Math.random() * len);
        var randomKey = keys[randomKeyIdx];
        memCnt += JSON.stringify(data[randomKey]).length;
        delete data[randomKey];
        keys = Object.keys(data);
      }
      return data;
    },
    'volatile-ttl': function volatileTtl(data, size) {
      var keys = Object.keys(data);
      keys = keys.sort(function (key1, key2) {
        var d1 = data[key1];
        var d2 = data[key2];
        if (d1.exp &lt; d2.exp) return -1;
        if (d1.exp &gt; d2.exp) return 1;
        return 0;
      });
      var memCnt = 0;
      for (var i = 0; i &lt; keys.length; i++) {
        if (memCnt &gt;= size) break;
        var key = keys[i];
        memCnt += JSON.stringify(data[key]).length;
        delete data[key];
      }
      return data;
    },
    'clear-all': function clearAll() {
      localStorage.clear();
      return {};
    }
  };
  function formatLogMsg(str) {
    return "[WXLS] ".concat(str);
  }
  
  var LS = function () {
    function LS(func, evictionPolicy, logger) {
      _classCallCheck(this, LS);
      this.logger = function () {};
      if (!func) throw 'require function name.';
      this.evictionPolicy = 'noeviction';
      this.key = func;
      if (typeof logger === 'function') {
        this.logger = function (str, type) {
          return logger(formatLogMsg(str), type);
        };
      }
      if (evictionPolicy &amp;&amp; Object.keys(evictionPolicies).indexOf(evictionPolicy) !== -1) {
        this.evictionPolicy = evictionPolicy;
      }
      this.init();
    }
    _createClass(LS, [{
      key: "init",
      value: function init() {
        var _a, _b;
        this.check();
        if (Math.random() * 1000 &lt; 1) {
          (_a = this.logger) === null || _a === void 0 ? void 0 : _a.call(this, "LSlen: ".concat(((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length) || localStorage.length), 'report');
        }
      }
    }, {
      key: "getData",
      value: function getData() {
        var data = LS.getItem(this.key) || '{}';
        try {
          data = JSON.parse(data);
        } catch (e) {
          this.logger("getData error: ".concat(e), 'error');
          localStorage.removeItem(prefix + this.key);
          data = {};
        }
        return data;
      }
    }, {
      key: "check",
      value: function check(isReturn) {
        var data = this.getData();
        var temp = {};
        var now = +new Date();
        var key;
        var val;
        for (key in data) {
          val = data[key];
          if (+val.exp &gt; now) {
            temp[key] = val;
          }
        }
        this.logger("check info: isReturn:".concat(isReturn, " data:").concat(JSON.stringify(temp)), 'info');
        if (isReturn) return temp;
        LS.setItem(this.key, JSON.stringify(temp), this.logger);
      }
    }, {
      key: "set",
      value: function set(key, val, exp) {
        var _a, _b;
        var data = this.check(true);
        data[key] = {
          val: val,
          exp: exp || +new Date()
        };
        try {
          if (localStorage.getItem(prefix + this.key)) localStorage.removeItem(prefix + this.key);
          localStorage.setItem(prefix + this.key, JSON.stringify(data));
          this.logger("first set success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data)), 'success');
        } catch (e) {
          this.logger("first set error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data), " k:").concat(key, " v:").concat(val, " exp:").concat(exp), 'error');
          localStorage.clear();
          LS.setItem(this.key, JSON.stringify(_defineProperty({}, key, {
            val: val,
            exp: exp || +new Date()
          })), this.logger);
        }
      }
    }, {
      key: "get",
      value: function get(key) {
        var data = this.getData();
        data = data[key];
        return data ? data.val || null : null;
      }
    }, {
      key: "remove",
      value: function remove(key) {
        var data = this.getData();
        if (data[key]) delete data[key];
        LS.setItem(this.key, JSON.stringify(data), this.logger);
      }
    }], [{
      key: "getItem",
      value: function getItem(key) {
        key = prefix + key;
        return localStorage.getItem(key);
      }
    }, {
      key: "setItem",
      value: function setItem(key, val, logger) {
        var _a, _b;
        key = prefix + key;
        var n = 3;
        while (n--) {
          try {
            if (localStorage.getItem(key)) localStorage.removeItem(key);
            localStorage.setItem(key, val);
            typeof logger === 'function' &amp;&amp; logger("setItem success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(key, " val:").concat(val), 'success');
            break;
          } catch (e) {
            typeof logger === 'function' &amp;&amp; logger("setItem error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(key, " val:").concat(val), 'error');
            LS.clear();
          }
        }
      }
    }, {
      key: "clear",
      value: function clear() {
        var i;
        var k;
        for (i = localStorage.length - 1; i &gt;= 0; i--) {
          k = localStorage.key(i);
          if (k.indexOf(prefix) == 0) {
            localStorage.removeItem(k);
          }
        }
      }
    }, {
      key: "getSupportEvicationPolicy",
      value: function getSupportEvicationPolicy() {
        return Object.keys(evictionPolicies);
      }
    }]);
    return LS;
  }();
  var innerVersion = (mmVersion.getInner() || '').toUpperCase();
  var getBizLS = new LS('get_biz_result');
  var bizMap = {};
  var isGetBizSupported = mmVersion.isOnlyWechat &amp;&amp; mmVersion.isIOS &amp;&amp; innerVersion &gt;= '18003C2A' || mmVersion.isOnlyWechat &amp;&amp; mmVersion.isAndroid &amp;&amp; innerVersion &gt;= '28003D3C' || mmVersion.isUnifiedPcWechat &amp;&amp; mmVersion.cpVersion('4.1.10', 1, true, 'unifiedpc');
  mmVersion.isOnlyWechat &amp;&amp; mmVersion.isIOS || mmVersion.isOnlyWechat &amp;&amp; mmVersion.isAndroid || mmVersion.isUnifiedPcWechat &amp;&amp; mmVersion.cpVersion('4.1.10', 1, true, 'unifiedpc');
  function getBiz(needCheckBiz, bizType) {
    var _a;
    if (needCheckBiz === void 0) {
      needCheckBiz = false;
    }
    if (bizType === void 0) {
      bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
    }
    return new Promise(function (resolve, reject) {
      if (needCheckBiz || bizMap[bizType] === undefined) {
        if (!isGetBizSupported) {
          reject('Not support');
        } else {
          JSAPI.invoke('handleMPPageAction', {
            action: 'getBiz',
            needCheckBiz: needCheckBiz,
            bizType: bizType
          }, function (res) {
            console.log("getBiz with needCheckBiz=".concat(needCheckBiz, " res: ").concat(JSON.stringify(res)));
            if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf('ok') &gt; -1) {
              bizMap[bizType] = res.biz;
              resolve(res.biz);
              getBizLS.set("".concat(bizType, "_get_biz_result"), res.biz, +new Date() + 3 * 24 * 60 * 60 * 1000);
            } else {
              reject('Failed to get biz');
            }
          });
        }
      } else {
        resolve(bizMap[bizType]);
      }
    });
  }
  var getIsAuthor = function getIsAuthor(cb, bizuin, needCheckBiz, bizType) {
    var _a;
    if (bizuin === void 0) {
      bizuin = window.biz;
    }
    if (needCheckBiz === void 0) {
      needCheckBiz = false;
    }
    if (bizType === void 0) {
      bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
    }
    getBiz(needCheckBiz, bizType).then(function (biz) {
      cb(biz &amp;&amp; biz === bizuin);
    })["catch"](function () {
      cb(false);
    });
  };

  function parseUrl(url) {
    var len = url.length;
    var ques_pos = url.indexOf('?');
    var hash_pos = url.indexOf('#');
    hash_pos = hash_pos == -1 ? len : hash_pos;
    ques_pos = ques_pos == -1 ? hash_pos : ques_pos;
    var host = url.substring(0, ques_pos);
    var query_str = url.substring(ques_pos + 1, hash_pos);
    var hash = url.substring(hash_pos + 1);
    return {
      host: host,
      query_str: query_str,
      hash: hash
    };
  }
  function join(url, args, noEncode) {
    var ret = parseUrl(url);
    var query_str = ret.query_str;
    var args_arr = [];
    if (_typeof(args) === 'object') {
      for (var key in args) {
        if (args.hasOwnProperty(key)) {
          args_arr.push("".concat(key, "=").concat(noEncode ? args[key] : encodeURIComponent(args[key])));
        }
      }
    } else {
      args_arr.push(noEncode ? args : encodeURIComponent(args));
    }
    if (args_arr.length &gt; 0) {
      query_str += (query_str !== "" ? "&amp;" : "") + args_arr.join("&amp;");
    }
    return ret.host + (query_str !== "" ? "?".concat(query_str) : "") + (ret.hash !== "" ? "#".concat(ret.hash) : "");
  }
  
  function addParam(url, param, value, forceReplace) {
    url = url || location.href;
    var firstAndPos = url.indexOf("&amp;");
    var len = url.length;
    var reverseUrl = url.replace(/^[\w\d]+:[/\\]+/g, "").split("").reverse();
    if (!Array.prototype.indexOf) {
      Array.prototype.indexOf = function (searchElement, fromIndex) {
        var k;
        if (this == null) {
          throw new TypeError('"this" is null or not defined');
        }
        var O = Object(this);
        var len = O.length &gt;&gt;&gt; 0;
        if (len === 0) {
          return -1;
        }
        var n = fromIndex || 0;
        if (Math.abs(n) === Infinity) {
          n = 0;
        }
        if (n &gt;= len) {
          return -1;
        }
        k = Math.max(n &gt;= 0 ? n : len - Math.abs(n), 0);
        while (k &lt; len) {
          if (k in O &amp;&amp; O[k] === searchElement) {
            return k;
          }
          k++;
        }
        return -1;
      };
    }
    var lastSlashPos = len - 1 - reverseUrl.indexOf("/");
    if (firstAndPos !== -1 &amp;&amp; url.indexOf("?") == -1 &amp;&amp; firstAndPos &gt; lastSlashPos) {
      url = url.replace("&amp;", "?");
    }
    var reg = new RegExp("([\\?&amp;]".concat(param, "=)[^&amp;#]*"));
    if (!url.match(reg)) {
      var urlInfo = parseUrl(url);
      var hash = urlInfo.hash ? '#' + urlInfo.hash : '';
      url = url.replace(hash, '');
      var _pos = url.indexOf("?");
      if (_pos == -1) {
        return "".concat(url, "?").concat(param, "=").concat(value).concat(hash);
      }
      if (_pos == url.length - 1) {
        return "".concat(url + param, "=").concat(value).concat(hash);
      }
      return "".concat(url, "&amp;").concat(param, "=").concat(value).concat(hash);
    }
    if (forceReplace === true) {
      return url.replace(reg, "$1".concat(value));
    }
    return url;
  }
  function addWxfrom(src, wxfrom) {
    var offset = window.service_type === 1 ? 10000 : 0;
    return addParam(src, 'wxfrom', offset + Number(wxfrom), true);
  }
  function removeParam(url, param) {
    var _URL = new URL(url),
      protocol = _URL.protocol,
      host = _URL.host,
      pathname = _URL.pathname,
      search = _URL.search,
      hash = _URL.hash;
    var queryParams = new URLSearchParams(search);
    queryParams["delete"](param);
    var newSearch = queryParams.toString();
    var newUrl = new URL("".concat(protocol, "//").concat(host).concat(pathname).concat(newSearch ? "?".concat(decodeURIComponent(newSearch)) : "").concat(hash));
    return newUrl.toString();
  }
  function getQuery(name, url) {
    var u = url || window.location.search;
    var reg = new RegExp("(^|&amp;)".concat(name, "=([^&amp;]*)(&amp;|$)"));
    var r = u.substring(u.indexOf('?') + 1).match(reg);
    return r !== null ? r[2] : '';
  }
  function encodeBase64(value) {
    try {
      return window.btoa(value);
    } catch (e) {
      return '';
    }
  }
  function decodeBase64(value) {
    try {
      return window.atob(value);
    } catch (e) {
      return '';
    }
  }
  function joinUrl$1(url) {
    var obj = {};
    if (typeof window.uin !== 'undefined') {
      obj.uin = window.uin;
    }
    if (typeof window.key !== 'undefined') {
      obj.key = window.key;
    }
    if (typeof window.pass_ticket !== 'undefined') {
      obj.pass_ticket = window.pass_ticket;
    }
    if (typeof window.wxtoken !== 'undefined') {
      obj.wxtoken = window.wxtoken;
    }
    if (typeof window.devicetype !== 'undefined') {
      obj.devicetype = window.devicetype;
    }
    if (typeof window.clientversion !== 'undefined') {
      obj.clientversion = window.clientversion || mmVersion.getInner();
    }
    obj.version = obj.clientversion;
    if (window.biz) {
      obj.__biz = window.biz;
    }
    if (getQuery('enterid')) {
      obj.enterid = getQuery('enterid');
    }
    if (typeof window.appmsg_token !== 'undefined') {
      obj.appmsg_token = window.appmsg_token;
    } else if (url.indexOf('advertisement_report') &gt; -1) {
      new Image().src = "".concat(location.protocol, "//mp.weixin.qq.com/mp/jsmonitor?idkey=68064_13_1&amp;r=").concat(Math.random());
    }
    obj.x5 = navigator.userAgent.indexOf('TBS/') !== -1 ? '1' : '0';
    obj.f = 'json';
    return join(url, obj);
  }
  function joinUserArticleRole(url, notJoin, cb) {
    var bizuin = arguments.length &gt; 3 &amp;&amp; arguments[3] !== undefined ? arguments[3] : window.biz;
    var needCheckBiz = arguments.length &gt; 5 &amp;&amp; arguments[5] !== undefined ? arguments[5] : false;
    if (notJoin) {
      cb(url);
    } else {
      getIsAuthor(function (isAuthor) {
        cb(addParam(url, 'user_article_role', isAuthor ? 1 : 0, true));
      }, bizuin, needCheckBiz);
    }
  }
  function getA8keyQuery(name, url) {
    return new Promise(function (resolve) {
      if (window.__secPageAuthPromise) {
        window.__secPageAuthPromise.then(function () {
          resolve(getQuery(name, url));
        });
      } else {
        resolve(getQuery(name, url));
      }
    });
  }
  function addHash(url, hash) {
    var isReplace = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    if (isReplace) {
      return "".concat(url.split('#')[0]).concat(hash);
    }
    return "".concat(url).concat(url.indexOf('#') === -1 ? '#' : '').concat(hash);
  }
  function decodeUrl(url) {
    var _url = url;
    while (_url.indexOf('&amp;amp;') !== -1) {
      _url = _url.htmlDecode();
    }
    return _url;
  }
  var Url = {
    parseUrl: parseUrl,
    join: join,
    addParam: addParam,
    addWxfrom: addWxfrom,
    addHash: addHash,
    getQuery: getQuery,
    getA8keyQuery: getA8keyQuery,
    encodeBase64: encodeBase64,
    decodeBase64: decodeBase64,
    joinUrl: joinUrl$1,
    joinUserArticleRole: joinUserArticleRole,
    removeParam: removeParam,
    decodeUrl: decodeUrl
  };

  var _a;
  var doc;
  var isAcrossOrigin = false;
  try {
    doc = (_a = window.top) === null || _a === void 0 ? void 0 : _a.window.document;
  } catch (e) {
    isAcrossOrigin = true;
  }
  var StatusTextMap = {
    200: 'OK',
    302: 'Found',
    400: 'Bad Request',
    500: 'Internal Server Error'
  };
  function getIsAcrossOrigin() {
    return isAcrossOrigin;
  }
  function networkStartLog(item) {
    var _a, _b, _c, _d, _e;
    console.log('[system]', "&lt; [request ".concat(item.requestType, "]"), item.url, item.method, item);
    var rdevRequestId;
    var requestTime = performance.now() / 1000;
    if ((_b = (_a = window.RemoteDevSdk) === null || _a === void 0 ? void 0 : _a.instance) === null || _b === void 0 ? void 0 : _b.Network) {
      try {
        var willBeSentOptions = {
          url: item.url,
          method: item.method,
          requestHeaders: Object.assign({}, item.requestHeader || {}, {
            RDEV_REQUEST_TYPE: item.requestType
          }),
          requestBody: item.postData,
          requestTime: requestTime
        };
        rdevRequestId = window.RemoteDevSdk.instance.Network.customRequestWillBeSent(willBeSentOptions);
      } catch (err) {}
    }
    if ((_c = window.vConsole) === null || _c === void 0 ? void 0 : _c.network) {
      try {
        var vconsoleNetworkItem = (_e = (_d = window.vConsole.network).add) === null || _e === void 0 ? void 0 : _e.call(_d, Object.assign({}, item, {
          startTime: Date.now(),
          endTime: Date.now(),
          status: 0,
          readyState: 2,
          response: ''
        }));
        vconsoleNetworkItem.rdevRequestId = rdevRequestId;
        vconsoleNetworkItem.requestTime = requestTime;
        return vconsoleNetworkItem;
      } catch (err) {}
    }
    if (rdevRequestId) {
      return Object.assign(Object.assign({}, item), {
        id: '__only_rdev_log__',
        rdevRequestId: rdevRequestId,
        requestTime: requestTime
      });
    }
    return Object.assign({}, item, {
      id: '__system_log__'
    });
  }
  function networkEndLog(item) {
    var _a, _b, _c, _d, _e;
    console.log('[system]', "&gt; [response ".concat(item.requestType, "]"), item.url, item.response, item);
    if (item.rdevRequestId &amp;&amp; ((_b = (_a = window.RemoteDevSdk) === null || _a === void 0 ? void 0 : _a.instance) === null || _b === void 0 ? void 0 : _b.Network) &amp;&amp; item.id !== '__system_log__') {
      try {
        var finishedOptions = {
          requestId: item.rdevRequestId,
          url: item.url,
          status: +(item.status || '500'),
          statusText: StatusTextMap[+(item.status || '500')] || 'Error',
          responseHeaders: {
            RDEV_RESPONSE_TYPE: item.requestType
          },
          responseBody: item.response,
          requestTime: item.requestTime || 0,
          duration: item.costTime || (item.endTime &amp;&amp; item.startTime ? item.endTime - item.startTime : performance.now() / 1000 - (item.requestTime || 0))
        };
        window.RemoteDevSdk.instance.Network.customRequestFinished(finishedOptions);
      } catch (err) {}
    }
    if (((_c = window.vConsole) === null || _c === void 0 ? void 0 : _c.network) &amp;&amp; item.id !== '__system_log__') {
      try {
        item.statusText = "".concat(item.status);
        item.responseSize = item.response.length;
        item.responseSizeText = "".concat(item.response.length);
        return (_e = (_d = window.vConsole.network).update) === null || _e === void 0 ? void 0 : _e.call(_d, item.id, Object.assign({}, item, {
          readyState: 4
        }));
      } catch (err) {}
    }
  }
  function reqType(obj, path) {
    return obj.url.indexOf(path) &gt; -1 &amp;&amp; obj.url.indexOf('action=') === -1 &amp;&amp; (!obj.data || !obj.data.action);
  }
  function findAjaxScopeByConfig(url, config) {
    var pathname = new URL(url, location.href).pathname || '';
    var scope = config[pathname.slice(1)];
    if (scope) {
      return scope;
    }
  }
  function getAjaxScope(ajaxUrl) {
    if (Url.getQuery('no_transfer', location.href) !== '1' &amp;&amp; mmVersion.isWechat &amp;&amp; !mmVersion.isInMiniProgram &amp;&amp; !mmVersion.isWxWork &amp;&amp; !mmVersion.isMpapp &amp;&amp; !isAcrossOrigin &amp;&amp; window.__ajaxTransferConfig &amp;&amp; _typeof(window.__ajaxTransferConfig) === 'object' &amp;&amp; (
    mmVersion.isIOS &amp;&amp; mmVersion.compareHexVersion('1800282F') || mmVersion.isAndroid &amp;&amp; mmVersion.compareHexVersion('28002234') || mmVersion.isWindowsWechat &amp;&amp; mmVersion.cpVersion('3.9.5', 1, true, 'windows') || mmVersion.isMacWechat &amp;&amp; mmVersion.cpVersion('3.8.4', 1, true, 'mac') || mmVersion.isHarmonyWechat &amp;&amp; mmVersion.compareHexVersion('0xf3100b00') &amp;&amp; !mmVersion.compareHexVersion('0xf3100c00') || mmVersion.compareHexVersion('0xf3800b00'))) {
      try {
        return findAjaxScopeByConfig(ajaxUrl, window.__ajaxTransferConfig);
      } catch (err) {
        
      }
    }
  }
  function getActionByData(data) {
    var _a, _b;
    if (_typeof(data) === 'object' &amp;&amp; !(data instanceof Blob)) {
      if (data.hasOwnProperty('data') &amp;&amp; typeof data.data === 'string') {
        try {
          var workedData = JSON.parse(data.data);
          return workedData.action || '';
        } catch (e) {}
      }
      return data.action || '';
    }
    if (typeof data === 'string') {
      return ((_b = (_a = data.split(/[?&amp;]/).find(function (x) {
        return x.indexOf('action=') &gt;= 0;
      })) === null || _a === void 0 ? void 0 : _a.split('=')) === null || _b === void 0 ? void 0 : _b[1]) || '';
    }
    return '';
  }

  var METHOD_ENUM = {
    GET: 0,
    POST: 1
  };
  var __moon_report = window.__moon_report || function () {};
  var MOON_AJAX_SUCCESS_OFFSET = 3;
  var MOON_AJAX_NETWORK_OFFSET = 4;
  var MOON_AJAX_ERROR_OFFSET = 5;
  var MOON_AJAX_TIMEOUT_OFFSET = 6;
  var MOON_AJAX_COMPLETE_OFFSET = 7;
  var LENGTH_LIMIT = 4096;
  function reportRtError(type, id, key, content) {
    var log = '';
    var prefix = type === 'rt' ? 'rtCheckError' : 'Ajax Length Limit';
    if (content === null || content === void 0 ? void 0 : content.length) {
      var loglen = 1000;
      var len = content.length;
      var lc = Math.ceil(len / loglen);
      log = ["&amp;lc=".concat(lc)];
      for (var i = 0; i &lt; lc; ++i) {
        log.push("&amp;log".concat(i, "=") + "[".concat(prefix, "][").concat(i, "]").concat(encodeURIComponent(content.substring(i * loglen, i * loglen + loglen))));
      }
      log = log.join('');
    }
    var data = "idkey=".concat(id, "_").concat(key, "_1").concat(log, "&amp;r=").concat(Math.random());
    var xmlobj = new XMLHttpRequest();
    xmlobj.open('POST', "".concat(location.protocol, "//").concat(location.host, "/mp/jsmonitor?"), true);
    xmlobj.setRequestHeader('cache-control', 'no-cache');
    xmlobj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    xmlobj.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    xmlobj.send(data);
    if (type === 'ajaxLen') {
      monitor$1.setLogs({
        id: id,
        key: key,
        value: 1,
        log: log
      });
    }
  }
  function reportRt(id, key, content) {
    reportRtError('rt', id, key, content);
  }
  function reportAjaxLength(id, key, content) {
    reportRtError('ajaxLen', id, key, content);
  }
  function setXhrHeader(xhr, type, opt) {
    if (opt.contentType) {
      xhr.setRequestHeader('Content-Type', opt.contentType);
    } else if (type === 'POST') {
      xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    }
    if (!opt.noXRequestedWidthHeader) {
      xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    }
  }
  function Ajax(obj) {
    var report36408 = typeof obj.report36408 === 'function' ? obj.report36408 : function () {};
    if (obj.usePb) {
      obj.type = 'POST';
      obj.data = {
        data: JSON.stringify(obj.data)
      };
    }
    var ajaxScope = getAjaxScope(obj.url);
    var type = (obj.type || 'GET').toUpperCase();
    var timer;
    var _url;
    if (obj.notJoinUrl) {
      _url = obj.url;
    } else {
      _url = Url.joinUrl(obj.url);
    }
    Url.joinUserArticleRole(_url, !!obj.notJoinUrl, function (url) {
      var urlObj = new URL(url, location.origin);
      if (obj.f === 'html') {
        url = url.replace('&amp;f=json', '');
      }
      var data = null;
      if (obj.data instanceof Blob) {
        data = obj.data;
      } else if (_typeof(obj.data) === 'object') {
        var d = obj.data;
        var ds = [];
        for (var k in d) {
          if (d.hasOwnProperty(k)) {
            ds.push("".concat(k, "=").concat(encodeURIComponent(d[k])));
          }
        }
        data = ds.join('&amp;');
      } else {
        data = typeof obj.data === 'string' ? obj.data : null;
      }
      var beginTs;
      var beforeReq = function beforeReq() {
        if (reqType(obj, '/mp/getappmsgext')) {
          window.startGetAppmsgExtTime = Date.now();
          Log.log('start get appmsgext, url: ', obj.url);
        }
        if (reqType(obj, '/mp/getappmsgad')) {
          window.startGetAppmsgAdTime = Date.now();
          Log.log('start get appmsgad, url: ', obj.url);
        }
        beginTs = Date.now();
      };
      var beforeResp = function beforeResp(xhr) {
        if (reqType(obj, '/mp/getappmsgext')) {
          window.receiveGetAppmsgExt = "".concat(xhr.status, "|").concat(Date.now());
          Log.log("receive appmsgext response, status: ".concat(xhr.status));
        }
        if (reqType(obj, '/mp/getappmsgad')) {
          window.receiveGetAppmsgAd = "".concat(xhr.status, "|").concat(Date.now());
          Log.log("receive appmsgad response, status: ".concat(xhr.status));
        }
        if (Math.random() &lt; 0.001 &amp;&amp; window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs) {
          try {
            var key = ajaxScope ? 'transfer' : 'xhr';
            var interval = 250;
            var time = Date.now() - beginTs;
            var range = Math.floor(time / interval) * interval;
            var pathname = new URL(obj.url, location.href).pathname || '';
            window.WX_BJ_REPORT.BadJs.report("".concat(key, "_perf:").concat(pathname), JSON.stringify({
              status: xhr.status,
              time: "[".concat(range, "-").concat(range + interval, ")")
            }), {
              mid: 'mmbizwap:ajaxtransfer',
              view: 'wap_business'
            });
          } catch (err) {}
        }
      };
      var handleRespSucc = function handleRespSucc(xhr, requestType) {
        var _a, _b, _c, _d;
        try {
          var responseText = xhr.responseText;
          var resp = responseText;
          if (obj.dataType === 'json') {
            try {
              if (JSON &amp;&amp; JSON.parse) {
                resp = JSON.parse(resp);
              } else {
                resp = eval("(".concat(resp, ")"));
                monitor$1.setSum(523105, 127, 1).send();
              }
              var rtId = obj.rtId;
              var rtKey = obj.rtKey || 0;
              var rtDesc = obj.rtDesc;
              if (rtId &amp;&amp; rtDesc &amp;&amp; RespTypes &amp;&amp; !RespTypes.check(resp, rtDesc)) {
                reportRt(+rtId, +rtKey, "".concat(RespTypes.getMsg(), "[detail]").concat(responseText, ";").concat(obj.url));
              }
              if (resp &amp;&amp; resp.base_resp &amp;&amp; ((_a = resp.base_resp) === null || _a === void 0 ? void 0 : _a.ret) !== 0 &amp;&amp; typeof window.WX_BJ_REPORT !== 'undefined' &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; Math.random() &lt; 0.001) {
                var reportUrl = url;
                if (url.indexOf('?') !== -1) {
                  reportUrl = url.substring(0, url.indexOf('?'));
                  if (Url.getQuery('action', url)) {
                    reportUrl = "".concat(reportUrl, "?action=").concat(Url.getQuery('action', url));
                  }
                }
                if (!((reportUrl === '/mp/getappmsgext' || reportUrl === '/mp/getappmsgad') &amp;&amp; typeof resp.base_resp.ret === 'undefined')) {
                  window.WX_BJ_REPORT.BadJs.report(reportUrl, "ret=".concat(resp.base_resp.ret), {
                    mid: window.PAGE_MID,
                    view: 'wap_retcode'
                  });
                }
              }
            } catch (e) {
              obj.error &amp;&amp; obj.error(xhr, {
                type: 1,
                error: e,
                status: xhr.status
              });
              if (!obj.dontReport) {
                report36408({
                  CgiPath: urlObj.pathname || '',
                  Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                  Query: urlObj.search || '',
                  PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                  Method: type || '',
                  RequestType: requestType || 0,
                  RetType: 1,
                  HttpCode: xhr.status || 0,
                  Ret: 0
                });
              }
              return;
            }
          }
          if (_typeof(resp) === 'object' &amp;&amp; ((_b = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _b === void 0 ? void 0 : _b.ret) !== 0) {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                Method: type || '',
                RequestType: requestType || 0,
                RetType: 4,
                HttpCode: xhr.status || 0,
                Ret: ((_c = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _c === void 0 ? void 0 : _c.ret) || 0
              });
            }
          } else {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                Method: type || '',
                RequestType: requestType || 0,
                RetType: 0,
                HttpCode: xhr.status || 0,
                Ret: ((_d = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _d === void 0 ? void 0 : _d.ret) || 0
              });
            }
          }
          obj.success &amp;&amp; obj.success(resp);
        } catch (e) {
          __moon_report({
            offset: MOON_AJAX_SUCCESS_OFFSET,
            e: e
          });
          throw e;
        }
      };
      var handleRespErr = function handleRespErr(xhr, error, requestType) {
        try {
          obj.error &amp;&amp; obj.error(xhr, {
            type: 2,
            error: error,
            status: xhr.status
          });
          if (!obj.dontReport) {
            report36408({
              CgiPath: urlObj.pathname || '',
              Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
              Query: urlObj.search || '',
              PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
              Method: type,
              RequestType: requestType,
              RetType: 2,
              HttpCode: xhr.status,
              Ret: 0
            });
          }
        } catch (e) {
          __moon_report({
            offset: MOON_AJAX_ERROR_OFFSET,
            e: e
          });
          throw e;
        }
      };
      var handleRespComplete = function handleRespComplete() {
        clearTimeout(timer);
        try {
          obj.complete &amp;&amp; obj.complete();
        } catch (e) {
          __moon_report({
            offset: MOON_AJAX_COMPLETE_OFFSET,
            e: e
          });
          throw e;
        }
        obj.complete = null;
      };
      var handleReqTimeout = function handleReqTimeout(xhr) {
        if (typeof obj.timeout !== 'undefined') {
          timer = setTimeout(function () {
            xhr.abort();
            try {
              obj.complete &amp;&amp; obj.complete();
            } catch (e) {
              __moon_report({
                offset: MOON_AJAX_COMPLETE_OFFSET,
                e: e
              });
              throw e;
            }
            obj.complete = null;
            __moon_report({
              offset: MOON_AJAX_TIMEOUT_OFFSET,
              log: "ajax_timeout_error: ".concat(url),
              e: ''
            });
          }, obj.timeout);
        }
      };
      var retryXhrFn = function retryXhrFn(res, isTimeout, reqLogItem) {
        var retryXhr = new XMLHttpRequest();
        try {
          retryXhr._noVConsole = true;
        } catch (err) {}
        retryXhr.open(type, url);
        retryXhr.onreadystatechange = function () {
          if (isTimeout) return;
          if (retryXhr.readyState === 3) {
            obj.received &amp;&amp; obj.received(retryXhr);
          }
          if (retryXhr.readyState === 4) {
            beforeResp(retryXhr);
            var retryStatus = retryXhr.status;
            if (retryStatus &gt;= 200 &amp;&amp; retryStatus &lt; 400) {
              handleRespSucc(retryXhr, 1);
            } else {
              handleRespErr(retryXhr, res, 1);
              window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; window.WX_BJ_REPORT.BadJs.report('req_failure', JSON.stringify({
                retryXhrStatus: retryStatus,
                transferRes: res
              }), {
                mid: 'mmbizwap:ajaxtransfer',
                view: 'wap_business'
              });
            }
            reqLogItem.status = retryStatus;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = retryXhr.responseText;
            handleRespComplete();
            networkEndLog(reqLogItem);
          }
        };
        setXhrHeader(retryXhr, type, obj);
        retryXhr.send(data);
      };
      if (ajaxScope &amp;&amp; !obj.pureHttp) {
        var header = {
          'User-Agent': navigator.userAgent,
          'Cookie': (window.__test_env__ ? 'uniproxy_route=1; ' : '') + document.cookie,
          'Referer': location.href
        };
        if (obj.contentType) {
          header['Content-Type'] = obj.contentType;
        } else if (type === 'POST') {
          header['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
        }
        if (!obj.noXRequestedWidthHeader) {
          header['X-Requested-With'] = 'XMLHttpRequest';
        }
        var reqUrl = new URL(url, location.href).href;
        var method = METHOD_ENUM[type] || 0;
        var params = Device.os.pc ? {
          url: reqUrl,
          req_json: data || '',
          scope: ajaxScope,
          webcgi_method: method,
          webcgi_header: Object.keys(header).map(function (headerItemKey) {
            return Device.os.Mac ? _defineProperty({}, headerItemKey, header[headerItemKey]) : {
              key: headerItemKey,
              value: header[headerItemKey]
            };
          }),
          cgi_type: 1
        } : {
          reqUrl: reqUrl,
          reqBody: data,
          scope: ajaxScope,
          method: method,
          header: header
        };
        var reqLogItem = networkStartLog({
          method: type,
          url: url,
          postData: obj.data || {},
          requestHeader: header,
          requestType: 'transfer',
          startTime: Date.now(),
          responseType: url.indexOf('f=json') &gt; 0 ? 'json' : undefined
        });
        var isTimeout = false;
        handleReqTimeout({
          abort: function abort() {
            isTimeout = true;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = 'timeout';
            networkEndLog(reqLogItem);
          }
        });
        Device.os.pc &amp;&amp; monitor$1.setSum(115849, 69, 1);
        JSAPI.invoke(Device.os.pc ? 'H5ExtTransfer' : 'webTransfer', params, function (res) {
          var _a, _b, _c, _d, _e, _f;
          if (isTimeout) return;
          var status = 400;
          var result = '';
          if (Device.os.pc) {
            try {
              var retFlag = res.base_resp.ret === 0 &amp;&amp; res.jsapi_resp.ret === 0 &amp;&amp; res.err_msg.indexOf(':ok') &gt; -1;
              var respJsonFlag = res.jsapi_resp.resp_json;
              status = retFlag &amp;&amp; respJsonFlag ? 200 : 400;
              result = res.jsapi_resp.resp_json;
            } catch (err) {
              console.error(err);
            }
          } else {
            status = res &amp;&amp; res.errCode * 1 === 0 &amp;&amp; typeof res.result === 'string' &amp;&amp; res.result ? 200 : 400;
            result = res.result;
          }
          try {
            Log.log("ajax transfer, status: ".concat(status, ", reqUrl: ").concat(reqUrl));
          } catch (err) {
            console.error(err);
          }
          if (status &gt;= 200 &amp;&amp; status &lt; 400) {
            obj.received &amp;&amp; obj.received(null);
            beforeResp({
              status: status
            });
            handleRespSucc({
              status: status,
              responseText: result
            }, 10);
            reqLogItem.status = status;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = result;
            handleRespComplete();
            networkEndLog(reqLogItem);
          } else if (window.__second_open__) {
            JSAPI.invoke('request', {
              url: reqUrl,
              method: type,
              data: data,
              header: header
            }, function (retryRes) {
              try {
                Log.log("ajax retry request, retryStatus: ".concat((retryRes === null || retryRes === void 0 ? void 0 : retryRes.statusCode) || '', ", reqUrl: ").concat(reqUrl));
              } catch (err) {
                console.error(err);
              }
              if (isTimeout) return;
              var retryStatus = retryRes.statusCode;
              obj.received &amp;&amp; obj.received(null);
              beforeResp({
                status: retryStatus
              });
              if (retryRes.err_msg.indexOf(':ok') &gt; -1 &amp;&amp; retryStatus &gt;= 200 &amp;&amp; retryStatus &lt; 400) {
                handleRespSucc({
                  status: retryStatus,
                  responseText: retryRes.data
                }, 20);
              } else {
                retryXhrFn(res, isTimeout, reqLogItem);
                handleRespErr({
                  status: retryStatus
                }, res, 20);
                window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; window.WX_BJ_REPORT.BadJs.report('req_failure_sec_open', JSON.stringify({
                  retryReqJsapiRes: retryRes,
                  transferRes: res,
                  url: reqUrl
                }), {
                  mid: 'mmbizwap:ajaxtransfer',
                  view: 'wap_business'
                });
              }
              reqLogItem.status = retryStatus;
              reqLogItem.endTime = Date.now();
              reqLogItem.response = retryRes.data;
              handleRespComplete();
              networkEndLog(reqLogItem);
            });
          } else {
            retryXhrFn(res, isTimeout, reqLogItem);
          }
          if (Device.os.pc) {
            if (!res.err_msg.includes(':ok')) {
              (_b = (_a = window.WX_BJ_REPORT) === null || _a === void 0 ? void 0 : _a.BadJs) === null || _b === void 0 ? void 0 : _b.report("pc transfer res no ok: ".concat(res.err_msg), params.url || '', {
                mid: window.PAGE_MID,
                _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
              });
            }
            try {
              if (res.jsapi_resp.resp_json &amp;&amp; JSON.parse(res.jsapi_resp.resp_json).base_resp.ret !== 0 &amp;&amp; JSON.parse(res.jsapi_resp.resp_json).base_resp.ret !== 190001 || res.base_resp.ret !== 0 || res.jsapi_resp.ret !== 0) {
                (_d = (_c = window.WX_BJ_REPORT) === null || _c === void 0 ? void 0 : _c.BadJs) === null || _d === void 0 ? void 0 : _d.report("pc transfer res invalid ret", params.url || '', {
                  mid: window.PAGE_MID,
                  _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
                });
              }
            } catch (err) {}
          } else {
            try {
              if (res.errCode !== 0) {
                (_f = (_e = window.WX_BJ_REPORT) === null || _e === void 0 ? void 0 : _e.BadJs) === null || _f === void 0 ? void 0 : _f.report("mobile transfer res invalid ret", params.url || '', {
                  mid: window.PAGE_MID,
                  _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
                });
              }
            } catch (err) {}
          }
        });
        beforeReq();
        return;
      }
      var xhr = new XMLHttpRequest();
      var mayAbort = !!obj.mayAbort;
      var async = typeof obj.async === 'undefined' ? true : obj.async;
      var _onreadystatechange = xhr.onreadystatechange;
      xhr.open(type, url, async);
      xhr.onreadystatechange = function () {
        if (typeof _onreadystatechange === 'function') {
          _onreadystatechange.apply(xhr);
        }
        if (xhr.readyState === 3) {
          obj.received &amp;&amp; obj.received(xhr);
        }
        if (xhr.readyState === 4) {
          beforeResp(xhr);
          xhr.onreadystatechange = null;
          var status = xhr.status;
          if (status &gt;= 200 &amp;&amp; status &lt; 400) {
            handleRespSucc(xhr, 1);
          } else {
            handleRespErr(xhr, 'status error', 1);
            if (!!status || !mayAbort) {
              var __ajaxtest = window.__ajaxtest || '0';
              __moon_report({
                offset: MOON_AJAX_NETWORK_OFFSET,
                log: "ajax_network_error[".concat(status, "][").concat(__ajaxtest, "]: ").concat(url, ";host:").concat(location.host),
                e: ''
              });
            }
          }
          handleRespComplete();
        }
      };
      setXhrHeader(xhr, type, obj);
      handleReqTimeout(xhr);
      try {
        xhr.send(data);
        try {
          if (url &amp;&amp; url.length &gt; LENGTH_LIMIT) {
            reportAjaxLength(27613, 17, "ajax get limit[length: ".concat(url.length, "]").concat(url.substring(0, 1024)));
          }
          if (data &amp;&amp; !(data instanceof Blob) &amp;&amp; data.length &gt; LENGTH_LIMIT) {
            reportAjaxLength(27613, 18, "ajax post limit[length: ".concat(data.length, "]").concat(data.substring(0, 1024)));
          }
          if (data &amp;&amp; data instanceof Blob &amp;&amp; data.size &gt; LENGTH_LIMIT) {
            reportAjaxLength(27613, 18, "ajax post limit[length: ".concat(data.size, "]blob"));
          }
        } catch (e) {
        }
      } catch (e) {
        obj.error &amp;&amp; obj.error(xhr, {
          type: 3,
          error: e,
          status: 0
        });
      }
      beforeReq();
    });
  }

  
  mmVersion.isWindowsWechat &amp;&amp; mmVersion.compareHexVersion('0xf2550000') || mmVersion.isMacWechat &amp;&amp; mmVersion.compareHexVersion('0xf2650000');

  
  var getBrandServiceType = function getBrandServiceType() {
    var serviceType = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : window.service_type;
    var _a, _b;
    var brandServiceType = 0;
    if (serviceType !== undefined) brandServiceType = serviceType + 1;
    if (((_b = (_a = window.cgiData) === null || _a === void 0 ? void 0 : _a.trans_appmsg_info) === null || _b === void 0 ? void 0 : _b.trans_type) * 1 === 1) brandServiceType = 3;
    return brandServiceType;
  };

  function setCurrentMpInfo(ifShow) {
    var supportNewTopBar = mmVersion.isIOS &amp;&amp; mmVersion.gtVersion('7.0.10', true) || mmVersion.isAndroid &amp;&amp; mmVersion.gtVersion('7.0.12', true);
    var supportLiveStatus = mmVersion.isIOS &amp;&amp; mmVersion.gtVersion('8.0.46', true) || mmVersion.isAndroid &amp;&amp; mmVersion.gtVersion('8.0.46', true);
    JSAPI.invoke('currentMpInfo', {
      userName: window.user_name,
      brandName: !!supportNewTopBar &amp;&amp; window.nickname === '' ? '未命名账号' : window.title,
      title: window.msg_title || '',
      brandIcon: window.hd_head_img.replace(/\/0$/, '/132'),
      itemShowType: window.item_show_type,
      isPaySubscribe: window.isPaySubscribe,
      topBarStyle: supportNewTopBar ? 1 : 0,
      topBarShowed: ifShow,
      disableShowFinderLiveTopBar: !ifShow &amp;&amp; supportLiveStatus ? 1 : 0,
      brandServiceType: getBrandServiceType()
    }, function () {});
  }
  function AjaxWx(obj) {
    var report36408 = typeof obj.report36408 === 'function' ? obj.report36408 : function () {};
    obj.url += obj.url.indexOf('?') === -1 ? '?fasttmplajax=1' : '&amp;fasttmplajax=1';
    if (getAjaxScope(obj.url)) {
      Ajax(obj);
      return;
    }
    if (obj.usePb) {
      obj.type = 'POST';
      obj.data = {
        data: JSON.stringify(obj.data)
      };
    }
    if (!/^(http:\/\/|https:\/\/|\/\/)/.test(obj.url)) {
      obj.url = "https://mp.weixin.qq.com/".concat(obj.url.replace(/^\//, ''));
    } else if (/^\/\//.test(obj.url)) {
      obj.url = "https:".concat(obj.url);
    }
    if (obj.f !== 'html' &amp;&amp; (obj.url.indexOf('?f=json') === -1 || obj.url.indexOf('&amp;f=json') === -1)) {
      obj.url += '&amp;f=json';
    }
    if (!obj.notJoinUrl &amp;&amp; obj.f !== 'html') {
      obj.url = Url.joinUrl(obj.url);
    }
    Url.joinUserArticleRole(obj.url, !!obj.notJoinUrl, function (url) {
      obj.url = url;
      var urlObj = new URL(url, location.origin);
      var data = null;
      if (_typeof(obj.data) === 'object') {
        var d = obj.data;
        var ds = [];
        for (var k in d) {
          if (d.hasOwnProperty(k)) {
            ds.push("".concat(k, "=").concat(encodeURIComponent(d[k])));
          }
        }
        data = ds.join('&amp;');
      } else {
        data = typeof obj.data === 'string' ? obj.data : null;
      }
      var header = {
        Cookie: document.cookie,
        referer: location.href
      };
      if (obj.contentType) {
        header['Content-Type'] = obj.contentType;
      } else if ((obj.type || 'GET').toUpperCase() === 'POST') {
        header['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
      }
      var reqLogItem = networkStartLog({
        method: obj.type || 'GET',
        url: obj.url,
        postData: obj.data || {},
        requestHeader: header,
        requestType: 'jsapi',
        startTime: Date.now()
      });
      var retryTime = 1;
      var jsapiRequest = function jsapiRequest(obj, data) {
        return JSAPI.invoke('request', {
          url: obj.url,
          method: obj.type,
          data: data,
          header: header
        }, function (res) {
          var _a, _b, _c, _d, _e, _f;
          if (res.err_msg.indexOf(':ok') &gt; -1 &amp;&amp; (!res.statusCode || res.statusCode &gt;= 200 &amp;&amp; res.statusCode &lt; 400)) {
            if (reqType(obj, '/mp/getappmsgext')) {
              window.receiveGetAppmsgExt = "".concat(res.statusCode, "|").concat(Date.now());
            }
            if (reqType(obj, '/mp/getappmsgad')) {
              window.receiveGetAppmsgAd = "".concat(res.statusCode, "|").concat(Date.now());
            }
            if (retryTime === 1) {
              obj.received &amp;&amp; obj.received(null);
            }
            var resData = {};
            if (res.data) {
              try {
                if (obj.dataType === 'json') {
                  resData = JSON.parse(res.data);
                } else {
                  resData = res.data;
                }
                if (resData &amp;&amp; resData.base_resp &amp;&amp; ((_a = resData.base_resp) === null || _a === void 0 ? void 0 : _a.ret) !== 0 &amp;&amp; typeof window.WX_BJ_REPORT !== 'undefined' &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; Math.random() &lt; 0.001) {
                  var reportUrl = obj.url;
                  if (obj.url.indexOf('?') !== -1) {
                    reportUrl = obj.url.substring(0, obj.url.indexOf('?'));
                    if (Url.getQuery('action', obj.url)) {
                      reportUrl = "".concat(reportUrl, "?action=").concat(Url.getQuery('action', obj.url));
                    }
                  }
                  if (!((reportUrl === '/mp/getappmsgext' || reportUrl === '/mp/getappmsgad') &amp;&amp; typeof resData.base_resp.ret === 'undefined')) {
                    window.WX_BJ_REPORT.BadJs.report(reportUrl, "ret=".concat(resData.base_resp.ret), {
                      mid: window.PAGE_MID,
                      view: 'wap_retcode'
                    });
                  }
                }
              } catch (e) {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 1,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_b = resData === null || resData === void 0 ? void 0 : resData.base_resp) === null || _b === void 0 ? void 0 : _b.ret) || 0
                  });
                }
                console.error(e);
                obj.error &amp;&amp; obj.error(null, {
                  type: 1,
                  error: e,
                  status: res.statusCode
                });
                obj.complete &amp;&amp; obj.complete();
                reqLogItem.endTime = Date.now();
                reqLogItem.response = res;
                networkEndLog(reqLogItem);
                return;
              }
            }
            var tmpResData = {};
            try {
              tmpResData = JSON.parse(res.data);
            } catch (e) {}
            if (tmpResData &amp;&amp; tmpResData.base_resp &amp;&amp; tmpResData.base_resp.ret === -3 &amp;&amp; retryTime &lt; 2 &amp;&amp; (mmVersion.isIOS || mmVersion.isAndroid &amp;&amp; mmVersion.getInner() &gt; '27000600')) {
              if (!obj.dontReport) {
                report36408({
                  CgiPath: urlObj.pathname || '',
                  Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                  Query: urlObj.search || '',
                  PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                  Method: obj.type || '',
                  RequestType: 20,
                  RetType: 1,
                  HttpCode: res.statusCode || 0,
                  Ret: ((_c = resData === null || resData === void 0 ? void 0 : resData.base_resp) === null || _c === void 0 ? void 0 : _c.ret) || 0
                });
              }
              var _retryTime = retryTime++;
              JSAPI.invoke('updatePageAuth', {}, function (res) {
                console.log('[skeleton] updatePageAuth', res);
                monitor$1.setSum(112287, 3, 1);
                if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf(':ok') &gt; -1) {
                  window.top.pass_ticket = encodeURIComponent(Url.getQuery('pass_ticket', res.fullUrl).html(false).replace(/\s/g, '+'));
                  if (obj.pass_ticket) {
                    obj.pass_ticket = window.top.pass_ticket;
                  }
                  console.warn('[skeleton] updatePageAuth resetTopbar');
                  var supportNewTopBar = mmVersion.isIOS &amp;&amp; mmVersion.gtVersion('7.0.10', true);
                  var showBottomBar = !!window.is_login;
                  if (window.top.item_show_type === '0' &amp;&amp; supportNewTopBar) {
                    var top = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop || 0;
                    setCurrentMpInfo(top &gt; 40 &amp;&amp; !showBottomBar);
                  }
                  try {
                    obj.url = Url.addParam(obj.url, 'retry', _retryTime, true);
                  } catch (err) {
                    console.error(err);
                  }
                  jsapiRequest(obj, data);
                  monitor$1.setSum(112287, 4, 1);
                } else {
                  obj.success &amp;&amp; obj.success(resData);
                  obj.complete &amp;&amp; obj.complete();
                  if (mmVersion.isIOS) {
                    monitor$1.setSum(112287, 35, 1);
                  } else {
                    monitor$1.setSum(112287, 36, 1);
                  }
                  reqLogItem.status = 200;
                  reqLogItem.endTime = Date.now();
                  reqLogItem.response = resData;
                  networkEndLog(reqLogItem);
                }
              });
            } else {
              if (((_d = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _d === void 0 ? void 0 : _d.ret) !== 0) {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 4,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_e = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _e === void 0 ? void 0 : _e.ret) || 0
                  });
                }
              } else {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 0,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_f = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _f === void 0 ? void 0 : _f.ret) || 0
                  });
                }
              }
              obj.success &amp;&amp; obj.success(resData);
              obj.complete &amp;&amp; obj.complete();
              reqLogItem.status = 200;
              reqLogItem.endTime = Date.now();
              reqLogItem.response = resData;
              networkEndLog(reqLogItem);
            }
          } else if (res.err_msg.indexOf('no permission') &gt; -1 || !mmVersion.isOnlyWechat) {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                Method: obj.type || '',
                RequestType: 20,
                RetType: 1,
                HttpCode: res.statusCode || 0,
                Ret: 0
              });
            }
            Ajax(obj);
            if (res.err_msg.indexOf('no permission') &gt; -1) {
              console.warn('[JSAPI Request] No permission');
              monitor$1.setSum(112287, 31, 1);
            }
            reqLogItem.status = 302;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = res;
            networkEndLog(reqLogItem);
          } else {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                Method: obj.type || '',
                RequestType: 20,
                RetType: 2,
                HttpCode: res.statusCode || 0,
                Ret: 0
              });
            }
            obj.error &amp;&amp; obj.error(null, {
              type: 3,
              error: res,
              status: 0
            });
            obj.complete &amp;&amp; obj.complete();
            monitor$1.setSum(112287, 32, 1);
            var sample = 0.001;
            if (Math.random() &lt; sample) {
              var msg = "request: ".concat(JSON.stringify(obj.type), " ").concat(JSON.stringify(obj.url), " ;;;; cookie: ").concat(JSON.stringify(document.cookie), " ;;;; data: ").concat(JSON.stringify(data), " ;;;; resp: ").concat(JSON.stringify(res));
              if (window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs) {
                window.WX_BJ_REPORT.BadJs.report('ajax_wx_request_error', msg, {
                  mid: 'mmbizwap:Monitor'
                });
              }
            }
            reqLogItem.status = 400;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = res;
            networkEndLog(reqLogItem);
          }
        });
      };
      if (reqType(obj, '/mp/getappmsgext')) {
        window.startGetAppmsgExtTime = Date.now();
      }
      if (reqType(obj, '/mp/getappmsgad')) {
        window.startGetAppmsgAdTime = Date.now();
      }
      jsapiRequest(obj, data);
    });
  }

  function _regeneratorRuntime() {  _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  var AjaxRouter = function () {
    var _ref = _asyncToGenerator( _regeneratorRuntime().mark(function _callee(obj) {
      return _regeneratorRuntime().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            if (!window.__secPageAuthPromise) {
              _context.next = 3;
              break;
            }
            _context.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            if (!(!mmVersion.isWxWork &amp;&amp; (window.__second_open__ || !getIsAcrossOrigin() &amp;&amp; top.window.__second_open__) &amp;&amp; window.__is_page_auth_return__ &amp;&amp; !obj.pureHttp)) {
              _context.next = 5;
              break;
            }
            return _context.abrupt("return", AjaxWx(obj));
          case 5:
            return _context.abrupt("return", Ajax(obj));
          case 6:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return function AjaxRouter(_x) {
      return _ref.apply(this, arguments);
    };
  }();

  var html = function html(_str, encode) {
    if (!_str) return '';
    var replace = ['&amp;#96;', '`', '&amp;#39;', '\'', '&amp;quot;', '"', '&amp;nbsp;', ' ', '&amp;gt;', '&gt;', '&amp;lt;', '&lt;', '&amp;yen;', '¥', '&amp;amp;', '&amp;', '&amp;#60;', '&lt;', '&amp;#62;', '&gt;'];
    
    var replaceReverse = ['&amp;', '&amp;amp;', '¥', '&amp;yen;', '&lt;', '&amp;lt;', '&gt;', '&amp;gt;', ' ', '&amp;nbsp;', '"', '&amp;quot;', '\'', '&amp;#39;', '`', '&amp;#96;'];
    var str = _str;
    var target;
    if (encode) {
      target = replaceReverse;
    } else {
      target = replace;
    }
    for (var i = 0; i &lt; target.length; i += 2) {
      str = str.replace(new RegExp(target[i], 'g'), target[i + 1]);
    }
    return str;
  };
  var htmlLite = function htmlLite(_str, encode) {
    if (!_str) return '';
    var replace = ['&amp;#96;', '`', '&amp;#39;', '\'', '&amp;quot;', '"', '&amp;gt;', '&gt;', '&amp;lt;', '&lt;', '&amp;amp;', '&amp;'];
    
    var replaceReverse = ['&amp;', '&amp;amp;', '&lt;', '&amp;lt;', '&gt;', '&amp;gt;', '"', '&amp;quot;', '\'', '&amp;#39;', '`', '&amp;#96;'];
    var str = _str;
    var target;
    if (encode) {
      target = replaceReverse;
    } else {
      target = replace;
    }
    for (var i = 0; i &lt; target.length; i += 2) {
      str = str.replace(new RegExp(target[i], 'g'), target[i + 1]);
    }
    return str;
  };
  var htmlEncode = function htmlEncode(str) {
    return html(str, true);
  };
  var htmlDecode = function htmlDecode(str) {
    return html(str, false);
  };
  var htmlEncodeLite = function htmlEncodeLite(str) {
    return htmlLite(str, true);
  };
  var htmlDecodeLite = function htmlDecodeLite(str) {
    return htmlLite(str, false);
  };
  String.prototype.html = function (encode) {
    return html(this.toString(), encode);
  };
  String.prototype.htmlEncode = function () {
    return htmlEncode(this.toString());
  };
  String.prototype.htmlDecode = function () {
    return htmlDecode(this.toString());
  };
  String.prototype.htmlLite = function (encode) {
    return htmlLite(this.toString(), encode);
  };
  String.prototype.htmlEncodeLite = function () {
    return htmlEncodeLite(this.toString());
  };
  String.prototype.htmlDecodeLite = function () {
    return htmlDecodeLite(this.toString());
  };

  var isx5 = navigator.userAgent.indexOf('TBS/') !== -1;
  var getDataFunc = [];
  var reportData = [];
  
  var specificData = {};
  function joinUrl(url) {
    var obj = {};
    if (typeof window.uin !== 'undefined') {
      obj.uin = window.uin;
    }
    if (typeof window.key !== 'undefined') {
      obj.key = window.key;
    }
    if (typeof window.pass_ticket !== 'undefined') {
      obj.pass_ticket = window.pass_ticket;
    }
    if (typeof window.wxtoken !== 'undefined') {
      obj.wxtoken = window.wxtoken;
    }
    if (typeof window.devicetype !== 'undefined') {
      obj.devicetype = window.devicetype;
    }
    if (typeof window.clientversion !== 'undefined') {
      obj.clientversion = window.clientversion;
    }
    if (typeof window.appmsg_token !== 'undefined') {
      obj.appmsg_token = window.appmsg_token;
    } else if (url.indexOf('advertisement_report') &gt; -1) {
      new Image().src = "".concat(location.protocol, "//mp.weixin.qq.com/mp/jsmonitor?idkey=68064_13_1&amp;r=").concat(Math.random());
    }
    obj.x5 = isx5 ? '1' : '0';
    obj.f = 'json';
    return Url.join(url, obj);
  }
  function isObj(obj) {
    return obj &amp;&amp; _typeof(obj) === 'object';
  }
  function assign(target, source) {
    if (isObj(target) &amp;&amp; isObj(source)) {
      for (var key in source) {
        if (Object.prototype.hasOwnProperty.call(source, key)) {
          target[key] = source[key];
        }
      }
    }
  }
  function assembleReportData(initiative) {
    var leaveReportLog = [];
    leaveReportLog.push({
      content: "[LeaveReport] specificData keys: ".concat(Object.keys(specificData)),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] specificData keys: ".concat(Object.keys(specificData)));
    console.log("[LeaveReport] specificData keys: ".concat(Object.keys(specificData)));
    var allReportData = {};
    for (var reportField in specificData) {
      if (!allReportData[reportField]) {
        allReportData[reportField] = {};
      }
      for (var i = 0; i &lt; specificData[reportField].length; i++) {
        var param = specificData[reportField][i];
        if (typeof param === 'function') {
          try {
            assign(allReportData[reportField], param(initiative));
          } catch (err) {
            leaveReportLog.push({
              content: "[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)),
              timestamp: Date.now()
            });
            Log.error("[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)));
            console.error("[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)));
          }
        } else if (isObj(param)) {
          assign(allReportData[reportField], param);
        }
      }
    }
    leaveReportLog.push({
      content: "[LeaveReport] reportData.length: ".concat(reportData.length),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] reportData.length: ".concat(reportData.length));
    console.log("[LeaveReport] reportData.length: ".concat(reportData.length));
    leaveReportLog.push({
      content: "[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length));
    console.log("[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length));
    for (var _i = 0; _i &lt; getDataFunc.length; _i++) {
      try {
        var data = getDataFunc[_i](initiative);
        if (isObj(data)) {
          reportData.push(data);
        }
      } catch (err) {
        leaveReportLog.push({
          content: "[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)),
          timestamp: Date.now()
        });
        Log.error("[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)));
        console.error("[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)));
      }
    }
    for (var _i2 = 0; _i2 &lt; reportData.length; _i2++) {
      if (reportData[_i2].reportUrl) {
        reportData[_i2].reportUrl = joinUrl(reportData[_i2].reportUrl);
      }
    }
    allReportData.data = {
      'requestList': reportData
    };
    leaveReportLog.push({
      content: "[LeaveReport] final reportData.length: ".concat(reportData.length, ", data=").concat(JSON.stringify(reportData)),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] final reportData.length: ".concat(reportData.length));
    console.log("[LeaveReport] final reportData.length: ".concat(reportData.length));
    allReportData.info = leaveReportLog;
    return allReportData;
  }
  function addReport(param) {
    if (typeof param === 'function') {
      getDataFunc.push(param);
    } else if (isObj(param)) {
      reportData.push(param);
    }
  }
  
  function addSpecificReport(reportField, param) {
    if (!specificData[reportField]) {
      specificData[reportField] = [];
    }
    specificData[reportField].push(param);
  }
  
  function reportNow(callback) {
    var allReportData = assembleReportData(true);
    JSAPI.invoke('handleMPPageAction', {
      action: 'reportByLeaveForMPGateway',
      reportData: allReportData
    }, function (res) {
      if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf(':ok') !== -1) {
        getDataFunc = [];
        reportData = [];
        specificData = {};
        typeof callback === 'function' &amp;&amp; callback(res);
      } else {
        getDataFunc = [];
        reportData = [];
        var len = allReportData.data.requestList.length;
        allReportData.data.requestList.forEach(function (req) {
          if (req.reportUrl) {
            AjaxRouter({
              type: req.method || 'GET',
              url: req.reportUrl,
              data: req.reportData,
              async: false,
              success: function success(resp) {
                if (--len &lt; 0) {
                  typeof callback === 'function' &amp;&amp; callback({
                    err_msg: 'handleMPPageAction:ok',
                    fallback: true,
                    resp: resp
                  });
                }
              },
              error: function error(xhr, err) {
                if (--len &lt; 0) {
                  typeof callback === 'function' &amp;&amp; callback({
                    err_msg: 'handleMPPageAction:fail',
                    fallback: true,
                    err: err
                  });
                }
              }
            });
          }
        });
      }
    });
  }
  var leaveReport = {
    reportNow: reportNow,
    addReport: addReport,
    addSpecificReport: addSpecificReport
  };
  var _leaveReport = (function () {
    var doc = {};
    var isCrossOrigin = false;
    try {
      doc = top.window.document;
    } catch (e) {
      isCrossOrigin = true;
    }
    if (!isCrossOrigin &amp;&amp; top.window.__leaveReport) {
      return top.window.__leaveReport;
    }
    if (window.__leaveReport) {
      return window.__leaveReport;
    }
    JSAPI.on('reportOnLeaveForMP', function () {
      return assembleReportData(false);
    });
    return window.__leaveReport = leaveReport;
  })();
  var batchReportDataArr = [];
  var getRepeatedReportJson = function getRepeatedReportJson() {
    if (!batchReportDataArr || !batchReportDataArr.length) return false;
    var reportData = {
      count: 0
    };
    reportData.count = batchReportDataArr.length;
    batchReportDataArr.forEach(function (data, index) {
      reportData["reportjson".concat(index)] = data;
    });
    batchReportDataArr = [];
    console.log('[reportData]: ', reportData);
    return reportData;
  };
  _leaveReport.addReport(function () {
    var repeatedReportJson = getRepeatedReportJson();
    if (!repeatedReportJson) return false;
    var reportData = [];
    for (var _i = 0, _Object$entries = Object.entries(repeatedReportJson); _i &lt; _Object$entries.length; _i++) {
      var _Object_i = _slicedToArray(_Object$entries[_i], 2),
        key = _Object_i[0],
        value = _Object_i[1];
      reportData.push("".concat(key, "=").concat(encodeURIComponent(value)));
    }
    return {
      reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport?action=batch_report',
      reportData: reportData.join('&amp;'),
      method: 'POST'
    };
  });

  
  var isIOS = mmVersion.isIOS,
    isAndroid = mmVersion.isAndroid,
    isHarmonyWechat = mmVersion.isHarmonyWechat,
    compareHexVersion = mmVersion.compareHexVersion;
  var formatReadNum = function formatReadNum(value) {
    if (window.LANG === 'en') {
      return i18n.dealLikeReadShow_en(value);
    }
    var result = '';
    if (parseInt(value, 10) &gt; 100000) {
      result = '10万+';
    } else if (parseInt(value, 10) &gt; 10000 &amp;&amp; parseInt(value, 10) &lt;= 100000) {
      var num = '' + parseInt(value, 10) / 10000;
      var dotIndex = num.indexOf('.');
      if (dotIndex === -1) {
        result = num + '万';
      } else {
        result = num.substr(0, dotIndex) + '.' + num.charAt(dotIndex + 1) + '万';
      }
    } else if (parseInt(value, 10) === 0) {
      result = '';
    } else {
      result = value || '';
    }
    return result;
  };
  var __setTingHeard = function __setTingHeard(container, dom, cnt, isTempUrl) {
    if (!dom || isTempUrl) {
      dom &amp;&amp; dom.parentNode.removeChild(dom);
      return;
    }
    if (isIOS &amp;&amp; mmVersion.compareHexVersion('18002622') || isAndroid &amp;&amp; mmVersion.compareHexVersion('2800253A') || isHarmonyWechat &amp;&amp; compareHexVersion('0xf3100b00') &amp;&amp; !compareHexVersion('0xf3100c00') || compareHexVersion('0xf3800b00') || isSupportTing()) {
      if (cnt &gt; 100000) {
        dom.innerText = "".concat(formatReadNum(cnt), "");
        dom.setAttribute('aria-labelledby', 'js_ting_heard js_a11y_op_ting_heard');
      } else if (cnt &gt; 0) {
        dom.innerText = "".concat(formatReadNum(cnt), "人");
        dom.setAttribute('aria-labelledby', 'js_ting_heard js_a11y_op_ting_heard');
      } else {
        dom.innerText = "听全文";
        dom.setAttribute('aria-labelledby', 'js_ting_heard');
      }
      dom.style.removeProperty('display');
      window.__hasClickedAudioPanelHandler = function () {
        window.__hasClickedAudioPanel = true;
      };
      dom.addEventListener('click', window.__hasClickedAudioPanelHandler);
    } else {
      dom.parentNode.removeChild(dom);
    }
  };
  if (!window.__second_open__) {
    var tempkey = window.tempkey || '';
    var tingHeardDom = document.querySelector('#js_ting_heard');
    document.querySelector('#js_a11y_op_ting_heard');
    var tingIsShow = (window.tts_is_show || '') &amp;&amp; !(window.noneed_tts || '' === '1');
    var tingHeardCnt = window.tts_heard_person_cnt || '';
    console.log('tingIsShow, tingHeardCnt', tingIsShow, tingHeardCnt);
    !!(tingIsShow * 1) &amp;&amp; __setTingHeard(document.querySelector('#js_content'), tingHeardDom, tingHeardCnt * 1, !!tempkey);
    window.__setTingHeard = __setTingHeard;
  }

  return __setTingHeard;

})();
  &lt;/script&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   var __INLINE_SCRIPT__ = (function (exports) {
  'use strict';

  function _typeof(obj) {
    "@babel/helpers - typeof";

    return _typeof = "function" == typeof Symbol &amp;&amp; "symbol" == typeof Symbol.iterator ? function (obj) {
      return typeof obj;
    } : function (obj) {
      return obj &amp;&amp; "function" == typeof Symbol &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj;
    }, _typeof(obj);
  }

  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
    try {
      var info = gen[key](arg);
      var value = info.value;
    } catch (error) {
      reject(error);
      return;
    }
    if (info.done) {
      resolve(value);
    } else {
      Promise.resolve(value).then(_next, _throw);
    }
  }
  function _asyncToGenerator(fn) {
    return function () {
      var self = this,
        args = arguments;
      return new Promise(function (resolve, reject) {
        var gen = fn.apply(self, args);
        function _next(value) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
        }
        function _throw(err) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
        }
        _next(undefined);
      });
    };
  }

  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" &amp;&amp; o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$1(o)) || allowArrayLike &amp;&amp; o &amp;&amp; typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i &gt;= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion &amp;&amp; it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
  function _unsupportedIterableToArray$1(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$1(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen); }
  function _arrayLikeToArray$1(arr, len) { if (len == null || len &gt; arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i]; return arr2; }
  
  
  var ua = navigator.userAgent;
  var is_ios = /(iPhone|iPad|iPod|iOS)/i.test(ua);
  var is_wp = /Windows\sPhone/i.test(ua);
  var is_android = /(Android)/i.test(ua);
  var is_wechat = /MicroMessenger\/([\d\.]+)/i.test(ua);
  var is_mac = /mac\sos/i.test(ua) &amp;&amp; !is_ios;
  var is_windows = /windows\snt/i.test(ua) &amp;&amp; !is_wp;
  var is_mpapp = /MPAPP\/([\d\.]+)/i.test(ua);
  var is_ipad = /iPad/i.test(ua);
  var is_windows_wechat = /WindowsWechat/i.test(ua);
  var is_mac_wechat = /MacWechat/i.test(ua) || /wechat.*mac os/i.test(ua);
  var is_prefetch = is_wechat &amp;&amp; window.WeixinPrefecherJSBridge;
  var is_donut_app = /SAAASDK/i.test(ua);
  var is_harmony = /OpenHarmony|ArkWeb/i.test(ua);
  var is_linux = /Linux\s/i.test(ua);
  var xweb_match = ua.match(/XWEB\/([\d.]+)/i);
  var xweb_version = xweb_match &amp;&amp; xweb_match[1] ? parseInt(xweb_match[1], 10) : 0;
  var is_unified_pc_wechat = /UnifiedPC\w+Wechat/i.test(ua);
  var is_in_miniProgram = is_android &amp;&amp; /miniprogram/.test(ua.toLowerCase()) || window.__wxjs_environment == 'miniprogram';
  var is_wx_work = /wxwork/i.test(ua);
  function getUrlParams() {
    var vars = location.search.substring(1).split('&amp;');
    var params = {};
    var _iterator = _createForOfIteratorHelper(vars),
      _step;
    try {
      for (_iterator.s(); !(_step = _iterator.n()).done;) {
        var ele = _step.value;
        var pair = ele.split('=');
        var key = decodeURIComponent(pair[0]);
        if (typeof params[key] === 'undefined') {
          params[key] = decodeURIComponent(pair[1]);
        }
      }
    } catch (err) {
      _iterator.e(err);
    } finally {
      _iterator.f();
    }
    return params;
  }
  function get() {
    var reg = /MicroMessenger\/([\d\.]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMac() {
    var reg = /MacWechat\/([\d\.]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMacOS() {
    var reg = /Mac OS X ([\d_]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1].replace(/_/g, '.');
    }
    return false;
  }
  function getWindows() {
    var reg = /WindowsWechat\(0x(.+?)\)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getWxWork() {
    var reg = /wxwork\/([\d\.]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMpApp() {
    var appVersion = [2, 4, 5];
    var match = navigator.userAgent.match(/MPAPP\/(\d+(\.\d+)*)/);
    if (match) {
      appVersion = match[1].split('.').map(function (v) {
        return Number(v);
      });
    }
    return appVersion.join('.');
  }
  function getUnifiedPcVer() {
    var versionInfo = navigator.userAgent.match(/UnifiedPC\w+Wechat\(0xf\w{2}(\w+?)\w{2}\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(0, 1));
      var subVersion = getVersionNumber(version.slice(1, 2));
      var subVersion2 = getVersionNumber(version.slice(2, 3));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
  }
  function getVersionNumber(hexStr) {
    return Number(Number("0x".concat(hexStr)).toString(10));
  }
  function getWindowsVersionFormat() {
    var versionInfo = navigator.userAgent.match(/WindowsWechat\(0x(\w+?)\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(1, 2));
      var subVersion = getVersionNumber(version.slice(2, 4));
      var subVersion2 = getVersionNumber(version.slice(4, 6));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
    return false;
  }
  function getInner() {
    var reg = /MicroMessenger\/[\d\.]+\(0x(.+?)\)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1] &amp;&amp; ret[1] != null) {
      return ret[1];
    }
    if (!ret &amp;&amp; /MicroMessenger\/[\d\.]+/i.test(ua)) {
      var urlParams = getUrlParams();
      if (urlParams.version) {
        return urlParams.version;
      }
    }
    return false;
  }
  var opfunc = {
    'cp-1': function cp1(a, b) {
      return a &lt; b;
    },
    cp0: function cp0(a, b) {
      return a === b;
    },
    cp1: function cp1(a, b) {
      return a &gt; b;
    }
  };
  function cpVersion(ver, op, canEq, type) {
    var mmver = false;
    switch (type) {
      case 'mac':
        mmver = getMac();
        break;
      case 'windows':
        mmver = getWindowsVersionFormat();
        break;
      case 'wxwork':
        mmver = getWxWork();
        break;
      case 'mpapp':
        mmver = getMpApp();
        break;
      case 'unifiedpc':
        mmver = getUnifiedPcVer();
        break;
      default:
        mmver = get();
        break;
    }
    if (!mmver) {
      return;
    }
    var mmversion = mmver.split('.');
    var version = ver.split('.');
    if (!/\d+/g.test(mmversion[mmversion.length - 1])) {
      mmversion.pop();
    }
    for (var i = 0, len = Math.max(mmversion.length, version.length); i &lt; len; ++i) {
      var mmv = mmversion[i] || '';
      var v = version[i] || '';
      var mmvn = parseInt(mmv, 10) || 0;
      var vn = parseInt(v, 10) || 0;
      var eq = opfunc.cp0(mmvn, vn);
      if (eq) {
        continue;
      }
      var cp = opfunc["cp".concat(op)];
      return cp(mmvn, vn);
    }
    return canEq || op === 0;
  }
  function eqVersion(version) {
    return cpVersion(version, 0);
  }
  function gtVersion(version, canEq) {
    return cpVersion(version, 1, canEq);
  }
  function ltVersion(version, canEq) {
    return cpVersion(version, -1, canEq);
  }
  function getPlatform() {
    if (is_ios) {
      return 'ios';
    }
    if (is_android) {
      return 'android';
    }
    if (is_mac) {
      return 'mac_os';
    }
    if (is_windows) {
      return 'windows';
    }
    return 'unknown';
  }
  var is_google_play = false;
  var inner_ver_for_google_play_check = getInner();
  if (is_android &amp;&amp; inner_ver_for_google_play_check) {
    var v = "0x".concat(inner_ver_for_google_play_check.substr(-2));
    if (parseInt(v) &gt;= 64 &amp;&amp; parseInt(v) &lt;= 79) {
      is_google_play = true;
    }
  }
  function compareHexVersion(hexNum) {
    var innerVersion = getInner();
    if (innerVersion &amp;&amp; hexNum) {
      if (typeof hexNum === 'string') {
        hexNum = parseInt(hexNum, 16);
      }
      var version = parseInt(innerVersion, 16);
      return version &gt;= hexNum;
    }
    return false;
  }
  var mmVersion = {
    get: get,
    getMac: getMac,
    getMacOS: getMacOS,
    getWindows: getWindows,
    getInner: getInner,
    getWxWork: getWxWork,
    getMpApp: getMpApp,
    cpVersion: cpVersion,
    eqVersion: eqVersion,
    gtVersion: gtVersion,
    ltVersion: ltVersion,
    getPlatform: getPlatform,
    getVersionNumber: getVersionNumber,
    isWp: is_wp,
    isIOS: is_ios,
    isAndroid: is_android,
    isHarmony: is_harmony,
    isHarmonyWechat: is_harmony &amp;&amp; is_wechat &amp;&amp; cpVersion('1.0.0', 1, true),
    isInMiniProgram: is_in_miniProgram,
    isWechat: is_wechat,
    isMac: is_mac,
    isWindows: is_windows,
    isLinux: is_linux,
    isMacWechat: is_mac_wechat,
    isWindowsWechat: is_windows_wechat,
    isWxWork: is_wx_work,
    isOnlyWechat: is_wechat &amp;&amp; !is_wx_work,
    isMpapp: is_mpapp,
    isNewMpApp: false,
    isIPad: is_ipad,
    isGooglePlay: is_google_play,
    isPrefetch: is_prefetch,
    isDonutAPP: is_donut_app,
    compareHexVersion: compareHexVersion,
    isPcWechat: is_windows_wechat || is_mac_wechat,
    xwebVersion: xweb_version,
    isUnifiedPcWechat: is_unified_pc_wechat
  };

  var initJsBridge = false;
  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }
  function connectWebViewJavascriptBridge(callback) {
    if (window.WebViewMPapp || window.WebViewJavascriptBridge) {
      return callback(window.WebViewMPapp || window.WebViewJavascriptBridge);
    }
    if (window.WVJBCallbacks) {
      return window.WVJBCallbacks.push(callback);
    }
    window.WVJBCallbacks = [callback];
    if (!mmVersion.isMpapp) {
      return false;
    }
    if (!initJsBridge) {
      initJsBridge = true;
      var WVJBIframe = document.createElement('iframe');
      WVJBIframe.style.display = 'none';
      WVJBIframe.src = 'https://__bridge_loaded__';
      document.body.appendChild(WVJBIframe);
      setTimeout(function () {
        initJsBridge = false;
        document.body.removeChild(WVJBIframe);
      }, 0);
    }
    return false;
  }
  function invoke$1(jsapiName, opt, callback) {
    connectWebViewJavascriptBridge(function (bridge) {
      try {
        if (typeof opt === 'function') {
          callback = opt;
        }
        if (_typeof(opt) !== 'object' &amp;&amp; typeof opt !== 'string') {
          opt = {};
        }
        bridge.callHandler(jsapiName, opt, function (res) {
          try {
            var ret = _typeof(res) === 'object' ? res : JSON.parse(res);
            var errMsg = ret.err_msg || ret.errMsg;
            console.info("[mpapp jsapi] invoke-&gt;".concat(jsapiName, " ").concat(opt.action || '', " ").concat(errMsg));
            typeof callback === 'function' &amp;&amp; callback(ret);
          } catch (e) {
            window.WX_BJ_REPORT.BadJs.report('invoke', "callback ".concat(jsapiName, " error:"), {
              mid: 'mmbizwebapp:js_brridge',
              _info: e
            });
            console.error("[mpapp jsapi] ".concat(jsapiName, " ").concat(opt.action || ''), e, res);
          }
        });
      } catch (e) {
        window.WX_BJ_REPORT.BadJs.report('invoke', 'callback error:', {
          mid: 'mmbizwebapp:js_brridge',
          _info: e
        });
        console.error('[mpapp jsapi]', e);
      }
    });
  }

  function _regeneratorRuntime$1() {  _regeneratorRuntime$1 = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  var doc$1 = {};
  var isAcrossOrigin$1 = false;
  var notFoundedMPPageAction = [];
  var __moon_report$1 = window.__moon_report || function () {};
  var MOON_JSAPI_KEY_OFFSET = 8;
  try {
    doc$1 = top.window.document;
  } catch (e) {
    isAcrossOrigin$1 = true;
  }
  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }
  function ready(onBridgeReady) {
    var bridgeReady = function bridgeReady() {
      try {
        if (onBridgeReady) {
          window.onBridgeReadyTime = window.onBridgeReadyTime || Date.now();
          onBridgeReady();
        }
      } catch (e) {
        __moon_report$1([{
          offset: MOON_JSAPI_KEY_OFFSET,
          log: 'ready',
          e: e
        }]);
        throw e;
      }
      window.jsapiReadyTime = Date.now();
    };
    if (!isAcrossOrigin$1 &amp;&amp; (typeof top.window.WeixinJSBridge === 'undefined' || !top.window.WeixinJSBridge.invoke)) {
      if (doc$1.addEventListener) {
        doc$1.addEventListener('WeixinJSBridgeReady', bridgeReady, false);
      } else if (doc$1.attachEvent) {
        doc$1.attachEvent('WeixinJSBridgeReady', bridgeReady);
        doc$1.attachEvent('onWeixinJSBridgeReady', bridgeReady);
      }
    } else {
      bridgeReady();
    }
  }
  var invokeNotWaitA8key = ['notifyPageInfo', 'updatePageAuth'
  ];
  var checkNotFoundedInvoke = function checkNotFoundedInvoke(methodName, args) {
    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; notFoundedMPPageAction.includes(args === null || args === void 0 ? void 0 : args.action)) {
      return true;
    }
    return false;
  };
  function invoke(_x, _x2, _x3) {
    return _invoke.apply(this, arguments);
  }
  function _invoke() {
    _invoke = _asyncToGenerator( _regeneratorRuntime$1().mark(function _callee(methodName, args, callback) {
      return _regeneratorRuntime$1().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__ &amp;&amp; !invokeNotWaitA8key.includes(methodName))) {
              _context.next = 3;
              break;
            }
            _context.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin$1) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                alert('请在微信中打开此链接');
                return false;
              }
              if (checkNotFoundedInvoke(methodName, args)) {
                setTimeout(function () {
                  if (callback) {
                    callback.apply(window, [{
                      err_msg: "".concat(methodName, ":fail"),
                      err_desc: 'action isn\'t supported'
                    }]);
                  }
                }, 0);
              } else {
                top.window.WeixinJSBridge.invoke(methodName, args, function () {
                  try {
                    for (var _len2 = arguments.length, rets = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
                      rets[_key2] = arguments[_key2];
                    }
                    var ret = rets[0];
                    var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
                    if (['handleMPPageAction', 'handleVideoAction', 'handleHaokanAction'].indexOf(methodName) !== -1) {
                      var action = (args === null || args === void 0 ? void 0 : args.action) || '';
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName, ", action-&gt;").concat(action).concat(errMsg));
                    } else {
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName).concat(errMsg));
                    }
                    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; ((ret === null || ret === void 0 ? void 0 : ret.err_desc) === 'action isn\'t supported' || (ret === null || ret === void 0 ? void 0 : ret.err_msg) === 'handleMPPageAction:fail action is not supported')) {
                      notFoundedMPPageAction.push(args === null || args === void 0 ? void 0 : args.action);
                    }
                    if (callback) {
                      callback.apply(window, rets);
                    }
                  } catch (e) {
                    __moon_report$1([{
                      offset: MOON_JSAPI_KEY_OFFSET,
                      log: "invoke;methodName:".concat(methodName),
                      e: e
                    }]);
                    throw e;
                  }
                });
              }
            });
          case 4:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return _invoke.apply(this, arguments);
  }
  function call(_x4) {
    return _call.apply(this, arguments);
  }
  function _call() {
    _call = _asyncToGenerator( _regeneratorRuntime$1().mark(function _callee2(methodName) {
      return _regeneratorRuntime$1().wrap(function _callee2$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__)) {
              _context2.next = 3;
              break;
            }
            _context2.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin$1) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                return false;
              }
              try {
                top.window.WeixinJSBridge.call(methodName);
              } catch (e) {
                __moon_report$1([{
                  offset: MOON_JSAPI_KEY_OFFSET,
                  log: "call;methodName:".concat(methodName),
                  e: e
                }]);
                throw e;
              }
            });
          case 4:
          case "end":
            return _context2.stop();
        }
      }, _callee2);
    }));
    return _call.apply(this, arguments);
  }
  function on(eventName, callback) {
    ready(function () {
      if (isAcrossOrigin$1) return false;
      if (_typeof(top.window.WeixinJSBridge) !== 'object' || !top.window.WeixinJSBridge.on) {
        return false;
      }
      if (!window.JSAPIEventCallbackMap[eventName]) {
        window.JSAPIEventCallbackMap[eventName] = [];
      }
      window.JSAPIEventCallbackMap[eventName].push(callback);
      if (window.JSAPIEventCallbackMap[eventName].length &gt; 1) {
        return false;
      }
      top.window.WeixinJSBridge.on(eventName, function () {
        try {
          for (var _len = arguments.length, rets = new Array(_len), _key = 0; _key &lt; _len; _key++) {
            rets[_key] = arguments[_key];
          }
          var ret = rets[0];
          var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
          console.info('[system]', "[jsapi] event-&gt;".concat(eventName).concat(errMsg));
          if (window.JSAPIEventCallbackMap[eventName] &amp;&amp; window.JSAPIEventCallbackMap[eventName].length) {
            var result;
            for (var i = 0; i &lt; window.JSAPIEventCallbackMap[eventName].length; i++) {
              result = window.JSAPIEventCallbackMap[eventName][i].apply(window, rets);
            }
            return result;
          }
        } catch (e) {
          __moon_report$1([{
            offset: MOON_JSAPI_KEY_OFFSET,
            log: "on;eventName:".concat(eventName),
            e: e
          }]);
          throw e;
        }
      });
    });
  }
  function remove(eventName, callback) {
    ready(function () {
      if (!window.JSAPIEventCallbackMap[eventName]) {
        return false;
      }
      var result = false;
      for (var i = window.JSAPIEventCallbackMap[eventName].length - 1; i &gt;= 0; i--) {
        if (window.JSAPIEventCallbackMap[eventName][i] === callback) {
          window.JSAPIEventCallbackMap[eventName].splice(i, 1);
          result = true;
        }
      }
      return result;
    });
  }
  var JSAPI = {
    ready: ready,
    invoke: invoke,
    call: call,
    on: on,
    remove: remove
  };

  function _arrayWithHoles(arr) {
    if (Array.isArray(arr)) return arr;
  }

  function _iterableToArrayLimit(arr, i) {
    var _i = null == arr ? null : "undefined" != typeof Symbol &amp;&amp; arr[Symbol.iterator] || arr["@@iterator"];
    if (null != _i) {
      var _s,
        _e,
        _x,
        _r,
        _arr = [],
        _n = !0,
        _d = !1;
      try {
        if (_x = (_i = _i.call(arr)).next, 0 === i) {
          if (Object(_i) !== _i) return;
          _n = !1;
        } else for (; !(_n = (_s = _x.call(_i)).done) &amp;&amp; (_arr.push(_s.value), _arr.length !== i); _n = !0);
      } catch (err) {
        _d = !0, _e = err;
      } finally {
        try {
          if (!_n &amp;&amp; null != _i["return"] &amp;&amp; (_r = _i["return"](), Object(_r) !== _r)) return;
        } finally {
          if (_d) throw _e;
        }
      }
      return _arr;
    }
  }

  function _arrayLikeToArray(arr, len) {
    if (len == null || len &gt; arr.length) len = arr.length;
    for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i];
    return arr2;
  }

  function _unsupportedIterableToArray(o, minLen) {
    if (!o) return;
    if (typeof o === "string") return _arrayLikeToArray(o, minLen);
    var n = Object.prototype.toString.call(o).slice(8, -1);
    if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name;
    if (n === "Map" || n === "Set") return Array.from(o);
    if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
  }

  function _nonIterableRest() {
    throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }

  function _slicedToArray(arr, i) {
    return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
  }

  function _toPrimitive(input, hint) {
    if (_typeof(input) !== "object" || input === null) return input;
    var prim = input[Symbol.toPrimitive];
    if (prim !== undefined) {
      var res = prim.call(input, hint || "default");
      if (_typeof(res) !== "object") return res;
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return (hint === "string" ? String : Number)(input);
  }

  function _toPropertyKey(arg) {
    var key = _toPrimitive(arg, "string");
    return _typeof(key) === "symbol" ? key : String(key);
  }

  function _defineProperty(obj, key, value) {
    key = _toPropertyKey(key);
    if (key in obj) {
      Object.defineProperty(obj, key, {
        value: value,
        enumerable: true,
        configurable: true,
        writable: true
      });
    } else {
      obj[key] = value;
    }
    return obj;
  }

  
  
  var Device = {};
  function detect(ua) {
    var MQQBrowser = ua.match(/MQQBrowser\/(\d+\.\d+)/i);
    var MQQClient = ua.match(/QQ\/(\d+\.(\d+)\.(\d+)\.(\d+))/i) || ua.match(/V1_AND_SQ_([\d\.]+)/);
    var WeChat = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/) || ua.match(/MicroMessenger\/((\d+)\.(\d+))/);
    var MacOS = ua.match(/Mac\sOS\sX\s(\d+[\.|_]\d+)/);
    var WinOS = ua.match(/Windows(\s+\w+)?\s+?(\d+\.\d+)/);
    var Linux = ua.match(/Linux\s/);
    var MiuiBrowser = ua.match(/MiuiBrowser\/(\d+\.\d+)/i);
    var M1 = ua.match(/MI-ONE/);
    var MIPAD = ua.match(/MI PAD/);
    var UC = ua.match(/UCBrowser\/(\d+\.\d+(\.\d+\.\d+)?)/) || ua.match(/\sUC\s/);
    var IEMobile = ua.match(/IEMobile(\/|\s+)(\d+\.\d+)/) || ua.match(/WPDesktop/);
    var ipod = ua.match(/(ipod).*\s([\d_]+)/i);
    var ipad = ua.match(/(ipad).*\s([\d_]+)/i);
    var iphone = ua.match(/(iphone)\sos\s([\d_]+)/i);
    var Chrome = ua.match(/Chrome\/(\d+\.\d+)/);
    var AndriodBrowser = ua.match(/Mozilla.*Linux.*Android.*AppleWebKit.*Mobile Safari/);
    var android = ua.match(/(android)\s([\d\.]+)/i);
    var harmony = ua.match(/(OpenHarmony)\s([\d\.]+)/i);
    Device.browser = Device.browser || {}, Device.os = Device.os || {};
    Device.os.type = -1;
    Device.os.unifiedPC = ua.match(/UnifiedPC/);
    Device.os.unifiedMac = /UnifiedPCMac/i.test(ua);
    Device.os.unifiedWindows = /UnifiedPCWindows/i.test(ua);
    if (window.ActiveXObject) {
      var vie = 6;
      (window.XMLHttpRequest || ua.indexOf('MSIE 7.0') &gt; -1) &amp;&amp; (vie = 7);
      (window.XDomainRequest || ua.indexOf('Trident/4.0') &gt; -1) &amp;&amp; (vie = 8);
      ua.indexOf('Trident/5.0') &gt; -1 &amp;&amp; (vie = 9);
      ua.indexOf('Trident/6.0') &gt; -1 &amp;&amp; (vie = 10);
      Device.browser.ie = true, Device.browser.version = vie;
    } else if (ua.indexOf('Trident/7.0') &gt; -1) {
      Device.browser.ie = true, Device.browser.version = 11;
    }
    if (android) {
      Device.os.android = true;
      Device.os.version = android[2];
      Device.os.type = 2;
    }
    if (harmony) {
      Device.os.harmony = true;
      Device.os.version = harmony[2];
      Device.os.type = 42;
    }
    if (ipod) {
      Device.os.ios = Device.os.ipod = true;
      Device.os.version = ipod[2].replace(/_/g, '.');
    }
    if (ipad) {
      Device.os.ios = Device.os.ipad = true;
      Device.os.version = ipad[2].replace(/_/g, '.');
      Device.os.type = 13;
    }
    if (iphone) {
      Device.os.iphone = Device.os.ios = true;
      Device.os.version = iphone[2].replace(/_/g, '.');
      Device.os.type = 1;
    }
    if (WinOS) Device.os.windows = true, Device.os.version = WinOS[2], Device.os.type = 15;
    if (MacOS) Device.os.Mac = true, Device.os.version = MacOS[1], Device.os.type = 14;
    if (Linux) Device.os.Linux = true, Device.os.type = 33;
    if (ua.indexOf('lepad_hls') &gt; 0) Device.os.LePad = true;
    if (MIPAD) Device.os.MIPAD = true;
    if (MQQBrowser) Device.browser.MQQ = true, Device.browser.version = MQQBrowser[1];
    if (MQQClient) Device.browser.MQQClient = true, Device.browser.version = MQQClient[1];
    if (WeChat) Device.browser.WeChat = true, Device.browser.mmversion = Device.browser.version = WeChat[1];
    if (MiuiBrowser) Device.browser.MIUI = true, Device.browser.version = MiuiBrowser[1];
    if (UC) Device.browser.UC = true, Device.browser.version = UC[1] || NaN;
    if (IEMobile) Device.browser.IEMobile = true, Device.browser.version = IEMobile[2];
    if (AndriodBrowser) {
      Device.browser.AndriodBrowser = true;
    }
    if (M1) {
      Device.browser.M1 = true;
    }
    if (Chrome) {
      Device.browser.Chrome = true, Device.browser.version = Chrome[1];
    }
    if (Device.os.windows) {
      if (typeof navigator.platform !== "undefined" &amp;&amp; navigator.platform.toLowerCase() == "win64") {
        Device.os.win64 = true;
      } else {
        Device.os.win64 = false;
      }
    }
    if (Device.os.Mac || Device.os.windows || Device.os.Linux || Device.os.unifiedPC || /OpenHarmony/i.test(ua) &amp;&amp; /pc/i.test(ua)) {
      Device.os.pc = true;
    }
    var osType = {
      iPad7: 'iPad; CPU OS 7',
      LePad: 'lepad_hls',
      XiaoMi: 'MI-ONE',
      SonyDTV: "SonyDTV",
      SamSung: 'SAMSUNG',
      HTC: 'HTC',
      VIVO: 'vivo'
    };
    for (var os in osType) {
      Device.os[os] = ua.indexOf(osType[os]) !== -1;
    }
    Device.os.phone = Device.os.phone || /windows phone/i.test(ua);
    Device.os.getNumVersion = function () {
      return parseFloat(Device.os.version);
    };
    Device.os.hasTouch = 'ontouchstart' in window;
    if (Device.os.hasTouch &amp;&amp; Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 6) {
      Device.os.hasTouch = false;
    }
    if (Device.browser.WeChat &amp;&amp; Device.browser.version &lt; 5.0) {
      Device.os.hasTouch = false;
    }
    Device.browser.getNumVersion = function () {
      return parseFloat(Device.browser.version);
    };
    Device.browser.isFFCanOcx = function () {
      return !!Device.browser.firefox &amp;&amp; Device.browser.getNumVersion() &gt;= 3.0;
    };
    Device.browser.isCanOcx = function () {
      return !!Device.os.windows &amp;&amp; (!!Device.browser.ie || Device.browser.isFFCanOcx() || !!Device.browser.webkit);
    };
    Device.browser.isNotIESupport = function () {
      return !!Device.os.windows &amp;&amp; (!!Device.browser.webkit || Device.browser.isFFCanOcx());
    };
    Device.userAgent = {};
    Device.userAgent.browserVersion = Device.browser.version;
    Device.userAgent.osVersion = Device.os.version;
    if (Device.os.unifiedPC) {
      if (Device.os.unifiedWindows) Device.os.type = 37;else if (Device.os.unifiedMac) Device.os.type = 38;else Device.os.type = 39;
    }
    delete Device.userAgent.version;
  }
  detect(window.navigator.userAgent);
  function canSupportH5Video() {
    var ua = window.navigator.userAgent,
      m = null;
    if (!!Device.os.android) {
      if (Device.browser.MQQ &amp;&amp; Device.browser.getNumVersion() &gt;= 4.2) {
        return true;
      }
      if (ua.indexOf('MI2') != -1) {
        return true;
      }
      if (Device.os.version &gt;= '4' &amp;&amp; (m = ua.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/))) {
        if (parseFloat(m[1]) &gt;= 4.2) {
          return true;
        }
      }
      if (Device.os.version &gt;= '4.1') {
        return true;
      }
    }
    return false;
  }
  function canSupportVideoMp4() {
    var video = document.createElement('video');
    if (typeof video.canPlayType === 'function') {
      if (video.canPlayType('video/mp4; codecs="mp4v.20.8"') === 'probably') {
        return true;
      }
      if (video.canPlayType('video/mp4; codecs="avc1.42E01E"') === 'probably' || video.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"') === 'probably') {
        return true;
      }
    }
    return false;
  }
  function canSupportAutoPlay() {
    if (Device.os.ios &amp;&amp; Device.os.getNumVersion() &lt; 10) {
      return false;
    }
    return true;
  }
  function isLockdownMode() {
    if (!Device.os.ios || Device.os.getNumVersion() &lt; 16) {
      return false;
    }
    if (typeof WebAssembly === 'undefined' &amp;&amp; typeof OfflineAudioContext === 'undefined' &amp;&amp; typeof WebGLRenderingContext === 'undefined') {
      return true;
    }
    return false;
  }
  Device.canSupportVideo = canSupportVideoMp4 || canSupportH5Video;
  Device.canSupportVideoMp4 = canSupportVideoMp4;
  Device.canSupportH5Video = canSupportH5Video;
  Device.canSupportAutoPlay = canSupportAutoPlay;
  Device.isLockdownMode = isLockdownMode;
  
  Device.cpVersion = function (version) {
    var cp = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : 0;
    var canEqual = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    var nowVersionStr = Device.os.version;
    if (!nowVersionStr) return false;
    var versionArr = version.split('.');
    var nowVersionArr = nowVersionStr.split('.');
    for (var i = 0; i &lt; Math.max(nowVersionArr.length, versionArr.length); i++) {
      var vi = +versionArr[i];
      var nvi = +nowVersionArr[i];
      if (vi === nvi) continue;
      if (cp &gt; 0) return vi &gt; nvi;
      if (cp &lt; 0) return vi &lt; nvi;
    }
    return canEqual || cp === 0;
  };

  
  function _log(level, msg) {
    if (level === 'log') {
      level = 'info';
      msg = "[WechatFe]".concat(msg);
    } else {
      var prefix = "__wap__".concat(window.__second_open__ ? ' (sec)' : '');
      msg = "".concat(prefix, " ").concat(msg, " location:[").concat(location.href, "]");
    }
    msg += new Error().stack;
    if (mmVersion.isMpapp) {
      invoke$1('WNNativeCallbackLog', msg);
    } else if (mmVersion.isWechat) {
      if (mmVersion.isAndroid) {
        console.warn('[system]', "[MicroMsg.JsApiLog][".concat(level, "] jslog : ").concat(msg));
      } else if (mmVersion.isIOS) {
        JSAPI.invoke('writeLog', {
          level: level,
          msg: msg
        });
      } else {
        JSAPI.invoke('log', {
          level: level,
          msg: msg
        });
      }
    }
  }
  var Log = {
    info: function info() {
      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key &lt; _len; _key++) {
        args[_key] = arguments[_key];
      }
      _log('info', args.join(' '));
    },
    warn: function warn() {
      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
        args[_key2] = arguments[_key2];
      }
      _log('warn', args.join(' '));
    },
    error: function error() {
      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 &lt; _len3; _key3++) {
        args[_key3] = arguments[_key3];
      }
      _log('error', args.join(' '));
    },
    debug: function debug() {
      for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 &lt; _len4; _key4++) {
        args[_key4] = arguments[_key4];
      }
      _log('debug', args.join(' '));
    },
    log: function log() {
      for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 &lt; _len5; _key5++) {
        args[_key5] = arguments[_key5];
      }
      _log('info', args.join(' '));
    }
  };

  
  
  var reportLogs = [];
  var reportExtraLogs = [];
  var sendUrl = '/mp/jsmonitor?#wechat_redirect';
  var monitor = {};
  monitor._reportOptions = {
    idkey: {}
  };
  function ObjWithoutProperty(source, exclude) {
    if (source === null) return {};
    var target = {};
    var sourceKeys = Object.keys(source);
    for (var i = 0; i &lt; sourceKeys.length; i++) {
      var key = sourceKeys[i];
      if (exclude.indexOf(key) &gt;= 0) continue;
      target[key] = source[key];
    }
    return target;
  }
  function formatDataToString(data) {
    var reportData = [];
    for (var key in data) {
      if (Object.prototype.hasOwnProperty.call(data, key)) {
        reportData.push(key + '=' + encodeURIComponent(data[key]));
      }
    }
    return reportData.join('&amp;');
  }
  monitor.getReportData = function (opt) {
    opt = opt || {};
    var idkey = monitor._reportOptions.idkey || {};
    var key = null;
    var reportData = {};
    var nextKey;
    try {
      for (key in idkey) {
        if (Object.prototype.hasOwnProperty.call(idkey, key) &amp;&amp; idkey[key]) {
          reportLogs.push(key + '_' + idkey[key]);
        }
      }
    } catch (e) {
      return false;
    }
    if (reportLogs.length === 0) {
      return false;
    }
    if (reportExtraLogs.length) {
      reportData.lc = reportExtraLogs.length;
      reportExtraLogs.forEach(function (extraLog, index) {
        reportData["log".concat(index)] = extraLog;
      });
    }
    try {
      var reportOptions = monitor._reportOptions;
      if (reportOptions !== null &amp;&amp; reportOptions !== undefined) {
        for (nextKey in reportOptions) {
          if (Object.prototype.hasOwnProperty.call(reportOptions, nextKey)) {
            reportData[nextKey] = reportOptions[nextKey];
          }
        }
      }
    } catch (e) {
      reportData = {};
    }
    reportData.idkey = reportLogs.join(';');
    reportData.t = Math.random();
    if (opt.remove !== false) {
      reportLogs = [];
      reportExtraLogs = [];
      monitor._reportOptions = {
        idkey: {}
      };
    }
    return reportData;
  };
  monitor.setLogs = function (opt) {
    var id = opt.id;
    var key = opt.key;
    var value = opt.value;
    var extraLog = opt.log;
    var others = ObjWithoutProperty(opt, ['id', 'key', 'value', 'log']);
    var idkey = monitor._reportOptions.idkey || {};
    var param = id + '_' + key;
    if (idkey[param]) {
      idkey[param] += value;
    } else {
      idkey[param] = value;
    }
    monitor._reportOptions.idkey = idkey;
    if (extraLog) {
      reportExtraLogs.push(extraLog);
    }
    try {
      if (others !== null &amp;&amp; others !== undefined) {
        for (var otherKey in others) {
          if (Object.prototype.hasOwnProperty.call(others, otherKey)) {
            monitor._reportOptions[otherKey] = others[otherKey];
          }
        }
      }
    } catch (e) {
      console.log(e);
    }
    return monitor;
  };
  monitor.setAvg = function (id, key, value) {
    var idkey = monitor._reportOptions.idkey || {};
    var param1 = id + '_' + key;
    var param2 = id + '_' + (key - 1);
    if (idkey[param1]) {
      idkey[param1] += value;
    } else {
      idkey[param1] = value;
    }
    if (idkey[param2]) {
      idkey[param2] += 1;
    } else {
      idkey[param2] = 1;
    }
    monitor._reportOptions.idkey = idkey;
    return monitor;
  };
  monitor.setSum = function (id, key) {
    var value = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : 1;
    var idkey = monitor._reportOptions.idkey;
    var param = id + '_' + key;
    if (idkey[param]) {
      idkey[param] += value;
    } else {
      idkey[param] = value;
    }
    monitor._reportOptions.idkey = idkey;
    return monitor;
  };
  monitor.send = function (async, ajax, origin) {
    if (async !== false) {
      async = true;
    }
    var data = monitor.getReportData();
    origin = origin || '';
    if (!data) {
      return;
    }
    if (!!ajax &amp;&amp; ajax instanceof Function) {
      ajax({
        url: origin + sendUrl,
        type: 'POST',
        mayAbort: true,
        data: data,
        async: async,
        timeout: 2000,
        dontReport: true
      });
    } else {
      new Image().src = origin + '/mp/jsmonitor?' + formatDataToString(data) + '#wechat_redirect';
    }
  };
  if (typeof window !== 'undefined' &amp;&amp; window.__monitor) {
    monitor = window.__monitor;
  } else {
    typeof window !== 'undefined' &amp;&amp; (window.__monitor = monitor);
  }
  var monitor$1 = monitor;

  
  var logList = [];
  var log = function log(msg) {
    logList.push(msg);
  };
  var printLog = function printLog() {
    for (var i = 0, len = logList.length; i &lt; len; ++i) {
      console.log("[RespType]".concat(logList[i]));
    }
  };
  var isArray = function isArray(val) {
    return Object.prototype.toString.call(val) === '[object Array]';
  };
  var getValueType = function getValueType(value) {
    if (isArray(value)) {
      return 'array';
    }
    return _typeof(value);
  };
  var parseRtDesc = function parseRtDesc(rtDesc, k) {
    var type = 'mix';
    var isRequired = false;
    var key = k;
    if (k) {
      var requireKeyWord = '_R';
      var pos = k.indexOf(requireKeyWord);
      var len = k.length - requireKeyWord.length;
      isRequired = pos !== -1 &amp;&amp; pos === len;
      key = isRequired ? k.substring(0, len) : k;
    }
    if (typeof rtDesc === 'string') {
      type = rtDesc;
    } else if (isArray(rtDesc)) {
      type = 'array';
    } else if (_typeof(rtDesc) === 'object') {
      type = 'object';
    }
    return {
      key: key,
      type: type,
      isRequired: isRequired
    };
  };
  var checkForArrayRtDesc = function checkForArrayRtDesc(arr, rtDescs) {
    if (!isArray(arr)) {
      return false;
    }
    for (var i = 0, len = arr.length; i &lt; len; ++i) {
      var value = arr[i];
      var rtDesc = void 0;
      var j = 0;
      var flag = rtDescs.length === 0;
      while (rtDesc = rtDescs[j++]) {
        if (checkForRtDesc(value, rtDesc)) {
          flag = true;
          break;
        }
      }
      if (!flag) {
        return false;
      }
    }
    return true;
  };
  var checkForStringRtDesc = function checkForStringRtDesc(value, rtDesc) {
    var valueType = getValueType(value);
    var desc = parseRtDesc(rtDesc);
    var ret = desc.type === valueType;
    if (!ret) {
      log("miss match type : ".concat(valueType, " !== ").concat(desc.type));
    }
    return ret;
  };
  var checkForObjectRtDesc = function checkForObjectRtDesc(json, rtDesc) {
    if (_typeof(json) !== 'object' || isArray(json)) {
      log('must be object');
      return false;
    }
    var rootJson = json;
    var nowCheckValue = json;
    for (var k in rtDesc) {
      if (rtDesc.hasOwnProperty(k)) {
        var nowCheckDesc = rtDesc[k];
        var desc = parseRtDesc(nowCheckDesc, k);
        var key = desc.key;
        nowCheckValue = rootJson[key];
        var valueType = getValueType(nowCheckValue);
        if (desc.isRequired &amp;&amp; nowCheckValue === undefined) {
          log("is required @key=".concat(key));
          return false;
        }
        if (nowCheckValue !== undefined) {
          if (valueType !== desc.type &amp;&amp; desc.type !== 'mix') {
            log("miss match type : ".concat(valueType, " !== ").concat(desc.type, " @key=").concat(key));
            return false;
          }
          if ((valueType === 'array' || valueType === 'object') &amp;&amp; desc.type !== 'mix') {
            if (!checkForRtDesc(nowCheckValue, nowCheckDesc)) {
              return false;
            }
          }
        }
      }
    }
    return true;
  };
  var checkForRtDesc = function checkForRtDesc(json, rtDesc) {
    if (isArray(rtDesc)) {
      return checkForArrayRtDesc(json, rtDesc);
    }
    if (_typeof(rtDesc) === 'object') {
      return checkForObjectRtDesc(json, rtDesc);
    }
    if (typeof rtDesc === 'string') {
      return checkForStringRtDesc(json, rtDesc);
    }
    return false;
  };
  var _check = function check(json, rtDescs) {
    if (typeof json === 'string') {
      try {
        json = eval("(".concat(json, ")"));
      } catch (e) {
        log('parse json error');
        return false;
      }
    }
    if (_typeof(json) !== 'object') {
      log('must be object');
      return false;
    }
    if (!isArray(rtDescs)) {
      rtDescs = [rtDescs];
    }
    var rtDesc;
    var i = 0;
    while (rtDesc = rtDescs[i++]) {
      if (checkForRtDesc(json, rtDesc)) {
        return true;
      }
    }
    return false;
  };
  var RespTypes = {
    check: function check(json, rtDesc) {
      logList = [];
      try {
        var ret = _check(json, rtDesc);
        if (!ret) {
          printLog();
        }
        return ret;
      } catch (e) {
        logList.push("[rtException]".concat(e.toString()));
        printLog();
        return false;
      }
    },
    getMsg: function getMsg() {
      return logList.join(';');
    }
  };

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  function _defineProperties(target, props) {
    for (var i = 0; i &lt; props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor) descriptor.writable = true;
      Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
    }
  }
  function _createClass(Constructor, protoProps, staticProps) {
    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
    if (staticProps) _defineProperties(Constructor, staticProps);
    Object.defineProperty(Constructor, "prototype", {
      writable: false
    });
    return Constructor;
  }

  
  var prefix = '__WXLS__';
  var localStorage$1 = window.localStorage || {
    getItem: function getItem() {},
    setItem: function setItem() {},
    removeItem: function removeItem() {},
    key: function key() {},
    clear: function clear() {
      var _a, _b;
      (_b = (_a = window.localStorage) === null || _a === void 0 ? void 0 : _a.clear) === null || _b === void 0 ? void 0 : _b.call(_a);
    },
    length: 0
  };
  var evictionPolicies = {
    noeviction: function noeviction(data) {
      return data;
    },
    'allkeys-random': function allkeysRandom(data, size) {
      var keys = Object.keys(data);
      var memCnt = 0;
      while (memCnt &lt; size) {
        var len = keys.length;
        var randomKeyIdx = Math.floor(Math.random() * len);
        var randomKey = keys[randomKeyIdx];
        memCnt += JSON.stringify(data[randomKey]).length;
        delete data[randomKey];
        keys = Object.keys(data);
      }
      return data;
    },
    'volatile-ttl': function volatileTtl(data, size) {
      var keys = Object.keys(data);
      keys = keys.sort(function (key1, key2) {
        var d1 = data[key1];
        var d2 = data[key2];
        if (d1.exp &lt; d2.exp) return -1;
        if (d1.exp &gt; d2.exp) return 1;
        return 0;
      });
      var memCnt = 0;
      for (var i = 0; i &lt; keys.length; i++) {
        if (memCnt &gt;= size) break;
        var key = keys[i];
        memCnt += JSON.stringify(data[key]).length;
        delete data[key];
      }
      return data;
    },
    'clear-all': function clearAll() {
      localStorage$1.clear();
      return {};
    }
  };
  function formatLogMsg(str) {
    return "[WXLS] ".concat(str);
  }
  
  var LS = function () {
    function LS(func, evictionPolicy, logger) {
      _classCallCheck(this, LS);
      this.logger = function () {};
      if (!func) throw 'require function name.';
      this.evictionPolicy = 'noeviction';
      this.key = func;
      if (typeof logger === 'function') {
        this.logger = function (str, type) {
          return logger(formatLogMsg(str), type);
        };
      }
      if (evictionPolicy &amp;&amp; Object.keys(evictionPolicies).indexOf(evictionPolicy) !== -1) {
        this.evictionPolicy = evictionPolicy;
      }
      this.init();
    }
    _createClass(LS, [{
      key: "init",
      value: function init() {
        var _a, _b;
        this.check();
        if (Math.random() * 1000 &lt; 1) {
          (_a = this.logger) === null || _a === void 0 ? void 0 : _a.call(this, "LSlen: ".concat(((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length) || localStorage$1.length), 'report');
        }
      }
    }, {
      key: "getData",
      value: function getData() {
        var data = LS.getItem(this.key) || '{}';
        try {
          data = JSON.parse(data);
        } catch (e) {
          this.logger("getData error: ".concat(e), 'error');
          localStorage$1.removeItem(prefix + this.key);
          data = {};
        }
        return data;
      }
    }, {
      key: "check",
      value: function check(isReturn) {
        var data = this.getData();
        var temp = {};
        var now = +new Date();
        var key;
        var val;
        for (key in data) {
          val = data[key];
          if (+val.exp &gt; now) {
            temp[key] = val;
          }
        }
        this.logger("check info: isReturn:".concat(isReturn, " data:").concat(JSON.stringify(temp)), 'info');
        if (isReturn) return temp;
        LS.setItem(this.key, JSON.stringify(temp), this.logger);
      }
    }, {
      key: "set",
      value: function set(key, val, exp) {
        var _a, _b;
        var data = this.check(true);
        data[key] = {
          val: val,
          exp: exp || +new Date()
        };
        try {
          if (localStorage$1.getItem(prefix + this.key)) localStorage$1.removeItem(prefix + this.key);
          localStorage$1.setItem(prefix + this.key, JSON.stringify(data));
          this.logger("first set success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data)), 'success');
        } catch (e) {
          this.logger("first set error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data), " k:").concat(key, " v:").concat(val, " exp:").concat(exp), 'error');
          localStorage$1.clear();
          LS.setItem(this.key, JSON.stringify(_defineProperty({}, key, {
            val: val,
            exp: exp || +new Date()
          })), this.logger);
        }
      }
    }, {
      key: "get",
      value: function get(key) {
        var data = this.getData();
        data = data[key];
        return data ? data.val || null : null;
      }
    }, {
      key: "remove",
      value: function remove(key) {
        var data = this.getData();
        if (data[key]) delete data[key];
        LS.setItem(this.key, JSON.stringify(data), this.logger);
      }
    }], [{
      key: "getItem",
      value: function getItem(key) {
        key = prefix + key;
        return localStorage$1.getItem(key);
      }
    }, {
      key: "setItem",
      value: function setItem(key, val, logger) {
        var _a, _b;
        key = prefix + key;
        var n = 3;
        while (n--) {
          try {
            if (localStorage$1.getItem(key)) localStorage$1.removeItem(key);
            localStorage$1.setItem(key, val);
            typeof logger === 'function' &amp;&amp; logger("setItem success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(key, " val:").concat(val), 'success');
            break;
          } catch (e) {
            typeof logger === 'function' &amp;&amp; logger("setItem error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(key, " val:").concat(val), 'error');
            LS.clear();
          }
        }
      }
    }, {
      key: "clear",
      value: function clear() {
        var i;
        var k;
        for (i = localStorage$1.length - 1; i &gt;= 0; i--) {
          k = localStorage$1.key(i);
          if (k.indexOf(prefix) == 0) {
            localStorage$1.removeItem(k);
          }
        }
      }
    }, {
      key: "getSupportEvicationPolicy",
      value: function getSupportEvicationPolicy() {
        return Object.keys(evictionPolicies);
      }
    }]);
    return LS;
  }();
  var innerVersion = (mmVersion.getInner() || '').toUpperCase();
  var getBizLS = new LS('get_biz_result');
  var bizMap = {};
  var isGetBizSupported = mmVersion.isOnlyWechat &amp;&amp; mmVersion.isIOS &amp;&amp; innerVersion &gt;= '18003C2A' || mmVersion.isOnlyWechat &amp;&amp; mmVersion.isAndroid &amp;&amp; innerVersion &gt;= '28003D3C' || mmVersion.isUnifiedPcWechat &amp;&amp; mmVersion.cpVersion('4.1.10', 1, true, 'unifiedpc');
  mmVersion.isOnlyWechat &amp;&amp; mmVersion.isIOS || mmVersion.isOnlyWechat &amp;&amp; mmVersion.isAndroid || mmVersion.isUnifiedPcWechat &amp;&amp; mmVersion.cpVersion('4.1.10', 1, true, 'unifiedpc');
  function getBiz(needCheckBiz, bizType) {
    var _a;
    if (needCheckBiz === void 0) {
      needCheckBiz = false;
    }
    if (bizType === void 0) {
      bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
    }
    return new Promise(function (resolve, reject) {
      if (needCheckBiz || bizMap[bizType] === undefined) {
        if (!isGetBizSupported) {
          reject('Not support');
        } else {
          JSAPI.invoke('handleMPPageAction', {
            action: 'getBiz',
            needCheckBiz: needCheckBiz,
            bizType: bizType
          }, function (res) {
            console.log("getBiz with needCheckBiz=".concat(needCheckBiz, " res: ").concat(JSON.stringify(res)));
            if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf('ok') &gt; -1) {
              bizMap[bizType] = res.biz;
              resolve(res.biz);
              getBizLS.set("".concat(bizType, "_get_biz_result"), res.biz, +new Date() + 3 * 24 * 60 * 60 * 1000);
            } else {
              reject('Failed to get biz');
            }
          });
        }
      } else {
        resolve(bizMap[bizType]);
      }
    });
  }
  var getIsAuthor = function getIsAuthor(cb, bizuin, needCheckBiz, bizType) {
    var _a;
    if (bizuin === void 0) {
      bizuin = window.biz;
    }
    if (needCheckBiz === void 0) {
      needCheckBiz = false;
    }
    if (bizType === void 0) {
      bizType = ((_a = window.cgiDataNew) === null || _a === void 0 ? void 0 : _a.biz_type) || 1;
    }
    getBiz(needCheckBiz, bizType).then(function (biz) {
      cb(biz &amp;&amp; biz === bizuin);
    })["catch"](function () {
      cb(false);
    });
  };

  function parseUrl(url) {
    var len = url.length;
    var ques_pos = url.indexOf('?');
    var hash_pos = url.indexOf('#');
    hash_pos = hash_pos == -1 ? len : hash_pos;
    ques_pos = ques_pos == -1 ? hash_pos : ques_pos;
    var host = url.substring(0, ques_pos);
    var query_str = url.substring(ques_pos + 1, hash_pos);
    var hash = url.substring(hash_pos + 1);
    return {
      host: host,
      query_str: query_str,
      hash: hash
    };
  }
  function join(url, args, noEncode) {
    var ret = parseUrl(url);
    var query_str = ret.query_str;
    var args_arr = [];
    if (_typeof(args) === 'object') {
      for (var key in args) {
        if (args.hasOwnProperty(key)) {
          args_arr.push("".concat(key, "=").concat(noEncode ? args[key] : encodeURIComponent(args[key])));
        }
      }
    } else {
      args_arr.push(noEncode ? args : encodeURIComponent(args));
    }
    if (args_arr.length &gt; 0) {
      query_str += (query_str !== "" ? "&amp;" : "") + args_arr.join("&amp;");
    }
    return ret.host + (query_str !== "" ? "?".concat(query_str) : "") + (ret.hash !== "" ? "#".concat(ret.hash) : "");
  }
  
  function addParam(url, param, value, forceReplace) {
    url = url || location.href;
    var firstAndPos = url.indexOf("&amp;");
    var len = url.length;
    var reverseUrl = url.replace(/^[\w\d]+:[/\\]+/g, "").split("").reverse();
    if (!Array.prototype.indexOf) {
      Array.prototype.indexOf = function (searchElement, fromIndex) {
        var k;
        if (this == null) {
          throw new TypeError('"this" is null or not defined');
        }
        var O = Object(this);
        var len = O.length &gt;&gt;&gt; 0;
        if (len === 0) {
          return -1;
        }
        var n = fromIndex || 0;
        if (Math.abs(n) === Infinity) {
          n = 0;
        }
        if (n &gt;= len) {
          return -1;
        }
        k = Math.max(n &gt;= 0 ? n : len - Math.abs(n), 0);
        while (k &lt; len) {
          if (k in O &amp;&amp; O[k] === searchElement) {
            return k;
          }
          k++;
        }
        return -1;
      };
    }
    var lastSlashPos = len - 1 - reverseUrl.indexOf("/");
    if (firstAndPos !== -1 &amp;&amp; url.indexOf("?") == -1 &amp;&amp; firstAndPos &gt; lastSlashPos) {
      url = url.replace("&amp;", "?");
    }
    var reg = new RegExp("([\\?&amp;]".concat(param, "=)[^&amp;#]*"));
    if (!url.match(reg)) {
      var urlInfo = parseUrl(url);
      var hash = urlInfo.hash ? '#' + urlInfo.hash : '';
      url = url.replace(hash, '');
      var _pos = url.indexOf("?");
      if (_pos == -1) {
        return "".concat(url, "?").concat(param, "=").concat(value).concat(hash);
      }
      if (_pos == url.length - 1) {
        return "".concat(url + param, "=").concat(value).concat(hash);
      }
      return "".concat(url, "&amp;").concat(param, "=").concat(value).concat(hash);
    }
    if (forceReplace === true) {
      return url.replace(reg, "$1".concat(value));
    }
    return url;
  }
  function addWxfrom(src, wxfrom) {
    var offset = window.service_type === 1 ? 10000 : 0;
    return addParam(src, 'wxfrom', offset + Number(wxfrom), true);
  }
  function removeParam(url, param) {
    var _URL = new URL(url),
      protocol = _URL.protocol,
      host = _URL.host,
      pathname = _URL.pathname,
      search = _URL.search,
      hash = _URL.hash;
    var queryParams = new URLSearchParams(search);
    queryParams["delete"](param);
    var newSearch = queryParams.toString();
    var newUrl = new URL("".concat(protocol, "//").concat(host).concat(pathname).concat(newSearch ? "?".concat(decodeURIComponent(newSearch)) : "").concat(hash));
    return newUrl.toString();
  }
  function getQuery(name, url) {
    var u = url || window.location.search;
    var reg = new RegExp("(^|&amp;)".concat(name, "=([^&amp;]*)(&amp;|$)"));
    var r = u.substring(u.indexOf('?') + 1).match(reg);
    return r !== null ? r[2] : '';
  }
  function encodeBase64(value) {
    try {
      return window.btoa(value);
    } catch (e) {
      return '';
    }
  }
  function decodeBase64(value) {
    try {
      return window.atob(value);
    } catch (e) {
      return '';
    }
  }
  function joinUrl$1(url) {
    var obj = {};
    if (typeof window.uin !== 'undefined') {
      obj.uin = window.uin;
    }
    if (typeof window.key !== 'undefined') {
      obj.key = window.key;
    }
    if (typeof window.pass_ticket !== 'undefined') {
      obj.pass_ticket = window.pass_ticket;
    }
    if (typeof window.wxtoken !== 'undefined') {
      obj.wxtoken = window.wxtoken;
    }
    if (typeof window.devicetype !== 'undefined') {
      obj.devicetype = window.devicetype;
    }
    if (typeof window.clientversion !== 'undefined') {
      obj.clientversion = window.clientversion || mmVersion.getInner();
    }
    obj.version = obj.clientversion;
    if (window.biz) {
      obj.__biz = window.biz;
    }
    if (getQuery('enterid')) {
      obj.enterid = getQuery('enterid');
    }
    if (typeof window.appmsg_token !== 'undefined') {
      obj.appmsg_token = window.appmsg_token;
    } else if (url.indexOf('advertisement_report') &gt; -1) {
      new Image().src = "".concat(location.protocol, "//mp.weixin.qq.com/mp/jsmonitor?idkey=68064_13_1&amp;r=").concat(Math.random());
    }
    obj.x5 = navigator.userAgent.indexOf('TBS/') !== -1 ? '1' : '0';
    obj.f = 'json';
    return join(url, obj);
  }
  function joinUserArticleRole(url, notJoin, cb) {
    var bizuin = arguments.length &gt; 3 &amp;&amp; arguments[3] !== undefined ? arguments[3] : window.biz;
    var needCheckBiz = arguments.length &gt; 5 &amp;&amp; arguments[5] !== undefined ? arguments[5] : false;
    if (notJoin) {
      cb(url);
    } else {
      getIsAuthor(function (isAuthor) {
        cb(addParam(url, 'user_article_role', isAuthor ? 1 : 0, true));
      }, bizuin, needCheckBiz);
    }
  }
  function getA8keyQuery(name, url) {
    return new Promise(function (resolve) {
      if (window.__secPageAuthPromise) {
        window.__secPageAuthPromise.then(function () {
          resolve(getQuery(name, url));
        });
      } else {
        resolve(getQuery(name, url));
      }
    });
  }
  function addHash(url, hash) {
    var isReplace = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;
    if (isReplace) {
      return "".concat(url.split('#')[0]).concat(hash);
    }
    return "".concat(url).concat(url.indexOf('#') === -1 ? '#' : '').concat(hash);
  }
  function decodeUrl(url) {
    var _url = url;
    while (_url.indexOf('&amp;amp;') !== -1) {
      _url = _url.htmlDecode();
    }
    return _url;
  }
  var Url = {
    parseUrl: parseUrl,
    join: join,
    addParam: addParam,
    addWxfrom: addWxfrom,
    addHash: addHash,
    getQuery: getQuery,
    getA8keyQuery: getA8keyQuery,
    encodeBase64: encodeBase64,
    decodeBase64: decodeBase64,
    joinUrl: joinUrl$1,
    joinUserArticleRole: joinUserArticleRole,
    removeParam: removeParam,
    decodeUrl: decodeUrl
  };

  var _a;
  var doc;
  var isAcrossOrigin = false;
  try {
    doc = (_a = window.top) === null || _a === void 0 ? void 0 : _a.window.document;
  } catch (e) {
    isAcrossOrigin = true;
  }
  var StatusTextMap = {
    200: 'OK',
    302: 'Found',
    400: 'Bad Request',
    500: 'Internal Server Error'
  };
  function getIsAcrossOrigin() {
    return isAcrossOrigin;
  }
  function networkStartLog(item) {
    var _a, _b, _c, _d, _e;
    console.log('[system]', "&lt; [request ".concat(item.requestType, "]"), item.url, item.method, item);
    var rdevRequestId;
    var requestTime = performance.now() / 1000;
    if ((_b = (_a = window.RemoteDevSdk) === null || _a === void 0 ? void 0 : _a.instance) === null || _b === void 0 ? void 0 : _b.Network) {
      try {
        var willBeSentOptions = {
          url: item.url,
          method: item.method,
          requestHeaders: Object.assign({}, item.requestHeader || {}, {
            RDEV_REQUEST_TYPE: item.requestType
          }),
          requestBody: item.postData,
          requestTime: requestTime
        };
        rdevRequestId = window.RemoteDevSdk.instance.Network.customRequestWillBeSent(willBeSentOptions);
      } catch (err) {}
    }
    if ((_c = window.vConsole) === null || _c === void 0 ? void 0 : _c.network) {
      try {
        var vconsoleNetworkItem = (_e = (_d = window.vConsole.network).add) === null || _e === void 0 ? void 0 : _e.call(_d, Object.assign({}, item, {
          startTime: Date.now(),
          endTime: Date.now(),
          status: 0,
          readyState: 2,
          response: ''
        }));
        vconsoleNetworkItem.rdevRequestId = rdevRequestId;
        vconsoleNetworkItem.requestTime = requestTime;
        return vconsoleNetworkItem;
      } catch (err) {}
    }
    if (rdevRequestId) {
      return Object.assign(Object.assign({}, item), {
        id: '__only_rdev_log__',
        rdevRequestId: rdevRequestId,
        requestTime: requestTime
      });
    }
    return Object.assign({}, item, {
      id: '__system_log__'
    });
  }
  function networkEndLog(item) {
    var _a, _b, _c, _d, _e;
    console.log('[system]', "&gt; [response ".concat(item.requestType, "]"), item.url, item.response, item);
    if (item.rdevRequestId &amp;&amp; ((_b = (_a = window.RemoteDevSdk) === null || _a === void 0 ? void 0 : _a.instance) === null || _b === void 0 ? void 0 : _b.Network) &amp;&amp; item.id !== '__system_log__') {
      try {
        var finishedOptions = {
          requestId: item.rdevRequestId,
          url: item.url,
          status: +(item.status || '500'),
          statusText: StatusTextMap[+(item.status || '500')] || 'Error',
          responseHeaders: {
            RDEV_RESPONSE_TYPE: item.requestType
          },
          responseBody: item.response,
          requestTime: item.requestTime || 0,
          duration: item.costTime || (item.endTime &amp;&amp; item.startTime ? item.endTime - item.startTime : performance.now() / 1000 - (item.requestTime || 0))
        };
        window.RemoteDevSdk.instance.Network.customRequestFinished(finishedOptions);
      } catch (err) {}
    }
    if (((_c = window.vConsole) === null || _c === void 0 ? void 0 : _c.network) &amp;&amp; item.id !== '__system_log__') {
      try {
        item.statusText = "".concat(item.status);
        item.responseSize = item.response.length;
        item.responseSizeText = "".concat(item.response.length);
        return (_e = (_d = window.vConsole.network).update) === null || _e === void 0 ? void 0 : _e.call(_d, item.id, Object.assign({}, item, {
          readyState: 4
        }));
      } catch (err) {}
    }
  }
  function reqType(obj, path) {
    return obj.url.indexOf(path) &gt; -1 &amp;&amp; obj.url.indexOf('action=') === -1 &amp;&amp; (!obj.data || !obj.data.action);
  }
  function findAjaxScopeByConfig(url, config) {
    var pathname = new URL(url, location.href).pathname || '';
    var scope = config[pathname.slice(1)];
    if (scope) {
      return scope;
    }
  }
  function getAjaxScope(ajaxUrl) {
    if (Url.getQuery('no_transfer', location.href) !== '1' &amp;&amp; mmVersion.isWechat &amp;&amp; !mmVersion.isInMiniProgram &amp;&amp; !mmVersion.isWxWork &amp;&amp; !mmVersion.isMpapp &amp;&amp; !isAcrossOrigin &amp;&amp; window.__ajaxTransferConfig &amp;&amp; _typeof(window.__ajaxTransferConfig) === 'object' &amp;&amp; (
    mmVersion.isIOS &amp;&amp; mmVersion.compareHexVersion('1800282F') || mmVersion.isAndroid &amp;&amp; mmVersion.compareHexVersion('28002234') || mmVersion.isWindowsWechat &amp;&amp; mmVersion.cpVersion('3.9.5', 1, true, 'windows') || mmVersion.isMacWechat &amp;&amp; mmVersion.cpVersion('3.8.4', 1, true, 'mac') || mmVersion.isHarmonyWechat &amp;&amp; mmVersion.compareHexVersion('0xf3100b00') &amp;&amp; !mmVersion.compareHexVersion('0xf3100c00') || mmVersion.compareHexVersion('0xf3800b00'))) {
      try {
        return findAjaxScopeByConfig(ajaxUrl, window.__ajaxTransferConfig);
      } catch (err) {
        
      }
    }
  }
  function getActionByData(data) {
    var _a, _b;
    if (_typeof(data) === 'object' &amp;&amp; !(data instanceof Blob)) {
      if (data.hasOwnProperty('data') &amp;&amp; typeof data.data === 'string') {
        try {
          var workedData = JSON.parse(data.data);
          return workedData.action || '';
        } catch (e) {}
      }
      return data.action || '';
    }
    if (typeof data === 'string') {
      return ((_b = (_a = data.split(/[?&amp;]/).find(function (x) {
        return x.indexOf('action=') &gt;= 0;
      })) === null || _a === void 0 ? void 0 : _a.split('=')) === null || _b === void 0 ? void 0 : _b[1]) || '';
    }
    return '';
  }

  var METHOD_ENUM = {
    GET: 0,
    POST: 1
  };
  var __moon_report = window.__moon_report || function () {};
  var MOON_AJAX_SUCCESS_OFFSET = 3;
  var MOON_AJAX_NETWORK_OFFSET = 4;
  var MOON_AJAX_ERROR_OFFSET = 5;
  var MOON_AJAX_TIMEOUT_OFFSET = 6;
  var MOON_AJAX_COMPLETE_OFFSET = 7;
  var LENGTH_LIMIT = 4096;
  function reportRtError(type, id, key, content) {
    var log = '';
    var prefix = type === 'rt' ? 'rtCheckError' : 'Ajax Length Limit';
    if (content === null || content === void 0 ? void 0 : content.length) {
      var loglen = 1000;
      var len = content.length;
      var lc = Math.ceil(len / loglen);
      log = ["&amp;lc=".concat(lc)];
      for (var i = 0; i &lt; lc; ++i) {
        log.push("&amp;log".concat(i, "=") + "[".concat(prefix, "][").concat(i, "]").concat(encodeURIComponent(content.substring(i * loglen, i * loglen + loglen))));
      }
      log = log.join('');
    }
    var data = "idkey=".concat(id, "_").concat(key, "_1").concat(log, "&amp;r=").concat(Math.random());
    var xmlobj = new XMLHttpRequest();
    xmlobj.open('POST', "".concat(location.protocol, "//").concat(location.host, "/mp/jsmonitor?"), true);
    xmlobj.setRequestHeader('cache-control', 'no-cache');
    xmlobj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    xmlobj.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    xmlobj.send(data);
    if (type === 'ajaxLen') {
      monitor$1.setLogs({
        id: id,
        key: key,
        value: 1,
        log: log
      });
    }
  }
  function reportRt(id, key, content) {
    reportRtError('rt', id, key, content);
  }
  function reportAjaxLength(id, key, content) {
    reportRtError('ajaxLen', id, key, content);
  }
  function setXhrHeader(xhr, type, opt) {
    if (opt.contentType) {
      xhr.setRequestHeader('Content-Type', opt.contentType);
    } else if (type === 'POST') {
      xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    }
    if (!opt.noXRequestedWidthHeader) {
      xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    }
  }
  function Ajax(obj) {
    var report36408 = typeof obj.report36408 === 'function' ? obj.report36408 : function () {};
    if (obj.usePb) {
      obj.type = 'POST';
      obj.data = {
        data: JSON.stringify(obj.data)
      };
    }
    var ajaxScope = getAjaxScope(obj.url);
    var type = (obj.type || 'GET').toUpperCase();
    var timer;
    var _url;
    if (obj.notJoinUrl) {
      _url = obj.url;
    } else {
      _url = Url.joinUrl(obj.url);
    }
    Url.joinUserArticleRole(_url, !!obj.notJoinUrl, function (url) {
      var urlObj = new URL(url, location.origin);
      if (obj.f === 'html') {
        url = url.replace('&amp;f=json', '');
      }
      var data = null;
      if (obj.data instanceof Blob) {
        data = obj.data;
      } else if (_typeof(obj.data) === 'object') {
        var d = obj.data;
        var ds = [];
        for (var k in d) {
          if (d.hasOwnProperty(k)) {
            ds.push("".concat(k, "=").concat(encodeURIComponent(d[k])));
          }
        }
        data = ds.join('&amp;');
      } else {
        data = typeof obj.data === 'string' ? obj.data : null;
      }
      var beginTs;
      var beforeReq = function beforeReq() {
        if (reqType(obj, '/mp/getappmsgext')) {
          window.startGetAppmsgExtTime = Date.now();
          Log.log('start get appmsgext, url: ', obj.url);
        }
        if (reqType(obj, '/mp/getappmsgad')) {
          window.startGetAppmsgAdTime = Date.now();
          Log.log('start get appmsgad, url: ', obj.url);
        }
        beginTs = Date.now();
      };
      var beforeResp = function beforeResp(xhr) {
        if (reqType(obj, '/mp/getappmsgext')) {
          window.receiveGetAppmsgExt = "".concat(xhr.status, "|").concat(Date.now());
          Log.log("receive appmsgext response, status: ".concat(xhr.status));
        }
        if (reqType(obj, '/mp/getappmsgad')) {
          window.receiveGetAppmsgAd = "".concat(xhr.status, "|").concat(Date.now());
          Log.log("receive appmsgad response, status: ".concat(xhr.status));
        }
        if (Math.random() &lt; 0.001 &amp;&amp; window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs) {
          try {
            var key = ajaxScope ? 'transfer' : 'xhr';
            var interval = 250;
            var time = Date.now() - beginTs;
            var range = Math.floor(time / interval) * interval;
            var pathname = new URL(obj.url, location.href).pathname || '';
            window.WX_BJ_REPORT.BadJs.report("".concat(key, "_perf:").concat(pathname), JSON.stringify({
              status: xhr.status,
              time: "[".concat(range, "-").concat(range + interval, ")")
            }), {
              mid: 'mmbizwap:ajaxtransfer',
              view: 'wap_business'
            });
          } catch (err) {}
        }
      };
      var handleRespSucc = function handleRespSucc(xhr, requestType) {
        var _a, _b, _c, _d;
        try {
          var responseText = xhr.responseText;
          var resp = responseText;
          if (obj.dataType === 'json') {
            try {
              if (JSON &amp;&amp; JSON.parse) {
                resp = JSON.parse(resp);
              } else {
                resp = eval("(".concat(resp, ")"));
                monitor$1.setSum(523105, 127, 1).send();
              }
              var rtId = obj.rtId;
              var rtKey = obj.rtKey || 0;
              var rtDesc = obj.rtDesc;
              if (rtId &amp;&amp; rtDesc &amp;&amp; RespTypes &amp;&amp; !RespTypes.check(resp, rtDesc)) {
                reportRt(+rtId, +rtKey, "".concat(RespTypes.getMsg(), "[detail]").concat(responseText, ";").concat(obj.url));
              }
              if (resp &amp;&amp; resp.base_resp &amp;&amp; ((_a = resp.base_resp) === null || _a === void 0 ? void 0 : _a.ret) !== 0 &amp;&amp; typeof window.WX_BJ_REPORT !== 'undefined' &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; Math.random() &lt; 0.001) {
                var reportUrl = url;
                if (url.indexOf('?') !== -1) {
                  reportUrl = url.substring(0, url.indexOf('?'));
                  if (Url.getQuery('action', url)) {
                    reportUrl = "".concat(reportUrl, "?action=").concat(Url.getQuery('action', url));
                  }
                }
                if (!((reportUrl === '/mp/getappmsgext' || reportUrl === '/mp/getappmsgad') &amp;&amp; typeof resp.base_resp.ret === 'undefined')) {
                  window.WX_BJ_REPORT.BadJs.report(reportUrl, "ret=".concat(resp.base_resp.ret), {
                    mid: window.PAGE_MID,
                    view: 'wap_retcode'
                  });
                }
              }
            } catch (e) {
              obj.error &amp;&amp; obj.error(xhr, {
                type: 1,
                error: e,
                status: xhr.status
              });
              if (!obj.dontReport) {
                report36408({
                  CgiPath: urlObj.pathname || '',
                  Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                  Query: urlObj.search || '',
                  PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                  Method: type || '',
                  RequestType: requestType || 0,
                  RetType: 1,
                  HttpCode: xhr.status || 0,
                  Ret: 0
                });
              }
              return;
            }
          }
          if (_typeof(resp) === 'object' &amp;&amp; ((_b = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _b === void 0 ? void 0 : _b.ret) !== 0) {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                Method: type || '',
                RequestType: requestType || 0,
                RetType: 4,
                HttpCode: xhr.status || 0,
                Ret: ((_c = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _c === void 0 ? void 0 : _c.ret) || 0
              });
            }
          } else {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
                Method: type || '',
                RequestType: requestType || 0,
                RetType: 0,
                HttpCode: xhr.status || 0,
                Ret: ((_d = resp === null || resp === void 0 ? void 0 : resp.base_resp) === null || _d === void 0 ? void 0 : _d.ret) || 0
              });
            }
          }
          obj.success &amp;&amp; obj.success(resp);
        } catch (e) {
          __moon_report({
            offset: MOON_AJAX_SUCCESS_OFFSET,
            e: e
          });
          throw e;
        }
      };
      var handleRespErr = function handleRespErr(xhr, error, requestType) {
        try {
          obj.error &amp;&amp; obj.error(xhr, {
            type: 2,
            error: error,
            status: xhr.status
          });
          if (!obj.dontReport) {
            report36408({
              CgiPath: urlObj.pathname || '',
              Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
              Query: urlObj.search || '',
              PostData: type === 'POST' &amp;&amp; !(obj.data instanceof Blob) ? data : '',
              Method: type,
              RequestType: requestType,
              RetType: 2,
              HttpCode: xhr.status,
              Ret: 0
            });
          }
        } catch (e) {
          __moon_report({
            offset: MOON_AJAX_ERROR_OFFSET,
            e: e
          });
          throw e;
        }
      };
      var handleRespComplete = function handleRespComplete() {
        clearTimeout(timer);
        try {
          obj.complete &amp;&amp; obj.complete();
        } catch (e) {
          __moon_report({
            offset: MOON_AJAX_COMPLETE_OFFSET,
            e: e
          });
          throw e;
        }
        obj.complete = null;
      };
      var handleReqTimeout = function handleReqTimeout(xhr) {
        if (typeof obj.timeout !== 'undefined') {
          timer = setTimeout(function () {
            xhr.abort();
            try {
              obj.complete &amp;&amp; obj.complete();
            } catch (e) {
              __moon_report({
                offset: MOON_AJAX_COMPLETE_OFFSET,
                e: e
              });
              throw e;
            }
            obj.complete = null;
            __moon_report({
              offset: MOON_AJAX_TIMEOUT_OFFSET,
              log: "ajax_timeout_error: ".concat(url),
              e: ''
            });
          }, obj.timeout);
        }
      };
      var retryXhrFn = function retryXhrFn(res, isTimeout, reqLogItem) {
        var retryXhr = new XMLHttpRequest();
        try {
          retryXhr._noVConsole = true;
        } catch (err) {}
        retryXhr.open(type, url);
        retryXhr.onreadystatechange = function () {
          if (isTimeout) return;
          if (retryXhr.readyState === 3) {
            obj.received &amp;&amp; obj.received(retryXhr);
          }
          if (retryXhr.readyState === 4) {
            beforeResp(retryXhr);
            var retryStatus = retryXhr.status;
            if (retryStatus &gt;= 200 &amp;&amp; retryStatus &lt; 400) {
              handleRespSucc(retryXhr, 1);
            } else {
              handleRespErr(retryXhr, res, 1);
              window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; window.WX_BJ_REPORT.BadJs.report('req_failure', JSON.stringify({
                retryXhrStatus: retryStatus,
                transferRes: res
              }), {
                mid: 'mmbizwap:ajaxtransfer',
                view: 'wap_business'
              });
            }
            reqLogItem.status = retryStatus;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = retryXhr.responseText;
            handleRespComplete();
            networkEndLog(reqLogItem);
          }
        };
        setXhrHeader(retryXhr, type, obj);
        retryXhr.send(data);
      };
      if (ajaxScope &amp;&amp; !obj.pureHttp) {
        var header = {
          'User-Agent': navigator.userAgent,
          'Cookie': (window.__test_env__ ? 'uniproxy_route=1; ' : '') + document.cookie,
          'Referer': location.href
        };
        if (obj.contentType) {
          header['Content-Type'] = obj.contentType;
        } else if (type === 'POST') {
          header['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
        }
        if (!obj.noXRequestedWidthHeader) {
          header['X-Requested-With'] = 'XMLHttpRequest';
        }
        var reqUrl = new URL(url, location.href).href;
        var method = METHOD_ENUM[type] || 0;
        var params = Device.os.pc ? {
          url: reqUrl,
          req_json: data || '',
          scope: ajaxScope,
          webcgi_method: method,
          webcgi_header: Object.keys(header).map(function (headerItemKey) {
            return Device.os.Mac ? _defineProperty({}, headerItemKey, header[headerItemKey]) : {
              key: headerItemKey,
              value: header[headerItemKey]
            };
          }),
          cgi_type: 1
        } : {
          reqUrl: reqUrl,
          reqBody: data,
          scope: ajaxScope,
          method: method,
          header: header
        };
        var reqLogItem = networkStartLog({
          method: type,
          url: url,
          postData: obj.data || {},
          requestHeader: header,
          requestType: 'transfer',
          startTime: Date.now(),
          responseType: url.indexOf('f=json') &gt; 0 ? 'json' : undefined
        });
        var isTimeout = false;
        handleReqTimeout({
          abort: function abort() {
            isTimeout = true;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = 'timeout';
            networkEndLog(reqLogItem);
          }
        });
        Device.os.pc &amp;&amp; monitor$1.setSum(115849, 69, 1);
        JSAPI.invoke(Device.os.pc ? 'H5ExtTransfer' : 'webTransfer', params, function (res) {
          var _a, _b, _c, _d, _e, _f;
          if (isTimeout) return;
          var status = 400;
          var result = '';
          if (Device.os.pc) {
            try {
              var retFlag = res.base_resp.ret === 0 &amp;&amp; res.jsapi_resp.ret === 0 &amp;&amp; res.err_msg.indexOf(':ok') &gt; -1;
              var respJsonFlag = res.jsapi_resp.resp_json;
              status = retFlag &amp;&amp; respJsonFlag ? 200 : 400;
              result = res.jsapi_resp.resp_json;
            } catch (err) {
              console.error(err);
            }
          } else {
            status = res &amp;&amp; res.errCode * 1 === 0 &amp;&amp; typeof res.result === 'string' &amp;&amp; res.result ? 200 : 400;
            result = res.result;
          }
          try {
            Log.log("ajax transfer, status: ".concat(status, ", reqUrl: ").concat(reqUrl));
          } catch (err) {
            console.error(err);
          }
          if (status &gt;= 200 &amp;&amp; status &lt; 400) {
            obj.received &amp;&amp; obj.received(null);
            beforeResp({
              status: status
            });
            handleRespSucc({
              status: status,
              responseText: result
            }, 10);
            reqLogItem.status = status;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = result;
            handleRespComplete();
            networkEndLog(reqLogItem);
          } else if (window.__second_open__) {
            JSAPI.invoke('request', {
              url: reqUrl,
              method: type,
              data: data,
              header: header
            }, function (retryRes) {
              try {
                Log.log("ajax retry request, retryStatus: ".concat((retryRes === null || retryRes === void 0 ? void 0 : retryRes.statusCode) || '', ", reqUrl: ").concat(reqUrl));
              } catch (err) {
                console.error(err);
              }
              if (isTimeout) return;
              var retryStatus = retryRes.statusCode;
              obj.received &amp;&amp; obj.received(null);
              beforeResp({
                status: retryStatus
              });
              if (retryRes.err_msg.indexOf(':ok') &gt; -1 &amp;&amp; retryStatus &gt;= 200 &amp;&amp; retryStatus &lt; 400) {
                handleRespSucc({
                  status: retryStatus,
                  responseText: retryRes.data
                }, 20);
              } else {
                retryXhrFn(res, isTimeout, reqLogItem);
                handleRespErr({
                  status: retryStatus
                }, res, 20);
                window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; window.WX_BJ_REPORT.BadJs.report('req_failure_sec_open', JSON.stringify({
                  retryReqJsapiRes: retryRes,
                  transferRes: res,
                  url: reqUrl
                }), {
                  mid: 'mmbizwap:ajaxtransfer',
                  view: 'wap_business'
                });
              }
              reqLogItem.status = retryStatus;
              reqLogItem.endTime = Date.now();
              reqLogItem.response = retryRes.data;
              handleRespComplete();
              networkEndLog(reqLogItem);
            });
          } else {
            retryXhrFn(res, isTimeout, reqLogItem);
          }
          if (Device.os.pc) {
            if (!res.err_msg.includes(':ok')) {
              (_b = (_a = window.WX_BJ_REPORT) === null || _a === void 0 ? void 0 : _a.BadJs) === null || _b === void 0 ? void 0 : _b.report("pc transfer res no ok: ".concat(res.err_msg), params.url || '', {
                mid: window.PAGE_MID,
                _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
              });
            }
            try {
              if (res.jsapi_resp.resp_json &amp;&amp; JSON.parse(res.jsapi_resp.resp_json).base_resp.ret !== 0 &amp;&amp; JSON.parse(res.jsapi_resp.resp_json).base_resp.ret !== 190001 || res.base_resp.ret !== 0 || res.jsapi_resp.ret !== 0) {
                (_d = (_c = window.WX_BJ_REPORT) === null || _c === void 0 ? void 0 : _c.BadJs) === null || _d === void 0 ? void 0 : _d.report("pc transfer res invalid ret", params.url || '', {
                  mid: window.PAGE_MID,
                  _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
                });
              }
            } catch (err) {}
          } else {
            try {
              if (res.errCode !== 0) {
                (_f = (_e = window.WX_BJ_REPORT) === null || _e === void 0 ? void 0 : _e.BadJs) === null || _f === void 0 ? void 0 : _f.report("mobile transfer res invalid ret", params.url || '', {
                  mid: window.PAGE_MID,
                  _info: "".concat(JSON.stringify(params), " || ").concat(JSON.stringify(res))
                });
              }
            } catch (err) {}
          }
        });
        beforeReq();
        return;
      }
      var xhr = new XMLHttpRequest();
      var mayAbort = !!obj.mayAbort;
      var async = typeof obj.async === 'undefined' ? true : obj.async;
      var _onreadystatechange = xhr.onreadystatechange;
      xhr.open(type, url, async);
      xhr.onreadystatechange = function () {
        if (typeof _onreadystatechange === 'function') {
          _onreadystatechange.apply(xhr);
        }
        if (xhr.readyState === 3) {
          obj.received &amp;&amp; obj.received(xhr);
        }
        if (xhr.readyState === 4) {
          beforeResp(xhr);
          xhr.onreadystatechange = null;
          var status = xhr.status;
          if (status &gt;= 200 &amp;&amp; status &lt; 400) {
            handleRespSucc(xhr, 1);
          } else {
            handleRespErr(xhr, 'status error', 1);
            if (!!status || !mayAbort) {
              var __ajaxtest = window.__ajaxtest || '0';
              __moon_report({
                offset: MOON_AJAX_NETWORK_OFFSET,
                log: "ajax_network_error[".concat(status, "][").concat(__ajaxtest, "]: ").concat(url, ";host:").concat(location.host),
                e: ''
              });
            }
          }
          handleRespComplete();
        }
      };
      setXhrHeader(xhr, type, obj);
      handleReqTimeout(xhr);
      try {
        xhr.send(data);
        try {
          if (url &amp;&amp; url.length &gt; LENGTH_LIMIT) {
            reportAjaxLength(27613, 17, "ajax get limit[length: ".concat(url.length, "]").concat(url.substring(0, 1024)));
          }
          if (data &amp;&amp; !(data instanceof Blob) &amp;&amp; data.length &gt; LENGTH_LIMIT) {
            reportAjaxLength(27613, 18, "ajax post limit[length: ".concat(data.length, "]").concat(data.substring(0, 1024)));
          }
          if (data &amp;&amp; data instanceof Blob &amp;&amp; data.size &gt; LENGTH_LIMIT) {
            reportAjaxLength(27613, 18, "ajax post limit[length: ".concat(data.size, "]blob"));
          }
        } catch (e) {
        }
      } catch (e) {
        obj.error &amp;&amp; obj.error(xhr, {
          type: 3,
          error: e,
          status: 0
        });
      }
      beforeReq();
    });
  }

  
  mmVersion.isWindowsWechat &amp;&amp; mmVersion.compareHexVersion('0xf2550000') || mmVersion.isMacWechat &amp;&amp; mmVersion.compareHexVersion('0xf2650000');

  
  var getBrandServiceType = function getBrandServiceType() {
    var serviceType = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : window.service_type;
    var _a, _b;
    var brandServiceType = 0;
    if (serviceType !== undefined) brandServiceType = serviceType + 1;
    if (((_b = (_a = window.cgiData) === null || _a === void 0 ? void 0 : _a.trans_appmsg_info) === null || _b === void 0 ? void 0 : _b.trans_type) * 1 === 1) brandServiceType = 3;
    return brandServiceType;
  };

  function setCurrentMpInfo(ifShow) {
    var supportNewTopBar = mmVersion.isIOS &amp;&amp; mmVersion.gtVersion('7.0.10', true) || mmVersion.isAndroid &amp;&amp; mmVersion.gtVersion('7.0.12', true);
    var supportLiveStatus = mmVersion.isIOS &amp;&amp; mmVersion.gtVersion('8.0.46', true) || mmVersion.isAndroid &amp;&amp; mmVersion.gtVersion('8.0.46', true);
    JSAPI.invoke('currentMpInfo', {
      userName: window.user_name,
      brandName: !!supportNewTopBar &amp;&amp; window.nickname === '' ? '未命名账号' : window.title,
      title: window.msg_title || '',
      brandIcon: window.hd_head_img.replace(/\/0$/, '/132'),
      itemShowType: window.item_show_type,
      isPaySubscribe: window.isPaySubscribe,
      topBarStyle: supportNewTopBar ? 1 : 0,
      topBarShowed: ifShow,
      disableShowFinderLiveTopBar: !ifShow &amp;&amp; supportLiveStatus ? 1 : 0,
      brandServiceType: getBrandServiceType()
    }, function () {});
  }
  function AjaxWx(obj) {
    var report36408 = typeof obj.report36408 === 'function' ? obj.report36408 : function () {};
    obj.url += obj.url.indexOf('?') === -1 ? '?fasttmplajax=1' : '&amp;fasttmplajax=1';
    if (getAjaxScope(obj.url)) {
      Ajax(obj);
      return;
    }
    if (obj.usePb) {
      obj.type = 'POST';
      obj.data = {
        data: JSON.stringify(obj.data)
      };
    }
    if (!/^(http:\/\/|https:\/\/|\/\/)/.test(obj.url)) {
      obj.url = "https://mp.weixin.qq.com/".concat(obj.url.replace(/^\//, ''));
    } else if (/^\/\//.test(obj.url)) {
      obj.url = "https:".concat(obj.url);
    }
    if (obj.f !== 'html' &amp;&amp; (obj.url.indexOf('?f=json') === -1 || obj.url.indexOf('&amp;f=json') === -1)) {
      obj.url += '&amp;f=json';
    }
    if (!obj.notJoinUrl &amp;&amp; obj.f !== 'html') {
      obj.url = Url.joinUrl(obj.url);
    }
    Url.joinUserArticleRole(obj.url, !!obj.notJoinUrl, function (url) {
      obj.url = url;
      var urlObj = new URL(url, location.origin);
      var data = null;
      if (_typeof(obj.data) === 'object') {
        var d = obj.data;
        var ds = [];
        for (var k in d) {
          if (d.hasOwnProperty(k)) {
            ds.push("".concat(k, "=").concat(encodeURIComponent(d[k])));
          }
        }
        data = ds.join('&amp;');
      } else {
        data = typeof obj.data === 'string' ? obj.data : null;
      }
      var header = {
        Cookie: document.cookie,
        referer: location.href
      };
      if (obj.contentType) {
        header['Content-Type'] = obj.contentType;
      } else if ((obj.type || 'GET').toUpperCase() === 'POST') {
        header['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
      }
      var reqLogItem = networkStartLog({
        method: obj.type || 'GET',
        url: obj.url,
        postData: obj.data || {},
        requestHeader: header,
        requestType: 'jsapi',
        startTime: Date.now()
      });
      var retryTime = 1;
      var jsapiRequest = function jsapiRequest(obj, data) {
        return JSAPI.invoke('request', {
          url: obj.url,
          method: obj.type,
          data: data,
          header: header
        }, function (res) {
          var _a, _b, _c, _d, _e, _f;
          if (res.err_msg.indexOf(':ok') &gt; -1 &amp;&amp; (!res.statusCode || res.statusCode &gt;= 200 &amp;&amp; res.statusCode &lt; 400)) {
            if (reqType(obj, '/mp/getappmsgext')) {
              window.receiveGetAppmsgExt = "".concat(res.statusCode, "|").concat(Date.now());
            }
            if (reqType(obj, '/mp/getappmsgad')) {
              window.receiveGetAppmsgAd = "".concat(res.statusCode, "|").concat(Date.now());
            }
            if (retryTime === 1) {
              obj.received &amp;&amp; obj.received(null);
            }
            var resData = {};
            if (res.data) {
              try {
                if (obj.dataType === 'json') {
                  resData = JSON.parse(res.data);
                } else {
                  resData = res.data;
                }
                if (resData &amp;&amp; resData.base_resp &amp;&amp; ((_a = resData.base_resp) === null || _a === void 0 ? void 0 : _a.ret) !== 0 &amp;&amp; typeof window.WX_BJ_REPORT !== 'undefined' &amp;&amp; window.WX_BJ_REPORT.BadJs &amp;&amp; Math.random() &lt; 0.001) {
                  var reportUrl = obj.url;
                  if (obj.url.indexOf('?') !== -1) {
                    reportUrl = obj.url.substring(0, obj.url.indexOf('?'));
                    if (Url.getQuery('action', obj.url)) {
                      reportUrl = "".concat(reportUrl, "?action=").concat(Url.getQuery('action', obj.url));
                    }
                  }
                  if (!((reportUrl === '/mp/getappmsgext' || reportUrl === '/mp/getappmsgad') &amp;&amp; typeof resData.base_resp.ret === 'undefined')) {
                    window.WX_BJ_REPORT.BadJs.report(reportUrl, "ret=".concat(resData.base_resp.ret), {
                      mid: window.PAGE_MID,
                      view: 'wap_retcode'
                    });
                  }
                }
              } catch (e) {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 1,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_b = resData === null || resData === void 0 ? void 0 : resData.base_resp) === null || _b === void 0 ? void 0 : _b.ret) || 0
                  });
                }
                console.error(e);
                obj.error &amp;&amp; obj.error(null, {
                  type: 1,
                  error: e,
                  status: res.statusCode
                });
                obj.complete &amp;&amp; obj.complete();
                reqLogItem.endTime = Date.now();
                reqLogItem.response = res;
                networkEndLog(reqLogItem);
                return;
              }
            }
            var tmpResData = {};
            try {
              tmpResData = JSON.parse(res.data);
            } catch (e) {}
            if (tmpResData &amp;&amp; tmpResData.base_resp &amp;&amp; tmpResData.base_resp.ret === -3 &amp;&amp; retryTime &lt; 2 &amp;&amp; (mmVersion.isIOS || mmVersion.isAndroid &amp;&amp; mmVersion.getInner() &gt; '27000600')) {
              if (!obj.dontReport) {
                report36408({
                  CgiPath: urlObj.pathname || '',
                  Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                  Query: urlObj.search || '',
                  PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                  Method: obj.type || '',
                  RequestType: 20,
                  RetType: 1,
                  HttpCode: res.statusCode || 0,
                  Ret: ((_c = resData === null || resData === void 0 ? void 0 : resData.base_resp) === null || _c === void 0 ? void 0 : _c.ret) || 0
                });
              }
              var _retryTime = retryTime++;
              JSAPI.invoke('updatePageAuth', {}, function (res) {
                console.log('[skeleton] updatePageAuth', res);
                monitor$1.setSum(112287, 3, 1);
                if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf(':ok') &gt; -1) {
                  window.top.pass_ticket = encodeURIComponent(Url.getQuery('pass_ticket', res.fullUrl).html(false).replace(/\s/g, '+'));
                  if (obj.pass_ticket) {
                    obj.pass_ticket = window.top.pass_ticket;
                  }
                  console.warn('[skeleton] updatePageAuth resetTopbar');
                  var supportNewTopBar = mmVersion.isIOS &amp;&amp; mmVersion.gtVersion('7.0.10', true);
                  var showBottomBar = !!window.is_login;
                  if (window.top.item_show_type === '0' &amp;&amp; supportNewTopBar) {
                    var top = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop || 0;
                    setCurrentMpInfo(top &gt; 40 &amp;&amp; !showBottomBar);
                  }
                  try {
                    obj.url = Url.addParam(obj.url, 'retry', _retryTime, true);
                  } catch (err) {
                    console.error(err);
                  }
                  jsapiRequest(obj, data);
                  monitor$1.setSum(112287, 4, 1);
                } else {
                  obj.success &amp;&amp; obj.success(resData);
                  obj.complete &amp;&amp; obj.complete();
                  if (mmVersion.isIOS) {
                    monitor$1.setSum(112287, 35, 1);
                  } else {
                    monitor$1.setSum(112287, 36, 1);
                  }
                  reqLogItem.status = 200;
                  reqLogItem.endTime = Date.now();
                  reqLogItem.response = resData;
                  networkEndLog(reqLogItem);
                }
              });
            } else {
              if (((_d = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _d === void 0 ? void 0 : _d.ret) !== 0) {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 4,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_e = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _e === void 0 ? void 0 : _e.ret) || 0
                  });
                }
              } else {
                if (!obj.dontReport) {
                  report36408({
                    CgiPath: urlObj.pathname || '',
                    Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                    Query: urlObj.search || '',
                    PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                    Method: obj.type || '',
                    RequestType: 20,
                    RetType: 0,
                    HttpCode: res.statusCode || 0,
                    Ret: ((_f = tmpResData === null || tmpResData === void 0 ? void 0 : tmpResData.base_resp) === null || _f === void 0 ? void 0 : _f.ret) || 0
                  });
                }
              }
              obj.success &amp;&amp; obj.success(resData);
              obj.complete &amp;&amp; obj.complete();
              reqLogItem.status = 200;
              reqLogItem.endTime = Date.now();
              reqLogItem.response = resData;
              networkEndLog(reqLogItem);
            }
          } else if (res.err_msg.indexOf('no permission') &gt; -1 || !mmVersion.isOnlyWechat) {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                Method: obj.type || '',
                RequestType: 20,
                RetType: 1,
                HttpCode: res.statusCode || 0,
                Ret: 0
              });
            }
            Ajax(obj);
            if (res.err_msg.indexOf('no permission') &gt; -1) {
              console.warn('[JSAPI Request] No permission');
              monitor$1.setSum(112287, 31, 1);
            }
            reqLogItem.status = 302;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = res;
            networkEndLog(reqLogItem);
          } else {
            if (!obj.dontReport) {
              report36408({
                CgiPath: urlObj.pathname || '',
                Action: urlObj.searchParams.get('action') || getActionByData(obj.data) || '',
                Query: urlObj.search || '',
                PostData: obj.type === 'POST' &amp;&amp; !(data instanceof Blob) ? data : '',
                Method: obj.type || '',
                RequestType: 20,
                RetType: 2,
                HttpCode: res.statusCode || 0,
                Ret: 0
              });
            }
            obj.error &amp;&amp; obj.error(null, {
              type: 3,
              error: res,
              status: 0
            });
            obj.complete &amp;&amp; obj.complete();
            monitor$1.setSum(112287, 32, 1);
            var sample = 0.001;
            if (Math.random() &lt; sample) {
              var msg = "request: ".concat(JSON.stringify(obj.type), " ").concat(JSON.stringify(obj.url), " ;;;; cookie: ").concat(JSON.stringify(document.cookie), " ;;;; data: ").concat(JSON.stringify(data), " ;;;; resp: ").concat(JSON.stringify(res));
              if (window.WX_BJ_REPORT &amp;&amp; window.WX_BJ_REPORT.BadJs) {
                window.WX_BJ_REPORT.BadJs.report('ajax_wx_request_error', msg, {
                  mid: 'mmbizwap:Monitor'
                });
              }
            }
            reqLogItem.status = 400;
            reqLogItem.endTime = Date.now();
            reqLogItem.response = res;
            networkEndLog(reqLogItem);
          }
        });
      };
      if (reqType(obj, '/mp/getappmsgext')) {
        window.startGetAppmsgExtTime = Date.now();
      }
      if (reqType(obj, '/mp/getappmsgad')) {
        window.startGetAppmsgAdTime = Date.now();
      }
      jsapiRequest(obj, data);
    });
  }

  function _regeneratorRuntime() {  _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  var AjaxRouter = function () {
    var _ref = _asyncToGenerator( _regeneratorRuntime().mark(function _callee(obj) {
      return _regeneratorRuntime().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            if (!window.__secPageAuthPromise) {
              _context.next = 3;
              break;
            }
            _context.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            if (!(!mmVersion.isWxWork &amp;&amp; (window.__second_open__ || !getIsAcrossOrigin() &amp;&amp; top.window.__second_open__) &amp;&amp; window.__is_page_auth_return__ &amp;&amp; !obj.pureHttp)) {
              _context.next = 5;
              break;
            }
            return _context.abrupt("return", AjaxWx(obj));
          case 5:
            return _context.abrupt("return", Ajax(obj));
          case 6:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return function AjaxRouter(_x) {
      return _ref.apply(this, arguments);
    };
  }();

  var isx5 = navigator.userAgent.indexOf('TBS/') !== -1;
  var getDataFunc = [];
  var reportData = [];
  
  var specificData = {};
  function joinUrl(url) {
    var obj = {};
    if (typeof window.uin !== 'undefined') {
      obj.uin = window.uin;
    }
    if (typeof window.key !== 'undefined') {
      obj.key = window.key;
    }
    if (typeof window.pass_ticket !== 'undefined') {
      obj.pass_ticket = window.pass_ticket;
    }
    if (typeof window.wxtoken !== 'undefined') {
      obj.wxtoken = window.wxtoken;
    }
    if (typeof window.devicetype !== 'undefined') {
      obj.devicetype = window.devicetype;
    }
    if (typeof window.clientversion !== 'undefined') {
      obj.clientversion = window.clientversion;
    }
    if (typeof window.appmsg_token !== 'undefined') {
      obj.appmsg_token = window.appmsg_token;
    } else if (url.indexOf('advertisement_report') &gt; -1) {
      new Image().src = "".concat(location.protocol, "//mp.weixin.qq.com/mp/jsmonitor?idkey=68064_13_1&amp;r=").concat(Math.random());
    }
    obj.x5 = isx5 ? '1' : '0';
    obj.f = 'json';
    return Url.join(url, obj);
  }
  function isObj(obj) {
    return obj &amp;&amp; _typeof(obj) === 'object';
  }
  function assign(target, source) {
    if (isObj(target) &amp;&amp; isObj(source)) {
      for (var key in source) {
        if (Object.prototype.hasOwnProperty.call(source, key)) {
          target[key] = source[key];
        }
      }
    }
  }
  function assembleReportData(initiative) {
    var leaveReportLog = [];
    leaveReportLog.push({
      content: "[LeaveReport] specificData keys: ".concat(Object.keys(specificData)),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] specificData keys: ".concat(Object.keys(specificData)));
    console.log("[LeaveReport] specificData keys: ".concat(Object.keys(specificData)));
    var allReportData = {};
    for (var reportField in specificData) {
      if (!allReportData[reportField]) {
        allReportData[reportField] = {};
      }
      for (var i = 0; i &lt; specificData[reportField].length; i++) {
        var param = specificData[reportField][i];
        if (typeof param === 'function') {
          try {
            assign(allReportData[reportField], param(initiative));
          } catch (err) {
            leaveReportLog.push({
              content: "[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)),
              timestamp: Date.now()
            });
            Log.error("[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)));
            console.error("[LeaveReport] specificData exec error: ".concat(param.toString().substring(0, 50)));
          }
        } else if (isObj(param)) {
          assign(allReportData[reportField], param);
        }
      }
    }
    leaveReportLog.push({
      content: "[LeaveReport] reportData.length: ".concat(reportData.length),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] reportData.length: ".concat(reportData.length));
    console.log("[LeaveReport] reportData.length: ".concat(reportData.length));
    leaveReportLog.push({
      content: "[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length));
    console.log("[LeaveReport] getDataFunc.length: ".concat(getDataFunc.length));
    for (var _i = 0; _i &lt; getDataFunc.length; _i++) {
      try {
        var data = getDataFunc[_i](initiative);
        if (isObj(data)) {
          reportData.push(data);
        }
      } catch (err) {
        leaveReportLog.push({
          content: "[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)),
          timestamp: Date.now()
        });
        Log.error("[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)));
        console.error("[LeaveReport] getDataFunc exec error: ".concat(getDataFunc[_i].toString().substring(0, 50)));
      }
    }
    for (var _i2 = 0; _i2 &lt; reportData.length; _i2++) {
      if (reportData[_i2].reportUrl) {
        reportData[_i2].reportUrl = joinUrl(reportData[_i2].reportUrl);
      }
    }
    allReportData.data = {
      'requestList': reportData
    };
    leaveReportLog.push({
      content: "[LeaveReport] final reportData.length: ".concat(reportData.length, ", data=").concat(JSON.stringify(reportData)),
      timestamp: Date.now()
    });
    Log.log("[LeaveReport] final reportData.length: ".concat(reportData.length));
    console.log("[LeaveReport] final reportData.length: ".concat(reportData.length));
    allReportData.info = leaveReportLog;
    return allReportData;
  }
  function addReport(param) {
    if (typeof param === 'function') {
      getDataFunc.push(param);
    } else if (isObj(param)) {
      reportData.push(param);
    }
  }
  
  function addSpecificReport(reportField, param) {
    if (!specificData[reportField]) {
      specificData[reportField] = [];
    }
    specificData[reportField].push(param);
  }
  
  function reportNow(callback) {
    var allReportData = assembleReportData(true);
    JSAPI.invoke('handleMPPageAction', {
      action: 'reportByLeaveForMPGateway',
      reportData: allReportData
    }, function (res) {
      if (res &amp;&amp; res.err_msg &amp;&amp; res.err_msg.indexOf(':ok') !== -1) {
        getDataFunc = [];
        reportData = [];
        specificData = {};
        typeof callback === 'function' &amp;&amp; callback(res);
      } else {
        getDataFunc = [];
        reportData = [];
        var len = allReportData.data.requestList.length;
        allReportData.data.requestList.forEach(function (req) {
          if (req.reportUrl) {
            AjaxRouter({
              type: req.method || 'GET',
              url: req.reportUrl,
              data: req.reportData,
              async: false,
              success: function success(resp) {
                if (--len &lt; 0) {
                  typeof callback === 'function' &amp;&amp; callback({
                    err_msg: 'handleMPPageAction:ok',
                    fallback: true,
                    resp: resp
                  });
                }
              },
              error: function error(xhr, err) {
                if (--len &lt; 0) {
                  typeof callback === 'function' &amp;&amp; callback({
                    err_msg: 'handleMPPageAction:fail',
                    fallback: true,
                    err: err
                  });
                }
              }
            });
          }
        });
      }
    });
  }
  var leaveReport = {
    reportNow: reportNow,
    addReport: addReport,
    addSpecificReport: addSpecificReport
  };
  var _leaveReport = (function () {
    var doc = {};
    var isCrossOrigin = false;
    try {
      doc = top.window.document;
    } catch (e) {
      isCrossOrigin = true;
    }
    if (!isCrossOrigin &amp;&amp; top.window.__leaveReport) {
      return top.window.__leaveReport;
    }
    if (window.__leaveReport) {
      return window.__leaveReport;
    }
    JSAPI.on('reportOnLeaveForMP', function () {
      return assembleReportData(false);
    });
    return window.__leaveReport = leaveReport;
  })();

  var getReportJson = function getReportJson(logId, rawData) {
    var data = JSON.parse(JSON.stringify(rawData));
    data.log_id = Number(logId);
    data.TimeStamp = Math.round(Date.now() / 1000);
    console.log('[comm_report] reportjson: ', data);
    return JSON.stringify(data);
  };
  var getSuccessHandler = function getSuccessHandler(logId, data, opt) {
    return function (res) {
      if (res &amp;&amp; res.err_code !== 0) {
        console.warn("[comm_report] report ".concat(logId, " fail: "), res.err_msg, data);
      }
      if (typeof opt.success === 'function') {
        opt.success(res);
      }
    };
  };
  var getErrorHandler = function getErrorHandler(logId, data, opt) {
    return function (xhr, info) {
      console.error("[comm_report] report ".concat(logId, " error: "), info, data);
      if (typeof opt.error === 'function') {
        opt.error(xhr, info);
      }
    };
  };
  var batchReportDataArr = [];
  var blackLogId = [25587, 18832, 28208, 25574, 29139, 10945];
  var BATCH_SIZE = 4;
  var BATCH_TIME = 1000;
  var getRepeatedReportJson = function getRepeatedReportJson() {
    if (!batchReportDataArr || !batchReportDataArr.length) return false;
    var reportData = {
      count: 0
    };
    reportData.count = batchReportDataArr.length;
    batchReportDataArr.forEach(function (data, index) {
      reportData["reportjson".concat(index)] = data;
    });
    batchReportDataArr = [];
    console.log('[reportData]: ', reportData);
    return reportData;
  };
  var timeOutId;
  function batchReport() {
    if (!batchReportDataArr || !batchReportDataArr.length) return;
    var repeatedReportJson = getRepeatedReportJson();
    if (!repeatedReportJson) return;
    AjaxRouter({
      type: 'POST',
      dataType: 'json',
      url: '/mp/wapcommreport?action=batch_report',
      data: repeatedReportJson,
      dontReport: true,
      success: function success(res) {
        if (res &amp;&amp; res.err_code) {
          console.warn("[comm_report] batch report fail: ", res.err_msg, batchReportDataArr);
        }
      },
      error: function error(xhr, info) {
        console.error("[comm_report] batch report error: ", info, batchReportDataArr);
      }
    });
  }
  function batchReportThrottle(logId, rawData) {
    var reportJsonData = getReportJson(logId, rawData);
    if (!reportJsonData) return;
    batchReportDataArr.push(reportJsonData);
    if (batchReportDataArr.length &gt;= BATCH_SIZE) {
      batchReport();
    } else {
      if (!timeOutId) {
        timeOutId = setTimeout(function () {
          batchReport();
          clearTimeout(timeOutId);
          timeOutId = null;
        }, BATCH_TIME);
      }
    }
  }
  _leaveReport.addReport(function () {
    var repeatedReportJson = getRepeatedReportJson();
    if (!repeatedReportJson) return false;
    var reportData = [];
    for (var _i = 0, _Object$entries = Object.entries(repeatedReportJson); _i &lt; _Object$entries.length; _i++) {
      var _Object_i = _slicedToArray(_Object$entries[_i], 2),
        key = _Object_i[0],
        value = _Object_i[1];
      reportData.push("".concat(key, "=").concat(encodeURIComponent(value)));
    }
    return {
      reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport?action=batch_report',
      reportData: reportData.join('&amp;'),
      method: 'POST'
    };
  });
  var commReport = {
    report: function report(logId, rawData, rawOpt) {
      var opt = rawOpt || {};
      if (!opt.realTime &amp;&amp; !blackLogId.includes(logId)) {
        batchReportThrottle(logId, rawData);
      } else {
        AjaxRouter({
          type: 'POST',
          dataType: 'json',
          url: '/mp/wapcommreport',
          data: {
            reportjson: getReportJson(logId, rawData)
          },
          async: opt.async,
          success: getSuccessHandler(logId, rawData, opt),
          error: getErrorHandler(logId, rawData, opt)
        });
      }
    },
    leaveReport: function leaveReport(logId, rawData) {
      _leaveReport.addReport(function () {
        var data = typeof rawData === 'function' ? rawData() : rawData;
        if (!data) {
          return false;
        }
        return {
          reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport',
          reportData: "reportjson=".concat(encodeURIComponent(getReportJson(logId, data))),
          method: 'POST'
        };
      });
    },
    reportByBeacon: function reportByBeacon(logId, rawData) {
      try {
        if (!Device.os.android &amp;&amp; !Device.os.ios) {
          var data = typeof rawData === 'function' ? rawData() : rawData;
          if (!data) {
            return false;
          }
          var url = '/mp/wapcommreport';
          var reportJsonData = encodeURIComponent(getReportJson(logId, data));
          console.log("reportByBeacon", JSON.stringify(reportJsonData));
          navigator.sendBeacon(Url.joinUrl(url), "reportjson=".concat(reportJsonData));
        } else {
          _leaveReport.addReport(function () {
            var data = typeof rawData === 'function' ? rawData() : rawData;
            if (!data) {
              return false;
            }
            return {
              reportUrl: 'https://mp.weixin.qq.com/mp/wapcommreport',
              reportData: "reportjson=".concat(encodeURIComponent(getReportJson(logId, data))),
              method: 'POST'
            };
          });
        }
      } catch (error) {
        console.log(error);
      }
    }
  };

  var html = function html(_str, encode) {
    if (!_str) return '';
    var replace = ['&amp;#96;', '`', '&amp;#39;', '\'', '&amp;quot;', '"', '&amp;nbsp;', ' ', '&amp;gt;', '&gt;', '&amp;lt;', '&lt;', '&amp;yen;', '¥', '&amp;amp;', '&amp;', '&amp;#60;', '&lt;', '&amp;#62;', '&gt;'];
    
    var replaceReverse = ['&amp;', '&amp;amp;', '¥', '&amp;yen;', '&lt;', '&amp;lt;', '&gt;', '&amp;gt;', ' ', '&amp;nbsp;', '"', '&amp;quot;', '\'', '&amp;#39;', '`', '&amp;#96;'];
    var str = _str;
    var target;
    if (encode) {
      target = replaceReverse;
    } else {
      target = replace;
    }
    for (var i = 0; i &lt; target.length; i += 2) {
      str = str.replace(new RegExp(target[i], 'g'), target[i + 1]);
    }
    return str;
  };
  var htmlLite = function htmlLite(_str, encode) {
    if (!_str) return '';
    var replace = ['&amp;#96;', '`', '&amp;#39;', '\'', '&amp;quot;', '"', '&amp;gt;', '&gt;', '&amp;lt;', '&lt;', '&amp;amp;', '&amp;'];
    
    var replaceReverse = ['&amp;', '&amp;amp;', '&lt;', '&amp;lt;', '&gt;', '&amp;gt;', '"', '&amp;quot;', '\'', '&amp;#39;', '`', '&amp;#96;'];
    var str = _str;
    var target;
    if (encode) {
      target = replaceReverse;
    } else {
      target = replace;
    }
    for (var i = 0; i &lt; target.length; i += 2) {
      str = str.replace(new RegExp(target[i], 'g'), target[i + 1]);
    }
    return str;
  };
  var htmlEncode = function htmlEncode(str) {
    return html(str, true);
  };
  var htmlDecode = function htmlDecode(str) {
    return html(str, false);
  };
  var htmlEncodeLite = function htmlEncodeLite(str) {
    return htmlLite(str, true);
  };
  var htmlDecodeLite = function htmlDecodeLite(str) {
    return htmlLite(str, false);
  };
  String.prototype.html = function (encode) {
    return html(this.toString(), encode);
  };
  String.prototype.htmlEncode = function () {
    return htmlEncode(this.toString());
  };
  String.prototype.htmlDecode = function () {
    return htmlDecode(this.toString());
  };
  String.prototype.htmlLite = function (encode) {
    return htmlLite(this.toString(), encode);
  };
  String.prototype.htmlEncodeLite = function () {
    return htmlEncodeLite(this.toString());
  };
  String.prototype.htmlDecodeLite = function () {
    return htmlDecodeLite(this.toString());
  };

  
  var isIOS = mmVersion.isIOS,
    isAndroid = mmVersion.isAndroid;
  var renderDom = function renderDom(dom, cnt, hasStar) {
    if (dom) {
      if (hasStar) {
        dom.innerText = "已星标";
      } else {
        dom.innerText = "星标";
      }
      if (hasStar) {
        dom.classList.add('rich_media_meta_star');
        dom.classList.remove('rich_media_meta_star_cancel');
      } else {
        dom.classList.add('rich_media_meta_star_cancel');
        dom.classList.remove('rich_media_meta_star');
      }
      dom.style.removeProperty('display');
      localStorage.setItem('star_info', JSON.stringify({
        mid: window.mid,
        idx: window.idx,
        has_star: !!hasStar
      }));
    }
  };
  var __setStar = function __setStar(dom, cnt, statStatus) {
    var hasReportExpose = false;
    var hasStar = statStatus;
    var realCnt = cnt;
    function addStar() {
      var dispatchEvent = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : true;
      hasStar = 1;
      realCnt = realCnt + 1;
      renderDom(dom, realCnt, hasStar);
      if (dispatchEvent) window.dispatchEvent(new CustomEvent('star'));
    }
    function cancelStar() {
      var dispatchEvent = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : true;
      hasStar = 0;
      realCnt = realCnt - 1;
      renderDom(dom, realCnt, hasStar);
      if (dispatchEvent) window.dispatchEvent(new CustomEvent('cancel-star'));
    }
    if (dom) {
      renderDom(dom, cnt, statStatus);
      var clickHander = function clickHander() {
        if (hasStar === 0) {
          JSAPI.invoke('operateStar', {
            opType: 'addStar'
          }, function (res) {
            if (res.err_msg &amp;&amp; /:ok$/.test(res.err_msg)) addStar();
          });
        } else {
          JSAPI.invoke('operateStar', {
            opType: 'cancelStar'
          }, function (res) {
            if (res.err_msg &amp;&amp; /:ok$/.test(res.err_msg)) cancelStar();
          });
        }
        var data = {
          BizUin: window.biz,
          AppMsgID: window.mid * 1,
          ItemIndex: window.idx * 1,
          Scene: window.scene,
          SubScene: window.subscene * 1,
          EnterId: window.enterid,
          SessionId: "".concat(window.sessionid),
          Event: hasStar ? 8 : 7,
          ItemShowType: window.item_show_type * 1
        };
        commReport.report(17335, data);
      };
      var exposeHandler = function exposeHandler() {
        if (hasReportExpose) return;
        var data = {
          BizUin: window.biz,
          AppMsgID: window.mid * 1,
          ItemIndex: window.idx * 1,
          Scene: window.scene,
          SubScene: window.subscene * 1,
          EnterId: window.enterid,
          SessionId: "".concat(window.sessionid),
          Event: 6,
          ItemShowType: window.item_show_type * 1
        };
        commReport.report(17335, data);
        hasReportExpose = true;
      };
      dom.addEventListener('click', clickHander);
      JSAPI.on('onPageStarStateChanged', function (res) {
        console.log('onPageStarStateChanged', res);
        if (res.state) addStar();else cancelStar();
        window.__hasStarInLifecycle = !!hasStar;
      });
      var intersectionObserver = new IntersectionObserver(exposeHandler);
      intersectionObserver.observe(dom);
      window.addEventListener('star', function (e) {
        if (e &amp;&amp; e.detail &amp;&amp; e.detail.from === 'frontend') addStar(false);
      });
      window.addEventListener('cancel-star', function (e) {
        if (e &amp;&amp; e.detail &amp;&amp; e.detail.from === 'frontend') cancelStar(false);
      });
      document.addEventListener('visibilitychange', function () {
        var visible = document.visibilityState === 'visible';
        if (!visible) return;
        window.__hasStarInLifecycle = !!hasStar;
      });
    }
  };
  if (!window.__second_open__) {
    var starDom = document.querySelector('#js_star');
    var canUseStar = window.canUseStar || isIOS &amp;&amp; mmVersion.compareHexVersion('18003623') || isAndroid &amp;&amp; mmVersion.compareHexVersion('28003630');
    var startPersonCnt = window.star_person_cnt || '';
    console.log('canUseStar, startPersonCnt', canUseStar, startPersonCnt);
    if (!!(canUseStar * 1)) {
      var starSwitch = localStorage.getItem('mp_star_switch');
      if (starSwitch === 'true') {
        var starInfo = localStorage.getItem('star_info');
        var hasStar = 0;
        if (starInfo) {
          var parseStarInfo = JSON.parse(starInfo);
          if (Number(parseStarInfo.mid) === Number(window.mid) &amp;&amp; Number(parseStarInfo.idx) === Number(window.idx) &amp;&amp; parseStarInfo.has_star) {
            hasStar = 1;
          }
        }
        starDom &amp;&amp; renderDom(starDom, startPersonCnt * 1, hasStar);
        var spanElement = document.getElementById('meta_content_hide_info');
        spanElement &amp;&amp; spanElement.classList.remove('rich_media_meta_padding');
      } else {
        starDom &amp;&amp; starDom.parentNode.removeChild(starDom);
      }
    } else {
      starDom &amp;&amp; starDom.parentNode.removeChild(starDom);
    }
    window.__setStar = __setStar;
  }

  exports.__setStar = __setStar;
  exports.renderDom = renderDom;

  Object.defineProperty(exports, '__esModule', { value: true });

  return exports;

})({});
  &lt;/script&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   var __INLINE_SCRIPT__ = (function () {
  'use strict';

  function _typeof(obj) {
    "@babel/helpers - typeof";

    return _typeof = "function" == typeof Symbol &amp;&amp; "symbol" == typeof Symbol.iterator ? function (obj) {
      return typeof obj;
    } : function (obj) {
      return obj &amp;&amp; "function" == typeof Symbol &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj;
    }, _typeof(obj);
  }

  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
    try {
      var info = gen[key](arg);
      var value = info.value;
    } catch (error) {
      reject(error);
      return;
    }
    if (info.done) {
      resolve(value);
    } else {
      Promise.resolve(value).then(_next, _throw);
    }
  }
  function _asyncToGenerator(fn) {
    return function () {
      var self = this,
        args = arguments;
      return new Promise(function (resolve, reject) {
        var gen = fn.apply(self, args);
        function _next(value) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
        }
        function _throw(err) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
        }
        _next(undefined);
      });
    };
  }

  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" &amp;&amp; o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike &amp;&amp; o &amp;&amp; typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i &gt;= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion &amp;&amp; it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
  function _arrayLikeToArray(arr, len) { if (len == null || len &gt; arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i]; return arr2; }
  
  
  var ua = navigator.userAgent;
  var is_ios = /(iPhone|iPad|iPod|iOS)/i.test(ua);
  var is_wp = /Windows\sPhone/i.test(ua);
  var is_android = /(Android)/i.test(ua);
  var is_wechat = /MicroMessenger\/([\d\.]+)/i.test(ua);
  var is_mac = /mac\sos/i.test(ua) &amp;&amp; !is_ios;
  var is_windows = /windows\snt/i.test(ua) &amp;&amp; !is_wp;
  var is_mpapp = /MPAPP\/([\d\.]+)/i.test(ua);
  var is_ipad = /iPad/i.test(ua);
  var is_windows_wechat = /WindowsWechat/i.test(ua);
  var is_mac_wechat = /MacWechat/i.test(ua) || /wechat.*mac os/i.test(ua);
  var is_prefetch = is_wechat &amp;&amp; window.WeixinPrefecherJSBridge;
  var is_donut_app = /SAAASDK/i.test(ua);
  var is_harmony = /OpenHarmony|ArkWeb/i.test(ua);
  var is_linux = /Linux\s/i.test(ua);
  var xweb_match = ua.match(/XWEB\/([\d.]+)/i);
  var xweb_version = xweb_match &amp;&amp; xweb_match[1] ? parseInt(xweb_match[1], 10) : 0;
  var is_unified_pc_wechat = /UnifiedPC\w+Wechat/i.test(ua);
  var is_in_miniProgram = is_android &amp;&amp; /miniprogram/.test(ua.toLowerCase()) || window.__wxjs_environment == 'miniprogram';
  var is_wx_work = /wxwork/i.test(ua);
  function getUrlParams() {
    var vars = location.search.substring(1).split('&amp;');
    var params = {};
    var _iterator = _createForOfIteratorHelper(vars),
      _step;
    try {
      for (_iterator.s(); !(_step = _iterator.n()).done;) {
        var ele = _step.value;
        var pair = ele.split('=');
        var key = decodeURIComponent(pair[0]);
        if (typeof params[key] === 'undefined') {
          params[key] = decodeURIComponent(pair[1]);
        }
      }
    } catch (err) {
      _iterator.e(err);
    } finally {
      _iterator.f();
    }
    return params;
  }
  function get() {
    var reg = /MicroMessenger\/([\d\.]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMac() {
    var reg = /MacWechat\/([\d\.]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMacOS() {
    var reg = /Mac OS X ([\d_]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1].replace(/_/g, '.');
    }
    return false;
  }
  function getWindows() {
    var reg = /WindowsWechat\(0x(.+?)\)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getWxWork() {
    var reg = /wxwork\/([\d\.]+)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1]) {
      return ret[1];
    }
    return false;
  }
  function getMpApp() {
    var appVersion = [2, 4, 5];
    var match = navigator.userAgent.match(/MPAPP\/(\d+(\.\d+)*)/);
    if (match) {
      appVersion = match[1].split('.').map(function (v) {
        return Number(v);
      });
    }
    return appVersion.join('.');
  }
  function getUnifiedPcVer() {
    var versionInfo = navigator.userAgent.match(/UnifiedPC\w+Wechat\(0xf\w{2}(\w+?)\w{2}\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(0, 1));
      var subVersion = getVersionNumber(version.slice(1, 2));
      var subVersion2 = getVersionNumber(version.slice(2, 3));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
  }
  function getVersionNumber(hexStr) {
    return Number(Number("0x".concat(hexStr)).toString(10));
  }
  function getWindowsVersionFormat() {
    var versionInfo = navigator.userAgent.match(/WindowsWechat\(0x(\w+?)\)/);
    if (versionInfo &amp;&amp; versionInfo.length === 2) {
      var version = versionInfo[1];
      var mainVersion = getVersionNumber(version.slice(1, 2));
      var subVersion = getVersionNumber(version.slice(2, 4));
      var subVersion2 = getVersionNumber(version.slice(4, 6));
      return [mainVersion, subVersion, subVersion2].join('.');
    }
    return false;
  }
  function getInner() {
    var reg = /MicroMessenger\/[\d\.]+\(0x(.+?)\)/i;
    var ret = ua.match(reg);
    if (ret &amp;&amp; ret[1] &amp;&amp; ret[1] != null) {
      return ret[1];
    }
    if (!ret &amp;&amp; /MicroMessenger\/[\d\.]+/i.test(ua)) {
      var urlParams = getUrlParams();
      if (urlParams.version) {
        return urlParams.version;
      }
    }
    return false;
  }
  var opfunc = {
    'cp-1': function cp1(a, b) {
      return a &lt; b;
    },
    cp0: function cp0(a, b) {
      return a === b;
    },
    cp1: function cp1(a, b) {
      return a &gt; b;
    }
  };
  function cpVersion(ver, op, canEq, type) {
    var mmver = false;
    switch (type) {
      case 'mac':
        mmver = getMac();
        break;
      case 'windows':
        mmver = getWindowsVersionFormat();
        break;
      case 'wxwork':
        mmver = getWxWork();
        break;
      case 'mpapp':
        mmver = getMpApp();
        break;
      case 'unifiedpc':
        mmver = getUnifiedPcVer();
        break;
      default:
        mmver = get();
        break;
    }
    if (!mmver) {
      return;
    }
    var mmversion = mmver.split('.');
    var version = ver.split('.');
    if (!/\d+/g.test(mmversion[mmversion.length - 1])) {
      mmversion.pop();
    }
    for (var i = 0, len = Math.max(mmversion.length, version.length); i &lt; len; ++i) {
      var mmv = mmversion[i] || '';
      var v = version[i] || '';
      var mmvn = parseInt(mmv, 10) || 0;
      var vn = parseInt(v, 10) || 0;
      var eq = opfunc.cp0(mmvn, vn);
      if (eq) {
        continue;
      }
      var cp = opfunc["cp".concat(op)];
      return cp(mmvn, vn);
    }
    return canEq || op === 0;
  }
  function eqVersion(version) {
    return cpVersion(version, 0);
  }
  function gtVersion(version, canEq) {
    return cpVersion(version, 1, canEq);
  }
  function ltVersion(version, canEq) {
    return cpVersion(version, -1, canEq);
  }
  function getPlatform() {
    if (is_ios) {
      return 'ios';
    }
    if (is_android) {
      return 'android';
    }
    if (is_mac) {
      return 'mac_os';
    }
    if (is_windows) {
      return 'windows';
    }
    return 'unknown';
  }
  var is_google_play = false;
  var inner_ver_for_google_play_check = getInner();
  if (is_android &amp;&amp; inner_ver_for_google_play_check) {
    var v = "0x".concat(inner_ver_for_google_play_check.substr(-2));
    if (parseInt(v) &gt;= 64 &amp;&amp; parseInt(v) &lt;= 79) {
      is_google_play = true;
    }
  }
  function compareHexVersion(hexNum) {
    var innerVersion = getInner();
    if (innerVersion &amp;&amp; hexNum) {
      if (typeof hexNum === 'string') {
        hexNum = parseInt(hexNum, 16);
      }
      var version = parseInt(innerVersion, 16);
      return version &gt;= hexNum;
    }
    return false;
  }
  ({
    get: get,
    getMac: getMac,
    getMacOS: getMacOS,
    getWindows: getWindows,
    getInner: getInner,
    getWxWork: getWxWork,
    getMpApp: getMpApp,
    cpVersion: cpVersion,
    eqVersion: eqVersion,
    gtVersion: gtVersion,
    ltVersion: ltVersion,
    getPlatform: getPlatform,
    getVersionNumber: getVersionNumber,
    isWp: is_wp,
    isIOS: is_ios,
    isAndroid: is_android,
    isHarmony: is_harmony,
    isHarmonyWechat: is_harmony &amp;&amp; is_wechat &amp;&amp; cpVersion('1.0.0', 1, true),
    isInMiniProgram: is_in_miniProgram,
    isWechat: is_wechat,
    isMac: is_mac,
    isWindows: is_windows,
    isLinux: is_linux,
    isMacWechat: is_mac_wechat,
    isWindowsWechat: is_windows_wechat,
    isWxWork: is_wx_work,
    isOnlyWechat: is_wechat &amp;&amp; !is_wx_work,
    isMpapp: is_mpapp,
    isNewMpApp: false,
    isIPad: is_ipad,
    isGooglePlay: is_google_play,
    isPrefetch: is_prefetch,
    isDonutAPP: is_donut_app,
    compareHexVersion: compareHexVersion,
    isPcWechat: is_windows_wechat || is_mac_wechat,
    xwebVersion: xweb_version,
    isUnifiedPcWechat: is_unified_pc_wechat
  });

  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }

  function _regeneratorRuntime() {  _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e &amp;&amp; e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d &amp;&amp; d(d(values([]))); v &amp;&amp; v !== r &amp;&amp; n.call(v, a) &amp;&amp; (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h &amp;&amp; "object" == _typeof(h) &amp;&amp; n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method &amp;&amp; n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type &amp;&amp; (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n &amp;&amp; e.iterator["return"] &amp;&amp; (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n &amp;&amp; (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method &amp;&amp; (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t &amp;&amp; (e.catchLoc = t[1]), 2 in t &amp;&amp; (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o &lt; e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t &amp;&amp; t.constructor; return !!e &amp;&amp; (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i &amp;&amp; (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) &amp;&amp; n.call(this, r) &amp;&amp; !isNaN(+r.slice(1)) &amp;&amp; (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o &amp;&amp; (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o &gt;= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc &lt;= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c &amp;&amp; u) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev &lt; i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev &lt; i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r &gt;= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc &lt;= this.prev &amp;&amp; n.call(o, "finallyLoc") &amp;&amp; this.prev &lt; o.finallyLoc) { var i = o; break; } } i &amp;&amp; ("break" === t || "continue" === t) &amp;&amp; i.tryLoc &lt;= e &amp;&amp; e &lt;= i.finallyLoc &amp;&amp; (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type &amp;&amp; e &amp;&amp; (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e &gt;= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method &amp;&amp; (this.arg = t), y; } }, e; }
  var doc = {};
  var isAcrossOrigin = false;
  var notFoundedMPPageAction = [];
  var __moon_report = window.__moon_report || function () {};
  var MOON_JSAPI_KEY_OFFSET = 8;
  try {
    doc = top.window.document;
  } catch (e) {
    isAcrossOrigin = true;
  }
  if (!window.JSAPIEventCallbackMap) {
    window.JSAPIEventCallbackMap = {};
  }
  function ready(onBridgeReady) {
    var bridgeReady = function bridgeReady() {
      try {
        if (onBridgeReady) {
          window.onBridgeReadyTime = window.onBridgeReadyTime || Date.now();
          onBridgeReady();
        }
      } catch (e) {
        __moon_report([{
          offset: MOON_JSAPI_KEY_OFFSET,
          log: 'ready',
          e: e
        }]);
        throw e;
      }
      window.jsapiReadyTime = Date.now();
    };
    if (!isAcrossOrigin &amp;&amp; (typeof top.window.WeixinJSBridge === 'undefined' || !top.window.WeixinJSBridge.invoke)) {
      if (doc.addEventListener) {
        doc.addEventListener('WeixinJSBridgeReady', bridgeReady, false);
      } else if (doc.attachEvent) {
        doc.attachEvent('WeixinJSBridgeReady', bridgeReady);
        doc.attachEvent('onWeixinJSBridgeReady', bridgeReady);
      }
    } else {
      bridgeReady();
    }
  }
  var invokeNotWaitA8key = ['notifyPageInfo', 'updatePageAuth'
  ];
  var checkNotFoundedInvoke = function checkNotFoundedInvoke(methodName, args) {
    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; notFoundedMPPageAction.includes(args === null || args === void 0 ? void 0 : args.action)) {
      return true;
    }
    return false;
  };
  function invoke(_x, _x2, _x3) {
    return _invoke.apply(this, arguments);
  }
  function _invoke() {
    _invoke = _asyncToGenerator( _regeneratorRuntime().mark(function _callee(methodName, args, callback) {
      return _regeneratorRuntime().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__ &amp;&amp; !invokeNotWaitA8key.includes(methodName))) {
              _context.next = 3;
              break;
            }
            _context.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                alert('请在微信中打开此链接');
                return false;
              }
              if (checkNotFoundedInvoke(methodName, args)) {
                setTimeout(function () {
                  if (callback) {
                    callback.apply(window, [{
                      err_msg: "".concat(methodName, ":fail"),
                      err_desc: 'action isn\'t supported'
                    }]);
                  }
                }, 0);
              } else {
                top.window.WeixinJSBridge.invoke(methodName, args, function () {
                  try {
                    for (var _len2 = arguments.length, rets = new Array(_len2), _key2 = 0; _key2 &lt; _len2; _key2++) {
                      rets[_key2] = arguments[_key2];
                    }
                    var ret = rets[0];
                    var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
                    if (['handleMPPageAction', 'handleVideoAction', 'handleHaokanAction'].indexOf(methodName) !== -1) {
                      var action = (args === null || args === void 0 ? void 0 : args.action) || '';
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName, ", action-&gt;").concat(action).concat(errMsg));
                    } else {
                      console.info('[system]', "[jsapi] invoke-&gt;".concat(methodName).concat(errMsg));
                    }
                    if (methodName === 'handleMPPageAction' &amp;&amp; (args === null || args === void 0 ? void 0 : args.action) &amp;&amp; ((ret === null || ret === void 0 ? void 0 : ret.err_desc) === 'action isn\'t supported' || (ret === null || ret === void 0 ? void 0 : ret.err_msg) === 'handleMPPageAction:fail action is not supported')) {
                      notFoundedMPPageAction.push(args === null || args === void 0 ? void 0 : args.action);
                    }
                    if (callback) {
                      callback.apply(window, rets);
                    }
                  } catch (e) {
                    __moon_report([{
                      offset: MOON_JSAPI_KEY_OFFSET,
                      log: "invoke;methodName:".concat(methodName),
                      e: e
                    }]);
                    throw e;
                  }
                });
              }
            });
          case 4:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    return _invoke.apply(this, arguments);
  }
  function call(_x4) {
    return _call.apply(this, arguments);
  }
  function _call() {
    _call = _asyncToGenerator( _regeneratorRuntime().mark(function _callee2(methodName) {
      return _regeneratorRuntime().wrap(function _callee2$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            if (!(window.__secPageAuthPromise &amp;&amp; !window.__is_page_auth_ok__)) {
              _context2.next = 3;
              break;
            }
            _context2.next = 3;
            return window.__secPageAuthPromise;
          case 3:
            ready(function () {
              if (isAcrossOrigin) return false;
              if (_typeof(top.window.WeixinJSBridge) !== 'object') {
                return false;
              }
              try {
                top.window.WeixinJSBridge.call(methodName);
              } catch (e) {
                __moon_report([{
                  offset: MOON_JSAPI_KEY_OFFSET,
                  log: "call;methodName:".concat(methodName),
                  e: e
                }]);
                throw e;
              }
            });
          case 4:
          case "end":
            return _context2.stop();
        }
      }, _callee2);
    }));
    return _call.apply(this, arguments);
  }
  function on(eventName, callback) {
    ready(function () {
      if (isAcrossOrigin) return false;
      if (_typeof(top.window.WeixinJSBridge) !== 'object' || !top.window.WeixinJSBridge.on) {
        return false;
      }
      if (!window.JSAPIEventCallbackMap[eventName]) {
        window.JSAPIEventCallbackMap[eventName] = [];
      }
      window.JSAPIEventCallbackMap[eventName].push(callback);
      if (window.JSAPIEventCallbackMap[eventName].length &gt; 1) {
        return false;
      }
      top.window.WeixinJSBridge.on(eventName, function () {
        try {
          for (var _len = arguments.length, rets = new Array(_len), _key = 0; _key &lt; _len; _key++) {
            rets[_key] = arguments[_key];
          }
          var ret = rets[0];
          var errMsg = ret &amp;&amp; ret.err_msg ? ", err_msg-&gt; ".concat(ret.err_msg) : '';
          console.info('[system]', "[jsapi] event-&gt;".concat(eventName).concat(errMsg));
          if (window.JSAPIEventCallbackMap[eventName] &amp;&amp; window.JSAPIEventCallbackMap[eventName].length) {
            var result;
            for (var i = 0; i &lt; window.JSAPIEventCallbackMap[eventName].length; i++) {
              result = window.JSAPIEventCallbackMap[eventName][i].apply(window, rets);
            }
            return result;
          }
        } catch (e) {
          __moon_report([{
            offset: MOON_JSAPI_KEY_OFFSET,
            log: "on;eventName:".concat(eventName),
            e: e
          }]);
          throw e;
        }
      });
    });
  }
  function remove(eventName, callback) {
    ready(function () {
      if (!window.JSAPIEventCallbackMap[eventName]) {
        return false;
      }
      var result = false;
      for (var i = window.JSAPIEventCallbackMap[eventName].length - 1; i &gt;= 0; i--) {
        if (window.JSAPIEventCallbackMap[eventName][i] === callback) {
          window.JSAPIEventCallbackMap[eventName].splice(i, 1);
          result = true;
        }
      }
      return result;
    });
  }
  var JSAPI = {
    ready: ready,
    invoke: invoke,
    call: call,
    on: on,
    remove: remove
  };

  var __setPreview = function __setPreview() {
    var extData = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    if (extData &amp;&amp; extData.previewType === 1) {
      JSAPI.invoke('setNavigationBarButtons', {
        right: {
          hidden: true
        }
      });
    }
    var quotePreviewSwitch = document.getElementById('js_quote_preview_switch');
    if (quotePreviewSwitch &amp;&amp; extData &amp;&amp; extData.quoteList &amp;&amp; extData.quoteList.length) {
      quotePreviewSwitch.innerHTML = "备注内容仅自己可见，可" + '&amp;nbsp;&lt;a href="javascript:;" id="js_quote_preview_switch_inner"&gt;' + '预览公开发表视角' + '&lt;/a&gt;';
    }
  };
  if (!window.__second_open__) {
    var previewType = '' * 1;
    var quoteList = null;
    try {
      quoteList = JSON.parse('[]');
    } catch (e) {
      console.error(e);
    }
    var extData = {
      quoteList: quoteList,
      previewType: previewType
    };
    __setPreview(extData);
    window.__setPreview = __setPreview;
  }

  return __setPreview;

})();
  &lt;/script&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   (function () {
  'use strict';

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  function _typeof(obj) {
    "@babel/helpers - typeof";

    return _typeof = "function" == typeof Symbol &amp;&amp; "symbol" == typeof Symbol.iterator ? function (obj) {
      return typeof obj;
    } : function (obj) {
      return obj &amp;&amp; "function" == typeof Symbol &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj;
    }, _typeof(obj);
  }

  function _toPrimitive(input, hint) {
    if (_typeof(input) !== "object" || input === null) return input;
    var prim = input[Symbol.toPrimitive];
    if (prim !== undefined) {
      var res = prim.call(input, hint || "default");
      if (_typeof(res) !== "object") return res;
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return (hint === "string" ? String : Number)(input);
  }

  function _toPropertyKey(arg) {
    var key = _toPrimitive(arg, "string");
    return _typeof(key) === "symbol" ? key : String(key);
  }

  function _defineProperties(target, props) {
    for (var i = 0; i &lt; props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor) descriptor.writable = true;
      Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
    }
  }
  function _createClass(Constructor, protoProps, staticProps) {
    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
    if (staticProps) _defineProperties(Constructor, staticProps);
    Object.defineProperty(Constructor, "prototype", {
      writable: false
    });
    return Constructor;
  }

  function _assertThisInitialized(self) {
    if (self === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }
    return self;
  }

  function _possibleConstructorReturn(self, call) {
    if (call &amp;&amp; (_typeof(call) === "object" || typeof call === "function")) {
      return call;
    } else if (call !== void 0) {
      throw new TypeError("Derived constructors may only return object or undefined");
    }
    return _assertThisInitialized(self);
  }

  function _getPrototypeOf(o) {
    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {
      return o.__proto__ || Object.getPrototypeOf(o);
    };
    return _getPrototypeOf(o);
  }

  function _setPrototypeOf(o, p) {
    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {
      o.__proto__ = p;
      return o;
    };
    return _setPrototypeOf(o, p);
  }

  function _inherits(subClass, superClass) {
    if (typeof superClass !== "function" &amp;&amp; superClass !== null) {
      throw new TypeError("Super expression must either be null or a function");
    }
    subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, {
      constructor: {
        value: subClass,
        writable: true,
        configurable: true
      }
    });
    Object.defineProperty(subClass, "prototype", {
      writable: false
    });
    if (superClass) _setPrototypeOf(subClass, superClass);
  }

  var classWhiteList = ['rich_pages', 'blockquote_info', 'blockquote_biz', 'blockquote_other', 'blockquote_article', 'h5_image_link', 'img_loading', 'list-paddingleft-1', 'list-paddingleft-2', 'list-paddingleft-3', 'selectTdClass', 'noBorderTable', 'ue-table-interlace-color-single', 'ue-table-interlace-color-double', '__bg_gif', 'normal_text_link', 'mp_article_text_link', 'album', 'weapp_text_link', 'weapp_image_link', 'product_image_link', 'qqmusic_area', 'tc', 'tips_global', 'unsupport_tips', 'qqmusic_wrp', 'appmsg_card_context', 'appmsg_card_active', 'qqmusic_bd', 'play_area', 'icon_qqmusic_switch', 'pic_qqmusic_default', 'qqmusic_thumb', 'access_area', 'qqmusic_songname', 'qqmusic_singername', 'qqmusic_source', 'share_audio_context', 'flex_context', 'pages_reset', 'share_audio_switch', 'icon_share_audio_switch', 'share_audio_info', 'flex_bd', 'share_audio_title', 'share_audio_tips', 'share_audio_progress_wrp', 'share_audio_progress', 'share_audio_progress_inner', 'share_audio_progress_buffer', 'share_audio_progress_loading', 'share_audio_progress_loading_inner', 'share_audio_progress_handle', 'share_audio_desc', 'share_audio_length_current', 'share_audio_length_total', 'video_iframe', 'vote_iframe', 'res_iframe', 'card_iframe', 'weapp_display_element', 'weapp_card', 'app_context', 'weapp_card_bd', 'weapp_card_profile', 'radius_avatar', 'weapp_card_avatar', 'weapp_card_nickname', 'weapp_card_info', 'weapp_card_title', 'weapp_card_thumb_wrp', 'weapp_card_ft', 'weapp_card_logo', 'pay', 'pay__mask', 'ct_geography_loc_tip', 'subsc_context', 'subsc_btn', 'reset_btn', 'icon_subsc', 'weui-primary-loading', 'weui-primary-loading__dot', 'wxw-img', 'mp-caret', 'appmsg_poi_iframe', 'cpc_iframe', 'channels_iframe_wrp', 'channels_iframe', 'videosnap_video_iframe', 'videosnap_live_iframe', 'videosnap_image_iframe', 'channels_live_iframe', 'minishop_iframe_wrp', 'minishop_iframe', 'mp_profile_iframe', 'mp_profile_iframe_wrp', 'mp_search_iframe_wrp', 'appmsg_search_iframe_wrp', 'appmsg_search_iframe', 'vote_area', 'vote_iframe', 'mp_vote_iframe_wrp', 'mp_vote_iframe', 'qqmusic_iframe', 'blockquote_iframe', 'blockquote_tips_iframe', 'video_iframe', 'shopcard_iframe', 'topic_iframe', 'weapp_app_iframe', 'img_fail_iframe', 'mp_miniprogram_iframe', 'appmsg_cpslink_iframe', 'js_editor_mpcpslink', 'mp-cpslink-iframe-wrp', 'mp_common_sticker_iframe', 'mp_common_sticker_iframe_wrp', 'mp_common_product_iframe', 'mp_common_product_iframe_wrp', 'mp_lottery_iframe_wrp', 'mp_shopprofile_wrp', 'new_cps_iframe', 'redpackage_iframe', 'mp_redpacket_iframe_wrp', 'product_text_link', 'clmusic_iframe', 'clalbum_iframe', 'mp_common_custom_iframe_wrp', 'mp_common_custom_iframe'];
  var classWhiteListReg = [new RegExp('^editor__content__'), new RegExp('^wxw'), new RegExp('^js_'), new RegExp('^cps_inner'), new RegExp('^bizsvr_'),
  new RegExp('^code-snippet'),
  new RegExp('^wx_(?!text_underline)'),
  new RegExp('^wx-'),
  new RegExp('^icon_emoji_'),
  new RegExp('^custom_select_card')
  ];
  var contentStyle = {
    classWhiteList: classWhiteList,
    classWhiteListReg: classWhiteListReg
  };

  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
  function DomFilter (cgiOptData) {
    return function (Plugin) {
      var isMMVersionSetted = false;
      var contentDom = document.getElementById('js_content');
      var classWhiteList = contentStyle.classWhiteList,
        classWhiteListReg = contentStyle.classWhiteListReg;
      var removeClassByWhiteList = function removeClassByWhiteList(node) {
        var classAttr = node.getAttribute('class');
        if (classAttr) {
          var classList = classAttr.split(/\s+/);
          var newClassList = [];
          for (var i = 0, len = classList.length; i &lt; len; ++i) {
            var className = classList[i];
            if (className &amp;&amp; classWhiteList.indexOf(className) != -1) {
              newClassList.push(className);
            } else {
              for (var j = 0, jl = classWhiteListReg.length; j &lt; jl; j++) {
                if (classWhiteListReg[j].test(className)) {
                  newClassList.push(className);
                  break;
                }
              }
            }
          }
          node.setAttribute('class', newClassList.join(' '));
        }
      };
      var langBlackList = ['zh-cn', 'en-us'];
      var removeLangByBlackList = function removeLangByBlackList(node) {
        var langAttr = node.getAttribute('lang');
        if (langAttr) {
          var lang = langAttr.toLowerCase();
          for (var i = 0; i &lt; langBlackList.length; i++) {
            if (lang === langBlackList[i]) {
              node.removeAttribute('lang');
              return;
            }
          }
        }
      };
      var isAccessMode = window.localStorage.getItem('isMpUserAccessibility');
      var isCarton = (cgiOptData === null || cgiOptData === void 0 ? void 0 : cgiOptData.copyright_info.is_cartoon_copyright) || (cgiOptData === null || cgiOptData === void 0 ? void 0 : cgiOptData.user_info.is_care_mode) || isAccessMode === '1';
      var bgPlaceholder = 'url("data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==")';
      var lazyloadBackgroundImage = function lazyloadBackgroundImage(node) {
        if (window.__second_open__ &amp;&amp; !isCarton &amp;&amp; node &amp;&amp; node.style &amp;&amp; typeof node.getAttribute === 'function' &amp;&amp; !node.getAttribute('data-lazy-bgimg')) {
          var bgImg = node.style.backgroundImage;
          var bgImgUrl = bgImg &amp;&amp; bgImg.match(/url\(['"]?(.*?)['"]?\)/);
          if (bgImgUrl &amp;&amp; bgImgUrl[1]) {
            node.style.backgroundImage = bgImg.replace(/url\(['"]?.*?['"]?\)/, bgPlaceholder);
            node.setAttribute('data-lazy-bgimg', bgImgUrl[1]);
            node.classList.add('wx_imgbc_placeholder');
          }
        }
      };
      var recoverFontFamily = function recoverFontFamily(node) {
        var ua = navigator.userAgent;
        var isAppleSystem = /(iPhone|iPad|iPod|iOS|mac\sos)/i.test(ua);
        if (isAppleSystem &amp;&amp; node &amp;&amp; node.style) {
          var fontFamily = node.style.fontFamily;
          var pingfangFont = 'PingFang SC';
          var systemFont = ['system-ui', '-apple-system-font', '-apple-system'];
          if (fontFamily) {
            var fontArray = fontFamily.split(',').map(function (item) {
              return item.trim();
            });
            var pingfangIndex = fontArray.findIndex(function (item) {
              return item.includes(pingfangFont);
            });
            var systemIndex = fontArray.findIndex(function (item) {
              return systemFont.some(function (sysFont) {
                return item.includes(sysFont);
              });
            });
            if (systemIndex !== -1 &amp;&amp; pingfangIndex !== -1 &amp;&amp; systemIndex &lt; pingfangIndex) {
              var pingfangItem = fontArray[pingfangIndex];
              fontArray.splice(pingfangIndex, 1);
              fontArray.splice(systemIndex, 0, pingfangItem);
              node.style.fontFamily = fontArray.join(', ');
            }
            return;
          }
        }
      };
      return function (_Plugin) {
        _inherits(_class, _Plugin);
        function _class() {
          _classCallCheck(this, _class);
          return _callSuper(this, _class, arguments);
        }
        _createClass(_class, [{
          key: "beforeConvertNode",
          value: function beforeConvertNode(el) {
            if (el &amp;&amp; el.tagName) {
              var tagName = el.tagName.toLowerCase();
              if (tagName !== 'iframe') {
                removeClassByWhiteList(el);
                removeLangByBlackList(el);
                recoverFontFamily(el);
                lazyloadBackgroundImage(el);
              } else {
                if (el.getAttribute('class') === 'video_ad_iframe') {
                  el.setAttribute('class', '');
                }
              }
            }
          }
        }, {
          key: "afterConvertNode",
          value: function afterConvertNode(el) {
            if (!isMMVersionSetted) {
              var ua = navigator.userAgent;
              /(iPhone|iPad|iPod|iOS|mac\sos)/i.test(ua) ? contentDom.classList.add('fix_apple_default_style') : null;
              isMMVersionSetted = true;
            }
            if (el.style &amp;&amp; el.style.webkitTextSizeAdjust !== '' &amp;&amp; el.style.webkitTextSizeAdjust !== 'none') {
              el.style.webkitTextSizeAdjust = 'inherit';
            }
            if (el.tagName === 'animate' &amp;&amp; el.getAttribute('attributeName') === 'height') {
              var repeatCountVal = el.getAttribute('repeatCount');
              if (repeatCountVal === 'indefinite' || repeatCountVal &gt; '10') {
                if (el.getAttribute('begin') !== 'click' &amp;&amp; el.getAttribute('end') !== 'click') {
                  el.setAttribute('repeatCount', 'undefined');
                  el.setAttribute('attributeName', 'undefined');
                  new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=306525_1_1';
                }
              }
            }
            if (el.tagName === 'OL') {
              
              if ((el.parentNode === document.getElementById('js_content') || el.parentNode.getAttribute('id') === 'js_secopen_content') &amp;&amp; el.getAttribute('style') &amp;&amp; el.getAttribute('style').indexOf('padding-left') &lt; 0) {
                if (el.childNodes.length &gt;= 10 &amp;&amp; el.childNodes.length &lt; 100) {
                  el.classList.add('extra-list-padding-level1');
                  el.style.paddingLeft = '2.2em';
                } else if (el.childNodes.length &gt; 100) {
                  el.classList.add('extra-list-padding-level2');
                  el.style.paddingLeft = '3.2em';
                }
              }
            }
            if (el.tagName === 'MP-STYLE-TYPE') {
              var styleType = parseInt(el.getAttribute('data-value'), 10);
              if (styleType === 3) {
                if (el.parentNode &amp;&amp; el.parentNode.previousSibling) {
                  var realLastP = el.parentNode.previousSibling;
                  if ((realLastP.tagName === 'P' || realLastP.tagName === 'SECTION') &amp;&amp; realLastP.style &amp;&amp; !realLastP.style.marginBottom) {
                    realLastP.style.marginBottom = '0';
                  }
                }
              }
            }
            if (el.tagName === 'svg') {
              if (!el.hasAttribute('role')) {
                el.setAttribute('role', 'img');
              }
              if (!el.hasAttribute('aria-label')) {
                el.setAttribute('aria-label', '插图');
              }
            }
          }
        }]);
        return _class;
      }(Plugin);
    };
  }

  
  if (!window.__second_open__ &amp;&amp; window.Darkmode) {
    var cost = 0;
    window.Darkmode.extend([DomFilter()]);
    window.Darkmode.run(document.querySelectorAll('#js_content *'), {
      mode: '',
      defaultDarkTextColor: '#989898',
      defaultDarkBgColor: '',
      whitelist: {
        attribute: ['data-no-dark']
      },
      error: function error() {
        new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_0_1';
      },
      begin: function begin(isSwitch) {
        new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_2_1';
        isSwitch &amp;&amp; (new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_4_1');
        cost = new Date() * 1;
      },
      showFirstPage: function showFirstPage() {
        document.getElementById('js_content').style.removeProperty('opacity');
        cost = new Date() * 1 - cost;
        var isTop = (document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop) === 0;
        if (cost &lt;= 10) {
          new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_6_1';
          isTop &amp;&amp; (new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_13_1');
        } else if (cost &gt; 10 &amp;&amp; cost &lt;= 20) {
          new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_7_1';
          isTop &amp;&amp; (new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_14_1');
        } else if (cost &gt; 20 &amp;&amp; cost &lt;= 30) {
          new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_8_1';
          isTop &amp;&amp; (new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_15_1');
        } else if (cost &gt; 30 &amp;&amp; cost &lt;= 40) {
          new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_9_1';
          isTop &amp;&amp; (new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_16_1');
        } else if (cost &gt; 40 &amp;&amp; cost &lt;= 50) {
          new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_10_1';
          isTop &amp;&amp; (new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_17_1');
        } else if (cost &gt; 50 &amp;&amp; cost &lt;= 60) {
          new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_11_1';
          isTop &amp;&amp; (new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_18_1');
        } else {
          new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_12_1';
          isTop &amp;&amp; (new Image().src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_19_1');
        }
      }
    });
    document.getElementById('js_content').style.removeProperty('visibility');
  }

})();
  &lt;/script&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   var __INLINE_SCRIPT__ = (function (exports) {
  'use strict';

  function _typeof(obj) {
    "@babel/helpers - typeof";

    return _typeof = "function" == typeof Symbol &amp;&amp; "symbol" == typeof Symbol.iterator ? function (obj) {
      return typeof obj;
    } : function (obj) {
      return obj &amp;&amp; "function" == typeof Symbol &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj;
    }, _typeof(obj);
  }

  function _toPrimitive(input, hint) {
    if (_typeof(input) !== "object" || input === null) return input;
    var prim = input[Symbol.toPrimitive];
    if (prim !== undefined) {
      var res = prim.call(input, hint || "default");
      if (_typeof(res) !== "object") return res;
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return (hint === "string" ? String : Number)(input);
  }

  function _toPropertyKey(arg) {
    var key = _toPrimitive(arg, "string");
    return _typeof(key) === "symbol" ? key : String(key);
  }

  function _defineProperty(obj, key, value) {
    key = _toPropertyKey(key);
    if (key in obj) {
      Object.defineProperty(obj, key, {
        value: value,
        enumerable: true,
        configurable: true,
        writable: true
      });
    } else {
      obj[key] = value;
    }
    return obj;
  }

  function _arrayLikeToArray$1(arr, len) {
    if (len == null || len &gt; arr.length) len = arr.length;
    for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i];
    return arr2;
  }

  function _arrayWithoutHoles(arr) {
    if (Array.isArray(arr)) return _arrayLikeToArray$1(arr);
  }

  function _iterableToArray(iter) {
    if (typeof Symbol !== "undefined" &amp;&amp; iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
  }

  function _unsupportedIterableToArray$1(o, minLen) {
    if (!o) return;
    if (typeof o === "string") return _arrayLikeToArray$1(o, minLen);
    var n = Object.prototype.toString.call(o).slice(8, -1);
    if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name;
    if (n === "Map" || n === "Set") return Array.from(o);
    if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen);
  }

  function _nonIterableSpread() {
    throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }

  function _toConsumableArray(arr) {
    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray$1(arr) || _nonIterableSpread();
  }

  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r &amp;&amp; (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
  function _objectSpread(e) { for (var r = 1; r &lt; arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" &amp;&amp; o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike &amp;&amp; o &amp;&amp; typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i &gt;= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion &amp;&amp; it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" &amp;&amp; o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
  function _arrayLikeToArray(arr, len) { if (len == null || len &gt; arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i &lt; len; i++) arr2[i] = arr[i]; return arr2; }
  function updateProfileAttr(profiles, infos) {
    if (!profiles || !Array.isArray(profiles) || !infos || !Array.isArray(infos)) {
      return;
    }
    var _iterator = _createForOfIteratorHelper(profiles),
      _step;
    try {
      for (_iterator.s(); !(_step = _iterator.n()).done;) {
        var profile = _step.value;
        var profileId = profile.getAttribute('data-id');
        var profileInfo = findBizCardInfo(infos, profileId);
        if (profileInfo) {
          var is_biz_ban = profileInfo.is_biz_ban,
            original_num = profileInfo.original_num,
            biz_account_status = profileInfo.biz_account_status,
            verify_status = profileInfo.verify_status,
            round_head_img = profileInfo.round_head_img,
            nickname = profileInfo.nickname,
            signature = profileInfo.signature;
          profile.setAttribute('data-origin_num', original_num * 1);
          profile.setAttribute('data-is_biz_ban', is_biz_ban * 1);
          profile.setAttribute('data-isban', is_biz_ban * 1);
          profile.setAttribute('data-biz_account_status', biz_account_status * 1);
          profile.setAttribute('data-verify_status', verify_status * 1);
          profile.setAttribute('data-headimg', round_head_img);
          profile.setAttribute('data-nickname', nickname.htmlDecode());
          profile.setAttribute('data-signature', signature.htmlDecode());
        }
      }
    } catch (err) {
      _iterator.e(err);
    } finally {
      _iterator.f();
    }
  }
  function findBizCardInfo(infos, id) {
    return infos.find(function (info) {
      return info.fakeid === id;
    });
  }
  function dealWithProfileData(data) {
    var _data$biz_card;
    if (!window.__second_open__) {
      return data;
    }
    var profileData = (data === null || data === void 0 ? void 0 : (_data$biz_card = data.biz_card) === null || _databiz_card.list) || [];
    profileData.map(function (item) {
      return item['original_num'] = item['orignal_num'];
    });
    return profileData;
  }
  function updateCustomElementAttrs(dom, data) {
    if (!dom || !data) return;
    var profiles = dom.querySelectorAll('mp-common-profile');
    updateProfileAttr(Array.from(profiles), dealWithProfileData(data));
  }
  function preprocessMpAudios(dom, data) {
    var voiceList = window.__second_open__ ? data === null || data === void 0 ? void 0 : data.voice_in_appmsg_list_json : data.voiceList;
    if (typeof voiceList === 'string') {
      try {
        voiceList = JSON.parse(voiceList);
      } catch (e) {
        return;
      }
    }
    if (!dom || !voiceList) return;
    var albumlist = [];
    if (voiceList.voice_in_appmsg &amp;&amp; voiceList.voice_in_appmsg.length &gt; 0) {
      albumlist = voiceList.voice_in_appmsg;
    }
    var mpvoices = _toConsumableArray(dom.querySelectorAll('mpvoice'));
    mpvoices.forEach(function (mpvoice) {
      var mpaudio = document.createElement('mp-common-mpaudio');
      var attrs = mpvoice.getAttributeNames().reduce(function (acc, name) {
        if (name === 'data-trans_state' || name === 'err_tips') return acc;
        return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, name, mpvoice.getAttribute(name)));
      }, {});
      for (var key in attrs) {
        mpaudio.setAttribute(key, attrs[key]);
      }
      mpaudio.setAttribute('data-trans_state', 1);
      mpvoice.parentNode.replaceChild(mpaudio, mpvoice);
    });
    var mpaudios = _toConsumableArray(dom.querySelectorAll('mp-common-mpaudio'));
    mpaudios.forEach(function (mpaudio) {
      mpaudio.style.opacity = 0;
      mpaudio.setAttribute('author', data.nick_name || '');
      var album = albumlist.find(function (a) {
        var voice_encode_fileid = mpaudio.getAttribute('voice_encode_fileid');
        try {
          voice_encode_fileid = decodeURIComponent(voice_encode_fileid);
        } catch (e) {}
        return a.voice_id === voice_encode_fileid &amp;&amp; a.appmsgalbuminfo;
      });
      if (album) {
        mpaudio.setAttribute('data-topic_id', album.appmsgalbuminfo.album_id || 0);
        mpaudio.setAttribute('data-topic_name', album.appmsgalbuminfo.title || '');
        mpaudio.setAttribute('data-topic_link', album.appmsgalbuminfo.link.html(false).replace('#wechat_redirect', '') + '#wechat_redirect');
        mpaudio.setAttribute('data-topic_num', album.appmsgalbuminfo.tag_content_num || 0);
      }
    });
    var claudios = _toConsumableArray(dom.querySelectorAll('mp-common-claudio'));
    claudios.forEach(function (claudio) {
      claudio.style.opacity = 0;
    });
  }
  function handleTagReplacement(ele, newTagName) {
    var newTag = document.createElement(newTagName);
    var _iterator2 = _createForOfIteratorHelper(ele.attributes),
      _step2;
    try {
      for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
        var attr = _step2.value;
        newTag.setAttribute(attr.name, attr.value);
      }
    } catch (err) {
      _iterator2.e(err);
    } finally {
      _iterator2.f();
    }
    newTag.innerHTML = ele.innerHTML;
    ele.parentNode.replaceChild(newTag, ele);
    return newTag;
  }
  function preprocessMpMusic(root) {
    var qqmusicEles = _toConsumableArray(root.querySelectorAll('qqmusic'));
    qqmusicEles.forEach(function (ele) {
      return handleTagReplacement(ele, 'mp-common-qqmusic');
    });
  }
  if (!window.__second_open__) {
    updateCustomElementAttrs(window.document, window.mp_profile);
    preprocessMpAudios(window.document, {
      voiceList: window.voiceList,
      nick_name: window.nickname
    });
    preprocessMpMusic(window.document);
  }

  exports.preprocessMpAudios = preprocessMpAudios;
  exports.preprocessMpMusic = preprocessMpMusic;
  exports.updateCustomElementAttrs = updateCustomElementAttrs;
  exports.updateProfileAttr = updateProfileAttr;

  Object.defineProperty(exports, '__esModule', { value: true });

  return exports;

})({});
  &lt;/script&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   var __INLINE_SCRIPT__ = (function () {
  'use strict';

  function _typeof(obj) {
    "@babel/helpers - typeof";

    return _typeof = "function" == typeof Symbol &amp;&amp; "symbol" == typeof Symbol.iterator ? function (obj) {
      return typeof obj;
    } : function (obj) {
      return obj &amp;&amp; "function" == typeof Symbol &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj;
    }, _typeof(obj);
  }

  function _toPrimitive(input, hint) {
    if (_typeof(input) !== "object" || input === null) return input;
    var prim = input[Symbol.toPrimitive];
    if (prim !== undefined) {
      var res = prim.call(input, hint || "default");
      if (_typeof(res) !== "object") return res;
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return (hint === "string" ? String : Number)(input);
  }

  function _toPropertyKey(arg) {
    var key = _toPrimitive(arg, "string");
    return _typeof(key) === "symbol" ? key : String(key);
  }

  function _defineProperty(obj, key, value) {
    key = _toPropertyKey(key);
    if (key in obj) {
      Object.defineProperty(obj, key, {
        value: value,
        enumerable: true,
        configurable: true,
        writable: true
      });
    } else {
      obj[key] = value;
    }
    return obj;
  }

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  function _defineProperties(target, props) {
    for (var i = 0; i &lt; props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor) descriptor.writable = true;
      Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
    }
  }
  function _createClass(Constructor, protoProps, staticProps) {
    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
    if (staticProps) _defineProperties(Constructor, staticProps);
    Object.defineProperty(Constructor, "prototype", {
      writable: false
    });
    return Constructor;
  }

  
  var prefix = '__WXLS__';
  var localStorage = window.localStorage || {
    getItem: function getItem() {},
    setItem: function setItem() {},
    removeItem: function removeItem() {},
    key: function key() {},
    clear: function clear() {
      var _a, _b;
      (_b = (_a = window.localStorage) === null || _a === void 0 ? void 0 : _a.clear) === null || _b === void 0 ? void 0 : _b.call(_a);
    },
    length: 0
  };
  var evictionPolicies = {
    noeviction: function noeviction(data) {
      return data;
    },
    'allkeys-random': function allkeysRandom(data, size) {
      var keys = Object.keys(data);
      var memCnt = 0;
      while (memCnt &lt; size) {
        var len = keys.length;
        var randomKeyIdx = Math.floor(Math.random() * len);
        var randomKey = keys[randomKeyIdx];
        memCnt += JSON.stringify(data[randomKey]).length;
        delete data[randomKey];
        keys = Object.keys(data);
      }
      return data;
    },
    'volatile-ttl': function volatileTtl(data, size) {
      var keys = Object.keys(data);
      keys = keys.sort(function (key1, key2) {
        var d1 = data[key1];
        var d2 = data[key2];
        if (d1.exp &lt; d2.exp) return -1;
        if (d1.exp &gt; d2.exp) return 1;
        return 0;
      });
      var memCnt = 0;
      for (var i = 0; i &lt; keys.length; i++) {
        if (memCnt &gt;= size) break;
        var key = keys[i];
        memCnt += JSON.stringify(data[key]).length;
        delete data[key];
      }
      return data;
    },
    'clear-all': function clearAll() {
      localStorage.clear();
      return {};
    }
  };
  function formatLogMsg(str) {
    return "[WXLS] ".concat(str);
  }
  
  var LS = function () {
    function LS(func, evictionPolicy, logger) {
      _classCallCheck(this, LS);
      this.logger = function () {};
      if (!func) throw 'require function name.';
      this.evictionPolicy = 'noeviction';
      this.key = func;
      if (typeof logger === 'function') {
        this.logger = function (str, type) {
          return logger(formatLogMsg(str), type);
        };
      }
      if (evictionPolicy &amp;&amp; Object.keys(evictionPolicies).indexOf(evictionPolicy) !== -1) {
        this.evictionPolicy = evictionPolicy;
      }
      this.init();
    }
    _createClass(LS, [{
      key: "init",
      value: function init() {
        var _a, _b;
        this.check();
        if (Math.random() * 1000 &lt; 1) {
          (_a = this.logger) === null || _a === void 0 ? void 0 : _a.call(this, "LSlen: ".concat(((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length) || localStorage.length), 'report');
        }
      }
    }, {
      key: "getData",
      value: function getData() {
        var data = LS.getItem(this.key) || '{}';
        try {
          data = JSON.parse(data);
        } catch (e) {
          this.logger("getData error: ".concat(e), 'error');
          localStorage.removeItem(prefix + this.key);
          data = {};
        }
        return data;
      }
    }, {
      key: "check",
      value: function check(isReturn) {
        var data = this.getData();
        var temp = {};
        var now = +new Date();
        var key;
        var val;
        for (key in data) {
          val = data[key];
          if (+val.exp &gt; now) {
            temp[key] = val;
          }
        }
        this.logger("check info: isReturn:".concat(isReturn, " data:").concat(JSON.stringify(temp)), 'info');
        if (isReturn) return temp;
        LS.setItem(this.key, JSON.stringify(temp), this.logger);
      }
    }, {
      key: "set",
      value: function set(key, val, exp) {
        var _a, _b;
        var data = this.check(true);
        data[key] = {
          val: val,
          exp: exp || +new Date()
        };
        try {
          if (localStorage.getItem(prefix + this.key)) localStorage.removeItem(prefix + this.key);
          localStorage.setItem(prefix + this.key, JSON.stringify(data));
          this.logger("first set success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data)), 'success');
        } catch (e) {
          this.logger("first set error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(prefix + this.key, " data:").concat(JSON.stringify(data), " k:").concat(key, " v:").concat(val, " exp:").concat(exp), 'error');
          localStorage.clear();
          LS.setItem(this.key, JSON.stringify(_defineProperty({}, key, {
            val: val,
            exp: exp || +new Date()
          })), this.logger);
        }
      }
    }, {
      key: "get",
      value: function get(key) {
        var data = this.getData();
        data = data[key];
        return data ? data.val || null : null;
      }
    }, {
      key: "remove",
      value: function remove(key) {
        var data = this.getData();
        if (data[key]) delete data[key];
        LS.setItem(this.key, JSON.stringify(data), this.logger);
      }
    }], [{
      key: "getItem",
      value: function getItem(key) {
        key = prefix + key;
        return localStorage.getItem(key);
      }
    }, {
      key: "setItem",
      value: function setItem(key, val, logger) {
        var _a, _b;
        key = prefix + key;
        var n = 3;
        while (n--) {
          try {
            if (localStorage.getItem(key)) localStorage.removeItem(key);
            localStorage.setItem(key, val);
            typeof logger === 'function' &amp;&amp; logger("setItem success: LSlen:".concat((_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.length, " key:").concat(key, " val:").concat(val), 'success');
            break;
          } catch (e) {
            typeof logger === 'function' &amp;&amp; logger("setItem error: LSlen:".concat((_b = window === null || window === void 0 ? void 0 : window.localStorage) === null || _b === void 0 ? void 0 : _b.length, " error:").concat(e, " key:").concat(key, " val:").concat(val), 'error');
            LS.clear();
          }
        }
      }
    }, {
      key: "clear",
      value: function clear() {
        var i;
        var k;
        for (i = localStorage.length - 1; i &gt;= 0; i--) {
          k = localStorage.key(i);
          if (k.indexOf(prefix) == 0) {
            localStorage.removeItem(k);
          }
        }
      }
    }, {
      key: "getSupportEvicationPolicy",
      value: function getSupportEvicationPolicy() {
        return Object.keys(evictionPolicies);
      }
    }]);
    return LS;
  }();

  var key = 'stream_last_read_pos';
  new LS(key);
  var interactionStatusLS = new LS('bottom_interaction_status');
  function getInteractionStatus() {
    var opt = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};
    var biz = opt.biz || window.biz;
    var sn = opt.sn || window.sn;
    var mid = opt.mid || window.mid;
    var idx = opt.idx || window.idx;
    var interactionStatusKey = [biz, sn, mid, idx].join('_');
    var interactionStatusInfo = interactionStatusLS.get(interactionStatusKey) || {};
    if (Object.prototype.toString.call(interactionStatusInfo) !== '[object Object]' || window.cgiData &amp;&amp; window.cgiData.trans_appmsg_info &amp;&amp; window.cgiData.trans_appmsg_info.trans_type === 1
    ) {
      interactionStatusInfo = {};
    }
    var interactionSubscribeInfo = interactionStatusLS.get(biz + 'interaction_subscribe') || {};
    interactionStatusInfo.is_subscribed = interactionSubscribeInfo.is_subscribed || false;
    return interactionStatusInfo;
  }

  
  var formatReadNum = function formatReadNum(value) {
    var result = '';
    var unit = window.LANG === 'en' ? 'k' : '万';
    if (parseInt(value, 10) &gt; 100000) {
      result = 10 + unit + '+';
    } else if (parseInt(value, 10) &gt; 10000 &amp;&amp; parseInt(value, 10) &lt;= 100000) {
      var num = "".concat(parseInt(value, 10) / (unit === 'k' ? 1000 : 10000));
      var dotIndex = num.indexOf('.');
      if (dotIndex === -1) {
        result = "".concat(num).concat(unit);
      } else {
        result = "".concat(num.substr(0, dotIndex), ".").concat(num.charAt(dotIndex + 1)).concat(unit);
      }
    } else if (parseInt(value, 10) === 0) {
      result = '';
    } else {
      result = value || '';
    }
    return result;
  };
  var formatTime = function formatTime(value) {
    var time = new Date(value * 1000);
    var year = time.getFullYear();
    var month = time.getMonth() + 1;
    var day = time.getDate();
    return year + '年' + month + '月' + day + '日';
  };
  var __setPageContentBottomData = function __setPageContentBottomData(cgiData) {
    if (!cgiData) return;
    try {
      var tempReadNum = document.getElementById('js_btm_temp_read_num');
      var tempModifyTime = document.getElementById('js_btm_temp_modify_time');
      var claimSourceContent = document.getElementById('js_claim_source_content');
      var claimSourceInfo = typeof cgiData.claim_source === 'string' ? JSON.parse(cgiData.claim_source) : cgiData.claim_source;
      if (claimSourceContent &amp;&amp; claimSourceInfo) {
        var Regions = ['香港', '澳门', '台湾'];
        var claimSourceType;
        if (claimSourceInfo.claim_source_type === 2) {
          if (claimSourceInfo.media_source_type_info.media_source_from === 1) {
            claimSourceType = "素材来源于" + claimSourceInfo.media_source_type_info.biz_nickname;
          } else {
            claimSourceType = claimSourceInfo.claim_source;
          }
          var claimSourceTime = formatTime(claimSourceInfo.media_source_type_info.news_time);
          var claimSourcePosition = '';
          var position = claimSourceInfo.media_source_type_info.news_position_info;
          if (!position) {
            return '';
          }
          if (position.province) {
            claimSourcePosition += Regions.includes(position.province) ? "中国" + position.province : position.province;
          }
          if (position.city) {
            claimSourcePosition += position.city;
          }
          if (claimSourceTime || claimSourcePosition) {
            claimSourceContent.innerText = "作者提示: " + claimSourceType + '，' + "文中事件发生于" + claimSourceTime + ' ' + claimSourcePosition;
          } else {
            claimSourceContent.innerText = "作者提示: " + claimSourceType;
          }
        } else if (claimSourceInfo.claim_source) {
          claimSourceType = claimSourceInfo.claim_source;
          claimSourceContent.innerText = "作者提示: " + claimSourceType;
        }
      }
      var interactionStatus = getInteractionStatus({
        biz: cgiData.biz,
        mid: cgiData.mid,
        sn: cgiData.sn,
        idx: cgiData.idx
      });
      var readNum = interactionStatus.read_num * 1 ? Math.max(interactionStatus.read_num * 1, cgiData.read_num) : cgiData.read_num || 0;
      window.__inline_read_num = readNum;
      if (readNum &amp;&amp; tempReadNum) {
        tempReadNum.innerText = formatReadNum(readNum);
      }
      if (cgiData.modify_time &amp;&amp; tempModifyTime) {
        tempModifyTime.innerText = formatTime(cgiData.modify_time);
      }
    } catch (error) {
      console.log(error);
    }
  };
  if (!window.__second_open__) {
    var cgiData = {
      claim_source: '',
      modify_time: '' * 1,
      read_num: '' * 1,
      idx: ''  ,
      biz: '' ,
      mid: ''  ,
      sn: ''  
    };
    __setPageContentBottomData(cgiData);
    window.__setPageContentBottomData = __setPageContentBottomData;
  }

  return __setPageContentBottomData;

})();
  &lt;/script&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   (function(_g){
    _g.appmsg_like_type = "2" * 1 ? "2" * 1 : 1;
   
    _g.clientversion = "";
    _g.passparam = "";
    if(!_g.msg_link) {
      _g.msg_link = "https://mp.weixin.qq.com/s/Ot3Jei2u_-t2vDOF5qxy6A";
    }
    _g.appmsg_type = "9";
    _g.devicetype = "";
    _g.kanyikan_video_educate_pic = "//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/pic/pic_like_comment_primary7e6959.png";
    _g.kanyikan_educate_pic = "//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/images/pic/pic_like_comment7e6959.png";
})(window);
  &lt;/script&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   (function() {
  var ua = navigator.userAgent;
  if (ua.indexOf("MicroMessenger") != -1 &amp;&amp; ua.indexOf("Android") != -1){
    var script = document.createElement('script');
    var head = document.getElementsByTagName('head')[0];
    script.type = 'text/javascript';
    script.src = "https://midas.gtimg.cn/h5sdk/js/api/h5sdk.js";
    head.appendChild(script);
  }
})();
  &lt;/script&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   var real_show_page_time = +new Date();
if (!!window.addEventListener){
  window.addEventListener("load", function(){
    window.onload_endtime = +new Date();
  });
}
  &lt;/script&gt;
  &lt;script nonce="579543733" reportloaderror="" type="text/javascript"&gt;
   (function() {
  const ua = navigator.userAgent;
  const is_ios = /(iPhone|iPad|iPod|iOS)/i.test(ua);
  const is_wp = /Windows\sPhone/i.test(ua);
  const is_mac = /mac\sos/i.test(ua) &amp;&amp; !is_ios;
  const is_windows = /windows\snt/i.test(ua) &amp;&amp; !is_wp;
  if ((is_mac &amp;&amp; !is_ios) || (is_windows &amp;&amp; !is_wp)) {
    var script = document.createElement('script');
    var head = document.getElementsByTagName('head')[0];
    script.type = 'text/javascript';
    script.src = "https://res.wx.qq.com/connect/zh_CN/htmledition/js/wxopensdk.js";
    head.appendChild(script);
  }
})();
  &lt;/script&gt;
  &lt;script nomodule="" nonce="579543733" reportloaderror=""&gt;
   new Image().src='https://mp.weixin.qq.com/mp/jsmonitor?idkey=66881_111_1&amp;t='+Math.random();
  &lt;/script&gt;
  &lt;script nomodule="" nonce="579543733" reportloaderror=""&gt;
   !function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&amp;&amp;"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",(function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()}),!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();
  &lt;/script&gt;
  &lt;script crossorigin="" id="vite-legacy-polyfill" nomodule="" nonce="579543733" reportloaderror="" src="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/polyfills-legacy.mpw20sb7542cbae6.js"&gt;
  &lt;/script&gt;
  &lt;script crossorigin="" data-src="//res.wx.qq.com/mmbizappmsg/zh_CN/htmledition/js/assets/appmsg-legacy.mpw20sb7cf58359e.js" id="vite-legacy-entry" nomodule="" nonce="579543733" reportloaderror=""&gt;
   System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))
  &lt;/script&gt;
 &lt;/body&gt;
&lt;/html&gt;</content:encoded><link>https://mp.weixin.qq.com/s/Ot3Jei2u_-t2vDOF5qxy6A</link><pubDate>Sat, 30 May 2026 15:18:00 +0800</pubDate></item><item><id>3877547210-2247512437_1</id><title>本地跑大模型，这次终于靠谱了。</title><description>HuggingFace 上面堆着200多万个模型仓库。          它们的参数量从 1B 一直覆盖到 100B，量化方式从 Q2 一直到 Q8，格式则涵盖了 GGUF、AWQ 等等。          想要搞清楚自己电脑，能够跑哪些模型，一般需要折腾上好一阵子。          就算费劲找到一个能塞进显存的模型，真正让它跑起来会发现速度只有 3 tok/s，说一句话就要等上半分钟。    ...</description><guid>https://mp.weixin.qq.com/s/OSTfYeppPaU-H1quFTMfKg</guid><enclosure url="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblK8ggBka9zYAOQjREmtze0prfUeiaJDXWuYXLg5fjIwD5xCF5UFX9I9Kg2movjXagkcYiaibsH4fre5dB3rH4Sbl6FGRWGia2nVnEU/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1141" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   HuggingFace 上面堆着200多万个模型仓库。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它们的参数量从 1B 一直覆盖到 100B，量化方式从 Q2 一直到 Q8，格式则涵盖了 GGUF、AWQ 等等。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   想要搞清楚自己电脑，能够跑哪些模型，一般需要折腾上好一阵子。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   就算费劲找到一个能塞进显存的模型，真正让它跑起来会发现速度只有 3 tok/s，说一句话就要等上半分钟。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   又要重新找，重新下载，选择成本极高。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   这时候，一个叫 whichllm 的工具就显得很有意思了。这个 CLI 工具在 GitHub 上的星数，已悄悄涨到了 2000 多颗。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    它会根据你电脑的配置，推荐出哪些模型在你的电脑上跑的又快又好。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;span style="width: 680px !important; height: 522px !important; overflow: hidden;"&gt;
   &lt;div id="page-content"&gt;
    &lt;!--S 全屏播放 full_screen_mv--&gt;
    &lt;div id="js_mpvedio_wrapper_wxv_4537047848571322375" style="position:relative;height:100%"&gt;
     &lt;div class="add_bg_color appmsg_video"&gt;
      &lt;div class="video_tail_module video_screen_half" id="js_video_tail_panel_wxv_4537047848571322375" style="display: none;"&gt;
       &lt;div class="video_tail_module__hd" id="js_video_tail_hd"&gt;
        &lt;div class="account_info_wrp"&gt;
         &lt;div class="profile_info_wrp js_go_profile"&gt;
          &lt;img/&gt;
          &lt;div class="account_name" id="js_tail_panel_account_name"&gt;
          &lt;/div&gt;
          &lt;div class="subscription_info subscription_success"&gt;
           &lt;div class="account_subscription_tips js_subscription_success" id="js_subscription_success" style="display: none;"&gt;
            已关注
           &lt;/div&gt;
           &lt;i class="account_link_icon js_profile_icon" id="js_profile_icon"&gt;
           &lt;/i&gt;
          &lt;/div&gt;
         &lt;/div&gt;
         &lt;div class="btn_account_subscription js_btn_account_subscription" id="js_btn_account_subscription" style="display: none;"&gt;
          关注
         &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class="opr_wrp"&gt;
         &lt;span&gt;
          &lt;i class="opr_item refresh_icon"&gt;
          &lt;/i&gt;
          &lt;span&gt;
           重播
          &lt;/span&gt;
         &lt;/span&gt;
         &lt;span style="display: none;"&gt;
          &lt;i class="opr_item share_icon"&gt;
          &lt;/i&gt;
          &lt;span&gt;
           分享
          &lt;/span&gt;
         &lt;/span&gt;
         &lt;!--点赞后 加className selected--&gt;
         &lt;span style="display: none;"&gt;
          &lt;i class="opr_item like_icon"&gt;
          &lt;/i&gt;
          &lt;span&gt;
           赞
          &lt;/span&gt;
         &lt;/span&gt;
         &lt;!-- &lt;span class="opr_item_wrp recommend_item_wrp" id="js_tail_channel_button"               style="display: none;"&gt;               &lt;i class="opr_item video-logo_icon"&gt;&lt;/i&gt;               &lt;span class="opr_item_text"&gt;随便看看&lt;/span&gt;             &lt;/span&gt; --&gt;
        &lt;/div&gt;
       &lt;/div&gt;
       &lt;!-- 有拓展内容 --&gt;
       &lt;div class="have_expand" id="js_expand_area"&gt;
       &lt;/div&gt;
       &lt;!-- 广告内容 --&gt;
       &lt;div class="ad_area" id="js_tail_video_ad_area"&gt;
       &lt;/div&gt;
      &lt;/div&gt;
     &lt;/div&gt;
     &lt;div class="feed-wrapper"&gt;
      &lt;div aria-hidden="true" aria-modal="true" class="wx_bottom_modal_wrp player_relate_video_dialog weui-half-screen-dialog_fold" hidewhensideslip="" role="dialog" style="visibility: hidden; display: none;" tabindex="0"&gt;
       &lt;div class="wx_bottom_modal_mask_fixed"&gt;
       &lt;/div&gt;
       &lt;div class="weui-mask wx_bottom_modal_mask" style="--opacity: 1; display: none;"&gt;
       &lt;/div&gt;
       &lt;div class="weui-half-screen-dialog wx_bottom_modal" style="max-height: none;"&gt;
        &lt;div class="wx_bottom_modal_group_container" style="transform: translateX(calc(0% + 0px)); max-height: none;"&gt;
         &lt;div aria-hidden="false" class="wx_bottom_modal_group" style="left: 0%; max-height: none;"&gt;
          &lt;div class="weui-half-screen-dialog__hd__wrp"&gt;
           &lt;div class="weui-half-screen-dialog__hd"&gt;
            &lt;div class="weui-half-screen-dialog__hd__side"&gt;
             &lt;button class="weui-btn_icon weui-wa-hotarea"&gt;
              关闭
              &lt;i class="weui-icon-half-screen-close"&gt;
              &lt;/i&gt;
             &lt;/button&gt;
            &lt;/div&gt;
            &lt;div class="weui-half-screen-dialog__hd__main"&gt;
             &lt;strong class="weui-half-screen-dialog__title"&gt;
              观看更多
             &lt;/strong&gt;
            &lt;/div&gt;
            &lt;div class="weui-half-screen-dialog__hd__side"&gt;
             &lt;!-- --&gt;
             &lt;button class="weui-btn_icon weui-wa-hotarea" style="display: none;"&gt;
              更多
              &lt;i class="weui-icon-more"&gt;
              &lt;/i&gt;
             &lt;/button&gt;
            &lt;/div&gt;
           &lt;/div&gt;
          &lt;/div&gt;
          &lt;div class="weui-half-screen-dialog__bd" id="contentAreaWrp"&gt;
           &lt;div class="weui-loadmore" style="display: none;"&gt;
            &lt;i class="weui-loading"&gt;
            &lt;/i&gt;
           &lt;/div&gt;
           &lt;div class="wx_bottom_modal_msg_wrp" style="display: none;"&gt;
            &lt;div class="wx_bottom_modal_msg"&gt;
             &lt;i class="weui-loading"&gt;
             &lt;/i&gt;
            &lt;/div&gt;
           &lt;/div&gt;
           &lt;div class="weui-loadmore weui-loadmore_line weui-loadmore_dot" style="display: none;"&gt;
            &lt;span&gt;
            &lt;/span&gt;
           &lt;/div&gt;
           &lt;div class=""&gt;
            &lt;ul class="player_relate_video_list" id="js_player_relate_video_list"&gt;
            &lt;/ul&gt;
            &lt;div class="weui-loadmore weui-loadmore_default weui-loadmore_line weui-loadmore_dot player_video_list_end_line"&gt;
             &lt;span&gt;
             &lt;/span&gt;
            &lt;/div&gt;
           &lt;/div&gt;
           &lt;div class="weui-loadmore" style="display: none;"&gt;
            &lt;i class="weui-loading"&gt;
            &lt;/i&gt;
           &lt;/div&gt;
          &lt;/div&gt;
          &lt;!-- --&gt;
         &lt;/div&gt;
        &lt;/div&gt;
       &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class="js_video_fullscreen_profile video_full-screen__head video_full-screen__head_fixed" style="padding-top: 16px; transform: translate3d(0px, 0px, 0px); display: none;"&gt;
       &lt;div class="video_full-screen__head__inner"&gt;
        &lt;div class="video_full-screen__head__body"&gt;
         &lt;div class="js_video_fullscreen_profile_exit video_full-screen__head__item"&gt;
          &lt;div class="video_full-screen__article-title"&gt;
           &lt;button class="weui-wa-hotarea js_video_fullscreen_profile_exit reset_btn video_close_fullscreen_btn"&gt;
            &lt;i class="weui-icon-close"&gt;
             退出全屏
            &lt;/i&gt;
           &lt;/button&gt;
          &lt;/div&gt;
         &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class="video_full-screen__head__ft"&gt;
         &lt;a aria-label="更多操作" class="video_menu_more js_video_fullscreen_menu_more weui-wa-hotarea_before" href="javascript:;" role="button"&gt;
          &lt;i class="weui-icon-outlined-more"&gt;
          &lt;/i&gt;
         &lt;/a&gt;
        &lt;/div&gt;
       &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class="infinity-list__wrapper" style="height: 510px;"&gt;
       &lt;div class="" style="height: 510px; overflow: visible;"&gt;
        &lt;div class="infinity-list__page destory-enter-to" data-key="wxv_4537047848571322375" infinity-idx="0" style="height: 510px; position: absolute; top: 0px; opacity: 1;"&gt;
         &lt;div class="mp-video-player" data-v-f4ee5450="" style="height: 100%;"&gt;
          &lt;div class="js_mpvedio page_video_wrapper" data-v-c66e8e28="" data-v-f4ee5450="" id="js_mpvedio_1780045295925_78659217559"&gt;
           &lt;div class="js_page_video page_video ratio_primary align_upper_center video_skin_primary page_video_without-control page_video_skin-normal" data-v-c66e8e28="" style="display: block; width: 100%; height: 510px;"&gt;
            &lt;svg class="border_filler border_filler_lefttop" data-v-c66e8e28="" height="4px" viewbox="0 0 2 2" width="4px" xmlns="http://www.w3.org/2000/svg"&gt;
             &lt;path d="M1.85.005A2 2 0 000 2V0h2z" data-v-c66e8e28="" fill="#ffffff" fill-rule="evenodd"&gt;
             &lt;/path&gt;
            &lt;/svg&gt;
            &lt;svg class="border_filler border_filler_righttop" data-v-c66e8e28="" height="4px" viewbox="0 0 2 2" width="4px" xmlns="http://www.w3.org/2000/svg"&gt;
             &lt;path d="M1.85.005A2 2 0 000 2V0h2z" data-v-c66e8e28="" fill="#ffffff" fill-rule="evenodd"&gt;
             &lt;/path&gt;
            &lt;/svg&gt;
            &lt;svg class="border_filler border_filler_rightbot" data-v-c66e8e28="" height="4px" viewbox="0 0 2 2" width="4px" xmlns="http://www.w3.org/2000/svg"&gt;
             &lt;path d="M1.85.005A2 2 0 000 2V0h2z" data-v-c66e8e28="" fill="#ffffff" fill-rule="evenodd"&gt;
             &lt;/path&gt;
            &lt;/svg&gt;
            &lt;svg class="border_filler border_filler_leftbot" data-v-c66e8e28="" height="4px" viewbox="0 0 2 2" width="4px" xmlns="http://www.w3.org/2000/svg"&gt;
             &lt;path d="M1.85.005A2 2 0 000 2V0h2z" data-v-c66e8e28="" fill="#ffffff" fill-rule="evenodd"&gt;
             &lt;/path&gt;
            &lt;/svg&gt;
            &lt;div class="js_video_fullscreen_profile video_full-screen__head" data-v-c66e8e28="" style="display: none;"&gt;
             &lt;div class="video_full-screen__head__inner" data-v-c66e8e28=""&gt;
              &lt;div class="video_full-screen__head__body" data-v-c66e8e28=""&gt;
               &lt;div class="js_video_fullscreen_profile_exit video_full-screen__head__item" data-v-c66e8e28=""&gt;
                &lt;div class="video_full-screen__article-title" data-v-c66e8e28=""&gt;
                 &lt;button class="weui-wa-hotarea js_video_fullscreen_profile_exit reset_btn video_close_fullscreen_btn" data-v-c66e8e28="" style="display: none;"&gt;
                  &lt;i class="weui-icon-back-arrow" data-v-c66e8e28=""&gt;
                   切换到竖屏全屏
                  &lt;/i&gt;
                 &lt;/button&gt;
                 &lt;button class="weui-wa-hotarea js_video_fullscreen_profile_exit reset_btn video_close_fullscreen_btn" data-v-c66e8e28="" style="display: none;"&gt;
                  &lt;i class="weui-icon-close" data-v-c66e8e28=""&gt;
                   退出全屏
                  &lt;/i&gt;
                 &lt;/button&gt;
                 &lt;div class="video_full-screen__account" data-v-c66e8e28="" role="button" style="display: none;"&gt;
                  &lt;div class="video_full-screen__account-info" data-v-c66e8e28=""&gt;
                   &lt;span style='background: url("http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png") center center / cover no-repeat;'&gt;
                   &lt;/span&gt;
                   &lt;span&gt;
                    开源日记
                   &lt;/span&gt;
                   &lt;button class="reset_btn video_profile_follow_btn weui-wa-hotarea" data-v-c66e8e28="" style="display: none;" type="button"&gt;
                    已关注
                   &lt;/button&gt;
                  &lt;/div&gt;
                 &lt;/div&gt;
                &lt;/div&gt;
               &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="video_full-screen__head__ft" data-v-c66e8e28=""&gt;
               &lt;a aria-label="更多操作" class="video_menu_more js_video_fullscreen_menu_more weui-wa-hotarea_before" data-v-c66e8e28="" href="javascript:;" role="button" style="display: none;"&gt;
                &lt;i class="weui-icon-outlined-more" data-v-c66e8e28=""&gt;
                &lt;/i&gt;
               &lt;/a&gt;
              &lt;/div&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="js_share_btn_contain top_screen_opr video_share_opr" data-v-c66e8e28="" style="display: none;"&gt;
             &lt;div class="wx_video_share_area" data-v-c66e8e28=""&gt;
              &lt;button class="js_share_btn wx_video_share_btn weui-wa-hotarea" data-v-c66e8e28="" type="button"&gt;
               分享视频
              &lt;/button&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div aria-label="加载中" class="wrp_loading js_loading" data-v-c66e8e28="" role="alert" style="display: none;"&gt;
             &lt;span&gt;
              &lt;span&gt;
              &lt;/span&gt;
             &lt;/span&gt;
            &lt;/div&gt;
            &lt;div class="poster_cover" data-v-c66e8e28="" style='background-image: url("http://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblI0BoD3bGUlGbKUW40ViaCklvD9yshrFhQ7KTjOy40qjhYugEwYgzBibMOeUgtFo35AvF9ic61p7CNlcyibmcQFxESTw8cAOialbeAw/640?wx_fmt=jpeg&amp;amp;wxfrom=16"); background-size: contain; z-index: 10;'&gt;
            &lt;/div&gt;
            &lt;div class="full_screen_opr wx_video_play_opr" data-v-c66e8e28="" style=""&gt;
             &lt;button class="mid_play_box reset_btn" data-v-c66e8e28="" type="button"&gt;
              &lt;i aria-label="播放视频" class="pic_mid_play" data-v-c66e8e28=""&gt;
              &lt;/i&gt;
              &lt;span&gt;
               ，时长
              &lt;/span&gt;
              &lt;span&gt;
               00:18
              &lt;/span&gt;
             &lt;/button&gt;
            &lt;/div&gt;
            &lt;!-- --&gt;
            &lt;div class="top_screen_opr wx_video_flow_wrap" data-v-c66e8e28="" role="alert" style="display: none;"&gt;
             &lt;div class="wx_video_flow" data-v-c66e8e28=""&gt;
              &lt;p&gt;
              &lt;/p&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="mid_opr fast_pre_next" data-v-c66e8e28="" style="display: none;"&gt;
             &lt;div class="video_processor_bar" data-v-c66e8e28=""&gt;
              &lt;div class="processor_bar_inner js_forward_bar" data-v-c66e8e28="" style="width: 0%;"&gt;
              &lt;/div&gt;
             &lt;/div&gt;
             &lt;p&gt;
              &lt;span&gt;
               0
              &lt;/span&gt;
              &lt;span&gt;
               /
              &lt;/span&gt;
              &lt;span&gt;
               0
              &lt;/span&gt;
             &lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="wx_video_progress_msg full_screen_opr" data-v-c66e8e28="" role="alert" style="display: none;"&gt;
             &lt;div class="wx_video_progress_msg_inner" data-v-c66e8e28=""&gt;
              &lt;span&gt;
               00:00
              &lt;/span&gt;
              &lt;span&gt;
               /
              &lt;/span&gt;
              &lt;span&gt;
               00:18
              &lt;/span&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="video_fullscreen_mask" data-v-c66e8e28="" style="display: none;"&gt;
            &lt;/div&gt;
            &lt;div class="video_screen_mode_switch" data-v-c66e8e28="" style="bottom: calc(50% - 366px); display: none;"&gt;
             &lt;button class="reset_btn video_screen_mode_switch_btn weui-wa-hotarea" data-v-c66e8e28="" type="button"&gt;
              切换到横屏模式
             &lt;/button&gt;
            &lt;/div&gt;
            &lt;div class="full_screen_opr wx_video_pause_full_mod" data-v-c66e8e28="" style="display: none;"&gt;
             &lt;button class="reset_btn wx_video_pause_full_btn" data-v-c66e8e28="" type="button"&gt;
              继续播放
             &lt;/button&gt;
            &lt;/div&gt;
            &lt;input aria-hidden="true" class="aria_hidden_abs" data-v-c66e8e28="" title="显示工具栏" type="checkbox"/&gt;
            &lt;div class="js_control video_opr video_opr_normal padding_play_bar" data-v-c66e8e28=""&gt;
             &lt;div class="opr_inner" data-v-c66e8e28=""&gt;
              &lt;div class="opr_inner_fl" data-v-c66e8e28=""&gt;
               &lt;div class="js_play_bar_wrapper wrp_play_bar wrp_play_bar_hide_speed-dot" data-v-c66e8e28="" style="display: none;"&gt;
                &lt;div class="js_progress_bar wrp_progress" data-v-c66e8e28="" style="padding-top: 6px; padding-bottom: 0px;"&gt;
                 &lt;div class="progress_bar" data-v-c66e8e28=""&gt;
                  &lt;div class="background_bar" data-v-c66e8e28=""&gt;
                  &lt;/div&gt;
                  &lt;div aria-labelledby="ariaPlayedCurrent" class="js_played_bar played_bar" data-v-c66e8e28="" role="option" style="width: 0%;" title="按住可调"&gt;
                   &lt;span&gt;
                    进度条，百分之0
                   &lt;/span&gt;
                  &lt;/div&gt;
                  &lt;div class="js_buffer_bar buffer_bar" data-v-c66e8e28="" style="width: 0%;"&gt;
                  &lt;/div&gt;
                  &lt;!-- --&gt;
                  &lt;div class="weui-wa-hotarea js_played_speed_cnt wrp_speed_dot" data-v-c66e8e28="" style="left: 0%;"&gt;
                   &lt;i class="speed_dot" data-v-c66e8e28=""&gt;
                   &lt;/i&gt;
                  &lt;/div&gt;
                 &lt;/div&gt;
                &lt;/div&gt;
               &lt;/div&gt;
              &lt;/div&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="js_control video_opr video_opr_sns" data-v-c66e8e28="" style="bottom: 0px; display: none;"&gt;
             &lt;div class="opr_inner" data-v-c66e8e28=""&gt;
              &lt;div class="opr_inner_fl" data-v-c66e8e28=""&gt;
               &lt;div class="js_switch weui-wa-hotarea switch switch_on" data-v-c66e8e28=""&gt;
                &lt;a class="btn_opr" data-v-c66e8e28="" href="javascript:;" role="button"&gt;
                 播放
                &lt;/a&gt;
               &lt;/div&gt;
               &lt;div data-v-c66e8e28="" role="option"&gt;
                &lt;div class="played_time js_now_play_time" data-v-c66e8e28=""&gt;
                 00:00
                &lt;/div&gt;
                &lt;span&gt;
                 /
                &lt;/span&gt;
                &lt;div class="total_time js_total_time" data-v-c66e8e28=""&gt;
                 00:18
                &lt;/div&gt;
               &lt;/div&gt;
               &lt;!-- --&gt;
               &lt;div class="total_time js_total_time" data-v-c66e8e28="" role="option" style="display: none;"&gt;
                00:18
               &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="opr_inner_fr" data-v-c66e8e28=""&gt;
               &lt;!-- --&gt;
               &lt;!-- --&gt;
               &lt;!-- --&gt;
               &lt;div class="weui-wa-hotarea js_full_screen_control screenSize_control full" data-v-c66e8e28="" role="button"&gt;
                &lt;i class="icon_control" data-v-c66e8e28=""&gt;
                 全屏
                &lt;/i&gt;
               &lt;/div&gt;
              &lt;/div&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="js-toast weui-toast weui-toast_text" data-v-c66e8e28="" role="alert" style="display: none;"&gt;
             &lt;p&gt;
             &lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="full_screen_opr video_quick_play_context" data-v-c66e8e28="" role="alert" style="display: none;"&gt;
             &lt;div class="video_quick_play_msg" data-v-c66e8e28=""&gt;
              &lt;i class="icon_video_quick_play" data-v-c66e8e28=""&gt;
              &lt;/i&gt;
              倍速播放中
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="js_sub_setting video_full-screen__footer video_full-screen__footer__sub-setting hide" data-v-c66e8e28=""&gt;
             &lt;div class="video_full-screen__sub-setting video_full-screen__sub-setting__speed js_playback_mode_select" data-v-c66e8e28="" style="display: none;"&gt;
              &lt;a class="video_full-screen__sub-setting__item js_playback_0" data-v-c66e8e28="" href="javascript:;"&gt;
               0.5倍
              &lt;/a&gt;
              &lt;a class="video_full-screen__sub-setting__item js_playback_1" data-v-c66e8e28="" href="javascript:;"&gt;
               0.75倍
              &lt;/a&gt;
              &lt;a class="video_full-screen__sub-setting__item current js_playback_2" data-v-c66e8e28="" href="javascript:;"&gt;
               1.0倍
              &lt;/a&gt;
              &lt;a class="video_full-screen__sub-setting__item js_playback_3" data-v-c66e8e28="" href="javascript:;"&gt;
               1.5倍
              &lt;/a&gt;
              &lt;a class="video_full-screen__sub-setting__item js_playback_4" data-v-c66e8e28="" href="javascript:;"&gt;
               2.0倍
              &lt;/a&gt;
             &lt;/div&gt;
             &lt;div class="video_full-screen__sub-setting video_full-screen__sub-setting__ratio js_play_mode_select" data-v-c66e8e28="" style="display: none;"&gt;
              &lt;a class="video_full-screen__sub-setting__item current js_resolution_0" data-v-c66e8e28="" href="javascript:;"&gt;
               超清
              &lt;/a&gt;
              &lt;a class="video_full-screen__sub-setting__item js_resolution_1" data-v-c66e8e28="" href="javascript:;"&gt;
               流畅
              &lt;/a&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="js_inner inner not_fullscreen" data-v-c66e8e28=""&gt;
             &lt;div class="js_video_poster video_poster" data-v-c66e8e28=""&gt;
              &lt;div class="video_mask" data-v-c66e8e28=""&gt;
              &lt;/div&gt;
              &lt;video class="" controlslist="nodownload" crossorigin="anonymous" data-v-c66e8e28="" playsinline="isiPhoneShowPlaysinline" poster="http://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblI0BoD3bGUlGbKUW40ViaCklvD9yshrFhQ7KTjOy40qjhYugEwYgzBibMOeUgtFo35AvF9ic61p7CNlcyibmcQFxESTw8cAOialbeAw/0?wx_fmt=jpeg&amp;amp;wxfrom=16" preload="metadata" src="https://mpvideo.qpic.cn/0bc3cuadmaaaqeam4uqysnvfafodgykqanqa.f10102.mp4?dis_k=2047e99a24bcd5c5b1790e4384a220c5&amp;amp;dis_t=1780045291&amp;amp;play_scene=10120&amp;amp;auth_info=U6eusKATFm0Vsf+i004uGUdBZTcZM2wxQiI0RC5LUiZ1EFIMSVhpF2QXSjlEdSI6&amp;amp;auth_key=80409ffc20d508b3d733132c1f8b5cd7&amp;amp;vid=wxv_4537047848571322375&amp;amp;format_id=10102&amp;amp;support_redirect=0&amp;amp;mmversion=false" style="display: block; width: 680px; height: 510px;" webkit-playsinline="isiPhoneShowPlaysinline"&gt;
               您的浏览器不支持 video 标签
              &lt;/video&gt;
             &lt;/div&gt;
             &lt;div class="video_poster__info__play" data-v-c66e8e28="" data-v-f4ee5450="" style="display: none;"&gt;
              &lt;i class="" data-v-c66e8e28="" data-v-f4ee5450=""&gt;
              &lt;/i&gt;
             &lt;/div&gt;
             &lt;div class="video_poster__info" data-v-c66e8e28="" data-v-f4ee5450="" style="display: none;"&gt;
              &lt;p style="font-size: 17px;"&gt;
               继续观看
              &lt;/p&gt;
              &lt;p style="font-size: 12px;"&gt;
               本地跑大模型，这次终于靠谱了。
              &lt;/p&gt;
             &lt;/div&gt;
             &lt;div class="video_poster__info__mask" data-v-c66e8e28="" data-v-f4ee5450="" style="width: 100%; display: none;"&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="video_profile_area" data-v-c66e8e28="" style="display: none;"&gt;
             &lt;div data-v-c66e8e28=""&gt;
              &lt;button class="reset_btn video_profile_relate_video_btn js_wx_tap_highlight wx_tap_link" data-v-c66e8e28="" data-v-f4ee5450="" style="display: none;"&gt;
               观看更多
               &lt;i class="weui-icon-filled-arrow video_profile_relate_video_btn_arrow"&gt;
               &lt;/i&gt;
              &lt;/button&gt;
             &lt;/div&gt;
             &lt;div data-v-c66e8e28="" role="link" style="width: fit-content; max-width: 100%;" tabindex="0"&gt;
              &lt;div class="weui-wa-hotarea video_profile_desc_wrp" data-v-c66e8e28="" role="option"&gt;
               &lt;div class="icon_appmsg_tag_wrp" data-v-c66e8e28="" style="display: none;"&gt;
                &lt;div class="icon_appmsg_tag" data-v-c66e8e28=""&gt;
                 转载
                &lt;/div&gt;
               &lt;/div&gt;
               &lt;div class="weui-hidden_abs" data-v-c66e8e28=""&gt;
                ,
               &lt;/div&gt;
               &lt;div class="video_profile_desc" data-v-c66e8e28=""&gt;
                本地跑大模型，这次终于靠谱了。
               &lt;/div&gt;
               &lt;i class="weui-icon-outlined-arrow video_profile_desc_arrow" data-v-c66e8e28=""&gt;
               &lt;/i&gt;
              &lt;/div&gt;
             &lt;/div&gt;
             &lt;div class="video_profile_wrp weui-flex" data-v-c66e8e28=""&gt;
              &lt;div class="video_profile weui-flex weui-flex__item" data-v-c66e8e28=""&gt;
               &lt;span style='background: url("http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png") center center / cover no-repeat;'&gt;
               &lt;/span&gt;
               &lt;span&gt;
                开源日记
               &lt;/span&gt;
               &lt;button class="reset_btn video_profile_follow_btn weui-wa-hotarea" data-v-c66e8e28="" style="display: none;" type="button"&gt;
                已关注
               &lt;/button&gt;
              &lt;/div&gt;
              &lt;div class="video_sns_context" data-v-c66e8e28="" style="display: none;"&gt;
               &lt;button class="video_sns_btn video_sns_btn_share" data-v-c66e8e28="" style="display: none;" type="button"&gt;
                &lt;span&gt;
                 分享
                &lt;/span&gt;
               &lt;/button&gt;
               &lt;button class="video_sns_btn video_sns_btn_praise" data-v-c66e8e28="" title="" type="button"&gt;
                &lt;span&gt;
                 点赞
                &lt;/span&gt;
               &lt;/button&gt;
               &lt;button class="video_sns_btn video_sns_btn_love" data-v-c66e8e28="" title="" type="button"&gt;
                &lt;span&gt;
                 在看
                &lt;/span&gt;
               &lt;/button&gt;
              &lt;/div&gt;
              &lt;div class="like_comment_wrp" data-v-c66e8e28="" role="alert" style="display: none;"&gt;
               &lt;div class="like_comment_inner" data-v-c66e8e28=""&gt;
                &lt;div class="like_comment_bd" data-v-c66e8e28=""&gt;
                 &lt;div class="like_comment_tips" data-v-c66e8e28=""&gt;
                  &lt;i class="weui-icon-success" data-v-c66e8e28=""&gt;
                  &lt;/i&gt;
                  &lt;i class="icon-success-primary" data-v-c66e8e28=""&gt;
                  &lt;/i&gt;
                  已同步到看一看
                  &lt;a class="like_comment_share_link weui-wa-hotarea_before" data-v-c66e8e28="" href="javascript:;"&gt;
                   写下你的评论
                  &lt;/a&gt;
                 &lt;/div&gt;
                &lt;/div&gt;
               &lt;/div&gt;
              &lt;/div&gt;
             &lt;/div&gt;
            &lt;/div&gt;
           &lt;/div&gt;
          &lt;/div&gt;
          &lt;div data-v-f4ee5450="" style="display: none;"&gt;
           &lt;div class="weui-mask_transparent" data-v-f4ee5450=""&gt;
           &lt;/div&gt;
           &lt;div class="weui-toast" data-v-f4ee5450="" style="top: 45%; position: absolute;"&gt;
            &lt;i class="weui-icon-success-no-circle weui-icon_toast" data-v-f4ee5450=""&gt;
            &lt;/i&gt;
            &lt;p&gt;
            &lt;/p&gt;
           &lt;/div&gt;
          &lt;/div&gt;
          &lt;div class="fullscreen-screenshot__layer" data-v-f4ee5450="" style="background-color: rgb(0, 0, 0); display: none;"&gt;
          &lt;/div&gt;
          &lt;div class="fullscreen-screenshot__layer" data-v-f4ee5450="" style='z-index: -1; background-image: url(""); display: none;'&gt;
          &lt;/div&gt;
         &lt;/div&gt;
        &lt;/div&gt;
       &lt;/div&gt;
      &lt;/div&gt;
      &lt;!-- --&gt;
     &lt;/div&gt;
    &lt;/div&gt;
    &lt;!--E 视频播放器--&gt;
    &lt;!-- S 视频社交--&gt;
    &lt;div class="interact_video" id="bottom_bar" style="display:none;height: 35px;"&gt;
     &lt;div class="inter_opr"&gt;
      &lt;a class="access_original" href="javascript:;" id="video_detail_btn" target="_blank"&gt;
       视频详情
      &lt;/a&gt;
     &lt;/div&gt;
    &lt;/div&gt;
   &lt;/div&gt;
  &lt;/span&gt;
 &lt;/section&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   说白了不只是告诉你哪些模型能跑起来，还有哪些模型在你的电脑上体验更好、性价比更高。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px; visibility: visible;"&gt;
  &lt;span style="font-family: STHeitiSC-Light; font-size: 22px; color: rgb(14, 136, 235); font-weight: bolder; display: inline-block; padding-left: 10px; border-left-width: 5px; border-left-style: solid; border-left-color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    先看看效果
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   直接在命令行里敲入
  &lt;/span&gt;
  &lt;code style='font-size: 14px; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: rgb(30, 107, 184); background-color: rgba(27, 31, 35, 0.05); font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace; word-break: break-all; visibility: visible;'&gt;
   &lt;span style="visibility: visible;"&gt;
    whichllm
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span style="visibility: visible;"&gt;
   。它就会自动检测你的硬件配置，以后输出一个推荐列表。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   表格里会显示出排名、模型名称、参数量、量化方式、评分还有速度，这些信息一目了然。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblK96kVhtTqIQPs38FiaE1FPXjHLxqwk7MFnVlmn7hKazYT9vRmvGaVdPGS8bZ9j6RC0Vt51z6ib1Hn85uq2AqzIB9jGlY2uWNBYM/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你还可以借助
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    --status
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   查看更多细节，举例内存占用情况，还有 fit 类型，也就是 Full GPU、Partial Offload 或者 CPU-only。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   假如你想指定使用场景，可以选用
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    --profile coding
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   或者
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    --profile vision
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   ，它会相应地调整评分权重，优先推荐适宜编程或者视觉任务的模型。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   假如你想了解某个模型怎么运行，可以借助
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    whichllm snippet
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   ，它会输出一段 Ollama 或 llama.cpp 的命令片段，直接复制粘贴过去就可以跑了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIMsx2ichODcQLp8d22jTEibp4P8nf0RibZyttLrd2h5DILO3y8I1nRHVbJkvug5IsFp04cPjoetNKqr2OMdo7yXM9909rq4iaI868/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   要是想把数据导出，加上
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    --json
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   参数就能拿到完整的元数据，这样方便你写脚本来做后续处理。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    再说说原理
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   看完这些效果。你或许会好奇它到底是怎么达成的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    01 硬件自动检测。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   对于 NVIDIA 显卡，它借助 pynvml 来检测，AMD 显卡在 Linux 上，则借助 rocm-smi 来推进检测工作。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Apple Silicon 在 macOS 上，凭借 system_profiler 来实施检测，甚至连运行 Asahi Linux 的 Apple Silicon 都能识别出来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJIRibLqbjXW4vyuDk1jczW8kxqkbQPnpiaJp7UoAv6IbicIarGCqulic1iauk8paVVjBP8opTVyHbCYCDQZHN0nibIrYXVEhkicTfEz0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   有人要说了，我的电脑没有显卡，能不能测。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   同样的它可以检测 CPU 核心数量和内存大小。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   能为你推荐只使用 CPU 的方案。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 GPU 模拟功能。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这个功能很有意思，不需要真的把显卡买回来才知道能跑什么。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   很多人想在本地跑大模型，上网一查都是让买 4090，5060 显卡，也不知道能跑哪些模型。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这个时候有了whichllm。就可以用
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    whichllm --gpu "RTX 4090"
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   来模拟 4090 显卡的运行环境。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJL22iaMWlAAVwGVrrXRYMoQv9YARGU0HV7alBic6upiarJCvOfX0D2BQlxibiaj6hZZUNUeJMuNeDnibMTOFlTGvqQBMkq2uujKvf98/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这样就能看到这张卡能跑什么样的模型，以及速度大概是多少。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 多维度评分系统。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   在评分这上，它做了证据分层。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   像 direct 这种实测匹配的数据，权重最高。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   而 self-reported 这类模型作者自行上报的信息，权重会低很多。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLtVpX6S5jMbtEJv0FCibJA00d3x4sRjQ1UzUVX4TlLSPqypUlYwFEVMKZtxz6xRrNdubtH0PftDpSOWyrW7hR3NSL0M0cw9icIY/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这样做的好处就是，推荐结果会更偏向真实 benchmark，避免被模型宣传描述所误导。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它还会考量 benchmark 分数、量化质量、速度估算以及硬件适配程度。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   比方说，你的 RTX 4090 有 24GB 显存，理论上可以运行 32B 的模型。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   whichllm 可能会建议你去跑 27B 的 Q5_K_M，理由是它的 benchmark 分数更高，跑的又快又好。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    04 量化惩罚机制。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   量化等差越低，模型也就被压缩得越厉害，显存是省了，但回答质量也会打折扣。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   像 Q2_K 的质量损失会比较明显，而 Q5_K_M 基本上，已经接近原模型的效果了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    除了核心推荐功能，还有一些好的细节
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    速度估算带置信度。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   whichllm 会估算每个模型在你硬件上的运行速度，它给出的并非单一数值，而是一个带有置信度标记的区间。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   一个 MoE 模型在 Apple Silicon 上运行时，速度估算可能是 4-15 tok/s，置信度标记为“low”，缘由是这类场景的估算难度比较大。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKTET6iaxJakv9SQxJ9cFdBGyuLOQibicZEtah9GKSQ84H9e8PPKn3yiaSJmHfib4HbJh1o9ACGtm8x9KYdoSnBsj1EhZ0PPOoPUiad0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   而在 NVIDIA 显卡上，估算往往更准，置信度标记为“medium”。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这比起那些仅仅给出一个“大概 20 tok/s”的工具。要准确得多。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    实时数据更新。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它从 HuggingFace API 实时抓取数据，所以不怕找不到最新的模型。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不像 LLMFit 那样。它使用的是一套静态数据库，仅仅预先整理好了 206 个模型，新模型一定要等待更新之后才能加入进去。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    看完这些功能，相信各位已经迫不及待了
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   安装只需要一行命令：
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    pip install whichllm
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   运行也非常简单：直接敲入
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    whichllm
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   ，它就会自动检测你的硬件，接着输出推荐列表。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    到这里缺点也给大家提提
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   说到底，whichllm 所给出的速度数据仅仅是估算值，并不是实际测量的结果。它借助 GPU 带宽和参数量来进行推算。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它所提供的数据很可能存在一定的误差。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   在 Windows 平台上。AMD GPU 的检测没有 Linux 那么精准，还得靠 WMI 和 registry fallback 来补全。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   碰上 Apple Silicon 芯片，或者只有 CPU 的运行环境，它就会只推荐 GGUF 格式，为了兼容性以及稳定性。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果系统是Linux ，恰好有 NVIDIA 显卡，它也会推荐 AWQ 或 GPTQ这两种。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   以前有朋友问我，想在本地跑大模型，但是不知道该选哪个。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   其实这里面有两个问题，一个是显卡的问题，一个是跑哪个模型的问题。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我就上网查了查，翻了好些网页，最后也问了 AI 。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   说实话，每一个回答都有差异。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我就手动整合了一个版本，发过去了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   信息的获取上，确实花了点时间。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   有了 whichllm，几分钟把这个事情就搞定了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   评论区大家可以聊一下自己是怎么从零部署一个大模型的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   whichllm 基于 MIT 协议开放，感兴趣的同学可以去 GitHub 仓库看看源码以及文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/Andyyyy64/whichllm
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然看到这里了，欢迎随手点赞、在看、转发，也可以给我个星标⭐，接收最新的文章，我们下期再见。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1141" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/OSTfYeppPaU-H1quFTMfKg</link><pubDate>Fri, 29 May 2026 15:18:51 +0800</pubDate></item><item><id>3877547210-2247512423_1</id><title>在 Linux 上跑 Office，这个做的更好了 。</title><description>这是让 Linux 用户已等了很久的项目。          现在它在 GitHub 上面已经积攒了 15000 多个 Star。               有不少人都把 Linux 当作主力框架来用，倒不是因为没法用 Windows，而是单纯不想再切回去。          可偏偏总有那么几个软件绕但去。举例 Office，Adobe 系列，以及某些只支持 Windows 的专业工具。    ...</description><guid>https://mp.weixin.qq.com/s/-VeWpkvhlBf-H7SGm2RJwA</guid><enclosure url="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblLytribph7pCiboTQicTXov2tKn6c5CiaymmolrG0A903tDv6DRWchEOFNrmQ2rvXbiax8ss2pmfbsNNibQMMaydKykAvXDAicMicUmzibE/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1140" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   这是让 Linux 用户已等了很久的项目。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   现在它在 GitHub 上面已经积攒了 15000 多个 Star。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblInibfJda2gEHZU6pfJEL4309aMegIBVrLsB7HuwticObreVPxCeueLZia3HN8ZD9MaGBRSjdOwvatN3a9BUia6rka8hK0ravgIabE/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   有不少人都把 Linux 当作主力框架来用，倒不是因为没法用 Windows，而是单纯不想再切回去。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   可偏偏总有那么几个软件绕但去。举例 Office，Adobe 系列，以及某些只支持 Windows 的专业工具。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   于是难题也就跟着来了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   为了用上它们，你要么保留双系统，要么就得长期挂着一个虚拟机。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   这么折腾了好多年之后，后来 WinApps 给出了一种更加体面的解决方式。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它不是借助 Wine 去兼容 Windows 程序，而是直接跑起一个真实的 Windows 情境，并且把使用窗口给整合进 Linux 桌面当中。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLGicEAJOJ7QDFlys5SSsRf2mwV9DcswibC6IXw3tXlziaF3Mnmym3sUXNBlopOLcHIIhBJmHytmfsQg5Dsyb1d56KLSg27Sb6ULU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 656.59375px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
   看上去就好像这些程序原本就跑在 Linux 上面一样。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它跑起来的乃是一份真实的 Windows 环境。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   故而兼容起来比 Wine 要让人放心得多。从理论上讲，随便哪个 Windows 使用都能跑。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   社区方面已经测试了 30 款主流应用，遇到的问题都不算大。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblK4JF6ZXxGh6lPicoxhPvrZ1PlicL6FpaAML5Ip8icd2vBpaG3GfV8qZ1pV5o3Ebibps4ZyZWSFLnfgZLq0ZfxBxn33MWJFhX4B68Q/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    能跑只是基本功，真正好用的是这些细节。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    应用自动发现和集成。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   WinApps 会自动去扫描一遍 Windows 里面。早就装好的那些应用，随后把它们的图标给塞进 Linux 的施用菜单里去。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   还能够配置好 MIME 类型的关联，这样一来文件管理器就能辨认出哪些文件该丢给 Windows 应用去打开。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   比方说你手头有一个 .docx 文件，只要在 Nautilus 里右键点一下，就可以直接用 Microsoft Word 来打开它。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJqV8rk0C0zw8ibxRKLvUyKJNXERvWAn0icLNdS5icCIVFzJ4eaOJkNwxNtwmVnhwSibic2pHyZia4440Lg7MP2fKHoz6WkUpibqgSsS0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    文件系统双向访问。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你在 Windows 里面直接就能访问到 Linux 的 /home 目录，对应的路径是 \tsclient\home。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   文件互相拖来拖去，剪贴板互通这些方面都没什么难题，打印机在两个框架里头也照样能共用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKH3eLbkf5PnmwXwYyRuibY90D9dicIgVo8V9yjWbPj9RXtUQFkUO0POwswicib2HJG9yWzNvcIIewYqu1PAYPXGN4hWsuibqksXyO0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    WinApps Launcher 系统托盘工具。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   架构托盘那儿有一个菜单，可以让你用来启动施用，管理 Windows 虚拟机或者容器。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   省得每次都得专门开终端去敲命令。有个界面确实要直观得多。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLS9Jsl0bq81ibexea36cwcYaknWLJicJaXT7EWI6fEribKjrQlRYzm25S60vL6Ol2CzPJY7YcbVeibSMzPj1rthzhbVqiaNayS0y14/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKwRrAuPT8PD7bA9htvo47cPca3MkWic9XD639rKUU3AdVY0iaI80oNb92LQFfKaibzlG9HBGlbjXiblhQ7icJL8pZSlBHJbYc7zvfs/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    AUTOPAUSE 自动暂停功能。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   只要 Windows 那边一闲着。它就会自动暂停运行，替你节省系统资源。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不用总是惦记着 Windows 虚拟机在后台偷偷地吃掉内存了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    多显示器支持。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   多显示器这种情境也同样支持。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   HiDPI 缩放方面，像 100，140，180 这些放大倍率都足以进行配置。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJ7nwibIm1ct33bHibicNTicq0Pv02fdE3dia2k36R5vQsjicVxd9OqVvHDUw5niawnPWqgXkCXY8IPrYfU98T11C2ib0Mgu9mnjSVCWyA/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    功能看完了，想上车的话我给你捋一遍流程。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   说真的，不管你所选择的是哪种方式，前面那几步操作都是相同的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    先装依赖。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你的系统上需要有这么几个东西：FreeRDP，也就是用来远程连接 Windows 的组件，还有 curl，dialog 以及 git。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   对于 Ubuntu/Debian 用户，可以执行：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;sudo apt install freerdp2-x11 curl dialog git&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果是 Fedora/CentOS，那么把 apt 换成 dnf 就好，包的名字基本一样。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    再克隆项目。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;git clone https://github.com/winapps-org/winapps.git&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;cd winapps&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   好了，前置的这些准备工作做完之后，接下来就是去选定一条具体的路线了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   WinApps 支持三种用来跑 Windows 的方式，你根据自己的实际情况挑上一个就行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJSvKBrA5WBL6licIAqIoeY30oq43UAHCAsqwVOPYzttd0jePNanm5kMsQVovS1gQUv8uO0jX357OlZCOrWoYdTm6IUXcgXtdAI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    路线一：Docker 容器（最省心，推荐新手）
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   这算是最省事的方案了，脚本会全自动地帮你把一切搞定。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   执行安装脚本：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;./setup.sh&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它会向你提一连串的问题，照着填进去就行—像是选用 Docker 作为后端，Windows 镜像放在哪里，还有用户名和密码这些。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   后面你就等着就好。脚本会自动去拉取 Windows 镜像，把网络配置好，并且把 VirtIO 驱动给装上。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   从头到尾你连 Windows 安装界面都用不着碰，对于不想折腾的人来讲，实在是过于友好了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   前提是你的机器上早就装好了 Docker，要是还没有的话，可以先借助
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    sudo apt install docker.io
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   这个命令把它装上。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    路线二：Podman 容器（跟 Docker 差不多，但更安全）
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   操作流程跟 Docker 这个方案几乎是一模一样，同样去执行
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    ./setup.sh
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   ，接着选择 Podman 就可以。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它跟 Docker 的区别在于：Podman 并没有 daemon 进程常驻在后台，每一个容器都是直接跑在你自己的用户权限之下的，在安全要求比较高的场合会更加适宜。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   同样也是全自动化的部署，用不着手动去碰 Windows。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    路线三：Libvirt/KVM 虚拟化（麻烦，但性能最好）
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这条路线比较适宜那些有 3D 应用需求，并且对性能比较敏感的人。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   KVM 是直接凭借硬件虚拟化来跑的，比起容器方案要流畅很多，尤其在跑图形密集型应用时，这种差距会非常明显。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   但相应的代价就是。你需要自己动手去干很多事情—手动创建 Windows 虚拟机，自己去装架构，自己去配置 VirtIO 驱动。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   具体的步骤可以参考 WinApps 仓库里面的 libvirt 文档。这份文档写得挺详细的，照着做就行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   比较适合本身就具备一定 Linux 虚拟化经验的人群。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   小白用户建议还是从前面那两条路线开始上手。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    到这里几个注意点也给大家提提。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   01 眼下只支持 X11，Wayland 的单运用模式到现在还没能搞定。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   倘若你正在使用的就是 Wayland 桌面，那可能就得先切回到 X11，要么就等待后续的更新。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   02 假如没有配置 GPU 直通，那么跑起 3D 采用和游戏就会显得有些吃力了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Windows 的桌面窗口管理器会退回到使用软件渲染，帧率跟着就会往下掉。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   说到底，WinApps 所解决的，其实是一个相当具体的难题。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   并不是所有的人都用得上它。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   假如你本来就，是一个 Windows 用户，那这东西对你来讲差不多就是毫无意义。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   倘若你是纯粹的 Linux 用户，而且所有的需求都能被开源软件所满足，那也压根用不着它。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   但它存在的真正价值取决，有那样一群人，他们已深度绑定在 Linux 体系里头了：服务器跑的是 Linux，开发工具链也是 Linux，就连日常的使用习惯也全是 Linux。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   可现实偏偏就是，总会有那么一些时候，你不得不去打开一个 .docx 文件，不得不用上某个只有 Windows 本子才有的内部工具，又或者不得不帮客户去处理一份 Visio 流程图。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这群人恰好就是 WinApps 所面向的目标用户。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   人数并不算多，但确实真实存在着。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   各位觉得呢？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这个项目基于开源协议完全开放，感兴趣的同学不妨去 GitHub 仓库看一看它的源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/winapps-org/winapps
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然都已经看到这里了，欢迎随手点个赞，在看，转发，也可以顺手点个星标⭐，接收最新的文章，下期再见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   &lt;br/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1140" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="margin-bottom: 0px;"&gt;
 &lt;span&gt;
  &lt;br/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/-VeWpkvhlBf-H7SGm2RJwA</link><pubDate>Thu, 28 May 2026 15:17:48 +0800</pubDate></item><item><id>3877547210-2247512408_1</id><title>又一个神级 skill ，这才叫做专业 。</title><description>在短短 3 个月当中，这个项目的 stars 数量从 1524 个攀升到 22000 多个，增长了 14 倍。               这样的增长速度在 GitHub 上面并不常见。          项目取名 Taste-Skill，标语很直接地写着gives your AI good taste。               它做的事情理解起来很简单：就是让 AI 编码助手所生成的前端界面...</description><guid>https://mp.weixin.qq.com/s/STfcvhIxE458JapB4g4pOA</guid><enclosure url="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblJEkQic3JDXfz7IibS5cTunhtF8qpkGUj80qrf81uQ2AM5dEicsW6asuibF41a60nDcVs1ZfugAjqu5Gl0rFDdDdKs2qE0moEHMZS8/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible; margin-bottom: 0px;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1140" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   在短短 3 个月当中，这个项目的 stars 数量从 1524 个攀升到 22000 多个，增长了 14 倍。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblI0HXnzPIFWKJznxKmuiagr4FKPFibFzzD2gibILmSBykBzWmoLjjXz7rlJy51KruffQzCkMvaUvn7G1VWEXQrQuKHjnkskTbw1sg/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   这样的增长速度在 GitHub 上面并不常见。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   项目取名 Taste-Skill，标语很直接地写着gives your AI good taste。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLymibbRoywE2E34CFXFfEKGibYVsGpMy1oLOtNCaoicuG2Q4JPm4QGAlAeYIBBmQLDbKvsxjic1keicEdodKVDGbbjjfFjBsbqEg7k/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它做的事情理解起来很简单：就是让 AI 编码助手所生成的前端界面，不再显得那么模板化。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   在使用 Cursor 或者 Claude Code 去写前端代码的时候，你大概率也碰到过这种尴尬的局面。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   功能本身其实没什么问题。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   但居中的 Hero，三等宽卡片，紫蓝渐变，再配上 Inter 字体，这几样一凑到一起，总会让人有种似曾相识的感觉。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    我们看看效果对比。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    01 先来看看我的工具网站的效果PK。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   先看看不用 Skill 是啥样。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIoxibKKDFtlX2UUoytugWYY7IEJtDBslhzWhYFqjDJCqKCPkO1v05jRAJnRKdSpkxujMDkM7J1qs83IawEUfLpucu1O75uAtkc/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   是一个标准的 4 列等宽卡片网格，主要色调为紫色渐变，鼠标悬停的时候会向上浮动 4 个像素。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这就是 AI 前端代码的标准模板，你在网上搜一百个AI 工具导航，大概率长得差不多。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   把 Skill 加上以后：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJrldj9Lsytyw2PElw1e1OrY7HFvKKBsGGQsribBXfAr2QialU3aJtwDKGibibEibmcibJiaAIJTxaFlASvNWGkA40XXMibf0v4ibCnuT1w/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   布局完全不同。没有采用无聊的等宽网格，而是换了非对称布局，卡片宽窄交替，每个区块的节奏感都不一样。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这种设计语言你经常能在 Apple 和 Stripe 的官网上看到，但 AI 在默认状态下是绝对生成不出这种效果的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 我们再去试一下聊天界面。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不用 Skill 的情况下：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKmR3mCGwUdiaaI1SvRtpwic9YLaerjEQ076ob9C87I75aicI8vt42UJDH3r7d6Uibf8aGW9XibL50uJrdhmXiaJm1dEOO4HsxB3Q0os/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   得到的界面是标准的微信聊天克隆版本。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   方块头像当中分别写着助和我，绿色气泡的圆角大小完全统一，底部则是一个 8 列一共 40 个 emoji 的表情面板。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   用了 Skill 后：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJK8vw6ggicoEo8ODQibX00hJAk5ks9BstMSBuP6q7fKk3SxiaB3U7r6ezgEaHRwkqvG9SFqn8LL8LAMkwBkwHTRByeg8d87nUJV4/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你会看到不少细节都变了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   头像换成了真实的圆角图片，聊天对象有名字，有在线状态，连消息气泡也用了非对称圆角。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   整体观感会更自然，不再是一眼 AI 模板的味道。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 产品介绍页的横向PK。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   提示词全部用：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    写一个产品关于「健身」App 的介绍页，配色要亮眼能够吸引人，要有一点动画和光效，有立体感。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这个对比得到的成果蛮有意思的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果不借助 Skill 直接去生成，出来的效果基本能拿来用，但很明显还停留在应付作业那个水准上。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKYquYqk2iaicUd5JTdAnXdnZiaRPVpia8nSlrILSW30G7F3toYPAVrRtNQfYVvyIoOsicOsWUO87TEFfZGUjqDFP9fKLdRZetEZusk/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   用 Taste Skill 之后所得到的效果。是所有方案当中最均衡也最稳妥的一个。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它把暖粉、珊瑚以及金色渐变结合起来，再配上玻璃卡片和柔光背景，让整体画面看上去非常舒服。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKabhous7UwQT7T85ibqhpFFu9TaNAGdrIEKbjqHxpNiabtlUPPwo750K57nAqIIF6xz37yl4jUab2Dto5jA3b53DtWk4XnmEYfI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   借助 Frontend-Design 来做的话，出去的东西带有设计师的那种味道，舞台感表现得很出色。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   标题、光晕以及装饰元素之间的关联处理得十分成熟。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblI1SQ5XccwgHNB7MFLdhvzauA4wvZeJeI6RVUW3wOu6rXaL2aN7l5z157ElTTLzBXSicIaZh6sAjOPvt74067ic3ib5J7Lfq25icAA/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这说明 Taste Skill 并不是最炸裂的那个，但它在综合作为方面是最稳当的，不太容易翻车。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    为什么 AI 生成的界面总是那么普通。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开发者社区最近出来一个新词 AI slop。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   意思是 AI 生成的 UI 正在越长越像，Inter 字体，居中的 hero，三等宽卡片，紫蓝渐变。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   其背后的缘由很简单，AI 在预测最可能出现的代码，而不是最好看的设计。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   大部分项目都在用 Inter，AI 也就跟着使用 Inter，大部分页面采用居中布局，AI 也就跟着居中。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   AI 给出了多数的设计选择，但带来的后果就是平庸。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   另外每一次会话结束以后，你之前给出的设计要求就跟着消失了。到了下一个项目，AI 又会返回到那些安全的选择。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    你或许想知道 Taste-Skill 是怎么解决的。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLVjppSYQuaZcMB8LhjEWxBq3alnlwgmtTnia5JYBdPHLmGu6KbfHSBodGHhbCJfB8SJibvDkT80CqicWGiboyz4omD8j3HJmx2XmA/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=9" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它凭借三个参数来控制设计风格：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    01 DESIGN_VARIANCE，布局变化程度，默认 8
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这个参数首要负责管理布局风格。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   数值调低一点，界面就会更稳、更常规，数值调高一点，设计感会变得更突出。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   像设置为 3，基本就是大家熟悉的三等宽卡片。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   调到 8，布局就会更灵活，重点内容放大来展示，次要信息则集中排布，不会所有东西都挤成一个样子。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 MOTION_INTENSITY，动画强度，默认 6
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这个参数是来控制动画效果的。 数值越高，界面动起来的感觉就越明显。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   像安装为 8，极有可能加入滚动触发动画，还有按钮跟随鼠标的反馈等效果。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   实现方式也会把性能放在前面去考虑。不至于动画一多就卡。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 VISUAL_DENSITY，信息密度，默认 4
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这个参数决定界面是走清爽路线还是信息流路线。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   数值偏低的时候，留白会更多，看下床就比较轻松，数值偏高的时候，同一屏里面会塞进更多情节。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   要是调到 9，风格会有点像 Bloomberg 终端那种倍感，也就是信息很密集，卡片会减少，更多地用分隔线来整理内容，数字也会换成等宽字体，方便快速扫数据。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    看到这里，可能有朋友想试试了。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   打开你电脑上的终端窗口。随后去执行下面这条命令。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;npx skills add https://github.com/Leonxlnx/taste-skill&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   命令执行完毕并且没有报错，它就会自动把
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    SKILL.md
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   文件放置到你的项目目录里面。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   很多扶持 Skills 的 AI 编码工具，举例来说像 Cursor、Claude Code、Codex、Windsurf 以及 GitHub Copilot，一般都会自动检测到这个文件，不需要你再额外去做配置工作。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   一旦安装好了，调用它的方式也相当简单。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   直接在对话界面里面告诉 AI 你打算要做的事情，像这样给出指令即可：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;帮我做一个 SaaS 官网首页，风格高级一点，避免模板感。&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   另外需要提一点，以此 skill 不及绑定任何特定的前端框架，它重点关注的是设计层面。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果设计好了，用 React、Vue 还是 Svelte，都是可以的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    有几个注意事项也提一下。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   前面已提到，它的设计规则全都包含在
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    SKILL.md
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   文件里面，不同模型跑出来的效果大概率都会不一样，关键还是看 AI 能不能真正把这些规则吃透。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   更直白地说，选用什么模型相当关键，如果想要获得好效果，还是应该挑选那些排名靠前的大模型。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我之前要用 AI 写前端。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   要不断给AI说，不要用三等宽，不要太模板化。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   装了 Taste-Skill 之后。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不需要每次都跟 AI 说不要用三等宽，不要太模板化，一个 SKILL.md 全部搞定。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   节约了不少时间和精力。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   经常用 Cursor 或 Claude Code 写前端的朋友，推荐试试。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你的看法呢？在评论区说说。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目基于 MIT 协议开放，感兴趣的同学可以去 GitHub 仓库看看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/Leonxlnx/taste-skill
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然看到这了，欢迎随手点赞，在看，转发，也可以给我个星标⭐，接收最新的文章，我们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1140" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/STfcvhIxE458JapB4g4pOA</link><pubDate>Wed, 27 May 2026 15:17:00 +0800</pubDate></item><item><id>3877547210-2247512393_1</id><title>终于有人把 Docker 管理这件事做简单了。</title><description>5个月的时间，Star 数干到了 4400。               Docker 管理工具这个圈子，又冒出来一个好东西——          Dockhand          。          我瞅了一眼它主要就干了一件事：          把Docker容器的管理工作，做得更简单一些。            管理只是它的一部分。          平时配 Compose 项目，可以...</description><guid>https://mp.weixin.qq.com/s/OZo_Y3kAgKdbOGe_uQle2A</guid><enclosure url="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblLczb1sE1rqsRSepibAYib2HJQkChKsFcBibK78yGSjGQZ5mmMOQqPYKuZuEh1gZQNfia4MiaAEtuJzF0X2ZmTdyZhvLdO2oOalSib3Y/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1139" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
 &lt;/mp-common-profile&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="visibility: visible; margin-bottom: 0px;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   5个月的时间，Star 数干到了 4400。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLjxiaHia4xiaickIVCeZZ2MwewQwLR54lTcu5FSmLartv8iawAzOcicnHwVOYL4Vmx4zEDHo8eP7qXN8BoN1T6BcldNrYk84cEa0bh0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   Docker 管理工具这个圈子，又冒出来一个好东西——
  &lt;/span&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    Dockhand
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span style="visibility: visible;"&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   我瞅了一眼它主要就干了一件事：
  &lt;/span&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    把Docker容器的管理工作，做得更简单一些。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   管理只是它的一部分。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   平时配 Compose 项目，可以直接图形化编辑，不用一直对着 YAML 文件改。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   服务器多了，它也能帮你统一管理远程机器。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   安全和运维这块同样没落下——镜像漏洞能扫描，更新支持自动化，真出问题还能随时回滚。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   连认证都省得你再额外折腾，OIDC 和 SSO 已经内置，还完全免费。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   像 Watchtower，Dozzle，Diun这一堆工具，以后就不用挨个去装了，一个界面就能全搞定。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它的定位，是一个比较现代化的Docker管理平台，算得上是 Portainer 的一个挺有分量的对手。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblIgUuM1IgktQpCWCzMJHhlVoKhvNuEj0u7jXPpbiaYb7Dk98HpVR1Op76rudqlPAk8lFu78xhCpeictHsvyCRqKQtG4ser4eYXsQ/640?wx_fmt=other&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px; text-align: center; color: rgb(136, 136, 136); display: block; font-size: 12px; font-family: PingFangSC-Light; visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    Dashboard
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px; visibility: visible;"&gt;
  &lt;span style="font-family: STHeitiSC-Light; font-size: 22px; color: rgb(14, 136, 235); font-weight: bolder; display: inline-block; padding-left: 10px; border-left-width: 5px; border-left-style: solid; border-left-color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    为什么这个东西值得你去关注一下？
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    它把Portainer那边需要付费才能用的功能，直接拿出来免费提供了。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   这一点，确实是最让人没想到的地方。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   到2025年底的时候，Portainer把 OIDC/SSO 和 RBAC，都锁到付费版本里面去了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   社区里头一下子就炸了——好多人用 Portainer，本来就是奔着自托管去的，结果现在想搞一个单点登录，每年还得掏出去几十欧元。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Dockhand走的路子正好反过来：
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    OIDC/SSO它直接免费开放出来用，只是把RBAC和LDAP/AD放在了企业版里。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   要是你想给自托管环境加上单点登录的话，用Dockhand是不用花钱的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblIicHuUzct9ZuUaEIZ1pmwGZ3tjAXBw4W98y22XvEPtsG7L5kJl4iaOhBxBL9bjbbBvDhZaATlLQWOZpiaP420HnYmHuicObXiag4x8/640?wx_fmt=other&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Authentication Settings
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    除了在认证策略上比较友好之外，它还把Docker管理的一整条链都给串起来了。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    01 容器生命周期的管理。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   启动，停止，重启，删除这些操作，在界面里头全都可以一键点下去，批量处理也是支持的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   想看日志的话，直接点进去就能看到实时流，ANSI颜色的渲染也没什么毛病，这样一来，Dozzle就不用单独再去开了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   要是想进到容器里面做些调试，直接在Web端打开一个终端就行，SSH完全用不着。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblJjyIXhHVSxraFw9gQ7ianu9DPibBtbOe4K4z5uWXns4tCsTRCW5u0Cl0JPBlYT9ibSak21kHjwChrJoLhU2dSX7iccEialiaQWHz5oc/640?wx_fmt=other&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Containers View
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 Compose栈的可视化编辑。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它里头有一个视觉化的编辑器，YAML要是写错了，会直接给你标出来，不会像有的工具那样，只是丢回来一句“部署失败”就没下文了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   更要紧的一点是，它支持直接从Git仓库里面把栈拉下来，把webhook配置好以后，每一次push操作都能自动去触发部署。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这个地方，我本人是比较喜欢的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   以前要是想搞那种GitOps式的部署，要么得自己去写一堆脚本，要么就得拖一套ArgoCD那样比较重的工具过来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Dockhand是把这种能力收到了同一个界面里头，基本上不需要你再额外去折腾什么东西。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblL5KFpSbib0UiacxrdR0JO8qamiaGkXYQyorZggaKZBib3KUnSXuJwmeesNWMo4uqUN0Y5gR9ibkI0Viaf0UvmhKA1Gl5mn5dl1muj5c/640?wx_fmt=other&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Stacks Editor
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 镜像漏洞的扫描。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它里面是内置了Grype和Trivy这两个扫描器的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我想起来以前为了合规，要做镜像的漏洞扫描。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   找了一些第三方工具，折腾半天装上去。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   现在不用了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   只要点一下，结果立马就出来了，而且还可以按严重程度去做过滤。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   扫描完之后的结果，会按照镜像的SHA256值去做缓存，不会每次都从头到尾重新跑一遍。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblJPaU6PRbnGdhGeeZWZ3HQAaWtuGZkwFqNVuCYrTia7rvicXNccH113u0mjMqyzgUP5tiaArVzwKD1bL4LG5GDfaO2pia39Noc5E4M/640?wx_fmt=other&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Images View
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    04 自动更新，而且是带着回滚保护的那种。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它支持给容器去配置定时的更新任务，不是拉一个新镜像就算完事的粗放做法。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   在更新之前，它可以先帮你扫一遍漏洞。要是新镜像的漏洞比旧的那个还要多，它能够自动把这次更新操作给挡住。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   万一更新过程中出了什么状况，回滚保护机制还在那里兜着底。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   现在估计还有很有人在用 Watchtower 做自动更新，但是没有漏洞检查的功能，回滚也是没有的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   估计作者也看到这个痛点，就把这一套全部做到 Dockhand。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblJpK1AY33WHRR1KJG8AH7icoASw4DSEjhx8MtwwqKx1M5oiaXz8tKMO274uJdNrQulzunb1XCibRJlMpKB7O0rtZdYom3AaBlgnfw/640?wx_fmt=other&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Schedules
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    05 通过 Hawser Agent 进行远程管理。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它里头有一个叫做 Hawser 的Agent。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这个设计确实得说挺聪明的：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Agent只是往外去发起 WebSocket 连接，不需要你在防火墙上单独去开什么端口，也不用把Docker socket暴露出去。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   对于那些躲在NAT后面，IP地址还是动态变化的服务器来讲，这种方式比直接把TCP端口展露出去，要安全得多。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblJOUccUnWT8c1ZAPox64xAA9gkg8dTl5jJcFbWTcbbRtkVRG5SEFESBvMPicQQjiaNJAHg0BeVNApzWRCwOcfXSetlSZlibEDlbF8/640?wx_fmt=other&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Networks
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    核心功能说得差不多了，再来聊聊那些让你用起来感觉比较顺手的小细节。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    界面的响应速度特别快。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它是用 Svelte 5 写的，比起那些还停留在老框架上的工具，感觉要清爽不少。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   有亮色和暗色两种主题。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblJ9TXeEIONubaMFibdHoTKzEtXznDpRpiaw5yEExlL443QiaB5BiauzE55QS93M8zkrk7SEb8XGjYNa3ymqMOMicAFspSTc6reqiccQc/640?wx_fmt=other&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Dashboard Light
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblJbeCzCyQ9pgfBhEDFEPFnLxqb0Zib7NtppTKcFHjjWNcQEgbFv671lUtkloEhG9opGfxeBbZnPNSCubJLBRQRiauJBDLBWp9iajM/640?wx_fmt=other&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=9" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Dashboard Dark
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   另外仪表盘上那些磁贴的大小，你也可以自己去配置，想看哪个环境的容器状态，直接拖一下就行了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   ** 采用了Wolfi硬化镜像。**
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   从零开始构建它自己的 OS 层，每一个包都在 Dockerfile 里头显式写明。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   做到了零遥测，不会背着你偷偷发数据出去。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblKibzMGIt5yDnPbVWVq9YROYKibImVsyyPeNib3JkahxA4EjKqbtQYfwgLpMxtP9kpWFtbh9ynld49Nuib0mDvpaZxyLCoGiaicaNGuQ/640?wx_fmt=other&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=10" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Security Settings
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    通知框架的集成。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   支持SMTP邮件方式，同时也集成了Apprise，像Discord，Slack，Telegram，ntfy，Gotify，Pushover等等，总共50多个服务都能接进来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   容器启动，停止，更新失败，发现新漏洞这些事件，全都可以自动把通知给你推送出去。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblJVUFfZ3sCqlp7XHunyox55nEqqdyJfU4ribFaNibhbXGu8YrzQK4QpoAIJ4hQpDpyauibmUYDRcAhUg620B85U39SQIycUsKhnzc/640?wx_fmt=other&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=11" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Activity Log
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   聊到这个地方，你极有可能会想：部署起来到底麻不麻烦？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    部署的话，其实是相当简单的
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   一条命令就可以把它跑起来：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;docker run -d --name dockhand --restart unless-stopped \&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;  -p 3000:3000 \&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;  -v /var/run/docker.sock:/var/run/docker.sock \&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;  -v dockhand_data:/app/data \&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;  fnsys/dockhand:latest&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   在浏览器里面访问localhost:3000，就可以用了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   部署的时候有个小坑还是得提一嘴：它默认是不会以root身份去运行的，Docker socket那边的权限可能要去调一下。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   最省事的法子，是加上
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    --user 0:0
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   直接用root去跑，再不然通过
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    --group-add
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   把Docker组的GID加进去也行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    当然了，Dockhand也不是说就完美无缺了。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它目前
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    只支持Docker和Compose
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   ，Kubernetes还有Swarm这边还管不了，这方面比起来，Portainer确实要更全面一些。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   另外呢，
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    RBAC
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   这一类企业级功能，也是要付费的，不过门槛要比Portainer那边低上不少——毕竟OIDC/SSO是免费提供的，只有RBAC才需要花钱。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   再来说一下许可证方面的事情。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   目前用的是BSL 1.1，个人使用，内部商用，非营利性质还有教育用途，全都是免费的，但是你不能把它包装成一个SaaS服务拿去卖钱。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   到了2029年1月1号以后，它会自动转成Apache 2.0，到那个时候就是完全开源的了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   但话说回来，如果你只是想把Docker管好，不想去折腾K8s那一套复杂的东西，Dockhand是够用的了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblIszcG1pA91h9n9VBI7hSARr5KZAic7xDWIalxrCTBQrATSaGxbc6sHoriaiaZqLnAicDGgeT6uMfWgea1WZX2AwDkfNxBWER2TjMU/640?wx_fmt=other&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=12" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Terminal &amp;amp; Logs
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我之前搞运维的时候， 经常用 Docker。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   刚开始学的时候基本全是用命令来管理。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   后来用的熟练之后，发现 Portainer 免费还带界面。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我就顺手换了过去。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   用了好几年，说心里话还是挺满意的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不过最近发现了 Dockhand。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   上手试了一下，发现更好用了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   真是一代更比一代强。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   经常跟 Docker 打交道的朋友，不妨试着玩一玩。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   评论区说说你是怎么玩 Docker 的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目基于 BSL 1.1 协议开放的，感兴趣的同学，可以去 GitHub 仓库翻翻源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/Finsys/dockhand
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然都看到这儿了，欢迎随手帮忙点赞，在看，转发，也欢迎给我点个星标⭐，这样就能收到最新的文章了，咱们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1139" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/OZo_Y3kAgKdbOGe_uQle2A</link><pubDate>Tue, 26 May 2026 15:18:08 +0800</pubDate></item><item><id>3877547210-2247512376_1</id><title>又一个 DeepSeek 版 Claude Code 。</title><description>一天跑 4.35 亿 token，费用只花了 12 美元。          估计很多朋友第一反应就是：          这是不是哪个国产模型又在刷榜单了。          之前咱们聊过不少工具，好像个个都能对接 DeepSeek。          但话说回来，能接进来和能把它的性能榨干，这两者根本就是两码事。          看下来能做到的几乎没有。          不过。      ...</description><guid>https://mp.weixin.qq.com/s/9m_8xidQBgvGPaXsZpd6YA</guid><enclosure url="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblLXxI9uXH5cO7PPSzsZpZuxqtJdJl38jUW7EyFuccWTNUMl70KZ6GpKB7GPjyLzNdIE7UqNYTbUiaHA2wicoQWyyZhMUL0OB4TQ4/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible; margin-bottom: 0px;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1138" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   一天跑 4.35 亿 token，费用只花了 12 美元。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   估计很多朋友第一反应就是：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   这是不是哪个国产模型又在刷榜单了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   之前咱们聊过不少工具，好像个个都能对接 DeepSeek。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   但话说回来，能接进来和能把它的性能榨干，这两者根本就是两码事。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   看下来能做到的几乎没有。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   不过。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   最近在 Github 刷到一个叫 Reasonix 的工具，它做到了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJ06lPz2HJ7lkDURGzPjYnXaxibmlqia4FDGYmRfs11CicetQ3Rcy5uFD8EEcW3ciaa2477gbHTwjISMavU1gLQoxrKyUovx7udsyA/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它从设计之初，就死磕 DeepSeek 的前缀缓存机制，一门心思地要把缓存命中率给压榨到极致。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   上下文窗口给到 1M，整个 Monorepo 基本都能直接塞进去，最多还能同时跑 16 个子 Agent，大任务拆开并行处理会轻松很多。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   简单概括一下
  &lt;/span&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    它是一个只支持 DeepSeek 的AI 编程助手。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它已经得到了 DeepSeek 官方的推荐。GitHub 已经获得了 6700 多颗星星。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIfhN5BsgaGNXDhys3MGbiaHiaFCAMm7z4uAPg8UOlVCPmqOJcO03RuibA9zrTIgU5fKfsHwhsnrWwS1L8b6d4oC3k10Vl6Fzd5nE/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px; visibility: visible;"&gt;
  &lt;span style="font-family: STHeitiSC-Light; font-size: 22px; color: rgb(14, 136, 235); font-weight: bolder; display: inline-block; padding-left: 10px; border-left-width: 5px; border-left-style: solid; border-left-color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    该有的功能都有，细节做得很到位。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   咱先看看基础能力。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   文件读写、Shell 命令执行、SEARCH/REPLACE 编辑这些，一样都不缺。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它没有让 AI 直接接管电脑。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   AI 给出的修改建议，会先摆到你面前让你过目，只有你点头确认了，它才会真正写进磁盘。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   代码改还是不改，拍板的始终是你。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你要想接入 MCP 服务器，配起来也很方便 。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJKIARU2Z0x0BZEYYlEERup7hSoX0iaJFDwpBGoVrDS2WnYAffhqG9qnarNe2XuFh70icQrkrawKt3eMxq2C21wuUuvjhwfibvGNo/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   大火的 Skill 必须支持，它还会自动识别你已经安装过的SKill。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblL3gb7MicEzKoKjRCU8Ro3bC14DRbNlZpsdTEy6yHXck0eDGassZZY1pFTOmgSO3uic8JMHic04NyzVVNwfnwIyt2Am4NriaQQ3Izs/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   用上一阵儿你就会发觉，它不光会执行命令，记性还挺好。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   之前聊过的那些东西，项目里养成的习惯，它都能顺着往下理解，根本用不着每次都重新说一遍背景。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKtkpsECq2U0q1n1R6iaTAf9DBjASWetia2SOcl9XVtNpVhbTXbFicibkibHX2Eyzz2tr9tPgysiaGuJKnnTAc7xOVkEHIibFvy43rZR8/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这样的思路，也用在了权限管理上。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   哪些操作必须人工确认，哪些可以放手让 AI 自己跑，都能按自己的习惯配置。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblK1XicOefoj3d2QZhibIWsLjiaaWibrE0pBIwCMSXDdA0ll4kZrEtdnIibaoWz6nN8JwibiauKv8nQI3h6nylicg9aibq6lFFRXTwwicqkkE/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   功能够不够是一回事，用起来顺不顺手又是另一回事。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它在交互体验上明显下了功夫，快捷键都很实用，熟练之后，效率就上来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJNcop56zzMIAp5vVrcBgqxkwGSrLB3oen1l2yq8GTznJROnYXLDYHib3fBvMPMQNSZzsyBsDfh9tzJlhmbnADL60DfGJQ0dcpE/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   支持主题切换，目前有4套皮肤可以用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKXvOHoQV3yLbp9TI0BVqDWVpEWa6lvLxPkXzZhtBO5c4NhyuE6n2qQpC1VR68utEE1lzuCicXKHw2MKZVeNoMqIGibfkAVsAXCo/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   另外还配上了多标签页，你可以并且开着好几个会话，它们各忙各的，谁也不碍着谁，这么一来，整个工作流就顺畅多了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIPDrqfIdOLkVpVvZShPRXxgeib1QQNSfvZPLGPtLI7twzKPaXdy5WADodiagYcbTowr1v5IYKM8AgRhj95yMOribdJXUvIUBzc5c/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    工具调用能自动修复，成本也有控制。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    工具调用自动修复。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   DeepSeek 时不时会冒出些小毛病，举例说：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   工具调用时生成的 JSON，一不小心就串到思考区域里头去了，有时参数一多，超过 10 个，就会丢字段。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   又或者，同一个工具被翻来覆去地调用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   对此，Reasonix 内置了一套四步走的修复流程：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   自动把嵌套的 Schema 给展平，从思考区把漏掉的调用给捞出来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   修复那些被截断的 JSON，还会对重复的调用实施熔断。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    成本方面的控制。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   日常的任务，默认就交给 V4-Flash 去处理，优先把速度给提起来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   遇到需要深度推理的任务，先交给 Pro 版处理，等它处理完，再切回 Flash。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   另外有一个自动的模式，要是某个任务 Flash 搞不定，它会自行切到 Pro 上。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKVjfHR1mQlbzBGcLu4xib8Ah3SBI44ibW9QcpeL9JqicmSibupAN5jamCzjx3z9ZiasSiclEXInpI915B5IH1aY12ay8Df1KWazicmKI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=9" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   界面底部还有一块统计面板，用了多少 Token，每一分钱是怎么花的心里都有数了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKOicUPTYsZmOr9lvVXzSxNibsjrduyGkibQqYiaJYMGyUPz91MKNpe5Z3abIKjQHP1m3X36zHNmZWdCt8lFRxTOBaKrFDxnEreblk/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=10" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    它把 DeepSeek 的前缀缓存机制用到了极致 。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    01 三区隔离架构。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Reasonix 把上下文给拆成了三个区域：冻结区、追加日志区，外加一个临时的草稿区。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   冻结区，在会话刚启动那会儿就会被锁死掉，打从这时候起，它就一直是块固定的缓存靶子。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   日志区，只能往后面追加内容，没办法去改动之前写下的东西。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   草稿区，每一轮对话都会重置，而且永远都不会给传上去。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblL45oxB7q4IjRa8c9SZFgbMHPuPTuM1I6gSdE0D10nfibU4IPjEWgX17gbuAT64ibezvo8WSbxiaMPtgyCV2JKTLc9UY1By7A2URY/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=11" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 缓存命中率达到 99%。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   已经有用户拿它实打实地测过了，一天下来，处理掉 4.35 亿个输入 token，缓存命中率能干到 99.82%。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   原本得花 61 美金的账单，现在被一刀砍到了 12 美金。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这样一算，差不多省了 80%，等于打了个两折。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIu4qSCChgKDLKSK1ciaQ7vSiaYibeM5WgkUykpV3gm4pj9ApibHqZhgpqG2FEtFVLqeOEODQETiaDLxZmuseYbGAsdlPrHFAal34JU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=12" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    看完这些功能，估计不少朋友已经想上手试试了。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   两种安装方式，自己选。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   先去 DeepSeek 的开放平台把 API Key 申请下来，下面配置要用到。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLzUljFibFsia19SQqKrzTDEwqrEBQ08fOic26XINGv9qeXTgiajFKrbedchuOpTW5AoguotrHqC41xnnn0G2b1OF08zxZ6cq72q7Y/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=13" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    方式一：桌面客户端。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   去 GitHub Releases 页面，把安装包下下来就行，macOS，Windows，Linux 都能找到。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   安装好之后打开它，第一次启动会弹出配置向导，把 API Key 贴进去就完事了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   桌面客户端自己就带齐了 Node 运行时，不需要你再单独装 Node.js，也不用在命令行里来回折腾。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLaCmiaWgOSf1iaPo3TStsx42mfZTw9X6tNKEzEsmWZhVV5QVpJ6t2A7SLksEK2l904oHf01xA0BvwptibIlpKBKAmM6svB5kFibFY/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=14" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    方式二：命令行安装。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   习惯在终端里操作的朋友，直接用 npm 来装：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;npm install -g reasonix&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   装完了，进到项目目录下面，执行一下
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    reasonix code
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   这条命令，就可以开始玩了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   上面说了这么多，到底适合谁用它 ？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我觉得可以分三种情况。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   一、日常编码，改 bug，重构，用 DeepSeek V4-Flash，成本低。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   二、需要深度推理，复杂架构设计，切换 Pro 版，用完自动退回。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   三、长时间会话，大项目，缓存命中率 99%，账单打 2 折。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   感兴趣的朋友可以装上试一试，评论区说说大家的使用感受。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目以 MIT 协议开放，感兴趣的同学，可以去 GitHub 仓库看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/esengine/DeepSeek-Reasonix
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   都看到这里了，欢迎随手点赞，在看，转发，也可以星标⭐一下，接收最新文章，下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1138" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/9m_8xidQBgvGPaXsZpd6YA</link><pubDate>Mon, 25 May 2026 15:17:21 +0800</pubDate></item><item><id>3877547210-2247512339_1</id><title>不到 3MB，居然能看清 15 种网络协议 。</title><description>一个不到 3MB 的小工具，能做到什么程度？          今天介绍的 RustNet，还真有点意思。          它是个跨平台的终端网络监控工具。          项目在 GitHub 上已经收获了 3900 多个 Star。               你可以把它理解成：          把 netstat、Wireshark、iftop 的部分核心能力，有机整合到了一个工具里 ...</description><guid>https://mp.weixin.qq.com/s/qR2xAh1Ipa21VbaNkAUM8w</guid><enclosure url="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblIOYJV3ma9DF0vnhqc0TjWu8xib1QZiccf40uAWRkIZORia0l8CvuOQyx0aTwJdEm523FJulMhv8R63hbj9w5C56RWFd9g0bhMYws/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible; margin-bottom: 0px;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1136" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   一个不到 3MB 的小工具，能做到什么程度？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   今天介绍的 RustNet，还真有点意思。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它是个跨平台的终端网络监控工具。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   项目在 GitHub 上已经收获了 3900 多个 Star。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIib3QibibxXJ3BuvEHTnzh2icibFpCNWHVR0ulTKIrKRUupDBvYsDCJL0c3ZThIJqzhMR5CicjmWl4TdGwb7WUqQBkia8to5HTp8icYGo/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   你可以把它理解成：
  &lt;/span&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    把 netstat、Wireshark、iftop 的部分核心能力，有机整合到了一个工具里
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span style="visibility: visible;"&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   能实时监控 TCP、UDP、QUIC 连接。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   识别 HTTP、HTTPS、DNS、SSH、MQTT、BitTorrent 等 15多种协议。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_gif/VDCUoW3UiblJDba59LibfunN7fjXJYN6RdoibLegnIv2R9ribleIFs0xnHia6Fm4aMHjSmdwlsRFer5TcGhwM5cR0PNA0EeLLXqcdOvdGbKLibbWg/640?wx_fmt=gif&amp;amp;from=appmsg&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px; visibility: visible;"&gt;
  &lt;span style="font-family: STHeitiSC-Light; font-size: 22px; color: rgb(14, 136, 235); font-weight: bolder; display: inline-block; padding-left: 10px; border-left-width: 5px; border-left-style: solid; border-left-color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    它不只是把几个工具的功能放到一个界面里。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    01 每条连接都知道是谁干的。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   Linux 系统用的是 eBPF 来跟踪进程的行为，相比传统的 procfs 这套办法，整体性能要更好一些。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   新进程只要一启动，它就能实时抓取到这个进程发起的网络活动。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   每一条连接都会明明白白地告诉你：这究竟是哪个进程建立的，对应的进程 ID 又是什么。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   排查网络问题的时候，节省下大量反复猜测的时间。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJqjkWJHZAiaMROibMZhlaBVaDI1t8LG4WokWcp6x8VzI8ZSuC8lMWEmmISRZ0GJ14aia4xg04mcgl3I7RdVAUAwcOxQK7unYQvuo/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 不只是看端口号。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   除了告诉你端口号之外。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它还能把跑在上面的应用层协议给认出来，支持的协议数量超过 15 种。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   比如说 HTTP、HTTPS、DNS、SSH，还有 QUIC、MQTT、BitTorrent，以及 NTP、mDNS、DHCP、SNMP、SSDP、NetBIOS 这些，它都能一一识别出来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   要是碰到 HTTPS 的连接，它还会直接告诉你，这次访问对应的是哪一个具体的域名。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如实是 DNS 查询，你也能清楚地看到发出去的查询请求是什么，以及服务器返回来的响应又是怎样的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblImlnC1cHXgDnhTs998icTvK8cQ9quz62D2YPhJEvricnZbzC0b0vsVibvM5ues3saiaVYNibNz8Nx1fnicjWE7levUgBtMt9icx3rQt4/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 连接状态一目了然。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它会根据协议类型去设置不一样的超时时间。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   打个比方，HTTP连接是10分钟，SSH连接给到30分钟，DNS查询就只给30秒。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   而且在TUI界面里面，会用颜色来告诉你哪些连接快过期了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   白色意味着连接正处在活跃状态，黄色说明这条连接已经有一阵子没动静了，红色则代表它马上就会到达超时界限。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLicjdrmP9hVjKuP0YZ9HtdjT7hd1Jj65fLIlQBiagT9673QcQZLfGVp7ZiaLzicwcgDR9fORjvbDuZm3CZibUAp1IKSABPhUGh71Lk/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    04 各大系统都能用，安装方式很全。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Linux、macOS、Windows、FreeBSD全都能用，常用的安装方式都能支持 。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLkMJqYS6lotLQpXtJttmtdYG4zNv0kndnHltVhyJV6WVDgQ6eDWYbZsOUicggV439bmhgO6NOZDGTV0Fjl67qG6wW0ic7wic06jk/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    05 抓包需要root权限，会主动降权保安全。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   抓包有时候确实得用 root 或管理员权限。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它启动之后，不会一直顶着高权限运行，而是会主动降权。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Linux 用 Landlock，macOS 用 Seatbelt，Windows 会丢掉高权限令牌，还限制子进程创建。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   用大白话翻译一下就是申请的高权限，用完就收，尽量把安全风险控制住。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    另外 RustNet 还有一些做得不错的小细节。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    强大的过滤功能。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   支持port:、src:、dst:、sni:、process:、state:、proto:这些关键词，也支持正则表达式。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   比如说，你想看所有访问GitHub的连接，直接输入
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    sni:github.com
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   就行了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   想看所有SSH连接，就输入
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    proto:ssh
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    PCAP文件导出。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它还支持把PCAP文件导出来，你可以拿Wireshark打开去做进一步的分析。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   而且会生成一个JSONL sidecar文件，里面包含了进程归属信息，你在Wireshark里面也能知道是哪个进程发的包。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    看完这些功能，估计不少朋友已经想上手试试了。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你用的是macOS或者Linux，最简单的方式就是这样：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;brew install rustnet&lt;/span&gt;&lt;br/&gt;&lt;span&gt;sudo rustnet&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   要是你用的是Ubuntu 25.10或者更高的版本，可以这么来：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;sudo add-apt-repository ppa:domcyrus/rustnet&lt;/span&gt;&lt;br/&gt;&lt;span&gt;sudo apt update &amp;amp;&amp;amp; sudo apt install rustnet&lt;/span&gt;&lt;br/&gt;&lt;span&gt;sudo rustnet&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Windows用户需要先把Npcap装上，然后用Chocolatey来安装：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;choco install rustnet&lt;/span&gt;&lt;br/&gt;&lt;span&gt;rustnet&lt;/span&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   启动之后，你会看到一个基于 ratatui 的 TUI 界面。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJ6Ux9e3AdvA8sxRmCNOljtkxQ0ClMCMCFHryU20qS9UMXcEnNPtdJBrleCOF2OWOQ2j8xtzSNgRnyqmBJpAM3mIk5GGXtkLk4/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    它目前有一些限制，还是需要注意一下的。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   比如 eBPF 这种方式，在 Linux 上最多只能拿到 16 个字符的进程名。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   要是碰到多线程程序，显示出来的还不一定是主进程名，有时候看到的其实是线程名。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Windows上的进程识别功能，是v0.13.0版本才加进去的，相对来说还比较新。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   再一个，它说到底还是个TUI工具，如果你需要Web UI或者远程监控那种用法，那就只能通过SSH来用了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    前面说了 RustNet 不少功能，感觉好像什么都能干。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不过，现实里并不存在什么万能工具。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   要是你想做深入的抓包分析，那 Wireshark 依然是头号选择。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果只是想瞅一眼连接列表，netstat 其实完全能搞定。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   RustNet 更像是把两者之间的那块空白给填上了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   想起来我以前排查一个 DNS 解析问题：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   先是 tcpdump 抓包，接着用 Wireshark 分析，再拿 netstat 看连接，一整套操作折腾下来，大半天就过去了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   有了 RustNet 之后，DNS 查询内容和响应结果一眼就能看到，再也不必导出 PCAP 文件去分析了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这种效率的提升，用一下就知道。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   大家平时用什么监控网络连接。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   来评论区说说你的选择。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目基于Apache-2.0协议开放，感兴趣的同学可以去GitHub仓库看看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/domcyrus/rustnet
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然都看到这儿了，欢迎随手点赞、在看、转发，也可以给我个星标⭐，接收最新的文章，咱们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1136" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;section powered-by="werss"&gt;
  &lt;span&gt;
   &lt;br/&gt;
  &lt;/span&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/qR2xAh1Ipa21VbaNkAUM8w</link><pubDate>Sun, 24 May 2026 15:17:31 +0800</pubDate></item><item><id>3877547210-2247512321_1</id><title>有人用来代替 Claude Code ，真香 。</title><description>6200+ Star，这个项目太猛了。               我看到社区里已经有人开始用来替换 Claude Code 了。          到底是什么神仙工具，敢挑战 Claude Code ?          它叫 oh-my-pi，          不用切 VS Code，待在终端里也能写代码、改代码、查 Bug，补全和提示照样有。                 有朋友会说 C...</description><guid>https://mp.weixin.qq.com/s/-eUVKiZuvxwqKZGZRRNbBw</guid><enclosure url="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblISjMYCrIly3R5EJzYPibOqrIXKDUpdVFu7JGdrTibI7KpiaX12MLjOlr0hgvib9F9xICbicHL3CPEUrMkvviaT75NEGuhFpIPZaoYt0/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1135" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   6200+ Star，这个项目太猛了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJI9pf8swqZI323o2YAFNeOFSCpUGDH6CNZRhwQAUeV0538NhNZBRx0OPYiarxtyMqpLUec1bJtJNSsQprkX5jnbyUKBObzvzaM/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   我看到社区里已经有人开始用来替换 Claude Code 了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   到底是什么神仙工具，敢挑战 Claude Code ?
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它叫 oh-my-pi，
  &lt;/span&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    不用切 VS Code，待在终端里也能写代码、改代码、查 Bug，补全和提示照样有。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblL1RMXnZfXDDor96ZA5lULwTafpzFMcjoQhO0Ms6EhtZVXaJTy2cUMj1Fsb2C5Y6HToxcjVXnhnDImWHNm8QvZ9Vqric3yEHgiak/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   有朋友会说 Claude Code 已经很牛X，为什么还要用 oh-my-pi ？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   我总结出3点，供大家参考。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    01 能接入的模型种类更多。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   两个工具都要花 API 的钱，不过 oh-my-pi 能选的模型更多，成本上也更灵活。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   看到这又有人要说了Claude Code也能接其它模型，是可以的，但要上点手段。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    02 使用它的开销相对来说会更小一些。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   oh-my-pi 的系统提示词只占 200 个 token，而 Claude Code，掏出来就是 10000 个 token。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   同样是去完成写代码的任务，oh-my-pi 成本会更低。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    03 每一步怎么干的列的清清楚楚。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   我是一直在用 Claude Code的， 给我的使用感受，Claude Code 更像是一个黑箱，改了一段代码，你不知道它的整个操作过程。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   而 oh-my-pi 不会跟你玩黑盒，它干了什么，你都看得见：调了哪个 API、改了哪些文件、花了多少钱，一清二楚。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    它把 IDE 能力放进了终端。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    01 把 LSP 集到了终端里。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   以前像代码报错提示、跳转到定义、查找引用，还有重命名这些活儿，我基本都得切回 IDE 里面去操作。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   现在不用了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   直接在终端里就可以全部搞定。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblKJSRlwvvBquCVU7S7IlR3Nh1MALdLmEaLL59jsJgEVAtiac6ZWjHHibz5qNwFx8uQpRA7jyVlfdyQSSabMBKDvZaKJGEY6nfIiaA/640?wx_fmt=other&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 具备代码调试能力。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   代码调试算得上是我日常工作中频率很高的一件事情。像 lldb、dlv，还有 debugpy 这一类调试器，都可以很顺畅地接进来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不管是设断点、单步往下走，还是查看变量，AI 也能在旁边搭把手，陪你一起把整个调试流程往前推。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblJmuXt0SsPhPRCL4IRt6Oib2bPtAsgOZVagAK96Cziat1LnbyicC1ubRmwQGE17R1iadCn5RpmfKu2DUEiauLETsNmcLCApIfpgDAzU/640?wx_fmt=other&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 能一直保留状态的 Python 环境。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它内置了一套可以持续运行的 Python 执行环境，相当于是直接带了一个 IPython 内核。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你一边和 AI 对话，一边就能让它帮你跑 Python 代码，而且这个执行环境是会一直保留下来的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   上一轮定义的变量、导入过的库，不会凭空消失，下一轮可以直接接着往下用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   还有 Python 这边还能反过来去调用 AI 自身的那些工具。比方说读文件、搜索代码、拉起子任务之类的，全都能联动到一起。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   也就是说，AI 不光能帮你写代码，它还能自己把一整套活儿从头到尾给串起来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    04 同时处理多个任务。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   遇到大任务 。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它把任务都拆好后，就扔给不同子代理处理，各自在独立环境里干活，所有子代理做完后，把结果汇总起来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   做大项目和复杂重构时，这个就很实用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblIRFXfARhK5nLszC5qJwJ7aYdnch0joa4T7KmIrKmC3TxI8ZPflGEp24HgYh2cCULsLIy3MiaThEL0AYANBBLIVCicmCffNXCaOc/640?wx_fmt=other&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    05 资源用的也更少了。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它把 ripgrep、glob、shell 这些高频操作都放到了内部执行，不用再绕出去起进程。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这样做的好处是，终端更快，也更省资源。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    06 目前支持 40 多个提供商。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不管你用哪路模型，基本都有得选。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   OpenAI、Anthropic、Gemini 能接，本地的 Ollama、LM Studio 也支持，GLM-5、DeepSeek、Qwen 这些同样能跑。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblK2jdxxeITQib6qtjwicCI6t2sxIY3DccUUELm5WicXhKmHMk1ozZ1abw9nDPhaTeJtYT58jK5ibI7m8ayhfPibMSExURL4LzNfBIVc/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    07 多模型路由。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目规划给 GLM-5，写代码交给 Qwen。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   按我的经验，这样分着用，效果通常比一个模型全包更好。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    08 调用真实浏览器和 Electron 应用。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这个能力在终端工具不多见。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   oh-my-pi 终端可以直接调用真实浏览器和 Electron 应用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblL1CliaCAibKWkJMZO0vOYKLVIzdvvu8VzuqgdAMQ7rtubuudqjPAoCibzI86tBbGlRMcZcuW6JOE0G50pbOykh2MGj22HxgrmbJ4/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   默认开启隐身模式，网页正常渲染，看不出任何差异。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不光能操作浏览器，像 Slack 这种 Electron 应用也能驱动。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Slack 接进去之后，代理读消息就跟读网页差不多。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    这个看家本领要单独拿出来说说。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我记得以前让 AI 改代码，经常碰到这种情况：它说把第 123 行改成什么，结果下一秒就报错——找不到这一行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   其实挺无语的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   有时候只是你中间插了几行代码，位置变了；或者复制的内容，跟原代码差了一个不容易发现的空格。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   oh-my-pi 给了另外一种思路：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它给每一行代码，都配发了一张独属于自己的“身份证”。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这张“身份证”就叫哈希，是根据这行代码的具体内容计算出来的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   等到 AI 需要去修改代码的时候，它不会再跟你说
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    把第几行改成什么
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   ，而是会告诉你
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    把哈希值是 xxx 的那行，改成什么
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我给你打个比方。假如你有这样一行代码：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;function add(a, b) {&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   oh-my-pi 就会为这行代码生成一个哈希值，类似这样
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    x7y8z9w0
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    传统方式
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   ：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   AI 会说，把第 1 行的
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    function add
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   改成
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    function sum
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   问题就在于，你中间一改代码，原来的第 1 行可能早就对不上了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    oh-my-pi 的做法
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   ：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它不靠行号，而是直接认代码本身。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   AI 会说，去改哈希值是
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    x7y8z9w0
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   的那一行。这样就算前面插了很多新代码，只要这行还在，它都能准确找到。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这样做的好处是不管中间插入再多代码。只要这行还在，它都能被精确地找到。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   看似小小的优化，却能让你用起来更舒服。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    想必有些人已经想上手了。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Windows 和 macOS 都是一行命令都可以装上。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   用 Windows 的朋友打开 PowerShell，复制执行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;irm https://omp.sh/install.ps1 | iex&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   macOS 和 Linux ，打开终端执行下面的命令。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;curl -fsSL https://omp.sh/install | sh&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   装完以后很直接，终端里输入 pi，按提示把模型和 API key 配好，就能用了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJr57HbpSSCOa7r2plRx4xuow63EicUASK9zpibTrZoMYU8ph5N39ZPoxBPNDoGGiaJicCIibRibZ5NiajuUtdWibO70BAaCGZjcZboxc8/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   读到这儿，又有朋友说了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   好家伙，又冒出一个新工具，光跟上节奏就已经让人头大了，哪里学得过来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你就直接说 Claude Code 和 oh-my-pi 这俩，到底怎么选？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我的答案是：
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    两个都上手试试。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Claude Code 用来做复杂重构和优化，oh-my-pi 就国产的模型，跑跑日常编码的活。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   主打一个专业加省钱。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   反正 oh-my-pi 是开源免费的，装上试试也不费电。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你说对吧？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目基于 MIT 协议开放，感兴趣的同学可以去 GitHub 仓库看看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/can1357/oh-my-pi
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然都看到这儿了，顺手点个赞、在看、转发都行，也欢迎给我个星标⭐，好第一时间收到最新的文章，咱们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1135" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/-eUVKiZuvxwqKZGZRRNbBw</link><pubDate>Sat, 23 May 2026 15:17:43 +0800</pubDate></item><item><id>3877547210-2247512291_1</id><title>一个外卖小哥的开源项目，有 6300 多人关注。</title><description>这是一个由美团外卖骑手开源的项目。          在 GitHub 上，它收获了 6300 多 Star。               它的初代作者原来是个写代码的，后来转行跑去送外卖，还做起了出纳。          项目转手后，从只能连阿里云盘的客户端，慢慢变成聚合多种网盘服务的播放器。          它要解决的正是多网盘用户都会遇到的麻烦：          电影、剧集和动漫这些，常...</description><guid>https://mp.weixin.qq.com/s/UkCGkwFu8yI5iRMh-dFVTg</guid><enclosure url="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblJ2r46DAG1Rt5gpdF0WhQxWY7hrXDJdiafxPBOcOkjl469iaZwvzYkNa1zCvtXDWSqdMKl5W7QA5UGN70V5mLuV2I6kLXjt7L2mM/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1134" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   这是一个由美团外卖骑手开源的项目。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   在 GitHub 上，它收获了 6300 多 Star。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblL7vqxh2twRXL5BZmC3L3RJdDRKWLRGHjjUpCXcZFp8S6suXtOYHmClqTlbLicITHgz2FZtY5PDv0YYsqzMvBh66JDadguNtkVg/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它的初代作者原来是个写代码的，后来转行跑去送外卖，还做起了出纳。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   项目转手后，从只能连阿里云盘的客户端，慢慢变成聚合多种网盘服务的播放器。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它要解决的正是多网盘用户都会遇到的麻烦：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   电影、剧集和动漫这些，常常散在几个网盘里。想找一部片子，得先去阿里云盘翻，找不到再奔百度网盘。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJlBrTPZvZa5p42bLicnIyTSqLZoOW2GhicY1YMw1TJ0wI1tXU0KGlkbJia0sFicalw4jo0HJzOT6Bto6Ucdu9cYgTYhcN32VZMpFs/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    真正让人烦躁的，并不是资源不够，而是资源太散。BoxPlayer 要做的，就是把这些零散文件归拢到一处
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span style="visibility: visible;"&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px; visibility: visible;"&gt;
  &lt;span style="font-family: STHeitiSC-Light; font-size: 22px; color: rgb(14, 136, 235); font-weight: bolder; display: inline-block; padding-left: 10px; border-left-width: 5px; border-left-style: solid; border-left-color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    它已经把多网盘以及媒体服务器都给很好地集成完了。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    01 市面上主流的网盘服务，统共有 8 种，它全都给予了支持。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   阿里云盘、百度网盘、123 网盘、115 网盘、PikPak、OneDrive、Dropbox，以及 Box。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   只需一个入口，就能统一管理所有网盘。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   同样也可以用 WebDAV 协议去对接上更多的服务，连自己电脑本地的文件夹也是能被导入进来的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJV1oNhpGCSB32oJ7Lnpq2IKtAqBuFvU8QKW3ZPvx1vKRHsF3uOvGgSib7SG946lSj8eJRoQXNvibWAw3guELC4qKH3xyIX50Mgg/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    多账号管理
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 还把媒体服务器也给接入了进来。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   假如你已经在家里搭建过 Jellyfin、Emby 或 Plex 这类媒体服务，BoxPlayer 就能直接连接上去。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   原先只能在浏览器当中访问的媒体库，现在用起来就像在本地一样流畅。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIFsdHKTztmUDONLph1LlaNT7GqibdGlYgPfQOHLpKDJYynhPXjVO1SyPc2pCpg1wdJ8l8OTicqewpDXyddRPXcicrxdvK4Fibpk2E/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="width: 563px !important; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   可以同时对多台媒体服务器进行管理，并为每一台服务器分配各不同的图标。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   比如依照韩剧、美剧、日剧来分别建立服务器，在侧边栏就能快速完成切换。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIGCr9JkB6UluRkCjwUESl2BxsotSy66NoucqRibicVNAuldriaY88g8h193UEddU5Wlhxm6rabBib7j5BYfVehTjjCsjiahvz7vrIY/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    媒体服务器主页
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 此外，还搭出了一套智能化的媒体库。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它会自动对电影、剧集、动漫这些内容进行整理，并生成出海报墙和详情页。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJEKfnABTgBkNibHUcmuaetEono3AUk45DoicPJToHl516Q28yCSic4A1dcW6NfKOuYDGHLvGGyjwKBuQhxa5zv1j7Ll1XK4wQY3o/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    剧集详情
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   与此同时，还会把标题、年份、评分、简介等信息进行补全。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLDv6THBibic2p3SaHPflgLRBiboxUEFyaDrOvaxXeNy9ZqyrXsAyMFwFzYGI6dQqBPRPiaDISS9vEtjLglUTLEbeEaPVhMDzKyK1w/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    动漫库
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这样做的好处是，在使用过程中你会感觉到，并不像在翻看网盘文件夹。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   而更像是在浏览自己的媒体库，查找内容也会变得轻松许多。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJ3OgTtiaCwOMoGeWD7hcatDiaQqObdkE42tNERpk15arSpEKUnL44aC2ZT7sJsEMd0YDyiayfu6nL7jGmX4gDhvBWZbHJbvficzK4/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    媒体库
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    播放和下载的能力，也同样是相当能打的。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    它所内置的播放器，是支持原画播放的。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   像多音轨、外挂字幕、字幕切换、清晰度调整、倍速这些功能，基本上都支持。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   大部分的视频，也都可以直接在线播放，不必非得先下载到本地。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你比较习惯运用 MPV、IINA 这样的播放器，也可以直接调用起来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    Aria2c 高速下载。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它把 Aria2c 引擎给整合了进来，自带多线程进行高速下载。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   还有，你也可以直接把文件下载到远程的 VPS 或者是 NAS 上面，把网络资源充分利用起来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    文件管理这块，也同样是拿得出手的好东西。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   文件夹的树视图，文件浏览和操作都变得更直观了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   ![文件管理](http://img.rumenz.com/md_img/截屏2026-04-24 23.20.18.png)
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   支持批量重命名大量文件和多层嵌套文件夹，管理几万个文件也不在话下。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLia6Qtnjcv6Et9iaiatDVwaej8rVXt0oyOkFU5Uyxnx06H4J7DbERMK4rIkwb7ziaRT3K6tibCVUY9RKXwiamjIjWyu5Md0ib1KWSzrc/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    文件夹树视图
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    紧跟着 AI 的发展脚步，它做了一个 clouddrive-cli。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这东西更像是给终端和 AI Agent 准备的一个自动化入口。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   可以列出、遍历、搜索网盘里的文件，还能自动生成符合 Jellyfin、Emby、Plex 规范的重命名方案。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   在改名之前，也支持 dry-run 预览，能够事先确认一下效果，要是不满意的话，还可以去追踪和进行撤回。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    更要紧的一点是，它提供了 MCP Server。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这样 Claude Desktop、Cursor、Windsurf 等 MCP 客户端就能直接调用这些功能。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   比如你给出这样一句话：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   “帮我把阿里云盘里 /Media 目录下面的电影和剧集，依照 Jellyfin 的规范进行重命名。”
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它就会先生成一份重命名方案，让你先预览一遍，确认没什么问题了，再去执行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    当然了，使用第三方的工具，也还是需要去留意潜在风险的。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   BoxPlayer 是调用官方的 SDK 或接口才得以实现的，并没有破坏官方接口的行为。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   任何第三方的工具，都有可能碰到接口变化、限速或者账号风控等这一类的问题，作者在 README 当中也已经明确表示过，不承诺一定不会被 ban 。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   最后提醒大家该项目仅供学习参考，不建议在生产环境中使用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    把这些功能都看完了，相信各位已经等不及了吧。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   直接去 GitHub Releases 页面，把对应平台的安装包下载下来就行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKia5dicX4HEZGmHrxl2Y55fnKu9Fz19AUbaCK68iaT0hbFEjhiaIrEm2aKEmjWC3M2QL32NBGSL108tRMzfzRRBjvRvkk5nNxHO2c/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=9" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   苹果生态这边，支持得会更完整一些，iOS、tvOS、macOS 全都覆盖到了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   直接在 App Store 里面去搜索 BoxPlayer，就可以进行安装了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我觉得这个项目挺有意思的一个地方在于，它不属于那种为了做播放器而去做播放器的工具。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   很多细节能够看出来，开发者自己，应该就是个重度网盘用户。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   谁会闲着没事去钻研，怎么把好几个网盘、媒体库、本地视频，全给塞进同一个界面里呢。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这种事情，一般都是被来回切换客户端折腾烦了之后，才会真的下手去做。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   在评论区说说你的看法。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目用的是 MIT 开源协议，源码和文档都在 GitHub。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址是：https://github.com/gaozhangmin/boxplayer
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然都已经看到这了，那欢迎随手点赞、在看、转发，也可以给我设个星标⭐，好接收最新的文章，咱们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1134" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   &lt;br/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/UkCGkwFu8yI5iRMh-dFVTg</link><pubDate>Fri, 22 May 2026 15:18:10 +0800</pubDate></item><item><id>3877547210-2247512277_1</id><title>NotebookLM 自动化 ，终于有人做了 。</title><description>一个非官方的开源项目。          4个月，GitHub Star 从 0 冲到 14,000+。               说实话，这个成绩在 AI 工具圈子里，确实不常见。          它叫 notebooklm-py，做的事情很简单：让开发者能用代码的方式去操作 Google 的 NotebookLM。               可能有朋友一时还没反应过来这里面的道道。   ...</description><guid>https://mp.weixin.qq.com/s/1TqRp71elcOnE_Y5eDcCbw</guid><enclosure url="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblK7Wp85p5qKIaJYYCOXeLn9mHrcWvNPDj8O114fZSv7gH3oMLm5RB1zx0ibqwUImAbHnVyXsd6W4uILbwbRwR4H3OzPLvwVMlOA/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1133" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   一个非官方的开源项目。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   4个月，GitHub Star 从 0 冲到 14,000+。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIsibgvkicDVrricfhNiaKLbiaRGibWI0QmOIg3QORE091KURWEfAicq3hoDcV9kvg6ticGPtAtmlCaHic3fVdlCOVgrx8BvKetrbCEMPzg/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   说实话，这个成绩在 AI 工具圈子里，确实不常见。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它叫 notebooklm-py，做的事情很简单：让开发者能用代码的方式去操作 Google 的 NotebookLM。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJn4IhjwTZGNm74Gib4m3ib81RyrV6uIneCOSpYKkyYznptQxuORibKEyADUosfpt8CNyFtZiaxkxncZz287dQrDx815TYfvNcmxXY/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   可能有朋友一时还没反应过来这里面的道道。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   不妨先在脑海里构想一下这么一个场景：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   你手头一下子有 50 份 PDF 文档。需要用 NotebookLM 把它们全都整理成学习笔记。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   像这种原本可能要花上一整个下午才能忙完的活儿。用了 notebooklm-py 之后，几分钟就可以收工了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px; visibility: visible;"&gt;
  &lt;span style="font-family: STHeitiSC-Light; font-size: 22px; color: rgb(14, 136, 235); font-weight: bolder; display: inline-block; padding-left: 10px; border-left-width: 5px; border-left-style: solid; border-left-color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    功能方面，它基本把 NotebookLM Web 界面的能力都覆盖了。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    01 源管理
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   支持的内容来源挺多的：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   URL 链接、YouTube 视频、PDF 文档、音频、视频、图片，还有 Google Drive 文件。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   甚至你直接粘贴一小段文字，也能处理。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLjpnMLd5YsMpyzkCmgRdhDiamdWXoAxcic0ibe60ibjpVUPpObxiaPqBYibmToVIMuYqByeqbIqDKMaZGx5W78YE2gzjpOgjavJwqcQ/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   以前你要是想往 NotebookLM 里导入一段 YouTube 视频里的内容，要么得自己手动去复制字幕，要么就得先整理出一个摘要来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   而现在这些操作，一行命令就能直接给办好。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 内容生成
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它所生成的 Audio 播客，一共给出了4种格式，其中涵盖了深度讨论、简报、评论以及辩论。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   支持3种不同的时长长度，而所覆盖到的语言种类更是达到了50多种。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   视频概览有3种格式可选，还提供了9种不同的视觉风格。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   连幻灯片的导出这一环节，它也给出了 PDF 与 PPTX 两种格式的选项。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIn3CvqGANAuO9daouN1OSBpz3dDbLtXVedtv4Zm1icsxKiamkzVEIBAJJCsx4E4XZalnlcXanYlzf7x0X8mgOficNQom7lFdnkzU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   对比之下 Web 界面那边就只支持 PDF 这一种格式。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   另外像练习题和记忆小卡片，它可以导出成JSON、Markdown，甚至还可以是HTML的格式，而不像原本那样，只能给出一串分享链接。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 单独修订幻灯片
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这一点倒是让我觉得挺舒心的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   以前在 Web 界面上如果想要改一张幻灯片，你要么就得让它把全部幻灯片给重新生成一遍，要么就只能自己手动导出来。再用 PowerPoint 去修改。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblICXN31xtAqpj6sSciaFLIpALMLBzVZ4icJUkpUJqmX9ntIMRgRdyUjD86TTezuL2UtCOUKn7qlUP34JtMGyoicmNBzmqVqtcF5Gc/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   而现在用这个工具，就能直接指定出其中的某一张，让 AI 专门针对这一张去进行重新生成。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    04 研究工具
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   支持 Web 探究和 Drive 探究两种模式。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   能够自动去网络上，或者去你个人的 Google Drive 文件夹里，把跟课题相关的资料搜出来，接着一并导入到你的笔记本里去。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    05 Agent 集成
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   除了这些核心的功能外，Agent 集成这一部分，很可能是它目前显得最超前的环节了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   借助 MCP，也就是模型上下文协议，它能够做到让 Claude Code、Codex 这一类 AI Agent，直接经过自然语言的方式去控制 NotebookLM。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   举例说，你可以直接对着 Claude Code 讲一句：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   "帮我把这篇论文导入到 NotebookLM 里，随后生成一段 10 分钟的播客"
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这时候 Claude Code 就会去调用 notebooklm-py 给出的接口，把接下来的这一整套流程自动给完成了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJH0aL6fZPvkicCxBRTNxP0SnBYItmmOAHAtEj6q9V8BQ9dyvhZSBWPcKfNCGicibgxt2dya7fm1qoc3fbQJFgPibVuCk5MAgFN07w/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这种"用 AI 去控制 AI"的能力，放在当前的开源体系里面，确实还不算多见。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   在 Reddit 上，我看到有人评价说，它其实已经初步形成了所谓的"可编程知识管道"，这样一个判断也谈不上有多夸张。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    它给出了三种使用方式，分别对应着各种不太一样的场景。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    最初是 Python API 的使用路径。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   倘若你是开发者的话，完全可以直接在自己写的 Python 代码里调用它。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJhT2NV7RwCibDs2cwagcb6F0icZTvxq84YYnDDFdgtibOibpV1a7pJsWUaPX4LM2lqWGBGS91xNLm0wjUXqaDFoOEPsnJh6mJZFCI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这一条路径特别适合把它嵌入到自己的使用中去，或者是用来构建出一整套自动化的处理流程。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    接着是命令行工具，也就是 CLI。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   要是你个人更习惯在终端上操作，那么 CLI 这边基本上已经能覆盖到日常所需要的大部分操作了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不论是写一些批处理脚本，还是跑自动化任务，都显得很方便。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    再就是 AI Agent 集成这个方向。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你若平常会用 Claude Code 或者 Codex 这一类工具的话，还靠 Skill 的方式，让这些 AI Agent 来直接操控 NotebookLM。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   也就是说你光靠说人话就能去完成一系列挺复杂的任务。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    需要注意的边界
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   把这些功能都看下来之后，当然也有几个边界是，需要顺带说明一下的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    它背后调用的是谷歌还没对外公开的 API。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这就意味着，Google 那边随时都有可能把接口逻辑给改掉，因而导致这个库直接失效。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目的作者自己在文档里边也讲得很清楚了，目前这个工具最适合的场景，还停留在原型开发、研究学习以及个人项目上，不建议把它往生产情境里去部署。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    认证这一环需要有 Google 账户来做支撑。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   需要通过浏览器登录，或者手动导入 Cookie。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   虽然项目本身已给出了一套 Cookie 的保活机制，可如果长时间不跑任务，Cookies 还是有极有可能过期，这时候就需要你再重新去刷新一下了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    目前仅仅支持 Consumer 这一版本。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不支持企业级的 API，所以假如你本身是企业用户的话，恐怕就得去看看还有没有别的替代方案了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    快速上手
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   读到这里，我相信各位可能已经有些按捺不住，想要上手试试了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    01）先把依赖给装好
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   先来安装一下这个包：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;pip install &lt;/span&gt;&lt;span style="color: #98c379;line-height: 26px;"&gt;&lt;span&gt;"notebooklm-py[browser]"&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   接着把浏览器那部分的组件也一头给装上：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;playwright install chromium&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这个过程大概会占用 170MB 左右，所以得耐心等上那么一小会儿。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02）接下来处理登录认证
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   把下面这条命令跑起来：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;notebooklm login&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这个时候会帮你在系统上直接打开一个浏览器窗口，让你用自己手上那个 Google 账户来完成授权。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03）顺手验证一下连接状态
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   借助下面这行命令来继续确认一遍：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;notebooklm auth check --&lt;/span&gt;&lt;span style="color: #e6c07b;line-height: 26px;"&gt;&lt;span&gt;test&lt;/span&gt;&lt;/span&gt;&lt;span&gt; --json&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   一旦屏幕上提示你。早就认证成功了，那就可以正式开始去用了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   之后不管是借助 CLI 还是借助 Python API 来做具体的操作，不管是创建一个新的笔记本、把资料源导入进去，还是生成一段播客音频，这一整段流程完全可以变成自动化的了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   说实话，我之前用 NotebookLM 的时候，最烦的就是没法导出。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   好不容易生成的播客、幻灯片，想用到别的地方，只能手动复制粘贴。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   遇到要批量处理的时候，更是没办法。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   notebooklm-py 把这个痛点给解决了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   虽然用的是非官方的办法，Google 随时可能改接口，但至少现在能用代码控制了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   对我来说，这就够了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   MIT 协议开源，想看的可以去 GitHub 看看。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    开源地址：
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   https://github.com/teng-lin/notebooklm-py
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然看到这了，欢迎随手点赞、在看、转发，也可以给我个星标⭐，接收最新的文章，我们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1133" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="margin-bottom: 0px;"&gt;
 &lt;span&gt;
  &lt;br/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/1TqRp71elcOnE_Y5eDcCbw</link><pubDate>Thu, 21 May 2026 15:17:26 +0800</pubDate></item><item><id>3877547210-2247512266_1</id><title>苹果最封闭的地方，被网友撬开了 。</title><description>今天给大家分享一款实用性拉满的实用神器。          GitHub 开源仅 48 小时，Star 直接冲到 3000。               它的项目名叫          vphone-cli          。          现在越来越火，已经稳稳拿下 6400+ Star。            它可以在苹果芯片 Mac 上运行完整 iOS26 系统，和 Xcode 模拟器...</description><guid>https://mp.weixin.qq.com/s/DykSIPbOec25i-giMa_b5g</guid><enclosure url="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblLuhSHzKqnq1ea5jhwoRwdvsuzZicmnB5M7f7rPGqjicjV922cN38A8m4hqIrTp7xwgOZXFiaHVYGPAsc4ib6rUicJsjWuct7vnJPibw/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1134" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   今天给大家分享一款实用性拉满的实用神器。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   GitHub 开源仅 48 小时，Star 直接冲到 3000。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIwQ0DOsSNY8nvD8zKKb5iczDib0tLhPSDHSFPG9YzW5pABYKphwowrET9Y1OGkOfJwMtFneH26oC1JTMoa7KGm0jRQe3DknGumU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它的项目名叫
  &lt;/span&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    vphone-cli
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span style="visibility: visible;"&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   现在越来越火，已经稳稳拿下 6400+ Star。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    它可以在苹果芯片 Mac 上运行完整 iOS26 系统，和 Xcode 模拟器完全不一样。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;span style="width: 680px !important; height: 522px !important; overflow: hidden;"&gt;
   &lt;div id="page-content"&gt;
    &lt;!--S 全屏播放 full_screen_mv--&gt;
    &lt;div id="js_mpvedio_wrapper_wxv_4524127996118728705" style="position:relative;height:100%"&gt;
     &lt;div class="add_bg_color appmsg_video"&gt;
      &lt;div class="video_tail_module video_screen_half" id="js_video_tail_panel_wxv_4524127996118728705" style="display: none;"&gt;
       &lt;div class="video_tail_module__hd" id="js_video_tail_hd"&gt;
        &lt;div class="account_info_wrp"&gt;
         &lt;div class="profile_info_wrp js_go_profile"&gt;
          &lt;img/&gt;
          &lt;div class="account_name" id="js_tail_panel_account_name"&gt;
          &lt;/div&gt;
          &lt;div class="subscription_info subscription_success"&gt;
           &lt;div class="account_subscription_tips js_subscription_success" id="js_subscription_success" style="display: none;"&gt;
            已关注
           &lt;/div&gt;
           &lt;i class="account_link_icon js_profile_icon" id="js_profile_icon"&gt;
           &lt;/i&gt;
          &lt;/div&gt;
         &lt;/div&gt;
         &lt;div class="btn_account_subscription js_btn_account_subscription" id="js_btn_account_subscription" style="display: none;"&gt;
          关注
         &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class="opr_wrp"&gt;
         &lt;span&gt;
          &lt;i class="opr_item refresh_icon"&gt;
          &lt;/i&gt;
          &lt;span&gt;
           重播
          &lt;/span&gt;
         &lt;/span&gt;
         &lt;span style="display: none;"&gt;
          &lt;i class="opr_item share_icon"&gt;
          &lt;/i&gt;
          &lt;span&gt;
           分享
          &lt;/span&gt;
         &lt;/span&gt;
         &lt;!--点赞后 加className selected--&gt;
         &lt;span style="display: none;"&gt;
          &lt;i class="opr_item like_icon"&gt;
          &lt;/i&gt;
          &lt;span&gt;
           赞
          &lt;/span&gt;
         &lt;/span&gt;
         &lt;!-- &lt;span class="opr_item_wrp recommend_item_wrp" id="js_tail_channel_button"               style="display: none;"&gt;               &lt;i class="opr_item video-logo_icon"&gt;&lt;/i&gt;               &lt;span class="opr_item_text"&gt;随便看看&lt;/span&gt;             &lt;/span&gt; --&gt;
        &lt;/div&gt;
       &lt;/div&gt;
       &lt;!-- 有拓展内容 --&gt;
       &lt;div class="have_expand" id="js_expand_area"&gt;
       &lt;/div&gt;
       &lt;!-- 广告内容 --&gt;
       &lt;div class="ad_area" id="js_tail_video_ad_area"&gt;
       &lt;/div&gt;
      &lt;/div&gt;
     &lt;/div&gt;
     &lt;div class="feed-wrapper"&gt;
      &lt;div aria-hidden="true" aria-modal="true" class="wx_bottom_modal_wrp player_relate_video_dialog weui-half-screen-dialog_fold" hidewhensideslip="" role="dialog" style="visibility: hidden; display: none;" tabindex="0"&gt;
       &lt;div class="wx_bottom_modal_mask_fixed"&gt;
       &lt;/div&gt;
       &lt;div class="weui-mask wx_bottom_modal_mask" style="--opacity: 1; display: none;"&gt;
       &lt;/div&gt;
       &lt;div class="weui-half-screen-dialog wx_bottom_modal" style="max-height: none;"&gt;
        &lt;div class="wx_bottom_modal_group_container" style="transform: translateX(calc(0% + 0px)); max-height: none;"&gt;
         &lt;div aria-hidden="false" class="wx_bottom_modal_group" style="left: 0%; max-height: none;"&gt;
          &lt;div class="weui-half-screen-dialog__hd__wrp"&gt;
           &lt;div class="weui-half-screen-dialog__hd"&gt;
            &lt;div class="weui-half-screen-dialog__hd__side"&gt;
             &lt;button class="weui-btn_icon weui-wa-hotarea"&gt;
              关闭
              &lt;i class="weui-icon-half-screen-close"&gt;
              &lt;/i&gt;
             &lt;/button&gt;
            &lt;/div&gt;
            &lt;div class="weui-half-screen-dialog__hd__main"&gt;
             &lt;strong class="weui-half-screen-dialog__title"&gt;
              观看更多
             &lt;/strong&gt;
            &lt;/div&gt;
            &lt;div class="weui-half-screen-dialog__hd__side"&gt;
             &lt;!-- --&gt;
             &lt;button class="weui-btn_icon weui-wa-hotarea" style="display: none;"&gt;
              更多
              &lt;i class="weui-icon-more"&gt;
              &lt;/i&gt;
             &lt;/button&gt;
            &lt;/div&gt;
           &lt;/div&gt;
          &lt;/div&gt;
          &lt;div class="weui-half-screen-dialog__bd" id="contentAreaWrp"&gt;
           &lt;div class="weui-loadmore" style="display: none;"&gt;
            &lt;i class="weui-loading"&gt;
            &lt;/i&gt;
           &lt;/div&gt;
           &lt;div class="wx_bottom_modal_msg_wrp" style="display: none;"&gt;
            &lt;div class="wx_bottom_modal_msg"&gt;
             &lt;i class="weui-loading"&gt;
             &lt;/i&gt;
            &lt;/div&gt;
           &lt;/div&gt;
           &lt;div class="weui-loadmore weui-loadmore_line weui-loadmore_dot" style="display: none;"&gt;
            &lt;span&gt;
            &lt;/span&gt;
           &lt;/div&gt;
           &lt;div class=""&gt;
            &lt;ul class="player_relate_video_list" id="js_player_relate_video_list"&gt;
            &lt;/ul&gt;
            &lt;div class="weui-loadmore weui-loadmore_default weui-loadmore_line weui-loadmore_dot player_video_list_end_line"&gt;
             &lt;span&gt;
             &lt;/span&gt;
            &lt;/div&gt;
           &lt;/div&gt;
           &lt;div class="weui-loadmore" style="display: none;"&gt;
            &lt;i class="weui-loading"&gt;
            &lt;/i&gt;
           &lt;/div&gt;
          &lt;/div&gt;
          &lt;!-- --&gt;
         &lt;/div&gt;
        &lt;/div&gt;
       &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class="js_video_fullscreen_profile video_full-screen__head video_full-screen__head_fixed" style="transform: translate3d(0px, 0px, 0px); display: none;"&gt;
       &lt;div class="video_full-screen__head__inner"&gt;
        &lt;div class="video_full-screen__head__body"&gt;
         &lt;div class="js_video_fullscreen_profile_exit video_full-screen__head__item"&gt;
          &lt;div class="video_full-screen__article-title"&gt;
           &lt;button class="weui-wa-hotarea js_video_fullscreen_profile_exit reset_btn video_close_fullscreen_btn"&gt;
            &lt;i class="weui-icon-close"&gt;
             退出全屏
            &lt;/i&gt;
           &lt;/button&gt;
          &lt;/div&gt;
         &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class="video_full-screen__head__ft"&gt;
         &lt;a aria-label="更多操作" class="video_menu_more js_video_fullscreen_menu_more weui-wa-hotarea_before" href="javascript:;" role="button"&gt;
          &lt;i class="weui-icon-outlined-more"&gt;
          &lt;/i&gt;
         &lt;/a&gt;
        &lt;/div&gt;
       &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class="infinity-list__wrapper" style="height: 510px;"&gt;
       &lt;div class="" style="height: 510px; overflow: visible;"&gt;
        &lt;div class="infinity-list__page destory-enter-to" data-key="wxv_4524127996118728705" infinity-idx="0" style="height: 510px; position: absolute; top: 0px; opacity: 1;"&gt;
         &lt;div class="mp-video-player" data-v-f4ee5450="" style="height: 100%;"&gt;
          &lt;div class="js_mpvedio page_video_wrapper" data-v-c66e8e28="" data-v-f4ee5450="" id="js_mpvedio_1779372143681_1359470665971"&gt;
           &lt;div class="js_page_video page_video ratio_primary align_upper_center video_skin_primary page_video_without-control page_video_skin-normal" data-v-c66e8e28="" style="display: block; width: 100%; height: 510px;"&gt;
            &lt;svg class="border_filler border_filler_lefttop" data-v-c66e8e28="" height="4px" viewbox="0 0 2 2" width="4px" xmlns="http://www.w3.org/2000/svg"&gt;
             &lt;path d="M1.85.005A2 2 0 000 2V0h2z" data-v-c66e8e28="" fill="#ffffff" fill-rule="evenodd"&gt;
             &lt;/path&gt;
            &lt;/svg&gt;
            &lt;svg class="border_filler border_filler_righttop" data-v-c66e8e28="" height="4px" viewbox="0 0 2 2" width="4px" xmlns="http://www.w3.org/2000/svg"&gt;
             &lt;path d="M1.85.005A2 2 0 000 2V0h2z" data-v-c66e8e28="" fill="#ffffff" fill-rule="evenodd"&gt;
             &lt;/path&gt;
            &lt;/svg&gt;
            &lt;svg class="border_filler border_filler_rightbot" data-v-c66e8e28="" height="4px" viewbox="0 0 2 2" width="4px" xmlns="http://www.w3.org/2000/svg"&gt;
             &lt;path d="M1.85.005A2 2 0 000 2V0h2z" data-v-c66e8e28="" fill="#ffffff" fill-rule="evenodd"&gt;
             &lt;/path&gt;
            &lt;/svg&gt;
            &lt;svg class="border_filler border_filler_leftbot" data-v-c66e8e28="" height="4px" viewbox="0 0 2 2" width="4px" xmlns="http://www.w3.org/2000/svg"&gt;
             &lt;path d="M1.85.005A2 2 0 000 2V0h2z" data-v-c66e8e28="" fill="#ffffff" fill-rule="evenodd"&gt;
             &lt;/path&gt;
            &lt;/svg&gt;
            &lt;div class="js_video_fullscreen_profile video_full-screen__head" data-v-c66e8e28="" style="display: none;"&gt;
             &lt;div class="video_full-screen__head__inner" data-v-c66e8e28=""&gt;
              &lt;div class="video_full-screen__head__body" data-v-c66e8e28=""&gt;
               &lt;div class="js_video_fullscreen_profile_exit video_full-screen__head__item" data-v-c66e8e28=""&gt;
                &lt;div class="video_full-screen__article-title" data-v-c66e8e28=""&gt;
                 &lt;button class="weui-wa-hotarea js_video_fullscreen_profile_exit reset_btn video_close_fullscreen_btn" data-v-c66e8e28="" style="display: none;"&gt;
                  &lt;i class="weui-icon-back-arrow" data-v-c66e8e28=""&gt;
                   切换到竖屏全屏
                  &lt;/i&gt;
                 &lt;/button&gt;
                 &lt;button class="weui-wa-hotarea js_video_fullscreen_profile_exit reset_btn video_close_fullscreen_btn" data-v-c66e8e28="" style="display: none;"&gt;
                  &lt;i class="weui-icon-close" data-v-c66e8e28=""&gt;
                   退出全屏
                  &lt;/i&gt;
                 &lt;/button&gt;
                 &lt;div class="video_full-screen__account" data-v-c66e8e28="" role="button" style="display: none;"&gt;
                  &lt;div class="video_full-screen__account-info" data-v-c66e8e28=""&gt;
                   &lt;span style='background: url("http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png") center center / cover no-repeat;'&gt;
                   &lt;/span&gt;
                   &lt;span&gt;
                    开源日记
                   &lt;/span&gt;
                   &lt;button class="reset_btn video_profile_follow_btn weui-wa-hotarea" data-v-c66e8e28="" style="display: none;" type="button"&gt;
                    已关注
                   &lt;/button&gt;
                  &lt;/div&gt;
                 &lt;/div&gt;
                &lt;/div&gt;
               &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="video_full-screen__head__ft" data-v-c66e8e28=""&gt;
               &lt;a aria-label="更多操作" class="video_menu_more js_video_fullscreen_menu_more weui-wa-hotarea_before" data-v-c66e8e28="" href="javascript:;" role="button" style="display: none;"&gt;
                &lt;i class="weui-icon-outlined-more" data-v-c66e8e28=""&gt;
                &lt;/i&gt;
               &lt;/a&gt;
              &lt;/div&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="js_share_btn_contain top_screen_opr video_share_opr" data-v-c66e8e28="" style="display: none;"&gt;
             &lt;div class="wx_video_share_area" data-v-c66e8e28=""&gt;
              &lt;button class="js_share_btn wx_video_share_btn weui-wa-hotarea" data-v-c66e8e28="" type="button"&gt;
               分享视频
              &lt;/button&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div aria-label="加载中" class="wrp_loading js_loading" data-v-c66e8e28="" role="alert" style="display: none;"&gt;
             &lt;span&gt;
              &lt;span&gt;
              &lt;/span&gt;
             &lt;/span&gt;
            &lt;/div&gt;
            &lt;div class="poster_cover" data-v-c66e8e28="" style='background-image: url("http://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblIWc3licQErtfnvMljCzwbBcXsLOWz7k6GEDSozibta5MGEwtb5cu922NRt2PAH4CZNmEJu2kqwem7OnUmRTaQicmJs8XOGkHOn6g/640?wx_fmt=jpeg&amp;amp;wxfrom=16"); background-size: contain; z-index: 10;'&gt;
            &lt;/div&gt;
            &lt;div class="full_screen_opr wx_video_play_opr" data-v-c66e8e28="" style=""&gt;
             &lt;button class="mid_play_box reset_btn" data-v-c66e8e28="" type="button"&gt;
              &lt;i aria-label="播放视频" class="pic_mid_play" data-v-c66e8e28=""&gt;
              &lt;/i&gt;
              &lt;span&gt;
               ，时长
              &lt;/span&gt;
              &lt;span&gt;
               00:07
              &lt;/span&gt;
             &lt;/button&gt;
            &lt;/div&gt;
            &lt;!-- --&gt;
            &lt;div class="top_screen_opr wx_video_flow_wrap" data-v-c66e8e28="" role="alert" style="display: none;"&gt;
             &lt;div class="wx_video_flow" data-v-c66e8e28=""&gt;
              &lt;p&gt;
              &lt;/p&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="mid_opr fast_pre_next" data-v-c66e8e28="" style="display: none;"&gt;
             &lt;div class="video_processor_bar" data-v-c66e8e28=""&gt;
              &lt;div class="processor_bar_inner js_forward_bar" data-v-c66e8e28="" style="width: 0%;"&gt;
              &lt;/div&gt;
             &lt;/div&gt;
             &lt;p&gt;
              &lt;span&gt;
               0
              &lt;/span&gt;
              &lt;span&gt;
               /
              &lt;/span&gt;
              &lt;span&gt;
               0
              &lt;/span&gt;
             &lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="wx_video_progress_msg full_screen_opr" data-v-c66e8e28="" role="alert" style="display: none;"&gt;
             &lt;div class="wx_video_progress_msg_inner" data-v-c66e8e28=""&gt;
              &lt;span&gt;
               00:00
              &lt;/span&gt;
              &lt;span&gt;
               /
              &lt;/span&gt;
              &lt;span&gt;
               00:07
              &lt;/span&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="video_fullscreen_mask" data-v-c66e8e28="" style="display: none;"&gt;
            &lt;/div&gt;
            &lt;div class="video_screen_mode_switch" data-v-c66e8e28="" style="bottom: calc(50% - 498px); display: none;"&gt;
             &lt;button class="reset_btn video_screen_mode_switch_btn weui-wa-hotarea" data-v-c66e8e28="" type="button"&gt;
              切换到横屏模式
             &lt;/button&gt;
            &lt;/div&gt;
            &lt;div class="full_screen_opr wx_video_pause_full_mod" data-v-c66e8e28="" style="display: none;"&gt;
             &lt;button class="reset_btn wx_video_pause_full_btn" data-v-c66e8e28="" type="button"&gt;
              继续播放
             &lt;/button&gt;
            &lt;/div&gt;
            &lt;input aria-hidden="true" class="aria_hidden_abs" data-v-c66e8e28="" title="显示工具栏" type="checkbox"/&gt;
            &lt;div class="js_control video_opr video_opr_normal padding_play_bar" data-v-c66e8e28=""&gt;
             &lt;div class="opr_inner" data-v-c66e8e28=""&gt;
              &lt;div class="opr_inner_fl" data-v-c66e8e28=""&gt;
               &lt;div class="js_play_bar_wrapper wrp_play_bar wrp_play_bar_hide_speed-dot" data-v-c66e8e28="" style="display: none;"&gt;
                &lt;div class="js_progress_bar wrp_progress" data-v-c66e8e28="" style="padding-top: 6px; padding-bottom: 0px;"&gt;
                 &lt;div class="progress_bar" data-v-c66e8e28=""&gt;
                  &lt;div class="background_bar" data-v-c66e8e28=""&gt;
                  &lt;/div&gt;
                  &lt;div aria-labelledby="ariaPlayedCurrent" class="js_played_bar played_bar" data-v-c66e8e28="" role="option" style="width: 0%;" title="按住可调"&gt;
                   &lt;span&gt;
                    进度条，百分之0
                   &lt;/span&gt;
                  &lt;/div&gt;
                  &lt;div class="js_buffer_bar buffer_bar" data-v-c66e8e28="" style="width: 0%;"&gt;
                  &lt;/div&gt;
                  &lt;!-- --&gt;
                  &lt;div class="weui-wa-hotarea js_played_speed_cnt wrp_speed_dot" data-v-c66e8e28="" style="left: 0%;"&gt;
                   &lt;i class="speed_dot" data-v-c66e8e28=""&gt;
                   &lt;/i&gt;
                  &lt;/div&gt;
                 &lt;/div&gt;
                &lt;/div&gt;
               &lt;/div&gt;
              &lt;/div&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="js_control video_opr video_opr_sns" data-v-c66e8e28="" style="bottom: 0px; display: none;"&gt;
             &lt;div class="opr_inner" data-v-c66e8e28=""&gt;
              &lt;div class="opr_inner_fl" data-v-c66e8e28=""&gt;
               &lt;div class="js_switch weui-wa-hotarea switch switch_on" data-v-c66e8e28=""&gt;
                &lt;a class="btn_opr" data-v-c66e8e28="" href="javascript:;" role="button"&gt;
                 播放
                &lt;/a&gt;
               &lt;/div&gt;
               &lt;div data-v-c66e8e28="" role="option"&gt;
                &lt;div class="played_time js_now_play_time" data-v-c66e8e28=""&gt;
                 00:00
                &lt;/div&gt;
                &lt;span&gt;
                 /
                &lt;/span&gt;
                &lt;div class="total_time js_total_time" data-v-c66e8e28=""&gt;
                 00:07
                &lt;/div&gt;
               &lt;/div&gt;
               &lt;!-- --&gt;
               &lt;div class="total_time js_total_time" data-v-c66e8e28="" role="option" style="display: none;"&gt;
                00:07
               &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="opr_inner_fr" data-v-c66e8e28=""&gt;
               &lt;!-- --&gt;
               &lt;!-- --&gt;
               &lt;!-- --&gt;
               &lt;div class="weui-wa-hotarea js_full_screen_control screenSize_control full" data-v-c66e8e28="" role="button"&gt;
                &lt;i class="icon_control" data-v-c66e8e28=""&gt;
                 全屏
                &lt;/i&gt;
               &lt;/div&gt;
              &lt;/div&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="js-toast weui-toast weui-toast_text" data-v-c66e8e28="" role="alert" style="display: none;"&gt;
             &lt;p&gt;
             &lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="full_screen_opr video_quick_play_context" data-v-c66e8e28="" role="alert" style="display: none;"&gt;
             &lt;div class="video_quick_play_msg" data-v-c66e8e28=""&gt;
              &lt;i class="icon_video_quick_play" data-v-c66e8e28=""&gt;
              &lt;/i&gt;
              倍速播放中
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="js_sub_setting video_full-screen__footer video_full-screen__footer__sub-setting hide" data-v-c66e8e28=""&gt;
             &lt;div class="video_full-screen__sub-setting video_full-screen__sub-setting__speed js_playback_mode_select" data-v-c66e8e28="" style="display: none;"&gt;
              &lt;a class="video_full-screen__sub-setting__item js_playback_0" data-v-c66e8e28="" href="javascript:;"&gt;
               0.5倍
              &lt;/a&gt;
              &lt;a class="video_full-screen__sub-setting__item js_playback_1" data-v-c66e8e28="" href="javascript:;"&gt;
               0.75倍
              &lt;/a&gt;
              &lt;a class="video_full-screen__sub-setting__item current js_playback_2" data-v-c66e8e28="" href="javascript:;"&gt;
               1.0倍
              &lt;/a&gt;
              &lt;a class="video_full-screen__sub-setting__item js_playback_3" data-v-c66e8e28="" href="javascript:;"&gt;
               1.5倍
              &lt;/a&gt;
              &lt;a class="video_full-screen__sub-setting__item js_playback_4" data-v-c66e8e28="" href="javascript:;"&gt;
               2.0倍
              &lt;/a&gt;
             &lt;/div&gt;
             &lt;div class="video_full-screen__sub-setting video_full-screen__sub-setting__ratio js_play_mode_select" data-v-c66e8e28="" style="display: none;"&gt;
              &lt;a class="video_full-screen__sub-setting__item current js_resolution_0" data-v-c66e8e28="" href="javascript:;"&gt;
               超清
              &lt;/a&gt;
              &lt;a class="video_full-screen__sub-setting__item js_resolution_1" data-v-c66e8e28="" href="javascript:;"&gt;
               流畅
              &lt;/a&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="js_inner inner not_fullscreen" data-v-c66e8e28=""&gt;
             &lt;div class="js_video_poster video_poster" data-v-c66e8e28=""&gt;
              &lt;div class="video_mask" data-v-c66e8e28=""&gt;
              &lt;/div&gt;
              &lt;video class="" controlslist="nodownload" crossorigin="anonymous" data-v-c66e8e28="" playsinline="isiPhoneShowPlaysinline" poster="http://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblIWc3licQErtfnvMljCzwbBcXsLOWz7k6GEDSozibta5MGEwtb5cu922NRt2PAH4CZNmEJu2kqwem7OnUmRTaQicmJs8XOGkHOn6g/0?wx_fmt=jpeg&amp;amp;wxfrom=16" preload="metadata" src="https://mpvideo.qpic.cn/0bc3nyammaaad4ap5cqnenvfa3wdyzxabrqa.f10102.mp4?dis_k=fb624e7f609679a2b47c7d4dd4d24327&amp;amp;dis_t=1779372138&amp;amp;play_scene=10120&amp;amp;auth_info=dvmC/v4AKABk6oLG9FItaBc7YB8zN2odZihBNVEBdD5QVUVkHUhXehVMN11jaSFL&amp;amp;auth_key=46a459467dcb0354b42d72f48602a75c&amp;amp;vid=wxv_4524127996118728705&amp;amp;format_id=10102&amp;amp;support_redirect=0&amp;amp;mmversion=false" style="display: block; width: 680px; height: 510px;" webkit-playsinline="isiPhoneShowPlaysinline"&gt;
               您的浏览器不支持 video 标签
              &lt;/video&gt;
             &lt;/div&gt;
             &lt;div class="video_poster__info__play" data-v-c66e8e28="" data-v-f4ee5450="" style="display: none;"&gt;
              &lt;i class="" data-v-c66e8e28="" data-v-f4ee5450=""&gt;
              &lt;/i&gt;
             &lt;/div&gt;
             &lt;div class="video_poster__info" data-v-c66e8e28="" data-v-f4ee5450="" style="display: none;"&gt;
              &lt;p style="font-size: 17px;"&gt;
               继续观看
              &lt;/p&gt;
              &lt;p style="font-size: 12px;"&gt;
               苹果最封闭的地方，被网友撬开了 。
              &lt;/p&gt;
             &lt;/div&gt;
             &lt;div class="video_poster__info__mask" data-v-c66e8e28="" data-v-f4ee5450="" style="width: 100%; display: none;"&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="video_profile_area" data-v-c66e8e28="" style="display: none;"&gt;
             &lt;div data-v-c66e8e28=""&gt;
              &lt;button class="reset_btn video_profile_relate_video_btn js_wx_tap_highlight wx_tap_link" data-v-c66e8e28="" data-v-f4ee5450="" style="display: none;"&gt;
               观看更多
               &lt;i class="weui-icon-filled-arrow video_profile_relate_video_btn_arrow"&gt;
               &lt;/i&gt;
              &lt;/button&gt;
             &lt;/div&gt;
             &lt;div data-v-c66e8e28="" role="link" style="width: fit-content; max-width: 100%;" tabindex="0"&gt;
              &lt;div class="weui-wa-hotarea video_profile_desc_wrp" data-v-c66e8e28="" role="option"&gt;
               &lt;div class="icon_appmsg_tag_wrp" data-v-c66e8e28="" style="display: none;"&gt;
                &lt;div class="icon_appmsg_tag" data-v-c66e8e28=""&gt;
                 转载
                &lt;/div&gt;
               &lt;/div&gt;
               &lt;div class="weui-hidden_abs" data-v-c66e8e28=""&gt;
                ,
               &lt;/div&gt;
               &lt;div class="video_profile_desc" data-v-c66e8e28=""&gt;
                苹果最封闭的地方，被网友撬开了 。
               &lt;/div&gt;
               &lt;i class="weui-icon-outlined-arrow video_profile_desc_arrow" data-v-c66e8e28=""&gt;
               &lt;/i&gt;
              &lt;/div&gt;
             &lt;/div&gt;
             &lt;div class="video_profile_wrp weui-flex" data-v-c66e8e28=""&gt;
              &lt;div class="video_profile weui-flex weui-flex__item" data-v-c66e8e28=""&gt;
               &lt;span style='background: url("http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png") center center / cover no-repeat;'&gt;
               &lt;/span&gt;
               &lt;span&gt;
                开源日记
               &lt;/span&gt;
               &lt;button class="reset_btn video_profile_follow_btn weui-wa-hotarea" data-v-c66e8e28="" style="display: none;" type="button"&gt;
                已关注
               &lt;/button&gt;
              &lt;/div&gt;
              &lt;div class="video_sns_context" data-v-c66e8e28="" style="display: none;"&gt;
               &lt;button class="video_sns_btn video_sns_btn_share" data-v-c66e8e28="" style="display: none;" type="button"&gt;
                &lt;span&gt;
                 分享
                &lt;/span&gt;
               &lt;/button&gt;
               &lt;button class="video_sns_btn video_sns_btn_praise" data-v-c66e8e28="" title="" type="button"&gt;
                &lt;span&gt;
                 点赞
                &lt;/span&gt;
               &lt;/button&gt;
               &lt;button class="video_sns_btn video_sns_btn_love" data-v-c66e8e28="" title="" type="button"&gt;
                &lt;span&gt;
                 在看
                &lt;/span&gt;
               &lt;/button&gt;
              &lt;/div&gt;
              &lt;div class="like_comment_wrp" data-v-c66e8e28="" role="alert" style="display: none;"&gt;
               &lt;div class="like_comment_inner" data-v-c66e8e28=""&gt;
                &lt;div class="like_comment_bd" data-v-c66e8e28=""&gt;
                 &lt;div class="like_comment_tips" data-v-c66e8e28=""&gt;
                  &lt;i class="weui-icon-success" data-v-c66e8e28=""&gt;
                  &lt;/i&gt;
                  &lt;i class="icon-success-primary" data-v-c66e8e28=""&gt;
                  &lt;/i&gt;
                  已同步到看一看
                  &lt;a class="like_comment_share_link weui-wa-hotarea_before" data-v-c66e8e28="" href="javascript:;"&gt;
                   写下你的评论
                  &lt;/a&gt;
                 &lt;/div&gt;
                &lt;/div&gt;
               &lt;/div&gt;
              &lt;/div&gt;
             &lt;/div&gt;
            &lt;/div&gt;
           &lt;/div&gt;
          &lt;/div&gt;
          &lt;div data-v-f4ee5450="" style="display: none;"&gt;
           &lt;div class="weui-mask_transparent" data-v-f4ee5450=""&gt;
           &lt;/div&gt;
           &lt;div class="weui-toast" data-v-f4ee5450="" style="top: 45%; position: absolute;"&gt;
            &lt;i class="weui-icon-success-no-circle weui-icon_toast" data-v-f4ee5450=""&gt;
            &lt;/i&gt;
            &lt;p&gt;
            &lt;/p&gt;
           &lt;/div&gt;
          &lt;/div&gt;
          &lt;div class="fullscreen-screenshot__layer" data-v-f4ee5450="" style="background-color: rgb(0, 0, 0); display: none;"&gt;
          &lt;/div&gt;
          &lt;div class="fullscreen-screenshot__layer" data-v-f4ee5450="" style='z-index: -1; background-image: url(""); display: none;'&gt;
          &lt;/div&gt;
         &lt;/div&gt;
        &lt;/div&gt;
       &lt;/div&gt;
      &lt;/div&gt;
      &lt;!-- --&gt;
     &lt;/div&gt;
    &lt;/div&gt;
    &lt;!--E 视频播放器--&gt;
    &lt;!-- S 视频社交--&gt;
    &lt;div class="interact_video" id="bottom_bar" style="display:none;height: 35px;"&gt;
     &lt;div class="inter_opr"&gt;
      &lt;a class="access_original" href="javascript:;" id="video_detail_btn" target="_blank"&gt;
       视频详情
      &lt;/a&gt;
     &lt;/div&gt;
    &lt;/div&gt;
   &lt;/div&gt;
  &lt;/span&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   就像操作一台没有外壳的 iPhone。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   你可以用 SSH 远程登入，还可以通过 VNC 直通图形桌面。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px; visibility: visible;"&gt;
  &lt;span style="font-family: STHeitiSC-Light; font-size: 22px; color: rgb(14, 136, 235); font-weight: bolder; display: inline-block; padding-left: 10px; border-left-width: 5px; border-left-style: solid; border-left-color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    还很贴心的准备了5种不同的固件，用在不同场景。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKn9MNEtUmmCgBtu9Mc3k0OTFdRjlctWkk2bAkicyrwiblUrFt0e6yVo9zqEJ8OhKtrllHsUrv4sx8wlQEib2E9g5n4ydCfgQyMq4/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    01 Patchless 变体。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   只打 3 个补丁，改动最小，稳定性最好，适合只想跑个 iOS 环境测试应用的场景。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 Regular 变体。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   在 Patchless 基础上增加一些功能，同样稳定性好，适合日常使用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 Development 变体。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   面向开发者，提供更多调试能力。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    04 Jailbreak 变体。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   适宜安全研究员，首次启动时会自动安装 Sileo也就是越狱包管理器以及 TrollStore即永久签名工具，省去了手动越狱的麻烦。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblLCDAtWj2w3pq5ZngLDpuib9EvzaFoRtINNPoJgMTcglABcn9yFXR9fZpPoHHiaibr7NTZHjz679xyE6jtfqicPhaZ4eYNsmQp15Qs/640?wx_fmt=jpeg&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    能看见所有软件包
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    05 Experimental 变体。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   打了 140 个补丁，目的是让部分 Apple 服务误以为这台虚拟机不是 VM 。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   注意这个目前还在实验阶段，稳定性不如上面4个。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    很好奇它是怎么做到的 。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblIh0eq5opqYeI1K1AG4IYglibGNic0icSticSRPlm5CkNPCh6JFJCficcE6WdWeYJbJndv4xYJV02TF9bz2GlYupaiamaMJpHWy19834/640?wx_fmt=jpeg&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   实际上 Mac 能跑 iOS，并不是什么黑科技。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   01 M 系列芯片跟 iPhone 的 A 系列芯片本来就是一家的，用的都是 ARM64 指令集。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   02 外加 macOS 自带的 Virtualization.framework 提供了接近原生的虚拟化性能。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这两样东西配合在一起，Mac 从硬件上就已经可以运行 iOS 内核了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   那为啥苹果不开放这个功能 ？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   说白了这套虚拟化技术本来就是给企业服务器准备的，苹果自己拿来跑 iOS 虚拟机子，专门做内部自动化测试用的，压根就没打算放出来给普通人用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   而 vphone-cli 通过逆向工程和二进制补丁，硬是把这套企业级的基础设施给撬开了，让普通开发者也能用上。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    想来试试的朋友，我替大家把安装流程摸了一遍。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   上手门槛有一点高，但不多。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   首先检查一下硬件配置：macOS 26+、至少 64GB 空间、Apple Silicon Mac也就是 M 系列芯片。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   硬件没问题的话，接下来需要对系统做一些修改。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   首先需要禁用 SIP 和 AMFI。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    01 关闭 SIP
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   长按电源键进入恢复模式，执行：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;csrutil disable&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;csrutil allow-research-guests enable&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 关闭 AMFI
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   重启回到正常系统后，打开终端执行：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;sudo nvram boot-args="amfi_get_out_of_my_way=1 -v"&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   执行完再次重启生效。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   ⚠️ 注意这会降低 Mac 的安全性，请谨慎操作，建议用专门的测试机。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 继续安装依赖
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   系统修改完成后，装上后面编译要用到的依赖：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;brew install gnu-tar openssl@3 ldid-procursus sshpass keystone autoconf automake pkg-config libtool git-lfs&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    04 下载代码
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   前面都是准备工作，现在开始下载代码。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;git clone https://github.com/Lakr233/vphone-cli&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;cd vphone-cli&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    05 初次部署
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   下面命令不需要知道干什么，直接挨着复制执行，注意不要漏掉。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;make setup_tools&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;source .venv/bin/activate&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;make build&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;make vm_new&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;make fw_prepare&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;make fw_patch&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这里要用到两个终端窗口配合执行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   第一个终端执行
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    make boot_dfu
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   进入 DFU 模式并保持。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   第二个终端依次执行
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    make restore_get_shsh
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   和
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    make restore
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   ，这一步比较耗时。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   然后是安装 Ramdisk 和 CFW，同样需要两个终端：第一个终端保持 DFU 模式，第二个终端依次执行：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;make ramdisk_build&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;make ramdisk_send&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;iproxy 2222 22 &amp;amp;&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;make cfw_install  &lt;/span&gt;&lt;span style="color: #5c6370;font-style: italic;line-height: 26px;"&gt;&lt;span&gt;# 耗时较长&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   最后一步配置 SSH。等虚拟 iPhone 启动后出现
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    bash-4.4#
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   提示符，在同一个终端执行：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJkk42vTbGN0Jd5wv7WIJW5MnNQ7bZmaxeSlERhialPJkuy7JvQEaXtNIw248E1R0lwj459LZleTmeI9628znyOeTnfc99yqefQ/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   执行完会自动关机。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    06 日常使用
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   启动虚拟 iPhone 只需一条命令：
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    make boot
   &lt;/span&gt;
  &lt;/code&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   再做一个端口转发：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;iproxy 22222 22222 &amp;amp;   &lt;/span&gt;&lt;span style="color: #5c6370;font-style: italic;line-height: 26px;"&gt;&lt;span&gt;# SSH&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;iproxy 5901 5901 &amp;amp;     &lt;/span&gt;&lt;span style="color: #5c6370;font-style: italic;line-height: 26px;"&gt;&lt;span&gt;# VNC&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   配置完就可以连了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   SSH 用
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    ssh -p 22222 root@127.0.0.1
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   VNC 用
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    vnc://127.0.0.1:5901
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   ，默认密码都是
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    alpine
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblJsCA5fwjvWMSF6Zu1kcwUHhYFxy5k2O44kweeiaRDqra2GibWaxzEYZOQzjiaYfNbJjZbRhibCEhuyYqicSs4809fpibyLhtP4icDvc8/640?wx_fmt=jpeg&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   另外 vphone-cli 还暴露了一个主机控制 socket，可以程序化截图、注入触摸事件、执行滑动手势，每次操作都会返回灰度截图，适合做 AI 驱动的端到端测试。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    需要注意的限制
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   经过验证 Apple 服务是用不了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblLz6hIpvVG1AeGKhyuTuosicmibv8XMHuQuOXn7FyHTlLkbrC3a9yAfjfSChvOd1LOibr7MRZoSJRTJ2AVJTwrXKfUkhl97VcKSes/640?wx_fmt=jpeg&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Apple相关的服务也不可用
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   还有 iCloud、App Store、iMessage 这些，在虚拟 iPhone 上也跑不起来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   另外目前只支持 Apple Silicon Mac，Intel Mac 用不了，没办法套娃，没法在 Mac 虚拟机里再跑虚拟 iPhone。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   目前仅支持 iOS 26.x，想测老版本还得靠真机。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   到这我想起以前公司搞 iOS 开发的时候，代码在模拟器上跑得好好的，一到真机就报错。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   想适配不同 iOS 版本，还得凑齐好几台设备来测试。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   效率低的不行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   条件好的公司会花几千刀订阅 Corellium。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   vphone-cli 对 iOS 开发者而言，能有个接近真机的测试环境来验证不同系统版本的表现，省下买一堆真机的钱，已经很值了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   对安全研究员来说，直接拿到 root 权限的 iOS 环境，分析系统组件、测试漏洞利用代码，不用再折腾越狱工具。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   虽说现在还有显示，但值得关注。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目 MIT 协议，源码和文档都在Github。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/Lakr233/vphone-cli
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然看到这了，欢迎随手点赞、在看、转发，也可以给我个星标⭐，接收最新的文章，我们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   &lt;br/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1134" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;section powered-by="werss"&gt;
  &lt;span&gt;
   &lt;br/&gt;
  &lt;/span&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/DykSIPbOec25i-giMa_b5g</link><pubDate>Wed, 20 May 2026 15:18:32 +0800</pubDate></item><item><id>3877547210-2247512244_2</id><title>7 万多人关注 ，玩 AI 没用过就 OUT 了。</title><description>9 个月时间，7 万多人关注。          这个增长速度，在开源圈子里真的相当厉害了。               它是一个跨平台桌面应用，能够统一地对 6 个 AI 编程工具的 API 供应商配置进行管理。          玩大模型的人应该没有不知道 CC Switch 的。          为什么要用它？          最早我自己平时同时在用好几个 AI 编程工具，切换供应商要手...</description><guid>https://mp.weixin.qq.com/s/hmDosx9ZnORFZ9hPf2N_Mg</guid><enclosure url="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblLAC4icUicYOXgHDaeYnmxeX17ics2bibFIkwM792icxoPiatdw03nq0Wxm35TWJZrZ4dZEa7iaMyGeGBMO9XfBwSwmkzthY7yBZpMkMA/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="js_uneditable custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1134" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   9 个月时间，7 万多人关注。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   这个增长速度，在开源圈子里真的相当厉害了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLDGzxib13lwTdbNRmT1kDJIt1VibNdU0wFWfPFa4b9CbnHHv70gh2N13gGaGAT4b8DPmNQqWrcRvdUHGkQeBwU5U5FgX8bjkHQQ/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它是一个跨平台桌面应用，能够统一地对 6 个 AI 编程工具的 API 供应商配置进行管理。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   玩大模型的人应该没有不知道 CC Switch 的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   为什么要用它？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   最早我自己平时同时在用好几个 AI 编程工具，切换供应商要手动去改配置文件。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   01 Claude Code 需要去改
  &lt;/span&gt;
  &lt;code style='font-size: 14px; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: rgb(30, 107, 184); background-color: rgba(27, 31, 35, 0.05); font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace; word-break: break-all; visibility: visible;'&gt;
   &lt;span style="visibility: visible;"&gt;
    ~/.claude/settings.json
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span style="visibility: visible;"&gt;
   这个文件，
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   02 Codex 则得去改
  &lt;/span&gt;
  &lt;code style='font-size: 14px; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: rgb(30, 107, 184); background-color: rgba(27, 31, 35, 0.05); font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace; word-break: break-all; visibility: visible;'&gt;
   &lt;span style="visibility: visible;"&gt;
    ~/.codex/config.toml
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span style="visibility: visible;"&gt;
   ，
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   03 Gemini CLI 就是
  &lt;/span&gt;
  &lt;code style='font-size: 14px; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: rgb(30, 107, 184); background-color: rgba(27, 31, 35, 0.05); font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace; word-break: break-all; visibility: visible;'&gt;
   &lt;span style="visibility: visible;"&gt;
    .env
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span style="visibility: visible;"&gt;
   文件。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   格式不一样，路径也不一样，好几次改了没效果，要不停地查资料调整，真的很折腾人。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    CC Switch 能够把这些全都收束到一个界面当中来开展管理工作。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIvicIzY7dt45VE4ajAoKiavdaHYhAj7iarQTvklMYppNEp714s3WbzbZyr3swadNorGAOInayrpbqx7Lh4d4IFNCqSmljI3WicsYI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   我个人最常用的是它的
  &lt;/span&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    系统托盘快速切换
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span style="visibility: visible;"&gt;
   功能。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   写代码的时候如果想换个供应商来测试一下的话，直接在托盘里点一下就行了，不用切回到应用界面当中去。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px; visibility: visible;"&gt;
  &lt;span style="font-family: STHeitiSC-Light; font-size: 22px; color: rgb(14, 136, 235); font-weight: bolder; display: inline-block; padding-left: 10px; border-left-width: 5px; border-left-style: solid; border-left-color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    你想要的功能都给你。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    01 一键切换供应商。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   像 DeepSeek，智谱 GLM，Kimi，OpenRouter ， MiniMax 等，只需填上 API Key 就能运用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它把 50 个供应商预设都整合进去了，固定的参数都给你设好了，不用去手写配置。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLooiarStKnIPowbKFTHR0mN0WUntSwxj58NB6h3NhkyI852sibzWv0icDH4nHXfAebb3oBF4qhpzKY9icaBAMjTyQtwQJPm9drxB0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 系统托盘快速切换。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   临时要换一个模型，只需要点开右下角的托盘 CC Switch 图标，选你要的模型，就能切过去。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 本地代理接管请求。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开启本地代理后，CC‑Switch 会在你电脑上启动一个本地小服务器。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   能够对你的 CLI 工具所发出的 API 请求进行接管，不用重启终端也能把供应商切换。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJqZcVMug1T2m7F68WTJrGvV7YBqU0w1u42yKQMicnIXOZI3RDW0fVwicvtVPfFILEtLWgOhfFe2VvjUy8N5oXeF88nUGmicvaFQs/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   让 Claude Code / Codex / OpenClaw 这些工具不再直接连模型官网，它先把请求发给 CC‑Switch 这个本地代理，再由代理转发到你选的模型供应商。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这么用的好处很多。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;ul class="list-paddingleft-1" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: black;list-style-type: disc;"&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     开了本地代理后，在CC-Switch轻点就能换模型，Claude Code立马生效，不用改文件也不用重启。
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     各类代码工具共用这一个代理，配置一次全都能用。
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     所有调用数据直观可见，请求情况一清二楚。
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     主模型出问题或是被限流，会自动切换备用的，开发不会中断。
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     市面上各类主流大模型都能自动适配格式，直接无缝正常使用。
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
 &lt;/ul&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    04 自动故障转移。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   平时写代码最怕主接口崩了，限流卡壳，直接打断开发节奏。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   可以提前设好主供应商以及备用供应商，主线路一出问题，系统就会自动切去备用线路，全程不用手动操作。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    05 熔断器机制。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   当某个供应商连续出现问题时，它会自动地进行隔离处理，避免一直往已经坏掉的节点发送请求。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    除了核心配置功能之外，CC Switch 还有一些不错的细节特性。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    MCP，Skills，Prompts 统一管理。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你用过 Claude Code 的话，应该知道 MCP 是什么。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   简单来说，它是一个扩展协议，能够让 Claude Code 接入各种外部工具以及数据源。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblISpnXWl7O4sCtyojAlDFKZALibKL1WAGdaGDicFQDP41WjJzUGYjPuRqYUEMCnlYR3q7hpZoKic80Vw3UoZrVtlIZmSXqk3xsdsc/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果 Claude Code 和 Codex 用到同一个 MCP ，每个 MCP 配置也在不同的位置。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   那么两边都要配一下，麻烦。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   用上 CC Switch MCP 管理面板，只需要配置一处，它自动会同步到每个工具中去。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    技能管理。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   技能管理很到位，它会自动搜索 GitHub 热门技能，点一下就能安装。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    备份与还原机制。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它会自动留存历史版本，一键就能进行备份恢复，再也不怕改出问题，多设备同步变的更方便了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblK730YxztzMtiaHPru6tVNmTjOg5WIpoUxMAD3uG6tkicbWZcZYWLmgd2b3rgibZaDTxkFiaSreJwLF7zmGgjEDTPzgicjxOdrHjdNI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    测速选择最好的节点。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   要是怀疑某个节点有问题，可以手动测试检测。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它还能够自动测速每个节点的延迟丢包情况，选择最好的节点。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    用量追踪。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   想看每个供应商的请求次数，Token 消耗量，缓存命中率，直接在使用统计中查看。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIexVQ0OMvPkK0QbGexeicpKH38cYkbibE77xMNP0VVF5KtxdAyFj4KVMYSnT8Yq9JcYpwA8qJHUibNY12h0UaiaFBSQfZOeuckmUk/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   可以清楚地看到每个的成本分布情况。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果用的是自定义模型价格，它也支持。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    体积减少了 85%。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   为了提高性能，新版本用了 Tauri 2.0。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   安装包体积一下从 80MB 砍到 12MB 左右，启动速度也变快了 。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    看完这些功能之后，相信各位已经迫不及待了。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   官方提供各种版本下载。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLCllUaJSIam5ibEE9rDhsPI7DukAIcrNEVt4bibNMdkFCkgVRFHj3d16DwOspTHBBxqpp0TcgzJys3cH6L04f4e0Z4usPZbGlJU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   支持 Window，macOS，Linux。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   以 Windows 为例，下载 msi 文件即可。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   安装完成之后，点击快捷图标打开软件，进来之后长这个样子的，界面非常简单：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIA4l47yzy0S4BZh9HaxAxrqic9q7ze4vA0tUdUW8Qu1L0PZ3Mol6qpdNNVnPkGiajE0Sq0udwrLjgdYezvoHlI3qyTT4LA4ULq8/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   工具已经内置了常见的主流供应商，比如 DeepSeek，Kimi，智谱，MiniMax 等；
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果想用三方的，这边以 DeepSeek 为例，只需点击右上角+添加供应商即可进入配置页面：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这是最关键的一步。根据自己需要选择对应的预设供应商，按照下表填写配置信息：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIibT9jic9BrEUQMFjicicIg8dM8ykMyB2Vt0t555adxMFSmD7AEDcLq3F3LicTuwaMXfKLPdPeCyph8JFZm4TEUn5QHVRnsmpoaHJU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=9" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   上面的配置其实挺简单的，主要就是把你的 API Key 粘贴进去，再选个模型名就行，其他的基本上都预置好了，默认值一般都没问题。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   配置好之后，点击保存这样就配置好了：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLlibkLRzrOFTEOMJVRkAMT8L7NQPu0icW8iaZJk20ickcwZyzfMAhnJWtbevckUckWIoiaHI7UCudJEn2T9AueQ2T4Ns4QGwUDIp0E/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=10" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   在 Claude Code 就使用 DeepSeek 为默认供应商，非常方便。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   配置好之后，接下来测试连接一下。打开命令行终端，输入以下命令启动 Claude Code：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;claude&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJ8ZRWNq8cO90MmjJJricumicDwQuOWStNGre3IGB34LjP45ibjHibibLY1TKibuF27TzKjwVWiaCmBIeQo5mZxlcsxSvUyc9STR7h9Ww/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=11" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   以后你想用哪个模型，直接在主界面上或者打开 CC‑Switch 托盘图标，选择切换到对应的模型供应商就行了：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblI0ZmdOsvtE6ic855jJWGDBpe62SfsuvfF4njuqNiauAs9kMNm0qdibAQONRRLGECcxibgMAnaBDslsOw5jFGUekxu2EGicibrEXXHY4/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=12" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    一点局限性我也提前说一下 。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   目前它支持下面 6 个 Agent 编程工具。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLxR9SGGjP9hiaiasXcwaXa67xXg93GCklk3bOiceq6ntvOMlXe040MJ02x838NFQRectfrXRaELKUuHXTPhwrna34QicdMDJz2QtQ/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=13" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果用的是 Aider，Cursor 之类的，暂时还用不了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   装上 CC Switch 之后。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我回顾了一下切换供应商的频率明显变高了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   因为实在是太方便了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   没用的朋友可以装上试试，用过的朋友可以在评论区说说使用心得。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目是基于 MIT 协议开放的，感兴趣的同学可以去 GitHub 仓库看看源码以及文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/farion1231/cc-switch
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然都已经看到这里了，欢迎随手点赞，在看，转发，也可以给我个星标⭐，以便接收最新的文章，我们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="js_uneditable custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1134" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/hmDosx9ZnORFZ9hPf2N_Mg</link><pubDate>Tue, 19 May 2026 15:18:47 +0800</pubDate></item><item><id>3877547210-2247512244_1</id><title>一个国产 AI 编程平台，用上了 GPT 5.5 。</title><description>说实话，Cursor 和 Claude Code 这两个工具确实挺好用。          想用它们，咱先说安装的事情。          准备一台电脑，把环境整一遍。               要是换台新机器的话，环境得重新配置一遍；Node.js 得装吧？Python 也得配吧？API Key 还得对接……光是想想就挺让人头疼的。          还有各种配置项目信息都都在本地，没法办同步...</description><guid>https://mp.weixin.qq.com/s/WGvnfyHHm75OLFSJ9CO6Mg</guid><enclosure url="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblIEz6C1QHBbKcHtWQ4jUBG24KJd9ic2u5ssD3yFJrvVnNVicujUzf5DP4weFbMDYa4GPqNKicafpQf5UI8VtDCR7KFYzoFOOSvTmM/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="js_uneditable custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1134" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   说实话，Cursor 和 Claude Code 这两个工具确实挺好用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   想用它们，咱先说安装的事情。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   准备一台电脑，把环境整一遍。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIfBuGMA6G14olkHGZLwCR9er8nsFicGvyOTgd0Ofx1Z4v3bP9GGMzqicn7nyhDRQx1Dpoiagk2iaNFYFaRKOJbuPXbMeDrHTE7V1w/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   要是换台新机器的话，环境得重新配置一遍；Node.js 得装吧？Python 也得配吧？API Key 还得对接……光是想想就挺让人头疼的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   还有各种配置项目信息都都在本地，没法办同步到其它设备。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   最近在 Github 刷到一个叫 MonkeyCode 的项目，好像能搞定这个事。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   GitHub 上已经获得了 3000 个 Star 了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   这是一个
  &lt;/span&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    国产团队开发的云端 AI 编程平台
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span style="visibility: visible;"&gt;
   ，主要特点就是省心：把开发环境全都放在云端，你只需要提出需求，剩下的工作由 AI 在服务器上帮你完成。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   打开浏览器，登录之后就能开始干活了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLxfr8rsZBgLXM0Z9eMiaFhiaGIOFlfotrq3VEq2omjRJbBrGqGcw55H1l3GgFkcic0YCN79wCzq6lhq5WuBIWZoZ2vBSuxy0GDwQ/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    简单来说，它就是一个云端 AI 开发平台
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span style="visibility: visible;"&gt;
   ——在浏览器里跟 AI 聊需求，它会在独立的云服务器上帮你编写代码、运行命令、修改文件、开展审查工作。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   跟 Cursor、Claude Code 对比一下：
  &lt;/span&gt;
 &lt;/p&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="text-align: center; visibility: visible;"&gt;
 &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKVlRiaA14Ic40TXpw7r906zRaW7nSgrbtM0KxCs8H9Td0WN4YLObdwoS7bojhaeSNWR97ia9QHibZLyVjaOmYt9Ev3Hmp8ewtEtQ/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="width: 560px !important; height: auto !important; visibility: visible !important;"/&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; margin-bottom: 0px;"&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   其他工具是把 AI 集成到本地 IDE 当中，你得自己去安装环境以及配置依赖。MonkeyCode 则是反过来——IDE、终端以及文件管理全部都在云端，只要打开浏览器就能够使用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    先看看效果，到底能做些什么
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   拿一个真实场景来进行测试：把销售 Excel 表格粘贴进去，让 AI 来制作可视化网页。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKibjwr7pPDxCuhaViaB0cGRnelMYibolaKz6k55L3ehvzVwJ1YRBD2fBIm5YFCcE9KylftuibaD0N480Hsia2BbrJ3tOR4qRBwblSQ/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   然后勾选了 5 个跟前端开发设计相关的技能。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblL8r768edSiayH4AyXMCEXicxiaPx6XwzrgpqbFJ0gmgWq5gibrpfuF5Hvelpy4Hw2Eheh7GVDib8tLicysd3YlIs3HHVia6ZicRO3AVEw/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   五分钟就搞定了：自动搭建环境、创建项目、编写页面、实现图表渲染，最后还会自动部署。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblK7K1TKc1Y9B67U7et1X8L6j7jj2gq7WxwTn6sXibeDUPnuJFt53kOjtRTYJ3mScePM925logD68GJubrX0iatqibj62IxkBjbicO4/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    image-20260518205638480
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   柱状图、折线图、饼状图都有了，还能选择字段来切换展示内容。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLIHgk9xYMmTJxIgGCF4zXiaHL5Ot4w9nJohu9V1Wl5OicfichdCrNN5AAibiaQFb4uyRk1WK1AAUhCWZhy8l8UmSNvVOhwlWbAeIkU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果布局不满意的话，它有一个画板功能，可以直接画出来让它进行修改。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblITbYQicIw5gnpgiblqarsKvpKUKIeiasGzkiaASApCAe48Ym6LVAWZBGVTiaYvw8NttzbictXek9ic2hZUgsHyL4V8fkRxDicjMUiaibGQ8/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    image-20260518210358101
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它能够自动识别你的意图。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLvu81WfiafAksPKtAibHZb841ssWvicicn5hickJJpoYts184FYyBBib9TZ7nYeT4gJSHAEYlEzseKlqQqh5jXDEaOqIiacolibD6xJO0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   再经过几分钟的思考以及执行过程。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   最终的效果基本上就是我要的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIxPicORTC7jibDict8M8Z3MJSFYJcgbhamYsFfKw14yYeXhicU2TXMJdX4ruzw4FM5MDZ6Eutia7iccicHiafiabkbbbjRCp3tDUhrA7T4/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=9" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    它是怎么做到的？核心原理拆解
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   MonkeyCode 能够这么好用，主要依靠这几招：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    01 每个任务分配一台独立云服务器，这是最硬核的。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   当你创建一个开发任务的时候，系统会自动分配 2 核 8GB 的独立云服务器。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblI12mo1hZKYaKFvgfFgAic5Y4swfmyESFVduuFmibiaJxny3X7NpSjBQ7AlWIKFJ7Grv5Le68sl9j6avzxMahHtEPzic1ydtsicJY5M/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=10" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   再也不用去折腾本地环境了。每个任务都是隔离的沙箱环境，要是搞砸了直接扔掉重来就行，对本地没有任何影响。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIrpTpXn6p8yic5Pqyb8FojlLhOmXvNnyNiaIvKXW7SrsCISkncGkb0V6upgwTPrB9icdJYcE4v8dAEmj7dKoaQ69c78kZusPLpRM/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=11" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   在线 IDE、终端以及文件管理器全都在浏览器里面。编译、测试以及预览都能在云端完成，多设备切换特别方便。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 不走 Vibe Coding 路线，强制采用 SDD 规范驱动的方式。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   市面上很多 AI 工具走的是 Vibe Coding 路线——跟 AI 聊几句，然后快速生成代码，能跑起来就算完事。但是项目一旦变大就会失控。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLgF0v21CCdSReVO0q3rNpZiaibgERnRKicg9uaNXpUCndkiaUq5W68WFMTuPPEo7PbXIPakMiboh1eHeKHOaiaJ3KrZSFicmktaDU0EM/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   MonkeyCode 走的是
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    SDD 也就是 Specification-Driven Development
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   这条路线，强制要求你走完整个流程：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    原始需求 → 产品设计 → 技术设计 → 任务列表 → 代码实现
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   。不能跳过任何步骤，并且每一步都能够回溯。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   四种规范都可以进行定义：功能规范、技术规范、代码规范以及测试规范。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   想"想到哪就写到哪"？这是不行的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 国产模型以及海外模型都可以随意切换。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   GLM、MiniMax、Kimi、DeepSeek、Qwen 这些国产模型都支持，GPT这些海外的也同样支持。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJAQGXNVcOODwrbhlDEJ0nxAKr7wQ7DrgUqdDV4k0xOeOIjqTxCmQuk9XZP2QW0w4TUWAaSiamQyGejc8UbxKFBsfVl2ys39aSE/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=13" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   简单的任务可以运用便宜且快速的模型，复杂的任务则运用更强的模型。还能够对接自己的 API，或者运行 Ollama、vLLM 本地模型。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKj1UYJazBFvygnMicwgJcRnmV2LpyVeQTl00MYtU87RPMbIbq2X8oSFIrXAYsLq4V7BTmzJ6YGMbqZwRmkpiaciaampD5xWictrxc/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=14" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Cursor 停服这件事给国内团队上了一课：把鸡蛋放在一个篮子里太危险了。MonkeyCode 给你留了后路，同时还能够完全离线使用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    04 Git 机器人，30 秒就能自动审查代码。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   GitHub、GitLab、Gitea 以及 Gitee 全都接上了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJkMI02j92W9vvJytexMZRUICHW99FyyyuFOFCopCnGMhLZ85yXIeAgEnJLW2RaOamKJj2UIfHTibYz7hXZbLQQVg1icqQAYlkFg/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=14" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   最厉害的操作是：在 PR 或 Issue 下面 @monkeycode-ai，AI 30 秒就会响应，自动进行 Code Review，甚至能够根据 Issue 来编写代码并提交 PR。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   人工初审的环节省掉了，提交之前的问题也能够提前发现。内置了安全扫描引擎，常见的漏洞以及依赖风险都能够检测出来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    05 多端支持，这个特性比较少见。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   除了网页版之外，还有 Windows、macOS 桌面版，连安卓 App 都有。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJBhjCKUK0U6iay2IML1qOdxXI1SvFrG1aKCgUJ6lwhic7Bm9kFDx1ApZQptBEgpcxSFGDz7BZibETRowuZOlYS4h5nXQFIKxia1QU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=16" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   在公司电脑上跑到一半，回家之后用桌面端接着来做；通勤路上掏出手机查看进度，对话会继续，AI 在云端替你跑着呢。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    06 私有化部署也能搞定。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   金融、政务这些对数据比较敏感的行业：可以一键部署到私有环境当中，完全离线使用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   代码、Prompt、任务记录以及运行数据全都锁在企业内网里面。最低配置需要 8 核 CPU + 16GB 内存 + 100GB 存储，运用 Docker 就能跑起来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    怎么搭建？两种方式随你选择
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   想要自己搭建的话，MonkeyCode 提供两种方式：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h3 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;font-size: 18px;color: #0e88eb;"&gt;
  &lt;span style="font-size: 18px;color: #0e88eb;"&gt;
   &lt;span&gt;
    方式一：在线版，开箱即用
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h3&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   在线版对于个人开发者来说可以直接免费使用。打开 monkeycode-ai.com，首次访问的时候会自动注册并登录。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJYl9b65yosovzH3GXS52wAMwiaJTxP7ehJuic97Ch8DfU5hB4Z06D3I7dQZcmmn47b567XN7EHGqbNMicG0ZKPCho2g53y1jGJnI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   创建一个任务，选择一个模型，挑选一个项目来源，然后看着 AI 在云端帮你干活。不用安装软件，也不用配置环境，只要有浏览器就够了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   想要试水 AI 编程的朋友，门槛基本等于零。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h3 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;font-size: 18px;color: #0e88eb;"&gt;
  &lt;span style="font-size: 18px;color: #0e88eb;"&gt;
   &lt;span&gt;
    方式二：私有化部署，企业级方案
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h3&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   对于数据安全有要求的团队，可以一键部署到私有环境：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    硬件要求：
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;ul class="list-paddingleft-1" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: black;list-style-type: disc;"&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     最低配置：8 核 CPU + 16GB 内存 + 100GB 存储
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     推荐配置：根据团队规模适当调高
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
 &lt;/ul&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    部署步骤：
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;ol class="list-paddingleft-1" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: black;list-style-type: decimal;"&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     准备一台符合配置要求的服务器
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     安装 Docker 环境
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     拉取 MonkeyCode 镜像
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     配置环境变量（API Key、存储路径等）
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     启动容器，访问 Web 界面
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
 &lt;/ol&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   详细的文档可以查看 GitHub 仓库里面的 README 。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   前面我用 MonkeyCode 做了一个销售看板。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我觉得它最大的好处就是省事——不用在本地搭建环境，也不用自己去对接 API。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它更像是一个在线编程工作台：提出需求、编写代码、运行项目、查看效果，全部都在一个页面里面搞定。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    我觉得它特别适合这几类人：
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;ul class="list-paddingleft-1" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: black;list-style-type: disc;"&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     不想折腾本地环境的，安装一堆依赖太烦人了
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     经常换设备工作的，在办公室、家里以及路上都能接着做
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     国内团队，国产模型支持全面，还能够进行私有化部署
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     重视代码审查的，自动 PR 审查这块做得挺扎实的
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
 &lt;/ul&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   简单来说，就是先跑起来，然后再慢慢调整，把想法变成能用的东西。工具好不好用，自己试试就知道。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    相关链接：
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;ul class="list-paddingleft-1" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: black;list-style-type: disc;"&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     🌐 官网：https://monkeycode-ai.com/
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     📖 产品文档：https://monkeycode.docs.baizhi.cloud/
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
 &lt;/ul&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   有问题想交流的话，可以扫码进群，说不定还有福利：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLKfwTLGHZjRaupxVNfaNvwd54q0AtHehkcK2fvSLwbKSZd1ppRYoltnIHGDVoOtaic7k8X2Hf34H3AksyYr9dUpd1GvNRfPXPc/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=18" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 205px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目基于 AGPL-3.0 license 协议开放源码，感兴趣的同学可以去 GitHub 仓库查看源码以及文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   GitHub 项目地址：👉 https://github.com/chaitin/MonkeyCode
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   觉得有用的话，点个赞、转发一波，或者星标⭐关注不迷路，下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="js_uneditable custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1134" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/WGvnfyHHm75OLFSJ9CO6Mg</link><pubDate>Tue, 19 May 2026 15:18:47 +0800</pubDate></item><item><id>3877547210-2247512205_1</id><title>tmux 没做到的，它做到了。</title><description>终端复用器这个圈子其实并不大，但有个项目拿到了 32000+ Star。          要知道 tmux 已经称霸十几年了，居然还能杀出一个新选手。          它叫 Zellij，2020 年才起步，用 Rust 写的。               它的定位是自带电池的终端工作区，翻译成人话就是：开箱即用，不用折腾配置就能直接干活。          说实话 tmux 我也用了挺久，功...</description><guid>https://mp.weixin.qq.com/s/_bKLHuy2xyGjWuaWTn_x4A</guid><enclosure url="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblKONQWucOjlWIMiaTs4icMRiaky447iaM5VG6mt8QgVnrHoMlCAoHq99kmV8V6MhicfP9HbkxMpsOAcAyDLGbsVJ4aKG6DSIMp1J8iao/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1134" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   终端复用器这个圈子其实并不大，但有个项目拿到了 32000+ Star。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   要知道 tmux 已经称霸十几年了，居然还能杀出一个新选手。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它叫 Zellij，2020 年才起步，用 Rust 写的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLp56nCJjPyH6DwlSCnqDf5rM6rSUyibvNaDW8BzFh9RKA8IsZ32YiaTeR2LA0ZPvK16ZfDrULibAFDiaW2mmyCpRkCh6I8qrBd2xU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它的定位是自带电池的终端工作区，翻译成人话就是：开箱即用，不用折腾配置就能直接干活。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   说实话 tmux 我也用了挺久，功能确实强。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   但有个痛点一直很折磨人——隔段时间不用，快捷键就忘得差不多了，每次都得重新翻文档、重新捋前缀键的逻辑。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   刷到 Zellij，才发现终端复用器可以这么顺手。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px; visibility: visible;"&gt;
  &lt;span style="font-family: STHeitiSC-Light; font-size: 22px; color: rgb(14, 136, 235); font-weight: bolder; display: inline-block; padding-left: 10px; border-left-width: 5px; border-left-style: solid; border-left-color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    启动后界面长这样
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_gif/VDCUoW3UiblLDv2DOW0sic5zOwxdzFY6Hw4hFJeicMughvzX4CnibteKIab25lE4IbicWiaFOEaswhGhAicgRujCjxBWuQYpNm2WibwO9ic7abicG1Ogc/640?wx_fmt=gif&amp;amp;from=appmsg&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   顶部标签页栏显示会话以及标签页，底部状态栏直接把快捷键提示贴出来——想分屏底部就写着
  &lt;/span&gt;
  &lt;code style='font-size: 14px; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: rgb(30, 107, 184); background-color: rgba(27, 31, 35, 0.05); font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace; word-break: break-all; visibility: visible;'&gt;
   &lt;span style="visibility: visible;"&gt;
    Alt+n
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span style="visibility: visible;"&gt;
   ，想切标签页
  &lt;/span&gt;
  &lt;code style='font-size: 14px; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: rgb(30, 107, 184); background-color: rgba(27, 31, 35, 0.05); font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace; word-break: break-all; visibility: visible;'&gt;
   &lt;span style="visibility: visible;"&gt;
    Ctrl+t
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span style="visibility: visible;"&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    所见即所得，新手几分钟就能上手。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblL5TicVu2wqYicTd3JGiaGIue9wY29wshfL2iaUCHp5HJ0P3Hib5clb15a4Fkfdicr9sCeySGnBFiczG7Stt1Vmuq09j6treXRYIJekuY/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    打开新窗格
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    核心功能全给你配好了
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    01 会话自动保存。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你把终端关掉或者重启系统，它会自动把会话保存下来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   默认每 10 秒就会把状态保存到磁盘当中，下次启动时直接进行读取，工作区能够恢复到上次关闭时的状态。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;br/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    会话自动保存
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 为不同任务创建独立会话。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   很多人经常要同时处理多个任务——写前端、跑测试各开一个会话。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   想切过去看看测试跑没跑完？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    Ctrl+o+w
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   唤出会话管理器，点一下就过去了。各会话互不干扰，切回来的时候状态还在。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIEnDYoMIvBvw8tQHxgQtYD9RIxibIwvia22T9rjDCsP8nQNNGvNBxz3xvDKmXfYqSZt01OtYOJvlmD9m0JrQiaTBOloW5fXaJfOM/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    切换会话
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 悬浮的小窗口。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   有时候你不想把屏幕切得七零八落，临时切个悬浮窗口就可以解决。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   想用的时候直接调出来，用完随手关掉，不耽误正常干活。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKKdPDwEnNl3RVyDsfNCkia7LalfU6uuo6Zu17crDhUDlFgoTP2s8kH1YX7ulzWk0efOR4k4lSSia73jI22CA2Ls4ymJ62biavFgI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    浮动窗格
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   键盘党也有快捷键：按
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    Ctrl+p+e
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   直接把面板弹成悬浮窗，
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    Ctrl+p+i
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   一键置顶锁定。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJxVpYeqUmhs4OiafpictWxBO75T6BCMBKGENQydQK7wwx6e3GLMQibKF19zHUY1ZPiciaWy1J4WP5fWTFibiaKEpOCUelkpptER1xz78/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    弹出窗格
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLnPjNIXXrqQVoibdUKvHSCh1qGKcdOy5MkEIECfcgaQrp7oSgjqG5iaASgKpgicnYbLov2ZYBIvBicUgp6XeqUn2TOSvj5nJwnGN0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    固定浮动窗格
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    04 编辑滚动缓冲区：tmux 做不到的事。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这个可能是 tmux 用户最羡慕的——
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    直接编辑终端的滚动缓冲区
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   用过终端的人都知道，有时候命令输出很长，想复制或者搜索之前的内容，只能借助鼠标笨拙地往上滚。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   tmux 的 copy mode 虽然能够解决部分问题，但体验还是不够好。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Zellij 的做法是按
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    Ctrl+s
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   然后按
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    e
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   ，它就会调用用系统默认的编辑器也就是 $EDITOR 来打开当前窗格的整个滚动缓冲区。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你可以像编辑普通文本文件一样去搜索、复制以及修改，关掉编辑器之后回到终端。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIo0cicxA8kTrpDHM6ib7ELxibrRrzkz0uZ5Wx9KibT8OzAAicrvPI9q9ribVsNxJic70zdbGIbefGDf6fzwqPkd3I21K0GxOxOhO90Hk/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    编辑滚动缓冲区：
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    05 堆叠窗格：多个窗格堆在一起。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   堆叠窗格则是把多个窗格垂直堆叠在同一位置，用方向键来进行切换。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIZ3ZFsmqy6suuJfAPFLfQKicpFIAUf1R3S43zpSBK4hUSUWQYkaH7S8DttYXjZibsP61jIGypbqPsEHjd5JE8Nt0ugxHOOVQKick/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    堆叠窗格
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   同时监控多个进程，跑测试、看日志、开编辑器，都堆在一起按上下键切换，不用把屏幕切碎片。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   窗格大小调整也非常直观：
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    Alt++
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   放大当前窗格 30%，
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    Alt--
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   缩小，按住不放就能连续调整。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不需要记什么 resize keybinding，也不用手动输入像素值。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKV0YibRhyXG6XHK1cico840y8XXY7w97m2eCnjpOA3Az8nfRGOA3ia8qveRYIP0uBSQEnrSeRUicTJPibpO2RpfN4FiacBurbiaORLvI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=9" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    调整窗格大小
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    06 多人协作：远程结对编程神器。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   多用户同时连接同一会话，每人拥有独立光标，实时看到对方的操作。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   远程结对编程不用忍受屏幕共享的延迟问题，两个人直接在同一个终端里协作。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKTUIIaBIB33eG8e1vxODFf4yGK5xh0BhVeMkakRibZNyKOdHibIdMJLkbtvibNe4P16sm1PAckubjickyRB2libfEUicxlwNDK6Yggk/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=10" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    07 还可以浏览器访问终端。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   内置 Web 服务器，浏览器里直接访问终端会话。注意需要配置 HTTPS 以及认证令牌。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIHLpJ8yy3YGGPCqaJyjOkdiciclTknAzdWpZTEkCHBiaT8WYczA3H1wBSMiaHBYPSzHnTHW8RkRQ15aqianyzDv1MhGt23kTVgNrWA/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=11" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Web 客户端
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    08 插件系统：基于 WebAssembly。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   用任何能编译成 WASM 的语言写插件，Rust 有一流 SDK 支持。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Zellij 自带的会话管理器、文件选择器都是插件，
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    .wasm
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   文件独立分发不污染主程序。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIlSUjTXhquAmob0mNUfwj6Gicic0bBBIPBqF5PCSfsG1SMtOcHYz4B6A3PLSAZc6qdHXeibnkPiamlVuDwd4928p9icjUiay64fEVr8/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=12" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    文件选择器
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   结合
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    布局系统
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   还能打造 IDE 体验——社区
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    strider
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   布局，左侧文件浏览器，右侧编辑器和命令窗格。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLicMAARBXrWH0Ib7mlfaOmfClzDmCEgYyH98szOUwXyrjjiarzW4m07jpoMkPbCic7St0rfTz00zC0buKlHt5IvBZbB9kJ2IfkJs/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=13" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    IDE 体验
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    09 自定义布局：一键启动工作区。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Rust 开发可能需要这样的工作区：左边编辑器打开
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    src/main.rs
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   ，右边三个窗格分别跑
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    cargo check
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   、
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    cargo run
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   、
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    cargo test
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   tmux 里得写一堆 shell 脚本。Zellij 运用 KDL也就是声明式语言来写布局文件：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;layout {&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;    pane split_direction="vertical" {&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;        pane edit="src/main.rs"&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;        pane {&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;            pane command="cargo check"&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;            pane command="cargo run"&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;            pane command="cargo test"&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;        }&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   保存布局文件，比如
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    rust-layout.kdl
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   下一次启动就会读取这个配置给你一个完整的工作区。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKv94Ba84cXsfQttNV405iaKEk7sWQ4aZbPrib4pytSibgH81H3TF3eUKUwgSbky0TAg4ZGDCJt1kWXYobqNBIrj9gO6Mu1XAicQmA/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=14" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    目标布局
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    当然有几个注意点也给大家提一下 。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   01 性能敏感的场景要注意一下，tmux 一个会话大概 6MB，Zellij 要 80MB 左右，差了十几倍。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   02 Zellij常用的功能都有了，但你已经重度依赖某些 tmux 插件，用起来还是有些不便 。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   03 已经玩熟 tmux 的人，切过来会有个适应期。比如
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    Ctrl+t
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   在 tmux 是前缀键，在 Zellij 里是切标签页，一开始容易手滑。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    看到这里，可能很多朋友已经迫不及待了。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   最简单就是复制下面命令直接装。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;bash &amp;lt;(curl -L https://zellij.dev/launch)&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果想要离线安装包也有的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   可以去 GitHub 下载对应平台的预编译版本。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Linux、macOS、Windows 都能用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJYN7rBO4FibczswTkziccvPfOyZBo53kEXzF16Kgzf1P0derfIZiaicLibJibe5AYE75Mkzvr56Dj37oZfKFmYhg5VKYAGfYmwojnBI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=15" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   玩终端工具差不多 10 年了，从最早的 screen 到 tmux，再到现在的 Zellij 。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   tmux 很经典。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   稳得一批，服务器上跑个几年都不带出问题。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   新的 Zellij 也带来了新的功能。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   比如直接编辑滚动缓冲区，能直接用编辑器搜，效率直接拉满。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   工具这东西就是这样，一直在进化。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   当年觉得 tmux 已经够好了，现在发现还能更顺手。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   说不定过两年又冒出个新东西，把 Zellij 也给卷了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   但有一点不会变：
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    让工具更好用、更低门槛
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   说说你的看法，评论区聊聊 。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目基于 MIT 协议开放，感兴趣的同学可以去 GitHub 仓库看看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/zellij-org/zellij
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然看到这了，欢迎随手点赞、在看、转发，也可以给我个星标⭐，接收最新的文章，我们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1134" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   &lt;br/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/_bKLHuy2xyGjWuaWTn_x4A</link><pubDate>Mon, 18 May 2026 15:17:30 +0800</pubDate></item><item><id>3877547210-2247512181_1</id><title>Anthropic 宣布用 HTML ，这个项目也火了 。</title><description>前几天在 X 上刷到一条有意思的消息：          Anthropic 的 Claude Code 团队宣布，他们内部文档不再写 Markdown 了，直接写 HTML。          理由是：Markdown 是写给作者看的，HTML 才是给读者看的。          然后。          一个叫 html-anything 的项目在 GitHub 上火了——          ...</description><guid>https://mp.weixin.qq.com/s/X8ePB4OBoJFShDx4hSsdnw</guid><enclosure url="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblJMkVWGgicudiaMc20Xro4iaCnB8SavcnxEoia6FsaDOY6FsmjR6qxjJrrHXp4ic1q3EIh3NPt6m4ZCKFlibgpntX2qXTG6w6ibMJ3jEc/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1134" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   前几天在 X 上刷到一条有意思的消息：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   Anthropic 的 Claude Code 团队宣布，他们内部文档不再写 Markdown 了，直接写 HTML。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   理由是：Markdown 是写给作者看的，HTML 才是给读者看的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   然后。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   一个叫 html-anything 的项目在 GitHub 上火了——
  &lt;/span&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    已经拿到 2500+ Star
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span style="visibility: visible;"&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    它能让本地 AI Agent 帮你写 HTML。不生成 Markdown 或 PPTX，直接输出纯静态的 HTML 文件。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblICXq920sl7rJJxMDczVHrjvYic4bPWLACh6otQn0thm5pZNUJE4FJ2qVkX6v9LVryVPxpmYZwf6MQnnfQotcSwwGlhAVXhOFXU/640?wx_fmt=jpeg&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   左侧输入需求，中间选模板，右侧实时预览。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   装好后你只需要做一件事：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px; margin-bottom: 10px; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px; visibility: visible;"&gt;&lt;code style='overflow-x: auto; padding: 15px 16px 16px; color: rgb(171, 178, 191); display: -webkit-box; font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace; font-size: 12px; background: rgb(40, 44, 52); border-radius: 5px; visibility: visible;'&gt;&lt;span style="visibility: visible;"&gt;做一份技术博客，暗色主题，要有代码示例和数据图表&lt;/span&gt;&lt;span style="visibility: visible;"&gt;&lt;br style="visibility: visible;"/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   AI 自动选模板、应用设计约束、输出完整 HTML 文件。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h3 data-tool="mdnice编辑器" style="margin-top: 30px; margin-bottom: 15px; font-weight: bold; font-size: 18px; color: rgb(14, 136, 235); visibility: visible;"&gt;
  &lt;span style="font-size: 18px; color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    不提供 AI，只做调度
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h3&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   说到实现方式，html-anything 不自带模型，也不卖 API Key。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   说白了就是
  &lt;/span&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    调用你电脑上已经装好的 AI 工具
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span style="visibility: visible;"&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   Claude Code、Cursor、Gemini CLI、Copilot……只要你之前用过并且登录过，它直接拿来用。不需要额外注册或付费。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h3 data-tool="mdnice编辑器" style="margin-top: 30px; margin-bottom: 15px; font-weight: bold; font-size: 18px; color: rgb(14, 136, 235); visibility: visible;"&gt;
  &lt;span style="font-size: 18px; color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    生成的每一页都是成品，不是半成品
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h3&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   自带 75 套精心设计的模板。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLSMDvKOwm1KWwTZsCJpGd9bWXGIgKtRZXrvibIxnzSa31LicQZoLKTh61BhycVfGbScmyDd4D5np8UciaMgwML3YqLK3vwRicBdus/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   每个模版都有严格约束：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;ul class="list-paddingleft-1" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: black;list-style-type: disc;"&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     CJK 优先字体栈。
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     8px 基线网格。
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     对比度 ≥ 4.5。
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     必须使用真实数据。
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     禁止占位文本。
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
 &lt;/ul&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这样做的好处就是确保输出契合专业规范。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   覆盖 9 种常见场景:
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    01 Web 原型。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   能够用来制作落地页、定价页以及后台管理、技术博客这些页面。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 演示文稿。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   有 20 套风格可以选用，下面我会单独拿出来说说。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIkEnk4OJjzcSOrwQibibD8RjMqsFN8e5I2m5mTLTvn0g2Xpx24XxoMTrFEP0ZczlZJqTzXq4tBNFD9qicPlN1EIm3Oc5R78tV10k/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    演示文稿示例
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 生成视频。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   写完一键导出渲染成 MP4 视频，下面我也会单独讲一下。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKPEQfwap9UZgEribcSmbn2ELibnAKQ2A70Q528EaavaWM4EH52KT4Hv5112bKu3XXRqxWxk2uB1icUJHuMuIGEav6FbdcDAJe4vI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    视频帧示例
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    04 社交卡片。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   像小红书、推特以及 Spotify 风格的配图都能够借助它来一键生成。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    05 办公文档。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   日常办公要用到的周报、需求文档、财务报告等文档，都有相应模板。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJibHToGpBsmEEO6nv3dcCvE0745JdicFGlEdAkibVKja1z0VZjLpGQlVUIWYwzeGNiazLt6gAXeicwpWKZ01duicrEMXjwQdXzk7r9E/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    办公文档示例
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   此外还囊括了简历此外海囊括了据报表等其它场景。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h3 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;font-size: 18px;color: #0e88eb;"&gt;
  &lt;span style="font-size: 18px;color: #0e88eb;"&gt;
   &lt;span&gt;
    这 9 种场景里，演示文稿模板值得单独聊聊
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h3&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   足足有 20 套演示文稿。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   做技术分享和产品路演的朋友，这部分会让你眼前一亮。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    01 瑞士国际主义风格。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你用 16 列网格配一个主色调就行，克莱因蓝、柠檬绿这些随便挑，22 种固定布局直接套。打开就是那种「一看就贵」的冷峻感。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKEJK98WqPGR0icc2eqyxhCGrtibsqWicnZ5WicnVlQrAvQJTtNoozGO24iciaicEzokaZiamrjb4bhZmNOV37h8QpfJpRxbXdf0kfmRCo/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 杂志和电子墨水风。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   10 种布局搭配 5 套配色方案，墨水、靛蓝瓷、牛皮纸这些都有。看起来就像一本印刷精美的艺术杂志。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKhpfUPCzgw3bVP11b3m4LrttWqTdU5miaCOHzMATtwuxtuBp30cHOgGVsopzhYaiaKXHQD7F5Y8dwSONHNpGYmNKc8ZGIumk6Og/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   还有 deck-xhs-pastel 也就是小红书柔和风、deck-hermes-cyber 即爱马仕赛博霓虹风格、deck-replit 也就是 Replit 产品演示风格等。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIfyV9QBThoeCOZwxcTx8dLCxDAXRCq6nzSc9rfO2YaDtR8aoJMk5zmgX7RbFH8lFKl0WTh6fMOeqcuLGpNYvX6sfUOO2nsCxM/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Deck 演示模式
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;h3 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;font-size: 18px;color: #0e88eb;"&gt;
  &lt;span style="font-size: 18px;color: #0e88eb;"&gt;
   &lt;span&gt;
    视频帧脚本，可直接渲染成 MP4
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h3&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   除了静态页面和演示文稿，html-anything 还能生成视频内容。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它提供了 10 个遵循 heygen-com/hyperframes 规范的帧脚本，交给 Remotion 就能渲染成 .mp4。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    frame-glitch-title
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   — 故障艺术标题帧
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   青色/洋红色差偏移、CRT 扫描线、损坏数据字幕、段落 ASCII 噪声。赛博朋克专用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLESAMLSlJwHltv8icJfia6NERVQ89CIqfk5va3ThLQ8sv7AS80sn1mPFsV2m8SExwYYX7z46LY2I0rHzzXIB3Picgqu3qwPltw4A/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    frame-glitch-title
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    frame-logo-outro
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   — 品牌 Logo 片尾帧
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Logo 逐块组装 + 发光光晕、标语升起、CTTA 出现。产品发布的收尾卡。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIUv1Bvxu8LNHz2bLQnb9pVetlkkldDulsrkkHpicYb5Yy8uZ59NjGu2W7MmIpLpVZIEia3UZ5N51Gb25hv5ehMvwq4R4DyIwDfo/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=9" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    vfx-text-cursor
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   — 光标打字特效
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   每个字符以品红 × 青色色差轨迹显现。丢进一句引用，得到电影级开场帧。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblILsafrpyrOL1HwM1DicRm3WzLHAKSjrjXkF4M3YicSTzia8djmbf4osccKmbeibySs5sWXFJJeVmeXIW0yGoaNHZXT9Q5Er4awPFg/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=10" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKaTvtwxFZ5TQtjytLGibGY7VaicCpniczkV3icXc1oEJH3iaGOvmHVL8zG2EictMENhaDJrdHLia7eku8XuQGiaD9peR66yyjgw382Anw/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=11" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Hyperframes 视频帧
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;h3 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;font-size: 18px;color: #0e88eb;"&gt;
  &lt;span style="font-size: 18px;color: #0e88eb;"&gt;
   &lt;span&gt;
    一键导出到多个平台
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h3&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   内容生成好了，接下来就是发布。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   html-anything 支持一键导出到多个主流平台，省去了手动排版的麻烦。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIypbmjwYFZqqOuF9BiaiaJUibzI9fBUpTbwDFsRfsYKzYRrw29loBibhdLpLq41LN0qhBic1oPHIFhSBjBdXXmrQRhaDXtxJpbEr94/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=12" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    一键导出
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;ul class="list-paddingleft-1" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: black;list-style-type: disc;"&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
     &lt;span&gt;
      微信公众号
     &lt;/span&gt;
    &lt;/strong&gt;
    &lt;span&gt;
     ：CSS 全部内联，粘贴进去直接用。
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
     &lt;span&gt;
      X / 微博 / 小红书
     &lt;/span&gt;
    &lt;/strong&gt;
    &lt;span&gt;
     ：自动渲染成 2× 高 DPI PNG，复制到剪贴板。
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
     &lt;span&gt;
      知乎
     &lt;/span&gt;
    &lt;/strong&gt;
    &lt;span&gt;
     ：LaTeX 公式自动处理成图片占位符。
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
 &lt;/ul&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你之前也经历过同一份内容在不同平台重新排版的痛苦，这个功能就很实用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h3 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;font-size: 18px;color: #0e88eb;"&gt;
  &lt;span style="font-size: 18px;color: #0e88eb;"&gt;
   &lt;span&gt;
    流式渲染 + 沙箱预览
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h3&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   生成过程中的体验同样重要。html-anything 采用了 SSE 流式渲染技术，让你能实时看到 AI 的创作过程。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKhxGOWJ6DFAzHNSBb1ydRm77GM9OR8ibNCibGvLUxT1WAlPz6EG9juBGTnQOe4ZAtLicOibrb8fibhF8MXSSteibhFELdXiaxIIgqezs/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=13" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    SSE 流式渲染
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你能看到页面被 AI 画出来的过程。发现方向不对可以马上中断、重新提示，避免浪费生成资源，也让创作过程更可控。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   安全上有考虑，不是只顾功能的粗放实现。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   所有生成的 HTML 都在沙箱 iframe 中进行预览，隔离本地存储Cookie。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h3 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;font-size: 18px;color: #0e88eb;"&gt;
  &lt;span style="font-size: 18px;color: #0e88eb;"&gt;
   &lt;span&gt;
    看完这些功能，相信有些人已经迫不及待了。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h3&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   注意本地至少安装了一个支持的 AI CLI，比如 Claude Code，要能正常用 。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   传统手艺先用git把代码下载到你的电脑上。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;git clone https://github.com/nexu-io/html-anything&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   进到目录，把依赖安装好。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;cd html-anything&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;pnpm install&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   最后一行命令启动。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;pnpm dev&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   浏览器打开 http://localhost:3000 就能看到入口界面。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   像看看每个模版长啥样，打开仓库里的
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    skills/
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   目录，每个模板都有
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    example.html
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   ，双击就能看到效果。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJOT2lA1ggvGREtgaTtSvIiaxialNQ9iaexyiaNicB4ZaCX3mrCtZnKNSPmxl4ics7unWPYIepyYbZnQLiaicT9RxuYnhhgD9AQ8DATF0c/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=14" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;h3 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;font-size: 18px;color: #0e88eb;"&gt;
  &lt;span style="font-size: 18px;color: #0e88eb;"&gt;
   &lt;span&gt;
    两个小问题
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h3&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   当然这个项目也不是完美的。目前有两个主要局限：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;ol class="list-paddingleft-1" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: black;list-style-type: decimal;"&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     目前只能输出
    &lt;/span&gt;
    &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
     &lt;span&gt;
      HTML 和 PNG
     &lt;/span&gt;
    &lt;/strong&gt;
    &lt;span&gt;
     格式。如果你需要 PDF 或 PPTX 的话，得依靠浏览器打印或第三方工具来进行转换。
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     修改内容需要通过
    &lt;/span&gt;
    &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
     &lt;span&gt;
      AI Agent 重新生成
     &lt;/span&gt;
    &lt;/strong&gt;
    &lt;span&gt;
     。没装过 AI CLI 的人上手门槛会偏高。
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
 &lt;/ol&gt;
 &lt;h3 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;font-size: 18px;color: #0e88eb;"&gt;
  &lt;span style="font-size: 18px;color: #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h3&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   说了这么多功能，回到最初的话题——HTML 还是 Markdown？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   社区里争议挺大。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   有人觉得 Markdown 够用了，简单直接，版本控制友好；也有人觉得 HTML 才是正解，排版自由，所见即所得。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   两种观点都有道理。我觉得关键不在格式本身，而在于你所处的场景。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   写笔记、做文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Markdown 就够了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   跨平台发布、需要精细排版。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   HTML 的优势就出来了。尤其是现在 AI 能帮你写 HTML，格式门槛已经不是问题了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你的看法呢 ？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目基于 Apache-2.0  协议开放，感兴趣的同学可以去 GitHub 仓库看看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/nexu-io/html-anything
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然看到这了，欢迎随手点赞、在看、转发，也可以给我个星标⭐，接收最新的文章，我们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   &lt;br/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1134" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/X8ePB4OBoJFShDx4hSsdnw</link><pubDate>Sun, 17 May 2026 15:17:32 +0800</pubDate></item><item><id>3877547210-2247512089_1</id><title>可能是普通人用 Agent 最近的一次，它做到了。</title><description>想搞AI的朋友肯定遇到过这种情况：          看到一个很强大的 AI Agent 项目，但打开一看——全是命令行操作。          想试试，但一想到要装依赖、改配置文件、记各种命令，就打了退堂鼓。          我们都知道 Hermes Agent 是一个很火，功能强大的 AI Agent 项目。               它能搜网页、跑终端、读写文件、调用各种工具，但所有操作...</description><guid>https://mp.weixin.qq.com/s/oVni_7oO9rZZuK0YBwUoZw</guid><enclosure url="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblKhZvwGsaVxaW3pyyM8WFUr51zqxRq9uT1LezoE3ogRG3IlsqXmC1NibVT3Ek4iae2X6CBMkltBbOq9z14LxcRp8qib4oMUsnvTl4/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1125" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   想搞AI的朋友肯定遇到过这种情况：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   看到一个很强大的 AI Agent 项目，但打开一看——全是命令行操作。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   想试试，但一想到要装依赖、改配置文件、记各种命令，就打了退堂鼓。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   我们都知道 Hermes Agent 是一个很火，功能强大的 AI Agent 项目。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLX1hmanibF7DXCSjGAz8nEFpiazMUeUxh1HsVd6GKp5icyC8q7zNZ49kSW1xIvm8FlJ38ITmIfSaw1MKibD887Ceicyibj7Q9ty5diaQ/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它能搜网页、跑终端、读写文件、调用各种工具，但所有操作都在命令行里完成。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   我之前刷到一个叫 Hermes Desktop ，一直在关注，解决的就是这个问题。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   今天端出来给大家介绍下。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    它给 Hermes Agent 套了一层图形界面，安装、配置模型、聊天、管记忆这些事，全部在界面里点一点就能完成。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   更实用的是，它还能让 AI 助手同时接上微信、钉钉、飞书、Telegram、Discord——填个 Token，开个开关，就完事了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   目前 GitHub 上已经拿了 4600+ Star。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIoMqNiaul7LJJF37iaNu3nG9TiaXjknO16XdZFVvOooaHm8CQ09BU9MTDticpIDy7tDmvAxKPhdHcTRb9CXEQLtI0Owq4xIbJz6v8/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    简单说，它不是另一个 Agent，而是 Agent 的控制面板。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKibGp9u3xfxkql4YfcqWgGVVzkSKnGgPBsGLP2iboKXmq9ugxggH00yqma1Mnanwf389fRp1xnSF9mgicHQaNKeKfWvJzRm21kNs/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Chat 聊天界面
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    先从安装说起。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   直接去 GitHub 仓库的 Releases 页面下载对应平台的安装包——Windows 下载 .exe，macOS 下载 .dmg，Linux 有 .AppImage、.deb 和 .rpm 三种格式。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Windows 用户也可以直接在终端跑
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    winget install NousResearch.HermesDesktop
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   ，一行命令装完。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   装好打开，应用会先问你选本地模式还是远程模式。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKlVeerX4icXahicCb0Y1eYSVl1lmUzP1vYcSbUUicwPmkcUdOlrjcrWFQichpFajmkoqYmSzdzQNbrwPEODEEqJ9eBgBsicp233G6c/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    可视化安装
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   本地模式下，它帮你自动装好 Hermes Agent 和依赖，你只需要选一个 LLM 提供商、填上 API Key 就能开始聊天。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   远程模式则是连上一台已经跑着 Hermes API 的服务器。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   整个流程不需要手动改任何配置文件，这在以前得翻好几层目录才能搞定。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    装好之后，第一件事是配置模型。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Hermes Desktop 支持的提供商很全：OpenRouter（200+ 模型）、Anthropic、OpenAI、Google Gemini、xAI Grok、Nous Portal（有免费层）、Qwen、MiniMax、Hugging Face、Groq。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   本地模型则支持 LM Studio、Ollama、vLLM、llama.cpp。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJrEXfH7uS1N3sicAXXeuULeA9QGyhGcuNiaIK6TMBmQDGNcyIsbdYCEOzS6OpVRIv55jicnDnVT2fqJnFTAGvnmIOg7wrqdBQia8M/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    可以自己配置各种模型
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   在 Models 页面可以添加、编辑、切换模型配置，不用去翻配置文件。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你不想花钱，选 Ollama，它是完全本地运行的，不需要 API Key，但前提是你的电脑能跑得动本地模型。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   用更强的模型可以试试 OpenRouter，它聚合了 200 多个模型，注册就送免费额度，填上 API Key 就能用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    模型配好，接下来是工具。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Hermes Desktop 内置了 14 个工具集：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   网页搜索、浏览器自动化、终端执行、文件读写、代码运行、图像理解、图像生成、语音合成、技能管理、记忆管理、会话搜索、澄清确认、子代理委派、混合代理架构。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKWqUl9eLWKUZPd39z16O43hvjUicSErt5FFJaJ2WElibUrhxQOPwmGz9RJZN8pByRNBPX2JBGadg0jadfKUH0RI6UhncpI74cvU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    提供各种工具
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   全部在界面里可配置、可开关，你不需要去改 YAML，在 Tools 页面勾选就行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    工具之外，它还内置了很多技能。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLZgN0Z52QrpoqevgJf9UlMp8j7ibmIsCcuBOic6ZAaVGq9iaz03zVbbXNnIjF7oBbm6NHPev82ibGHichbpLas1FmkicBBz5iaTClwuI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    内置很多技能
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这些技能覆盖了日常开发的常见场景，比如代码生成、文档整理、数据分析等。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   在 Skills 页面可以查看、启用、禁用这些技能，也可以自己添加新的技能。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    配置完这些，就可以开始聊天了。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   聊天界面走 SSE 流式输出，模型一边生成你一边看，中间如果调用了工具，进度会直接显示在对话里。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   底部还有实时 Token 用量和费用统计，不用再猜这轮对话烧了多少钱。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   另外还有 22 个斜杠命令，比如
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    /web
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   搜网页、
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    /memory
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   查记忆、
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    /skills
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   看技能库、
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    /model
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   切模型，比纯 CLI 操作直观不少。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblImfGicqFDqF8HEJKCmC3JL4SyQOMaKBm3piaEbUJd2WkS4t3KMgmHsMEgwh34miadwYAf5PnRwWyemqJk68yEy0FYnnpiarfHjolg/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    如果你想让 AI 助手接入各种消息平台，Gateway 页面就是关键。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   16 个平台，Telegram、Discord、Slack、WhatsApp、Signal、Matrix、Mattermost 这些海外主流的都有。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   更关键的是钉钉、飞书、企业微信、微信（iLink Bot）也在列表里。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKxtBQTPLd8vHib9mgicdXSxkicic8nnRoB6lqo7aBkwgCn3UkjPoEsm3w0bHejE6td4bb8JnCYwNnjFAqRt6u8IItaz45TdvOZvL0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    微信、钉钉、飞书、Telegram、Discord
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   配置方式很简单，在 Gateway 页面填上对应平台的 API Key 或 Token，开关一开，Hermes Agent 就能同时在这些平台上收发消息。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   社区里有人评价"这类产品的价值，往往不在能做多少，而在能不能直接用上"，消息网关就是那个"直接用上"的典型。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    除了消息网关，记忆系统也很实用。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Hermes Agent 的记忆分条目记忆和用户画像记忆两层，Hermes Desktop 把它们都搬进了界面，支持查看、编辑、搜索，还能看到当前记忆容量。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLt4o88PItaDlovYSic6cQrvBkRhuvGtgSIK5MmCf03Nuw6oUsAjo5JB3IptjTaY15DbxUDNaiaC4hgywfpR7lSwq35AQQKDafGA/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=9" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    支持记忆功能
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   更实用的是它支持 6 种记忆提供商——Honcho、Hindsight、Mem0、RetainDB、Supermemory、ByteRover——在 Memory 页面切换就行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    定时任务则是另一个亮点。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKzzYKdOHFrdic1VyZ2IoPKQJ4xOY58Qn6UeQ7su1NyH6xB2aKcBxP57Z0FhL3z8EHiclPPK1icZsIiaXoZwRs5DRWrRZYTfTZibxXg/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=10" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    支持定时任务
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   在 Schedules 页面，你可以用图形化的频率选择器设置 Cron 任务——每小时、每天、每周，或者直接写自定义 Cron 表达式。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   然后选一个投递目标，比如每天早上 9 点让 Agent 把昨天的技术新闻摘要推到你的 Telegram 群里。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   15 个投递目标和消息网关对应，暂停、恢复、立即执行都可以在界面里操作。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    还有一个比较有意思的功能——3D 可视化环境。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIRN6tCFxr6QgbEMxe4AnplfRwjaCabcWHX5Rx4dvV8fn2FIIKV1ptcD19daJCINEriaVe69uzHxUqoGDr6JHonxJJLiaka8BwAo/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=11" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    3D 可视化环境
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   很有意思，它里面展示了Agent在虚拟办公室的状态，干到哪一步，修复这些都能直观的看见。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    我拿一个案例来看看配置有多简单。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   最后的效果是 早上 9 点，你的微信会收到发来的消息。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblI4PhGfjBUGtE1EJOL6ibgXnS3PEoz6vTWN4RlqxB4Ll2puiaXJ45icThRibtdB6cqJ6icAu7IeCXxyCgic7rWwmk6gSVcK6vPGeLr4s/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=12" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   配置过程如下。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    01 配置模型。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   在 Models 页面选一个模型，比如 DeepSeek，填上URL， API Key。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLkQn4BYOVpm19mRc50HbBGosm3gg00Kn6bb4YObU0YIpPcwZmuzkkZ9kdgBbCw3f1BF44XZV785RuUUP8HsaOHQ8pqV09UhW4/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=13" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 配置消息网关。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   在 Gateway 页面找到微信，填上 Bot Token。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJKQcMibnU1uXTHJMp8NlcIQT8JEtfVCw2NvyNW48cFFABoO2iapuok3Z3MjTLzFzrUY1B5QMZruSbr0byUk4aicuJK0Su65iaAwqM/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=14" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 设置定时任务。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   在 Schedules 页面，选"每天早上 9 点"，投递目标选"微信"，任务内容写"搜索今日技术新闻并生成摘要"。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJDs4QlU7l65bKNxN2Q1QQNZkCjpjl5mic0aTZnCSv2ORMqsIg85pV9ToTQST9WQjI2HeWInKm8HybrUVvfBI01XPqhjN3ODZa0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=15" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   保存之后，每天早上 9 点，你的微信就会自动收到新闻摘要。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   整个过程不需要改配置文件，不需要写代码，全部在界面里点一点就能完成。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这就是 Hermes Desktop 的优势——把复杂的配置变成简单的界面操作，让普通人也能用上 AI Agent 的能力。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    使用前有几个点要注意。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    消息平台配置。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   切到 Gateway 页面，找到你想接的平台——比如 Telegram——填上 Bot Token，把开关打开，Hermes Agent 就能在这个平台上收发消息了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   其他平台操作一样，填 Key、开开关，不需要改配置文件。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    系统安全警告。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   macOS 用户第一次打开会被 Gatekeeper 拦住，在终端跑一下
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    xattr -cr "/Applications/Hermes Agent.app"
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   就能绕过去。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Windows 用户会遇到 SmartScreen 警告，点"更多信息"→"仍要运行"就行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这两个问题都是因为应用没有代码签名，不是安全问题，但确实有点劝退新手。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   可以看到 Hermes Desktop 还有不少问题，前面也提到了——没代码签名、Bug 多、稳定性一般。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   但对于不太懂技术，想用Agent的朋友 。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   值得试一下。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   使用成本有，但是不多了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目基于 MIT 协议开放，感兴趣的同学可以去 GitHub 仓库看看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/fathah/hermes-desktop
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然看到这了，欢迎随手点赞、在看、转发，也可以给我个星标⭐，接收最新的文章，我们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1125" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/oVni_7oO9rZZuK0YBwUoZw</link><pubDate>Thu, 14 May 2026 15:17:41 +0800</pubDate></item><item><id>3877547210-2247512054_1</id><title>Motrix 停更两年，终于有人接手了。</title><description>两个月斩获          5600+ Star          。               安装包从 80MB 精简至 20MB，启动速度从原来的 1-2 秒实现秒开，内存占用直接减少三分之一。          一直没在 macOS 上找到用着顺手的下载器，老牌工具 Motrix 又早已停更，索性从零开始，亲手重写了一款。          它就是          Motrix Ne...</description><guid>https://mp.weixin.qq.com/s/nlust18WjoswKRv0vMyn6g</guid><enclosure url="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblIBbghADuxtK7ZemQh2CQ7oL3xu5icughvAQQ2vZA5Ih4pYtZoTRaoIjCA3e3616hXuWMCT5ZnXibwe1ibicPMdY2x2O8aVQzzukIA/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1125" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   两个月斩获
  &lt;/span&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    5600+ Star
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span style="visibility: visible;"&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIoKY9kSp7mwCaWRktEYDzlobic4f72AqKz6xyHuXNMM9Xog0tkPehKRfC2Z1GA6Nvwj629fMrrWDNzvwmksMUUlfRvK697ggpc/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   安装包从 80MB 精简至 20MB，启动速度从原来的 1-2 秒实现秒开，内存占用直接减少三分之一。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   一直没在 macOS 上找到用着顺手的下载器，老牌工具 Motrix 又早已停更，索性从零开始，亲手重写了一款。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它就是
  &lt;/span&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    Motrix Next，一款跨平台的全功能下载管理器。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJa57ribcrzrj6UN3ia1WO5qstLTicmLWJ3u65Cl6J3476IcXVKpyianiapbQibR0ItkKicpLM36omW0PM9UJCG2os5yUw0haAeUZia2Rw/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   更让人意外的是，这个热门项目的作者，还是一位在读博士生。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   Motrix Next 源自热门开源下载工具 Motrix，并在原版基础上重构升级。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   原版基于 Electron + Vue2，界面简洁，支持 HTTP、FTP、BT、磁力等多种协议，在 GitHub 拥有不少用户。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   但 Electron 本身臃肿笨重，加上 Motrix 自2023年基本停更，Vue2 和 Electron 留下大量技术债务，很难继续维护。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   于是作者决定
  &lt;/span&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    不修补、不兼容，直接从零重写
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span style="visibility: visible;"&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   技术栈全面换新。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   Electron 换为 Tauri 2，Vue2 升级 Vue3，JS 改用 TypeScript + Rust。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px; visibility: visible;"&gt;
  &lt;span style="font-family: STHeitiSC-Light; font-size: 22px; color: rgb(14, 136, 235); font-weight: bolder; display: inline-block; padding-left: 10px; border-left-width: 5px; border-left-style: solid; border-left-color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    它本质还是一款纯下载管理器，核心只专注文件下载。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    01 多协议支持。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   HTTP、HTTPS、FTP 这些基础协议都支持，BitTorrent 种子、磁力链接也没问题，甚至还有迅雷的
  &lt;/span&gt;
  &lt;code style='font-size: 14px; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: rgb(30, 107, 184); background-color: rgba(27, 31, 35, 0.05); font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace; word-break: break-all; visibility: visible;'&gt;
   &lt;span style="visibility: visible;"&gt;
    thunder://
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span style="visibility: visible;"&gt;
   协议。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIPibdKez9yZ6LTNjdMySic3TiawFibtnKm8h3mCRXWRIb3bb8ONLDxQkQPXyxPekxicrNTZkkzbicL2dzx3ZCW2FGWyNZc3nLah5GLY/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   底层用的是 aria2 引擎，单任务最高支持 64 线程，最多 10 个任务并发下载。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 BT 专项能力。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   支持选择性下载种子中的部分文件，也支持 DHT 和 Peer Exchange，不需要 Tracker 也能发现节点。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 速度控制。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   可以做全局限速，也可以单独给某个任务设限，还有一个速度调度器，可以按时间段自动调整。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblI5rFwQSJE63Biav9rTRJu40n25ibyKMdLpicTcaEwN7MjyMY51EkRZCPibzYwKmsZkciaPhKkMKTAibnTT8SAaVXIicAUraxotDibWyOE/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   用大白话说就是。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你想下个大文件，不想让它占满带宽影响其他事情，就设个限速。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你只想要种子里的某几个视频，就勾选那几个文件。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你想在晚上网速好的时候多下点，就设个调度规则。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    软件细节做得挺用心。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    添加下载很方便。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   直接粘贴链接就行，支持 HTTP、磁力、迅雷链接，BT 种子也可以直接拖进去。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJgWNEUWmwwtOibGV59wvTiciaGucibjiamIo3dA5xaoXp9xYc3sNwN8nnd4MIaTH9ia50QIwceJ6a4iaic5y8OjdYyLQSby6ibq1mIo8fI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    任务详情一目了然。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   下载速度、进度、剩余时间、文件大小，该有的信息都有。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKicZOhQdmwluRlUFmO0SFiclSQ0E7Xarep2Qg7kUtCEWzLZHRcLteE4LoXs7b7YOyDicn6jgWOBSOoMy9IH5UrJZKUbC704kCH1k/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    作者自己编译了 6 个平台的 aria2 二进制文件。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   官方 aria2 只提供 Windows 32/64 位和 Android ARM64 的预编译包。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   而 Motrix Next 要适配六大架构：macOS 英特尔 / 苹果芯片、Windows x64/ARM64、Linux x64/ARM64。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   于是作者自己搭建编译流水线，从源码编译出全平台的静态二进制文件。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    跨平台支持做得比较完整。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   macOS 可以用 Homebrew 安装，Windows 已经进了 winget 官方仓库，Linux 也进了 NixOS 的 nixpkgs。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   浏览器扩展也覆盖了 Chrome、Edge、Firefox 三个主流浏览器，可以一键把网页里的下载链接推到 Motrix Next 里。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJnKb1gdQ13Qcu6PFtOqV4icw3hDP5k0y4uRMnMrCKCpqp47FGI4HPVZl5cavNGNcIImG0hM4NQUJZNiazYuTvzynwiae2uErByzE/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    网络配置也考虑到了。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   支持 HTTP、HTTPS、SOCKS5 代理，还能自定义 User-Agent。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIRq9gDkTyKC4VajxeOwjYicZxfeQ1JgFxYfia9aalgYTvWk62U6Ox1us69Zm5hbeM9dlBkbPN7UZeKibnlCTsoJv4HMma4cBU7jQ/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   下载参数也可以调，并发数、分片数、超时时间都能改。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJ2qSDfgE0xsroKg6Jbe0U1axpNFITMgHAOBpJ1xBFNicYib38hBaVZTZZDc4iajj6laVSnwtQcibSqenicz0wPKIAs5Q6XicOpmPpoQ/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    还有一些贴心的小功能。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   系统托盘常驻，后台运行不占桌面。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   外观配色支持 10 种主题，深色浅色都有。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLJUMDoxhlNu41ITZe4ZibHd5v9pbE5JhAFicdKeW7tzGeH32tbjPK4hASicAxbdmNeh4xvlQvTt5HicgxXwUTyPoNIPgT7WZd9LnU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=9" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   支持26 种语言切换，首次启动自动会检测电脑的用的语言。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblK1Vwfib8bOkiarzUQbqiaw4YW6Itqc93OTTzickpVib1uI8O7BNY268OGWwGzmBZgqXWYVzNLyYS4nolGA8tHiaYWxVMxRaU7M6Y1vA/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=10" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   假如你复制了下载链接，它会自动识别添加到下载，不用手动粘贴。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblInpQZu0ZQSicxOJb9DrJVIJyLd9lC961uodUNYTUbYWklK9hCpOUnK0QjHwNRXLlwdo1vibP7wTT7CfdveHRp8hjEt2G4lpl0wg/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=11" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   另外下载时还能设置不让电脑自动休眠，Windows、Mac、Linux 都支持。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    看完这些功能，相信各位已经迫不及待了。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    Windows 用户。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   用Windows的朋友，可以用winget安装。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;winget install AnInsomniacy.MotrixNext&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   一行命令，搞定。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   macOS 用户建议直接用Homebrew装。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;brew tap AnInsomniacy/motrix-next&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;brew install --cask motrix-next&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   第一次打开可能会提示已损坏，是因为没有代码签名导致的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   运行下面这行命令就能解决。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;xattr -cr /Applications/MotrixNext.app&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不想用命令装没关系， GitHub Releases 提供了各种系统的安装包，大家根据需求自取。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKn2ibZEwK9xnHrH9WQBNDbaKDThGQGqmciayg7TNnXGzyEt4BvMPh1YaibiceFl1qdF2foGQsGwcnm9kq2aT9jHViaQ21BSEuSWicYk/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=12" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    到这里缺点也给大家提提。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    目前没有代码签名。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   macOS 和 Windows 上可能会弹出安全警告。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   作者在 README 里解释得很直接：苹果开发者账号一年 99 美元，Windows 代码签名证书一年 300-600 美元，"那是很多碗泡面的钱"。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    功能上也有一些限制。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   目前不支持 ed2k 协议，这是 aria2 引擎本身的限制。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   也没有浏览器资源嗅探功能，有些用户在社区里提过这个需求，但目前还没实现。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Motrix 我之前也用过一阵子，界面干净，功能也够用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   后来停更了，挺可惜的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   现在有了 Motrix Next，算是接上了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Electron 换成 Tauri，安装包从 80MB 降到 20MB，启动也快了不少。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你正好需要个跨平台的下载工具，可以试试看。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目基于 MIT 协议开放，感兴趣的同学可以去 GitHub 仓库看看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/AnInsomniacy/motrix-next
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然看到这了，欢迎随手点赞、在看、转发，也可以给我个星标⭐，接收最新的文章，我们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1125" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/nlust18WjoswKRv0vMyn6g</link><pubDate>Wed, 13 May 2026 15:17:17 +0800</pubDate></item><item><id>3877547210-2247512037_1</id><title>又一个 AI 建模工具 ，看着逼真多了 。</title><description>还记得高中生物课本上的细胞结构图吗 ？          线粒体、内质网、高尔基体……那时候学的都是平面图，只能靠脑补想象它们在三维空间里的样子。          上大学做过科研汇报或者写过生物类论文的同学，大概率也遇到过类似的问题。          想配一张高质量的 3D 细胞结构图，但手头没有现成的资源。          网上搜出来的图片，基本上都很老或者模糊，没法用。         ...</description><guid>https://mp.weixin.qq.com/s/pCIs4lCF68qHK5vQRXZx7Q</guid><enclosure url="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblIicd9AMTAVsyhFgqojAwAtONWNl05RpRjXeaqcoAiaBSSUxOzTh5Rx8jowMgdLpNicibypI1LkBjv8bjyiaDXR3DXTDXdTDNvylm08/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1123" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   还记得高中生物课本上的细胞结构图吗 ？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   线粒体、内质网、高尔基体……那时候学的都是平面图，只能靠脑补想象它们在三维空间里的样子。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   上大学做过科研汇报或者写过生物类论文的同学，大概率也遇到过类似的问题。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   想配一张高质量的 3D 细胞结构图，但手头没有现成的资源。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   网上搜出来的图片，基本上都很老或者模糊，没法用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   最近我在 Github 发现一个项目，能用 AI 生成逼真的 3D 细胞模型。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   一句话说清楚：
  &lt;/span&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    3DCellForge 就是一个网页上的 3D 细胞生成器，扔图片进去，就能做出能旋转、放大、查看细胞器的互动 3D 模型，能导出。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKibcFWibWUTuzRicfjRibCQfChybVJ8EqE4I6AfiaV1rrqrpe8mSyKl8HMU0zSXG2X4d416cia0nzSIrRavPA0fZ8wtoaZS0Eiarfz98/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   目前已经有 1500多人 Star 。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIMdbzlgFwkB3hOUqS0gqiaIr2Bj8ibgicIsMv92Wg7K9B8lTokJQlfeWBibJtvvXqn8IBJfw2Op9CmwGR68VrdbaWeC4KZu5kkLqM/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px; visibility: visible;"&gt;
  &lt;span style="font-family: STHeitiSC-Light; font-size: 22px; color: rgb(14, 136, 235); font-weight: bolder; display: inline-block; padding-left: 10px; border-left-width: 5px; border-left-style: solid; border-left-color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    这个项目自带 5 种细胞类型模板，每一种效果都不错。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    01 先从最基础的植物细胞说起。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   这是最基础的真核细胞模板，你可以清楚看到细胞膜、细胞核、线粒体等典型结构。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJTLKtaLMYibsztpGFsB8lMQzP23gm8rlG9MgrxtRoBo1uwsJR7PonQrmGIOsHmnGkopEz1jGDWtNWYMEnapTiaxx8XsNreicPfjU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px; text-align: center; color: rgb(136, 136, 136); display: block; font-size: 12px; font-family: PingFangSC-Light; visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    植物细胞模型，展示真核细胞的典型结构
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    02 看完基础结构，再看有特殊功能的细胞。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   比如白细胞，作为免疫细胞模板，能清楚看到溶酶体等免疫相关细胞器的分布。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJqglyuRYBID6hMGuIdhQia9TdUZEXyBZo0poqjZBKht6vor9p1jEZkBZf8vAmuDWhfkIZ2ibKBUleqwadW7yfd9leB7NfPpnftc/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    白细胞模型，展示免疫细胞的结构特征
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 还有神经元，负责传递神经信号的神经细胞，结构很有特点。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLqfT8mrmjRZQHr0YR5emIb5wcLXsRz98PMSPq8BmPdA4IeAibpAvbaicJ9BIibfqFNTMRXdS5NUlia4A6Qmf7p427ExRxMHWJFRf0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    神经元模型，展示神经细胞的结构特征
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    04 上面这些都是预置模板，接下来看看 AI 生成的效果。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   先用 Tripo AI 生成了一个植物细胞模型，结构细节清楚可见，展示了 AI 的生成能力。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLYCCBmnAarPKY0SejxLpvdjOWWTALvqvl7ORqJlxJCPjHgJ0jRfMY679aMZibM3H1JWTYW2yP3mtXrQp4CE2WIf7flew27NpPI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Tripo AI 生成的植物细胞模型
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    05 又是Tripo生成的上皮细胞模型，上皮细胞是覆盖在身体表面和体内腔道的细胞，效果也很逼真。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJ8egyWMpeqkkZMNts1ibGNeIUMHLkzAuy4wwrdzlibZcVBHKUI8JrjUzomX5du9qps5wv3DDaehrSUfRS4mTjahUv4PNmRmBk6Q/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Tripo AI 生成的上皮细胞模型
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;h3 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;font-size: 18px;color: #0e88eb;"&gt;
  &lt;span style="font-size: 18px;color: #0e88eb;"&gt;
   &lt;span&gt;
    系统自带模型不够用，自己动手上传图片转 3D 模型。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h3&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   目前支持3种模型配置方式。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;ol class="list-paddingleft-1" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: black;list-style-type: decimal;"&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
     &lt;span&gt;
      Tripo：云端生成模型，建模精细度表现最优，使用需配置专属API密钥。
     &lt;/span&gt;
    &lt;/p&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
     &lt;span&gt;
      Hunyuan3D：支持本地私有化部署，看重数据隐私、不想云端上传资源的场景很适用。
     &lt;/span&gt;
    &lt;/p&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
     &lt;span&gt;
      JS Depth：直接在浏览器就能运行，无需额外安装部署，精度略逊色，但全程离线无联网。
     &lt;/span&gt;
    &lt;/p&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
     &lt;span&gt;
      Auto智能模式：自动逐级适配切换，优先用Tripo，有问题自动切换至Hunyuan3D；两个都不能用时，兜底启用JS Depth来生成。
     &lt;/span&gt;
    &lt;/p&gt;
   &lt;/section&gt;
  &lt;/li&gt;
 &lt;/ol&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   大家根据自己的需求来选。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    我本地跑了一下，4个配套功能也很实用。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIXdZNrF2zC3tJeGUCr5XaMGYYvDqPTmicSWT2Hk8XoQVWI6kG6SDI2OFxOjVRKgIg1RGG8Ur6cUAciafibSqxXYOTV6bMkoicHgGg/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    01 剖面模式。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   就像 CT 扫描一样切开细胞，能直接看到内部结构，线粒体怎么分布的、内质网和核糖体的位置关系 。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这要用来学习细胞结构，就太方便了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 显微镜模拟。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   系统能生成不同染色、荧光、灰度模式的效果，直接和真实显微图像对比。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJNK9Mf7ViasbEm166icRURfibiaIV9NIefI6aRYs9OwmSUytZfA2zY2pagHZ0SLoxZN75F4XOsO54LXxeACSCDfrLSlibxFIZIKqwk/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   做教学演示的时候，学生能同时看到显微镜下长什么样和3D 模型是什么结构，理解起来容易很多。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 细胞对比。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJOzvA589dEVfbNst0iagPoBjNTBg2ylyTqHIibfpr7l6dfhUceT1XWkr9BwjOF4VQHwD1rA4uaIaLOibicB1nTHibBcHkGwU1Iomy0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=9" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   可以把两种细胞并排放在一起对比，结构差异一眼就能看出来。比如植物细胞和动物细胞，结构差异一眼就能看出来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    04 图层系统。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   点击模型上的任意部位，右侧会弹出对应的生物学信息，尺寸、位置、功能说明都有。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   做汇报的时候，这种交互式展示比静态图片有说服力得多。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    05 导出功能。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   GLB 格式可以直接丢进 Blender 或 Unity 继续编辑。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJtibZjdfunlpEp4TSsfqyym8tjrEJXwYzD5ribyE1H96TibGr3unDdq7hYuib8xcCyamkicXBcwAKmKLcPicLCT3rhacmlKHJoDO3As/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=10" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    效果这么好，估计大家已经迫不及待想试试了
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   先用git把代码下载到你的电脑上。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;git clone https://github.com/huangserva/3DCellForge&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;cd 3DCellForge&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   打开终端用
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    npm install
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   把依赖装上，
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    npm run dev
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   就可以跑起来了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不报错的话，浏览器打开
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    http://localhost:5173
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblK5SribHiczqvb8iaQumWdsBr1sq6AHpaBp3UJqge87Ixm2YfQ3JWFXlJrLaVVZksFx81RQ7NpqWbYQXrUpcPlshj6PYiav9Fh28rA/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=11" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目自带了演示的 GLB 模型，页面加载完就看到效果了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   想用 Tripo 云端生成，需要配置
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    TRIPO_API_KEY
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   到服务端的
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    .env.local
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   文件
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果选择本地生成，需要部署 Hunyuan3D 的 API 服务器。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJOAOtcD4q3lyvjBOYPOYEHbZm0cv2xbwHqlTq3uRO9D0qIicq4scc8MOW5ZagOic1NaNcdvu2cFmNoFpesbGQdq4c9T9UiaHOlx8/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=12" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    有些不足也提一下
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不过说实话，这个项目目前还是原型阶段，有些地方还不够完善。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   比如需要配置 API 密钥或者部署本地服务器，对非技术用户来说门槛有点高。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   看了项目你会发现它只有细胞相关模型，没有其它的模型类型，不够丰富。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    不过3DCellForge 的思路值得学一下。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   X上有人用这个框架建了一个 F-22、F-35、星舰、猛禽发动机的展示网页，效果相当惊艳。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIOrURgmt8TibWVJjsqpochrib8pOSbJH70ic7a5MkYq3a3zFFweicE3y4XjuZiavsDHPjcXZiaLk8aiaKHIn6t9HJia5WyF8ozBdxKMhs/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=13" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    F-22 战斗机 3D 展示
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   AI 生成 3D 模型这技术，这两年进步挺快的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Tripo、Hunyuan3D 这些工具，效果越来越好，用起来也越来越简单。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   3DCellForge 就是踩在这波技术浪潮上的一个实用工具——把细胞建模从得学 Blender变成了打开网页就能搞。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你正好需要做细胞相关的 3D 可视化，可以试试。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目基于 MIT 协议开放，感兴趣的同学可以去 GitHub 仓库看看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/huangserva/3DCellForge
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然看到这了，欢迎随手点赞、在看、转发，也可以给我个星标⭐，接收最新的文章，我们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1123" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/pCIs4lCF68qHK5vQRXZx7Q</link><pubDate>Tue, 12 May 2026 15:17:29 +0800</pubDate></item><item><id>3877547210-2247512018_1</id><title>又一个 Claude Code 接 DeepSeek 的利器，更稳了。</title><description>Claude Code是目前公认最强的AI编程代理，但一个月要200美元外加使用限制。          因此很多人都在找更便宜的替代方案。          我前几天分享了一个美国小哥写的DeepSeek-TUI，算是         DeepSeek版的Claude Code        。               结果评论区有人问：为啥不直接用Claude Code对接DeepSeek...</description><guid>https://mp.weixin.qq.com/s/xWkXMgCnVFvrJ_vevPr7cg</guid><enclosure url="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblLibQbKZCAMT7AXxOCkPgd8CT02uJGIdVLFrJPb2HPaFAPmGWP4Pq500u9zc6LFCMw0me1Oib3c3RgJmkxMXD8JfWFoRfcRFUKOk/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1123" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   Claude Code是目前公认最强的AI编程代理，但一个月要200美元外加使用限制。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   因此很多人都在找更便宜的替代方案。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   我前几天分享了一个美国小哥写的DeepSeek-TUI，算是
   &lt;a class="normal_text_link mp_article_text_link" data-itemshowtype="0" data-linktype="2" hasload="1" href="https://mp.weixin.qq.com/s?__biz=Mzg3NzU0NzIxMA==&amp;amp;mid=2247511939&amp;amp;idx=1&amp;amp;sn=f4807a5501f12eb399212fb7b27a9958&amp;amp;scene=21#wechat_redirect" linktype="text" style="visibility: visible;" target="_blank" textvalue="DeepSeek版的Claude Code"&gt;
    DeepSeek版的Claude Code
   &lt;/a&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIsuFW316apUEc5LjlgudM17NWQ0rx66f7ZKaK3PwRUMjodbjdc0uaHkb4CvhaLMXWlDHvKUrZWiaoDWCmFgNQQxE5icNq6XawkM/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   结果评论区有人问：为啥不直接用Claude Code对接DeepSeek V4 Pro？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   其实我也想这么干，但Anthropic最近收紧了第三方模型的接入限制。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   Claude Desktop 和 Claude Code CLI 的新版本都加了模型ID白名单校验，只允许官方模型通过。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   原本能用的第三方替代方案，比如DeepSeek V4，都被挡在门外了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   不过办法总比困难多。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   又有个美国人站出来了，写了个叫deepclaude的开源项目，给出了另一种解决方案。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLDJSGicf83pXEBxblpd0rCtibxGyWHhoTGiaGWwFaA7PqlyjJzhY0A5LR4TKD6wwr1ZJkNLtZHZVkss7Tewto8YWjkbu8tnfLkCo/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    它其实就是把Claude Code的API后端换成DeepSeek V4 Pro、OpenRouter或其他兼容Anthropic的后端。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   听起来有点绕，但原理很简单。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   Claude Code会读取几个环境变量，来决定、把API请求发到哪、用什么密钥、调用哪个模型。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIZBv75ayZvZpR1U6MvKEMHQmf5FcoQKXwzDqC8x30GkbPdGg3YY1YWYEC0vvWdpNSHJUkgYO3wbXJPiaJfhKibn8b1N5PwA77ZI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   deepclaude做的事，就是在启动前把这些变量临时改掉。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   让Claude Code以为自己在跟Anthropic通信，实际上请求已经转发到了DeepSeek的服务器。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   整个过程，Claude Code本身不需要任何改动。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你可能会问：前面不是说有白名单校验吗？怎么还能绕过？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   其实deepclaude是在Claude Code启动之前就改好了环境变量，所以Claude Code根本不知道自己在跟谁通信，它只认环境变量里的地址。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    这个换脑动作带来的最大好处，就是省钱。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    01 成本对比
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   按照项目README里的数据，DeepSeek V4 Pro的输出token价格是
  &lt;/span&gt;
  &lt;span style="cursor:pointer;"&gt;
   &lt;span&gt;
    &lt;svg aria-hidden="true" aria-label="插图" focusable="false" role="img" style="vertical-align: -0.566ex;width: 37.469ex;height: 2.262ex;" viewbox="0 -750 16561.2 1000" xmlns="http://www.w3.org/2000/svg"&gt;
     &lt;g fill="currentColor" stroke="currentColor" stroke-width="0" transform="matrix(1 0 0 -1 0 0)"&gt;
      &lt;g data-mml-node="math"&gt;
       &lt;g data-mml-node="mn"&gt;
        &lt;path d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" data-c="30"&gt;
        &lt;/path&gt;
        &lt;path d="M78 60Q78 84 95 102T138 120Q162 120 180 104T199 61Q199 36 182 18T139 0T96 17T78 60Z" data-c="2E" transform="translate(500, 0)"&gt;
        &lt;/path&gt;
        &lt;path d="M70 417T70 494T124 618T248 666Q319 666 374 624T429 515Q429 485 418 459T392 417T361 389T335 371T324 363L338 354Q352 344 366 334T382 323Q457 264 457 174Q457 95 399 37T249 -22Q159 -22 101 29T43 155Q43 263 172 335L154 348Q133 361 127 368Q70 417 70 494ZM286 386L292 390Q298 394 301 396T311 403T323 413T334 425T345 438T355 454T364 471T369 491T371 513Q371 556 342 586T275 624Q268 625 242 625Q201 625 165 599T128 534Q128 511 141 492T167 463T217 431Q224 426 228 424L286 386ZM250 21Q308 21 350 55T392 137Q392 154 387 169T375 194T353 216T330 234T301 253T274 270Q260 279 244 289T218 306L210 311Q204 311 181 294T133 239T107 157Q107 98 150 60T250 21Z" data-c="38" transform="translate(778, 0)"&gt;
        &lt;/path&gt;
        &lt;path d="M55 458Q56 460 72 567L88 674Q88 676 108 676H128V672Q128 662 143 655T195 646T364 644H485V605L417 512Q408 500 387 472T360 435T339 403T319 367T305 330T292 284T284 230T278 162T275 80Q275 66 275 52T274 28V19Q270 2 255 -10T221 -22Q210 -22 200 -19T179 0T168 40Q168 198 265 368Q285 400 349 489L395 552H302Q128 552 119 546Q113 543 108 522T98 479L95 458V455H55V458Z" data-c="37" transform="translate(1278, 0)"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mjx-texclass="ORD" data-mml-node="TeXAtom" transform="translate(1778, 0)"&gt;
        &lt;g data-mml-node="mo"&gt;
         &lt;path d="M423 750Q432 750 438 744T444 730Q444 725 271 248T92 -240Q85 -250 75 -250Q68 -250 62 -245T56 -231Q56 -221 230 257T407 740Q411 750 423 750Z" data-c="2F"&gt;
         &lt;/path&gt;
        &lt;/g&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(2278, 0)"&gt;
        &lt;path d="M289 629Q289 635 232 637Q208 637 201 638T194 648Q194 649 196 659Q197 662 198 666T199 671T201 676T203 679T207 681T212 683T220 683T232 684Q238 684 262 684T307 683Q386 683 398 683T414 678Q415 674 451 396L487 117L510 154Q534 190 574 254T662 394Q837 673 839 675Q840 676 842 678T846 681L852 683H948Q965 683 988 683T1017 684Q1051 684 1051 673Q1051 668 1048 656T1045 643Q1041 637 1008 637Q968 636 957 634T939 623Q936 618 867 340T797 59Q797 55 798 54T805 50T822 48T855 46H886Q892 37 892 35Q892 19 885 5Q880 0 869 0Q864 0 828 1T736 2Q675 2 644 2T609 1Q592 1 592 11Q592 13 594 25Q598 41 602 43T625 46Q652 46 685 49Q699 52 704 61Q706 65 742 207T813 490T848 631L654 322Q458 10 453 5Q451 4 449 3Q444 0 433 0Q418 0 415 7Q413 11 374 317L335 624L267 354Q200 88 200 79Q206 46 272 46H282Q288 41 289 37T286 19Q282 3 278 1Q274 0 267 0Q265 0 255 0T221 1T157 2Q127 2 95 1T58 0Q43 0 39 2T35 11Q35 13 38 25T43 40Q45 46 65 46Q135 46 154 86Q158 92 223 354T289 629Z" data-c="4D"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mo" transform="translate(3606.8, 0)"&gt;
        &lt;text data-variant="normal" font-family="serif" font-size="814.2px" transform="matrix(1 0 0 -1 0 0)"&gt;
         &lt;tspan leaf=""&gt;
          ，
         &lt;/tspan&gt;
        &lt;/text&gt;
        &lt;text data-variant="normal" font-family="serif" font-size="814.2px" transform="translate(814.3, 0) matrix(1 0 0 -1 0 0)"&gt;
         &lt;tspan leaf=""&gt;
          而
         &lt;/tspan&gt;
        &lt;/text&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(5513.1, 0)"&gt;
        &lt;path d="M208 74Q208 50 254 46Q272 46 272 35Q272 34 270 22Q267 8 264 4T251 0Q249 0 239 0T205 1T141 2Q70 2 50 0H42Q35 7 35 11Q37 38 48 46H62Q132 49 164 96Q170 102 345 401T523 704Q530 716 547 716H555H572Q578 707 578 706L606 383Q634 60 636 57Q641 46 701 46Q726 46 726 36Q726 34 723 22Q720 7 718 4T704 0Q701 0 690 0T651 1T578 2Q484 2 455 0H443Q437 6 437 9T439 27Q443 40 445 43L449 46H469Q523 49 533 63L521 213H283L249 155Q208 86 208 74ZM516 260Q516 271 504 416T490 562L463 519Q447 492 400 412L310 260L413 259Q516 259 516 260Z" data-c="41"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(6263.1, 0)"&gt;
        &lt;path d="M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z" data-c="6E"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(6863.1, 0)"&gt;
        &lt;path d="M26 385Q19 392 19 395Q19 399 22 411T27 425Q29 430 36 430T87 431H140L159 511Q162 522 166 540T173 566T179 586T187 603T197 615T211 624T229 626Q247 625 254 615T261 596Q261 589 252 549T232 470L222 433Q222 431 272 431H323Q330 424 330 420Q330 398 317 385H210L174 240Q135 80 135 68Q135 26 162 26Q197 26 230 60T283 144Q285 150 288 151T303 153H307Q322 153 322 145Q322 142 319 133Q314 117 301 95T267 48T216 6T155 -11Q125 -11 98 4T59 56Q57 64 57 83V101L92 241Q127 382 128 383Q128 385 77 385H26Z" data-c="74"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(7224.1, 0)"&gt;
        &lt;path d="M137 683Q138 683 209 688T282 694Q294 694 294 685Q294 674 258 534Q220 386 220 383Q220 381 227 388Q288 442 357 442Q411 442 444 415T478 336Q478 285 440 178T402 50Q403 36 407 31T422 26Q450 26 474 56T513 138Q516 149 519 151T535 153Q555 153 555 145Q555 144 551 130Q535 71 500 33Q466 -10 419 -10H414Q367 -10 346 17T325 74Q325 90 361 192T398 345Q398 404 354 404H349Q266 404 205 306L198 293L164 158Q132 28 127 16Q114 -11 83 -11Q69 -11 59 -2T48 16Q48 30 121 320L195 616Q195 629 188 632T149 637H128Q122 643 122 645T124 664Q129 683 137 683Z" data-c="68"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(7800.1, 0)"&gt;
        &lt;path d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z" data-c="72"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(8251.1, 0)"&gt;
        &lt;path d="M201 -11Q126 -11 80 38T34 156Q34 221 64 279T146 380Q222 441 301 441Q333 441 341 440Q354 437 367 433T402 417T438 387T464 338T476 268Q476 161 390 75T201 -11ZM121 120Q121 70 147 48T206 26Q250 26 289 58T351 142Q360 163 374 216T388 308Q388 352 370 375Q346 405 306 405Q243 405 195 347Q158 303 140 230T121 120Z" data-c="6F"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(8736.1, 0)"&gt;
        &lt;path d="M23 287Q24 290 25 295T30 317T40 348T55 381T75 411T101 433T134 442Q209 442 230 378L240 387Q302 442 358 442Q423 442 460 395T497 281Q497 173 421 82T249 -10Q227 -10 210 -4Q199 1 187 11T168 28L161 36Q160 35 139 -51T118 -138Q118 -144 126 -145T163 -148H188Q194 -155 194 -157T191 -175Q188 -187 185 -190T172 -194Q170 -194 161 -194T127 -193T65 -192Q-5 -192 -24 -194H-32Q-39 -187 -39 -183Q-37 -156 -26 -148H-6Q28 -147 33 -136Q36 -130 94 103T155 350Q156 355 156 364Q156 405 131 405Q109 405 94 377T71 316T59 280Q57 278 43 278H29Q23 284 23 287ZM178 102Q200 26 252 26Q282 26 310 49T356 107Q374 141 392 215T411 325V331Q411 405 350 405Q339 405 328 402T306 393T286 380T269 365T254 350T243 336T235 326L232 322Q232 321 229 308T218 264T204 212Q178 106 178 102Z" data-c="70"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(9239.1, 0)"&gt;
        &lt;path d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z" data-c="69"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(9584.1, 0)"&gt;
        &lt;path d="M34 159Q34 268 120 355T306 442Q362 442 394 418T427 355Q427 326 408 306T360 285Q341 285 330 295T319 325T330 359T352 380T366 386H367Q367 388 361 392T340 400T306 404Q276 404 249 390Q228 381 206 359Q162 315 142 235T121 119Q121 73 147 50Q169 26 205 26H209Q321 26 394 111Q403 121 406 121Q410 121 419 112T429 98T420 83T391 55T346 25T282 0T202 -11Q127 -11 81 37T34 159Z" data-c="63"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(10017.1, 0)"&gt;
        &lt;path d="M50 252Q50 367 117 473T286 641T490 704Q580 704 633 653Q642 643 648 636T656 626L657 623Q660 623 684 649Q691 655 699 663T715 679T725 690L740 705H746Q760 705 760 698Q760 694 728 561Q692 422 692 421Q690 416 687 415T669 413H653Q647 419 647 422Q647 423 648 429T650 449T651 481Q651 552 619 605T510 659Q484 659 454 652T382 628T299 572T226 479Q194 422 175 346T156 222Q156 108 232 58Q280 24 350 24Q441 24 512 92T606 240Q610 253 612 255T628 257Q648 257 648 248Q648 243 647 239Q618 132 523 55T319 -22Q206 -22 128 53T50 252Z" data-c="43"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(10777.1, 0)"&gt;
        &lt;path d="M117 59Q117 26 142 26Q179 26 205 131Q211 151 215 152Q217 153 225 153H229Q238 153 241 153T246 151T248 144Q247 138 245 128T234 90T214 43T183 6T137 -11Q101 -11 70 11T38 85Q38 97 39 102L104 360Q167 615 167 623Q167 626 166 628T162 632T157 634T149 635T141 636T132 637T122 637Q112 637 109 637T101 638T95 641T94 647Q94 649 96 661Q101 680 107 682T179 688Q194 689 213 690T243 693T254 694Q266 694 266 686Q266 675 193 386T118 83Q118 81 118 75T117 65V59Z" data-c="6C"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(11075.1, 0)"&gt;
        &lt;path d="M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z" data-c="61"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(11604.1, 0)"&gt;
        &lt;path d="M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z" data-c="75"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(12176.1, 0)"&gt;
        &lt;path d="M366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326Z" data-c="64"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(12696.1, 0)"&gt;
        &lt;path d="M39 168Q39 225 58 272T107 350T174 402T244 433T307 442H310Q355 442 388 420T421 355Q421 265 310 237Q261 224 176 223Q139 223 138 221Q138 219 132 186T125 128Q125 81 146 54T209 26T302 45T394 111Q403 121 406 121Q410 121 419 112T429 98T420 82T390 55T344 24T281 -1T205 -11Q126 -11 83 42T39 168ZM373 353Q367 405 305 405Q272 405 244 391T199 357T170 316T154 280T149 261Q149 260 169 260Q282 260 327 284T373 353Z" data-c="65"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(13162.1, 0)"&gt;
        &lt;path d="M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z" data-c="4F"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(13925.1, 0)"&gt;
        &lt;path d="M23 287Q24 290 25 295T30 317T40 348T55 381T75 411T101 433T134 442Q209 442 230 378L240 387Q302 442 358 442Q423 442 460 395T497 281Q497 173 421 82T249 -10Q227 -10 210 -4Q199 1 187 11T168 28L161 36Q160 35 139 -51T118 -138Q118 -144 126 -145T163 -148H188Q194 -155 194 -157T191 -175Q188 -187 185 -190T172 -194Q170 -194 161 -194T127 -193T65 -192Q-5 -192 -24 -194H-32Q-39 -187 -39 -183Q-37 -156 -26 -148H-6Q28 -147 33 -136Q36 -130 94 103T155 350Q156 355 156 364Q156 405 131 405Q109 405 94 377T71 316T59 280Q57 278 43 278H29Q23 284 23 287ZM178 102Q200 26 252 26Q282 26 310 49T356 107Q374 141 392 215T411 325V331Q411 405 350 405Q339 405 328 402T306 393T286 380T269 365T254 350T243 336T235 326L232 322Q232 321 229 308T218 264T204 212Q178 106 178 102Z" data-c="70"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(14428.1, 0)"&gt;
        &lt;path d="M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z" data-c="75"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(15000.1, 0)"&gt;
        &lt;path d="M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z" data-c="73"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mo" transform="translate(15746.9, 0)"&gt;
        &lt;text data-variant="normal" font-family="serif" font-size="814.2px" transform="matrix(1 0 0 -1 0 0)"&gt;
         &lt;tspan leaf=""&gt;
          是
         &lt;/tspan&gt;
        &lt;/text&gt;
       &lt;/g&gt;
      &lt;/g&gt;
     &lt;/g&gt;
    &lt;/svg&gt;
   &lt;/span&gt;
  &lt;/span&gt;
  &lt;span&gt;
   15/M。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   算下来，deepclaude能把成本压到原来的1/17。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   还有人在腾讯云上做过更大规模的测试。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   400万tokens的请求，用Claude Opus要花
  &lt;/span&gt;
  &lt;span style="cursor:pointer;"&gt;
   &lt;span&gt;
    &lt;svg aria-hidden="true" aria-label="插图" focusable="false" role="img" style="vertical-align: -0.452ex;width: 29.976ex;height: 2.149ex;" viewbox="0 -750 13249.4 950" xmlns="http://www.w3.org/2000/svg"&gt;
     &lt;g fill="currentColor" stroke="currentColor" stroke-width="0" transform="matrix(1 0 0 -1 0 0)"&gt;
      &lt;g data-mml-node="math"&gt;
       &lt;g data-mml-node="mn"&gt;
        &lt;path d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z" data-c="32"&gt;
        &lt;/path&gt;
        &lt;path d="M42 313Q42 476 123 571T303 666Q372 666 402 630T432 550Q432 525 418 510T379 495Q356 495 341 509T326 548Q326 592 373 601Q351 623 311 626Q240 626 194 566Q147 500 147 364L148 360Q153 366 156 373Q197 433 263 433H267Q313 433 348 414Q372 400 396 374T435 317Q456 268 456 210V192Q456 169 451 149Q440 90 387 34T253 -22Q225 -22 199 -14T143 16T92 75T56 172T42 313ZM257 397Q227 397 205 380T171 335T154 278T148 216Q148 133 160 97T198 39Q222 21 251 21Q302 21 329 59Q342 77 347 104T352 209Q352 289 347 316T329 361Q302 397 257 397Z" data-c="36" transform="translate(500, 0)"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mo" transform="translate(1277.8, 0)"&gt;
        &lt;text data-variant="normal" font-family="serif" font-size="814.2px" transform="matrix(1 0 0 -1 0 0)"&gt;
         &lt;tspan leaf=""&gt;
          ，
         &lt;/tspan&gt;
        &lt;/text&gt;
        &lt;text data-variant="normal" font-family="serif" font-size="814.2px" transform="translate(814.3, 0) matrix(1 0 0 -1 0 0)"&gt;
         &lt;tspan leaf=""&gt;
          换
         &lt;/tspan&gt;
        &lt;/text&gt;
        &lt;text data-variant="normal" font-family="serif" font-size="814.2px" transform="translate(1656.2, 0) matrix(1 0 0 -1 0 0)"&gt;
         &lt;tspan leaf=""&gt;
          成
         &lt;/tspan&gt;
        &lt;/text&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(4026, 0)"&gt;
        &lt;path d="M287 628Q287 635 230 637Q207 637 200 638T193 647Q193 655 197 667T204 682Q206 683 403 683Q570 682 590 682T630 676Q702 659 752 597T803 431Q803 275 696 151T444 3L430 1L236 0H125H72Q48 0 41 2T33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM703 469Q703 507 692 537T666 584T629 613T590 629T555 636Q553 636 541 636T512 636T479 637H436Q392 637 386 627Q384 623 313 339T242 52Q242 48 253 48T330 47Q335 47 349 47T373 46Q499 46 581 128Q617 164 640 212T683 339T703 469Z" data-c="44"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(4854, 0)"&gt;
        &lt;path d="M39 168Q39 225 58 272T107 350T174 402T244 433T307 442H310Q355 442 388 420T421 355Q421 265 310 237Q261 224 176 223Q139 223 138 221Q138 219 132 186T125 128Q125 81 146 54T209 26T302 45T394 111Q403 121 406 121Q410 121 419 112T429 98T420 82T390 55T344 24T281 -1T205 -11Q126 -11 83 42T39 168ZM373 353Q367 405 305 405Q272 405 244 391T199 357T170 316T154 280T149 261Q149 260 169 260Q282 260 327 284T373 353Z" data-c="65"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(5320, 0)"&gt;
        &lt;path d="M39 168Q39 225 58 272T107 350T174 402T244 433T307 442H310Q355 442 388 420T421 355Q421 265 310 237Q261 224 176 223Q139 223 138 221Q138 219 132 186T125 128Q125 81 146 54T209 26T302 45T394 111Q403 121 406 121Q410 121 419 112T429 98T420 82T390 55T344 24T281 -1T205 -11Q126 -11 83 42T39 168ZM373 353Q367 405 305 405Q272 405 244 391T199 357T170 316T154 280T149 261Q149 260 169 260Q282 260 327 284T373 353Z" data-c="65"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(5786, 0)"&gt;
        &lt;path d="M23 287Q24 290 25 295T30 317T40 348T55 381T75 411T101 433T134 442Q209 442 230 378L240 387Q302 442 358 442Q423 442 460 395T497 281Q497 173 421 82T249 -10Q227 -10 210 -4Q199 1 187 11T168 28L161 36Q160 35 139 -51T118 -138Q118 -144 126 -145T163 -148H188Q194 -155 194 -157T191 -175Q188 -187 185 -190T172 -194Q170 -194 161 -194T127 -193T65 -192Q-5 -192 -24 -194H-32Q-39 -187 -39 -183Q-37 -156 -26 -148H-6Q28 -147 33 -136Q36 -130 94 103T155 350Q156 355 156 364Q156 405 131 405Q109 405 94 377T71 316T59 280Q57 278 43 278H29Q23 284 23 287ZM178 102Q200 26 252 26Q282 26 310 49T356 107Q374 141 392 215T411 325V331Q411 405 350 405Q339 405 328 402T306 393T286 380T269 365T254 350T243 336T235 326L232 322Q232 321 229 308T218 264T204 212Q178 106 178 102Z" data-c="70"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(6289, 0)"&gt;
        &lt;path d="M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z" data-c="53"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(6934, 0)"&gt;
        &lt;path d="M39 168Q39 225 58 272T107 350T174 402T244 433T307 442H310Q355 442 388 420T421 355Q421 265 310 237Q261 224 176 223Q139 223 138 221Q138 219 132 186T125 128Q125 81 146 54T209 26T302 45T394 111Q403 121 406 121Q410 121 419 112T429 98T420 82T390 55T344 24T281 -1T205 -11Q126 -11 83 42T39 168ZM373 353Q367 405 305 405Q272 405 244 391T199 357T170 316T154 280T149 261Q149 260 169 260Q282 260 327 284T373 353Z" data-c="65"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(7400, 0)"&gt;
        &lt;path d="M39 168Q39 225 58 272T107 350T174 402T244 433T307 442H310Q355 442 388 420T421 355Q421 265 310 237Q261 224 176 223Q139 223 138 221Q138 219 132 186T125 128Q125 81 146 54T209 26T302 45T394 111Q403 121 406 121Q410 121 419 112T429 98T420 82T390 55T344 24T281 -1T205 -11Q126 -11 83 42T39 168ZM373 353Q367 405 305 405Q272 405 244 391T199 357T170 316T154 280T149 261Q149 260 169 260Q282 260 327 284T373 353Z" data-c="65"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(7866, 0)"&gt;
        &lt;path d="M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z" data-c="6B"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(8387, 0)"&gt;
        &lt;path d="M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z" data-c="56"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mn" transform="translate(9156, 0)"&gt;
        &lt;path d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z" data-c="34"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(9656, 0)"&gt;
        &lt;path d="M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z" data-c="50"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(10407, 0)"&gt;
        &lt;path d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z" data-c="72"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(10858, 0)"&gt;
        &lt;path d="M201 -11Q126 -11 80 38T34 156Q34 221 64 279T146 380Q222 441 301 441Q333 441 341 440Q354 437 367 433T402 417T438 387T464 338T476 268Q476 161 390 75T201 -11ZM121 120Q121 70 147 48T206 26Q250 26 289 58T351 142Q360 163 374 216T388 308Q388 352 370 375Q346 405 306 405Q243 405 195 347Q158 303 140 230T121 120Z" data-c="6F"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mo" transform="translate(11620.8, 0)"&gt;
        &lt;text data-variant="normal" font-family="serif" font-size="814.2px" transform="matrix(1 0 0 -1 0 0)"&gt;
         &lt;tspan leaf=""&gt;
          只
         &lt;/tspan&gt;
        &lt;/text&gt;
        &lt;text data-variant="normal" font-family="serif" font-size="814.2px" transform="translate(814.3, 0) matrix(1 0 0 -1 0 0)"&gt;
         &lt;tspan leaf=""&gt;
          要
         &lt;/tspan&gt;
        &lt;/text&gt;
       &lt;/g&gt;
      &lt;/g&gt;
     &lt;/g&gt;
    &lt;/svg&gt;
   &lt;/span&gt;
  &lt;/span&gt;
  &lt;span&gt;
   2.3。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJ8l6LibxedFyeIW1icOiaib370h56qV90mPqPCdtkqCdTagJ1zURiaPBoGaGEtNDQiaibSFicP1icNx6aqzTyAxYErlnRh5N2N4GVpicQQA/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 性能表现
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   当然，成本不是唯一要考虑的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   DeepSeek V4 Pro在LiveCodeBench上的得分是93.5%，这个成绩已经相当接近Claude Opus的水平。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLlDMicPBFshMxibXDgxx2jialEVJA36GacHEY5XEcFzxR1Eu9HW3e7iaCWMujNqyHy0ZgFIhRBuPEEfUHaEkib0ghGficM4lregsicu4/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   80%的常规任务用它问题不大。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   剩下20%的复杂推理，还是建议切换回Anthropic的后端。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   也就是说，日常写代码、改bug这些事，DeepSeek完全够用。但遇到特别复杂的架构设计、算法优化，还是得靠Claude Opus。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    除了省钱，deepclaude还有一个很实用的功能。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    它支持在会话中实时切换后端。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你可以在Claude Code里直接输入
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    /deepseek
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   、
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    /anthropic
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   或
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    /openrouter
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   这样的斜杠命令。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不需要重启会话，就能在不同后端之间切换。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJvzjG1rYoiaZqXpMYaZGwkJltMcl8S7EPugF0ZENibBLS0qcGoXmLSAsztjYTSdG40zQPhHACF0v7Of0Tk9xo4dPd6UPeWuXx3Q/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    在 Claude Code CLI 中使用斜杠命令切换后端
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这个功能是通过一个本地代理服务器实现的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它运行在localhost:3200，拦截所有API调用，再根据当前配置转发到对应的后端。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   除了DeepSeek，deepclaude还支持OpenRouter和Fireworks AI。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   OpenRouter是个聚合平台，可以接入各种模型，价格和DeepSeek一样，都是
  &lt;/span&gt;
  &lt;span style="cursor:pointer;"&gt;
   &lt;span&gt;
    &lt;svg aria-hidden="true" aria-label="插图" focusable="false" role="img" style="vertical-align: -0.566ex;width: 13.749ex;height: 2.262ex;" viewbox="0 -750 6077.2 1000" xmlns="http://www.w3.org/2000/svg"&gt;
     &lt;g fill="currentColor" stroke="currentColor" stroke-width="0" transform="matrix(1 0 0 -1 0 0)"&gt;
      &lt;g data-mml-node="math"&gt;
       &lt;g data-mml-node="mn"&gt;
        &lt;path d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" data-c="30"&gt;
        &lt;/path&gt;
        &lt;path d="M78 60Q78 84 95 102T138 120Q162 120 180 104T199 61Q199 36 182 18T139 0T96 17T78 60Z" data-c="2E" transform="translate(500, 0)"&gt;
        &lt;/path&gt;
        &lt;path d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z" data-c="34" transform="translate(778, 0)"&gt;
        &lt;/path&gt;
        &lt;path d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z" data-c="34" transform="translate(1278, 0)"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mjx-texclass="ORD" data-mml-node="TeXAtom" transform="translate(1778, 0)"&gt;
        &lt;g data-mml-node="mo"&gt;
         &lt;path d="M423 750Q432 750 438 744T444 730Q444 725 271 248T92 -240Q85 -250 75 -250Q68 -250 62 -245T56 -231Q56 -221 230 257T407 740Q411 750 423 750Z" data-c="2F"&gt;
         &lt;/path&gt;
        &lt;/g&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mi" transform="translate(2278, 0)"&gt;
        &lt;path d="M289 629Q289 635 232 637Q208 637 201 638T194 648Q194 649 196 659Q197 662 198 666T199 671T201 676T203 679T207 681T212 683T220 683T232 684Q238 684 262 684T307 683Q386 683 398 683T414 678Q415 674 451 396L487 117L510 154Q534 190 574 254T662 394Q837 673 839 675Q840 676 842 678T846 681L852 683H948Q965 683 988 683T1017 684Q1051 684 1051 673Q1051 668 1048 656T1045 643Q1041 637 1008 637Q968 636 957 634T939 623Q936 618 867 340T797 59Q797 55 798 54T805 50T822 48T855 46H886Q892 37 892 35Q892 19 885 5Q880 0 869 0Q864 0 828 1T736 2Q675 2 644 2T609 1Q592 1 592 11Q592 13 594 25Q598 41 602 43T625 46Q652 46 685 49Q699 52 704 61Q706 65 742 207T813 490T848 631L654 322Q458 10 453 5Q451 4 449 3Q444 0 433 0Q418 0 415 7Q413 11 374 317L335 624L267 354Q200 88 200 79Q206 46 272 46H282Q288 41 289 37T286 19Q282 3 278 1Q274 0 267 0Q265 0 255 0T221 1T157 2Q127 2 95 1T58 0Q43 0 39 2T35 11Q35 13 38 25T43 40Q45 46 65 46Q135 46 154 86Q158 92 223 354T289 629Z" data-c="4D"&gt;
        &lt;/path&gt;
       &lt;/g&gt;
       &lt;g data-mml-node="mo" transform="translate(3606.8, 0)"&gt;
        &lt;text data-variant="normal" font-family="serif" font-size="814.2px" transform="matrix(1 0 0 -1 0 0)"&gt;
         &lt;tspan leaf=""&gt;
          输
         &lt;/tspan&gt;
        &lt;/text&gt;
        &lt;text data-variant="normal" font-family="serif" font-size="814.2px" transform="translate(814.3, 0) matrix(1 0 0 -1 0 0)"&gt;
         &lt;tspan leaf=""&gt;
          入
         &lt;/tspan&gt;
        &lt;/text&gt;
        &lt;text data-variant="normal" font-family="serif" font-size="814.2px" transform="translate(1656.2, 0) matrix(1 0 0 -1 0 0)"&gt;
         &lt;tspan leaf=""&gt;
          、
         &lt;/tspan&gt;
        &lt;/text&gt;
       &lt;/g&gt;
      &lt;/g&gt;
     &lt;/g&gt;
    &lt;/svg&gt;
   &lt;/span&gt;
  &lt;/span&gt;
  &lt;span&gt;
   0.87/M输出。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    当然，deepclaude也有一些限制。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   目前还不支持图像输入。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   原因是DeepSeek的Anthropic兼容端点不支持图像。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   所以如果你需要Claude Code处理截图、UI设计稿这类视觉任务，还是得切回Anthropic的后端。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   另外，MCP服务器工具也不支持。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Anthropic的提示缓存（cache_control）会被忽略。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不过DeepSeek有自己的自动上下文缓存机制，重复请求的成本会更低。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    除了基本的CLI使用，deepclaude还支持远程控制模式。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   加上
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    --remote
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   参数，它会输出一个
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    https://claude.ai/code/session_...
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   的URL。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你可以在手机、平板或任何浏览器里打开这个会话。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIO97lghCjzQSEPvBzEzA8jpsg6EQWQNocTwVbEzh4bpZTibvYjmn4btQTDwBtaPG4YZmoMnu0aXmoLMC5nys1wXUnick5DcWpIc/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   虽然远程控制需要Anthropic的bridge来建立WebSocket连接，但模型调用仍然走的是你配置的后端。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你用的是VS Code或Cursor，还可以把它配置成终端profile。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这样就能直接从IDE里启动deepclaude，不用每次都切到外部终端。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目还支持键盘快捷键绑定。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   比如
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    Ctrl+Alt+D
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   切换到DeepSeek，
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    Ctrl+Alt+A
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   切换回Anthropic。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKwwEoEwU8CSv7Xl75IxBMo8ZqFwyosZ3xviacLSe1PsXFkbhhB2clwvsY9XibLMfCKJ6tR9ZjvE11IALDGH7UfcwbECaibZpDUZg/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    在 VS Code 扩展中使用斜杠命令切换后端
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    如果你也想试一下，上手其实很简单。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    01 首先浏览器打开platform.deepseek.com，确保还有余额，拿到API密钥备用。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKN91HuJLIyV1Yubs7kz6TfRYpqHcl5QVExiaEfAUfld72lar6UtibBHpjcqicqofSic31roSOMPkYtl1q9dqkiaoIwjyLUa0icibROms/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 然后在终端里设置环境变量。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Windows用 PowerShell 设置环境变量。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;setx DEEPSEEK_API_KEY "API密钥"&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   macOS/Linux打开cmd执行下面的命令设置环境变量。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;export DEEPSEEK_API_KEY="API密钥"&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 安装之前用git代码下载到自己的电脑上。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;git clone https://github.com/aattaran/deepclaude.git&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    04 执行命令安装。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   用 Windows 的朋友打开 PowerShell 执行下面的命令安装 。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span style="color: #e6c07b;line-height: 26px;"&gt;&lt;span&gt;cd&lt;/span&gt;&lt;/span&gt;&lt;span&gt; deepclaude&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;Copy-Item deepclaude.ps1 &lt;/span&gt;&lt;span style="color: #98c379;line-height: 26px;"&gt;&lt;span&gt;"&lt;/span&gt;&lt;span style="color: #d19a66;line-height: 26px;"&gt;&lt;span&gt;$env&lt;/span&gt;&lt;/span&gt;&lt;span&gt;:USERPROFILE\.local\bin\deepclaude.ps1"&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   macOS/Linux 就打开 cmd 复制下面的命令安装。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;cd deepclaude&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;chmod +x deepclaude.sh&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;sudo ln -s "$(pwd)/deepclaude.sh" /usr/local/bin/deepclaude&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    05 最后直接运行
   &lt;/span&gt;
   &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
    &lt;span&gt;
     deepclaude
    &lt;/span&gt;
   &lt;/code&gt;
   &lt;span&gt;
    ，就会用DeepSeek V4 Pro启动Claude Code。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIDVribmNONae4YwfIIh3ASdP44FJhjEbYKwfRnep8pDbThIk4jWiaL0D8bfuhyDict2Pjz4RMpdatkPuoulaAdyia4fxNDdjBbK3U/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=9" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   整个过程不需要修改Claude Code的任何配置，退出后环境变量也会自动恢复。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   deepclaude做的事就是帮你省钱。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   让你在Claude Code里用更便宜的DeepSeek V4 Pro。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   DeepSeek和Anthropic Claude Opus还有一定差距，这个要承认。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   但80%的任务，用DeepSeek来处理已经足够了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   最后再提醒一下，图像输入、MCP支持这些目前都不行，大家根据自己的需求选择使用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目基于MIT协议开放，感兴趣的同学可以去GitHub仓库看看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/aattaran/deepclaude
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然看到这了，欢迎随手点赞、在看、转发，也可以给我个星标⭐，接收最新的文章，我们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1123" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/xWkXMgCnVFvrJ_vevPr7cg</link><pubDate>Mon, 11 May 2026 15:17:10 +0800</pubDate></item><item><id>3877547210-2247511991_1</id><title>10 年了 ，WSL 管理终于有人做了。</title><description>2016年8月，微软在 Windows 10 上推出 WSL。          记得刚用那会儿，觉得终于不用折腾虚拟机了。          在 Windows 里直接跑 Linux，性能接近原生，还能访问 Windows 文件，简直完美。             但长时间用下来，慢慢就发现问题了，WSL的管理基本上全是命令，对小白及其不友好。          之前我想把Ubuntu迁移到别的...</description><guid>https://mp.weixin.qq.com/s/JrZ8mc7g50UXljniAUDASg</guid><enclosure url="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblIRnbwz9s2oN2HehIrgQ2BkRO6mUPIfqTTA5j4jOyE6hwZFJHYtiaWYxlkhOAjKfk2LwBibK2tzI0kiaj3U5VWlkKNmzn5jRpWL1s/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1122" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   2016年8月，微软在 Windows 10 上推出 WSL。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   记得刚用那会儿，觉得终于不用折腾虚拟机了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   在 Windows 里直接跑 Linux，性能接近原生，还能访问 Windows 文件，简直完美。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss" style="text-align: center; visibility: visible;"&gt;
  &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblL60jf0DAc4Q8awQcaWIm0dSUklZmEWdeibyMdkNDpM8gVFy4c9yTBZSxgSoP9W9TDtCxeyIuraJ5WJaUkxW3ia93JMNAibVYw9iaQ/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="width: 551px !important; height: auto !important; visibility: visible !important;"/&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   但长时间用下来，慢慢就发现问题了，WSL的管理基本上全是命令，对小白及其不友好。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   之前我想把Ubuntu迁移到别的磁盘，翻了一大堆教程，打开 PowerShell 敲了一堆的命令
  &lt;/span&gt;
  &lt;code style='font-size: 14px; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: rgb(30, 107, 184); background-color: rgba(27, 31, 35, 0.05); font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace; word-break: break-all; visibility: visible;'&gt;
   &lt;span style="visibility: visible;"&gt;
    wsl --export
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span style="visibility: visible;"&gt;
   、
  &lt;/span&gt;
  &lt;code style='font-size: 14px; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: rgb(30, 107, 184); background-color: rgba(27, 31, 35, 0.05); font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace; word-break: break-all; visibility: visible;'&gt;
   &lt;span style="visibility: visible;"&gt;
    wsl --unregister
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span style="visibility: visible;"&gt;
   、
  &lt;/span&gt;
  &lt;code style='font-size: 14px; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: rgb(30, 107, 184); background-color: rgba(27, 31, 35, 0.05); font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace; word-break: break-all; visibility: visible;'&gt;
   &lt;span style="visibility: visible;"&gt;
    wsl --import
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span style="visibility: visible;"&gt;
   ...
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   就因为路径输错了一点，前前后后耗了半个多小时才弄好。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   那时候我就忍不住吐槽，微软怎么就不能做一个像VMware那样的可视化管理工具，简单直观一点，非要纯命令行折腾人。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   最近在 GitHub 上看到 WSL Dashboard，这个事终于有人做了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKEibzNgUQvlQMeO20N3O0D0MYEkTnugHib5X4Cf3q0Wib0q2VH89XiadH3nHnEicvyL1dsYLT06oePbw9swxia94vxD2TRoM7NB6Iu0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   WSL Dashboard 是一个用 Rust 写的 WSL 实例管理面板，目前在 GitHub 上有 1900+  Star。
  &lt;/span&gt;
 &lt;/p&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="width: 680px !important; height: 522px !important; overflow: hidden;"&gt;
  &lt;div id="page-content"&gt;
   &lt;!--S 全屏播放 full_screen_mv--&gt;
   &lt;div id="js_mpvedio_wrapper_wxv_4509539633696817153" style="position:relative;height:100%"&gt;
    &lt;div class="add_bg_color appmsg_video"&gt;
     &lt;div class="video_tail_module video_screen_half" id="js_video_tail_panel_wxv_4509539633696817153" style="display: none;"&gt;
      &lt;div class="video_tail_module__hd" id="js_video_tail_hd"&gt;
       &lt;div class="account_info_wrp"&gt;
        &lt;div class="profile_info_wrp js_go_profile"&gt;
         &lt;img/&gt;
         &lt;div class="account_name" id="js_tail_panel_account_name"&gt;
         &lt;/div&gt;
         &lt;div class="subscription_info subscription_success"&gt;
          &lt;div class="account_subscription_tips js_subscription_success" id="js_subscription_success" style="display: none;"&gt;
           已关注
          &lt;/div&gt;
          &lt;i class="account_link_icon js_profile_icon" id="js_profile_icon"&gt;
          &lt;/i&gt;
         &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class="btn_account_subscription js_btn_account_subscription" id="js_btn_account_subscription" style="display: none;"&gt;
         关注
        &lt;/div&gt;
       &lt;/div&gt;
       &lt;div class="opr_wrp"&gt;
        &lt;span&gt;
         &lt;i class="opr_item refresh_icon"&gt;
         &lt;/i&gt;
         &lt;span&gt;
          重播
         &lt;/span&gt;
        &lt;/span&gt;
        &lt;span style="display: none;"&gt;
         &lt;i class="opr_item share_icon"&gt;
         &lt;/i&gt;
         &lt;span&gt;
          分享
         &lt;/span&gt;
        &lt;/span&gt;
        &lt;!--点赞后 加className selected--&gt;
        &lt;span style="display: none;"&gt;
         &lt;i class="opr_item like_icon"&gt;
         &lt;/i&gt;
         &lt;span&gt;
          赞
         &lt;/span&gt;
        &lt;/span&gt;
        &lt;!-- &lt;span class="opr_item_wrp recommend_item_wrp" id="js_tail_channel_button"               style="display: none;"&gt;               &lt;i class="opr_item video-logo_icon"&gt;&lt;/i&gt;               &lt;span class="opr_item_text"&gt;随便看看&lt;/span&gt;             &lt;/span&gt; --&gt;
       &lt;/div&gt;
      &lt;/div&gt;
      &lt;!-- 有拓展内容 --&gt;
      &lt;div class="have_expand" id="js_expand_area"&gt;
      &lt;/div&gt;
      &lt;!-- 广告内容 --&gt;
      &lt;div class="ad_area" id="js_tail_video_ad_area"&gt;
      &lt;/div&gt;
     &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="feed-wrapper"&gt;
     &lt;div aria-hidden="true" aria-modal="true" class="wx_bottom_modal_wrp player_relate_video_dialog weui-half-screen-dialog_fold" hidewhensideslip="" role="dialog" style="visibility: hidden; display: none;" tabindex="0"&gt;
      &lt;div class="wx_bottom_modal_mask_fixed"&gt;
      &lt;/div&gt;
      &lt;div class="weui-mask wx_bottom_modal_mask" style="--opacity: 1; display: none;"&gt;
      &lt;/div&gt;
      &lt;div class="weui-half-screen-dialog wx_bottom_modal" style="max-height: none;"&gt;
       &lt;div class="wx_bottom_modal_group_container" style="transform: translateX(calc(0% + 0px)); max-height: none;"&gt;
        &lt;div aria-hidden="false" class="wx_bottom_modal_group" style="left: 0%; max-height: none;"&gt;
         &lt;div class="weui-half-screen-dialog__hd__wrp"&gt;
          &lt;div class="weui-half-screen-dialog__hd"&gt;
           &lt;div class="weui-half-screen-dialog__hd__side"&gt;
            &lt;button class="weui-btn_icon weui-wa-hotarea"&gt;
             关闭
             &lt;i class="weui-icon-half-screen-close"&gt;
             &lt;/i&gt;
            &lt;/button&gt;
           &lt;/div&gt;
           &lt;div class="weui-half-screen-dialog__hd__main"&gt;
            &lt;strong class="weui-half-screen-dialog__title"&gt;
             观看更多
            &lt;/strong&gt;
           &lt;/div&gt;
           &lt;div class="weui-half-screen-dialog__hd__side"&gt;
            &lt;!-- --&gt;
            &lt;button class="weui-btn_icon weui-wa-hotarea" style="display: none;"&gt;
             更多
             &lt;i class="weui-icon-more"&gt;
             &lt;/i&gt;
            &lt;/button&gt;
           &lt;/div&gt;
          &lt;/div&gt;
         &lt;/div&gt;
         &lt;div class="weui-half-screen-dialog__bd" id="contentAreaWrp"&gt;
          &lt;div class="weui-loadmore" style="display: none;"&gt;
           &lt;i class="weui-loading"&gt;
           &lt;/i&gt;
          &lt;/div&gt;
          &lt;div class="wx_bottom_modal_msg_wrp" style="display: none;"&gt;
           &lt;div class="wx_bottom_modal_msg"&gt;
            &lt;i class="weui-loading"&gt;
            &lt;/i&gt;
           &lt;/div&gt;
          &lt;/div&gt;
          &lt;div class="weui-loadmore weui-loadmore_line weui-loadmore_dot" style="display: none;"&gt;
           &lt;span&gt;
           &lt;/span&gt;
          &lt;/div&gt;
          &lt;div class=""&gt;
           &lt;ul class="player_relate_video_list" id="js_player_relate_video_list"&gt;
           &lt;/ul&gt;
           &lt;div class="weui-loadmore weui-loadmore_default weui-loadmore_line weui-loadmore_dot player_video_list_end_line"&gt;
            &lt;span&gt;
            &lt;/span&gt;
           &lt;/div&gt;
          &lt;/div&gt;
          &lt;div class="weui-loadmore" style="display: none;"&gt;
           &lt;i class="weui-loading"&gt;
           &lt;/i&gt;
          &lt;/div&gt;
         &lt;/div&gt;
         &lt;!-- --&gt;
        &lt;/div&gt;
       &lt;/div&gt;
      &lt;/div&gt;
     &lt;/div&gt;
     &lt;div class="js_video_fullscreen_profile video_full-screen__head video_full-screen__head_fixed" style="padding-top: 16px; transform: translate3d(0px, 0px, 0px); display: none;"&gt;
      &lt;div class="video_full-screen__head__inner"&gt;
       &lt;div class="video_full-screen__head__body"&gt;
        &lt;div class="js_video_fullscreen_profile_exit video_full-screen__head__item"&gt;
         &lt;div class="video_full-screen__article-title"&gt;
          &lt;button class="weui-wa-hotarea js_video_fullscreen_profile_exit reset_btn video_close_fullscreen_btn"&gt;
           &lt;i class="weui-icon-close"&gt;
            退出全屏
           &lt;/i&gt;
          &lt;/button&gt;
         &lt;/div&gt;
        &lt;/div&gt;
       &lt;/div&gt;
       &lt;div class="video_full-screen__head__ft"&gt;
        &lt;a aria-label="更多操作" class="video_menu_more js_video_fullscreen_menu_more weui-wa-hotarea_before" href="javascript:;" role="button"&gt;
         &lt;i class="weui-icon-outlined-more"&gt;
         &lt;/i&gt;
        &lt;/a&gt;
       &lt;/div&gt;
      &lt;/div&gt;
     &lt;/div&gt;
     &lt;div class="infinity-list__wrapper" style="height: 510px;"&gt;
      &lt;div class="" style="height: 510px; overflow: visible;"&gt;
       &lt;div class="infinity-list__page destory-enter-to" data-key="wxv_4509539633696817153" infinity-idx="0" style="height: 510px; position: absolute; top: 0px; opacity: 1;"&gt;
        &lt;div class="mp-video-player" data-v-f4ee5450="" style="height: 100%;"&gt;
         &lt;div class="js_mpvedio page_video_wrapper" data-v-c66e8e28="" data-v-f4ee5450="" id="js_mpvedio_1778483291136_78073074056"&gt;
          &lt;div class="js_page_video page_video ratio_primary align_upper_center video_skin_primary page_video_without-control page_video_skin-normal" data-v-c66e8e28="" style="display: block; width: 100%; height: 510px;"&gt;
           &lt;svg class="border_filler border_filler_lefttop" data-v-c66e8e28="" height="4px" viewbox="0 0 2 2" width="4px" xmlns="http://www.w3.org/2000/svg"&gt;
            &lt;path d="M1.85.005A2 2 0 000 2V0h2z" data-v-c66e8e28="" fill="#ffffff" fill-rule="evenodd"&gt;
            &lt;/path&gt;
           &lt;/svg&gt;
           &lt;svg class="border_filler border_filler_righttop" data-v-c66e8e28="" height="4px" viewbox="0 0 2 2" width="4px" xmlns="http://www.w3.org/2000/svg"&gt;
            &lt;path d="M1.85.005A2 2 0 000 2V0h2z" data-v-c66e8e28="" fill="#ffffff" fill-rule="evenodd"&gt;
            &lt;/path&gt;
           &lt;/svg&gt;
           &lt;svg class="border_filler border_filler_rightbot" data-v-c66e8e28="" height="4px" viewbox="0 0 2 2" width="4px" xmlns="http://www.w3.org/2000/svg"&gt;
            &lt;path d="M1.85.005A2 2 0 000 2V0h2z" data-v-c66e8e28="" fill="#ffffff" fill-rule="evenodd"&gt;
            &lt;/path&gt;
           &lt;/svg&gt;
           &lt;svg class="border_filler border_filler_leftbot" data-v-c66e8e28="" height="4px" viewbox="0 0 2 2" width="4px" xmlns="http://www.w3.org/2000/svg"&gt;
            &lt;path d="M1.85.005A2 2 0 000 2V0h2z" data-v-c66e8e28="" fill="#ffffff" fill-rule="evenodd"&gt;
            &lt;/path&gt;
           &lt;/svg&gt;
           &lt;div class="js_video_fullscreen_profile video_full-screen__head" data-v-c66e8e28="" style="display: none;"&gt;
            &lt;div class="video_full-screen__head__inner" data-v-c66e8e28=""&gt;
             &lt;div class="video_full-screen__head__body" data-v-c66e8e28=""&gt;
              &lt;div class="js_video_fullscreen_profile_exit video_full-screen__head__item" data-v-c66e8e28=""&gt;
               &lt;div class="video_full-screen__article-title" data-v-c66e8e28=""&gt;
                &lt;button class="weui-wa-hotarea js_video_fullscreen_profile_exit reset_btn video_close_fullscreen_btn" data-v-c66e8e28="" style="display: none;"&gt;
                 &lt;i class="weui-icon-back-arrow" data-v-c66e8e28=""&gt;
                  切换到竖屏全屏
                 &lt;/i&gt;
                &lt;/button&gt;
                &lt;button class="weui-wa-hotarea js_video_fullscreen_profile_exit reset_btn video_close_fullscreen_btn" data-v-c66e8e28="" style="display: none;"&gt;
                 &lt;i class="weui-icon-close" data-v-c66e8e28=""&gt;
                  退出全屏
                 &lt;/i&gt;
                &lt;/button&gt;
                &lt;div class="video_full-screen__account" data-v-c66e8e28="" role="button" style="display: none;"&gt;
                 &lt;div class="video_full-screen__account-info" data-v-c66e8e28=""&gt;
                  &lt;span style='background: url("http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png") center center / cover no-repeat;'&gt;
                  &lt;/span&gt;
                  &lt;span&gt;
                   开源日记
                  &lt;/span&gt;
                  &lt;button class="reset_btn video_profile_follow_btn weui-wa-hotarea" data-v-c66e8e28="" style="display: none;" type="button"&gt;
                   已关注
                  &lt;/button&gt;
                 &lt;/div&gt;
                &lt;/div&gt;
               &lt;/div&gt;
              &lt;/div&gt;
             &lt;/div&gt;
             &lt;div class="video_full-screen__head__ft" data-v-c66e8e28=""&gt;
              &lt;a aria-label="更多操作" class="video_menu_more js_video_fullscreen_menu_more weui-wa-hotarea_before" data-v-c66e8e28="" href="javascript:;" role="button" style="display: none;"&gt;
               &lt;i class="weui-icon-outlined-more" data-v-c66e8e28=""&gt;
               &lt;/i&gt;
              &lt;/a&gt;
             &lt;/div&gt;
            &lt;/div&gt;
           &lt;/div&gt;
           &lt;div class="js_share_btn_contain top_screen_opr video_share_opr" data-v-c66e8e28="" style="display: none;"&gt;
            &lt;div class="wx_video_share_area" data-v-c66e8e28=""&gt;
             &lt;button class="js_share_btn wx_video_share_btn weui-wa-hotarea" data-v-c66e8e28="" type="button"&gt;
              分享视频
             &lt;/button&gt;
            &lt;/div&gt;
           &lt;/div&gt;
           &lt;div aria-label="加载中" class="wrp_loading js_loading" data-v-c66e8e28="" role="alert" style="display: none;"&gt;
            &lt;span&gt;
             &lt;span&gt;
             &lt;/span&gt;
            &lt;/span&gt;
           &lt;/div&gt;
           &lt;div class="poster_cover" data-v-c66e8e28="" style='background-image: url("http://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblIuibj5OEDPECkL0ddd0kyL9aiaEMsfOuzObhdn9NyXpicl1DjuUJgPfuobYNZJesR867R9tiay5adQGOU7eE4lhpDwkpl0OrrD8Yk/640?wx_fmt=jpeg&amp;amp;wxfrom=16"); background-size: cover; z-index: 10;'&gt;
           &lt;/div&gt;
           &lt;div class="full_screen_opr wx_video_play_opr" data-v-c66e8e28="" style=""&gt;
            &lt;button class="mid_play_box reset_btn" data-v-c66e8e28="" type="button"&gt;
             &lt;i aria-label="播放视频" class="pic_mid_play" data-v-c66e8e28=""&gt;
             &lt;/i&gt;
             &lt;span&gt;
              ，时长
             &lt;/span&gt;
             &lt;span&gt;
              03:05
             &lt;/span&gt;
            &lt;/button&gt;
           &lt;/div&gt;
           &lt;!-- --&gt;
           &lt;div class="top_screen_opr wx_video_flow_wrap" data-v-c66e8e28="" role="alert" style="display: none;"&gt;
            &lt;div class="wx_video_flow" data-v-c66e8e28=""&gt;
             &lt;p&gt;
             &lt;/p&gt;
            &lt;/div&gt;
           &lt;/div&gt;
           &lt;div class="mid_opr fast_pre_next" data-v-c66e8e28="" style="display: none;"&gt;
            &lt;div class="video_processor_bar" data-v-c66e8e28=""&gt;
             &lt;div class="processor_bar_inner js_forward_bar" data-v-c66e8e28="" style="width: 0%;"&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;p&gt;
             &lt;span&gt;
              0
             &lt;/span&gt;
             &lt;span&gt;
              /
             &lt;/span&gt;
             &lt;span&gt;
              0
             &lt;/span&gt;
            &lt;/p&gt;
           &lt;/div&gt;
           &lt;div class="wx_video_progress_msg full_screen_opr" data-v-c66e8e28="" role="alert" style="display: none;"&gt;
            &lt;div class="wx_video_progress_msg_inner" data-v-c66e8e28=""&gt;
             &lt;span&gt;
              00:00
             &lt;/span&gt;
             &lt;span&gt;
              /
             &lt;/span&gt;
             &lt;span&gt;
              03:05
             &lt;/span&gt;
            &lt;/div&gt;
           &lt;/div&gt;
           &lt;div class="video_fullscreen_mask" data-v-c66e8e28="" style="display: none;"&gt;
           &lt;/div&gt;
           &lt;div class="video_screen_mode_switch" data-v-c66e8e28="" style="bottom: calc(50% - 306px); display: none;"&gt;
            &lt;button class="reset_btn video_screen_mode_switch_btn weui-wa-hotarea" data-v-c66e8e28="" type="button"&gt;
             切换到横屏模式
            &lt;/button&gt;
           &lt;/div&gt;
           &lt;div class="full_screen_opr wx_video_pause_full_mod" data-v-c66e8e28="" style="display: none;"&gt;
            &lt;button class="reset_btn wx_video_pause_full_btn" data-v-c66e8e28="" type="button"&gt;
             继续播放
            &lt;/button&gt;
           &lt;/div&gt;
           &lt;input aria-hidden="true" class="aria_hidden_abs" data-v-c66e8e28="" title="显示工具栏" type="checkbox"/&gt;
           &lt;div class="js_control video_opr video_opr_normal padding_play_bar" data-v-c66e8e28=""&gt;
            &lt;div class="opr_inner" data-v-c66e8e28=""&gt;
             &lt;div class="opr_inner_fl" data-v-c66e8e28=""&gt;
              &lt;div class="js_play_bar_wrapper wrp_play_bar wrp_play_bar_hide_speed-dot" data-v-c66e8e28="" style="display: none;"&gt;
               &lt;div class="js_progress_bar wrp_progress" data-v-c66e8e28="" style="padding-top: 6px; padding-bottom: 0px;"&gt;
                &lt;div class="progress_bar" data-v-c66e8e28=""&gt;
                 &lt;div class="background_bar" data-v-c66e8e28=""&gt;
                 &lt;/div&gt;
                 &lt;div aria-labelledby="ariaPlayedCurrent" class="js_played_bar played_bar" data-v-c66e8e28="" role="option" style="width: 0%;" title="按住可调"&gt;
                  &lt;span&gt;
                   进度条，百分之0
                  &lt;/span&gt;
                 &lt;/div&gt;
                 &lt;div class="js_buffer_bar buffer_bar" data-v-c66e8e28="" style="width: 0%;"&gt;
                 &lt;/div&gt;
                 &lt;!-- --&gt;
                 &lt;div class="weui-wa-hotarea js_played_speed_cnt wrp_speed_dot" data-v-c66e8e28="" style="left: 0%;"&gt;
                  &lt;i class="speed_dot" data-v-c66e8e28=""&gt;
                  &lt;/i&gt;
                 &lt;/div&gt;
                &lt;/div&gt;
               &lt;/div&gt;
              &lt;/div&gt;
             &lt;/div&gt;
            &lt;/div&gt;
           &lt;/div&gt;
           &lt;div class="js_control video_opr video_opr_sns" data-v-c66e8e28="" style="bottom: 0px; display: none;"&gt;
            &lt;div class="opr_inner" data-v-c66e8e28=""&gt;
             &lt;div class="opr_inner_fl" data-v-c66e8e28=""&gt;
              &lt;div class="js_switch weui-wa-hotarea switch switch_on" data-v-c66e8e28=""&gt;
               &lt;a class="btn_opr" data-v-c66e8e28="" href="javascript:;" role="button"&gt;
                播放
               &lt;/a&gt;
              &lt;/div&gt;
              &lt;div data-v-c66e8e28="" role="option"&gt;
               &lt;div class="played_time js_now_play_time" data-v-c66e8e28=""&gt;
                00:00
               &lt;/div&gt;
               &lt;span&gt;
                /
               &lt;/span&gt;
               &lt;div class="total_time js_total_time" data-v-c66e8e28=""&gt;
                03:05
               &lt;/div&gt;
              &lt;/div&gt;
              &lt;!-- --&gt;
              &lt;div class="total_time js_total_time" data-v-c66e8e28="" role="option" style="display: none;"&gt;
               03:05
              &lt;/div&gt;
             &lt;/div&gt;
             &lt;div class="opr_inner_fr" data-v-c66e8e28=""&gt;
              &lt;!-- --&gt;
              &lt;!-- --&gt;
              &lt;!-- --&gt;
              &lt;div class="weui-wa-hotarea js_full_screen_control screenSize_control full" data-v-c66e8e28="" role="button"&gt;
               &lt;i class="icon_control" data-v-c66e8e28=""&gt;
                全屏
               &lt;/i&gt;
              &lt;/div&gt;
             &lt;/div&gt;
            &lt;/div&gt;
           &lt;/div&gt;
           &lt;div class="js-toast weui-toast weui-toast_text" data-v-c66e8e28="" role="alert" style="display: none;"&gt;
            &lt;p&gt;
            &lt;/p&gt;
           &lt;/div&gt;
           &lt;div class="full_screen_opr video_quick_play_context" data-v-c66e8e28="" role="alert" style="display: none;"&gt;
            &lt;div class="video_quick_play_msg" data-v-c66e8e28=""&gt;
             &lt;i class="icon_video_quick_play" data-v-c66e8e28=""&gt;
             &lt;/i&gt;
             倍速播放中
            &lt;/div&gt;
           &lt;/div&gt;
           &lt;div class="js_sub_setting video_full-screen__footer video_full-screen__footer__sub-setting hide" data-v-c66e8e28=""&gt;
            &lt;div class="video_full-screen__sub-setting video_full-screen__sub-setting__speed js_playback_mode_select" data-v-c66e8e28="" style="display: none;"&gt;
             &lt;a class="video_full-screen__sub-setting__item js_playback_0" data-v-c66e8e28="" href="javascript:;"&gt;
              0.5倍
             &lt;/a&gt;
             &lt;a class="video_full-screen__sub-setting__item js_playback_1" data-v-c66e8e28="" href="javascript:;"&gt;
              0.75倍
             &lt;/a&gt;
             &lt;a class="video_full-screen__sub-setting__item current js_playback_2" data-v-c66e8e28="" href="javascript:;"&gt;
              1.0倍
             &lt;/a&gt;
             &lt;a class="video_full-screen__sub-setting__item js_playback_3" data-v-c66e8e28="" href="javascript:;"&gt;
              1.5倍
             &lt;/a&gt;
             &lt;a class="video_full-screen__sub-setting__item js_playback_4" data-v-c66e8e28="" href="javascript:;"&gt;
              2.0倍
             &lt;/a&gt;
            &lt;/div&gt;
            &lt;div class="video_full-screen__sub-setting video_full-screen__sub-setting__ratio js_play_mode_select" data-v-c66e8e28="" style="display: none;"&gt;
             &lt;a class="video_full-screen__sub-setting__item current js_resolution_0" data-v-c66e8e28="" href="javascript:;"&gt;
              超清
             &lt;/a&gt;
             &lt;a class="video_full-screen__sub-setting__item js_resolution_1" data-v-c66e8e28="" href="javascript:;"&gt;
              流畅
             &lt;/a&gt;
            &lt;/div&gt;
           &lt;/div&gt;
           &lt;div class="js_inner inner not_fullscreen" data-v-c66e8e28=""&gt;
            &lt;div class="js_video_poster video_poster" data-v-c66e8e28=""&gt;
             &lt;div class="video_mask" data-v-c66e8e28=""&gt;
             &lt;/div&gt;
             &lt;video class="video_fill" controlslist="nodownload" crossorigin="anonymous" data-v-c66e8e28="" playsinline="isiPhoneShowPlaysinline" poster="http://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblIuibj5OEDPECkL0ddd0kyL9aiaEMsfOuzObhdn9NyXpicl1DjuUJgPfuobYNZJesR867R9tiay5adQGOU7eE4lhpDwkpl0OrrD8Yk/0?wx_fmt=jpeg&amp;amp;wxfrom=16" preload="metadata" src="https://mpvideo.qpic.cn/0b2enyab6aaaxuaozjx7ezuva3wdd5xaahya.f10102.mp4?dis_k=2002e4a0e95fa6a52e95223a1b518175&amp;amp;dis_t=1778483154&amp;amp;play_scene=10120&amp;amp;auth_info=V6ngl64oQCp7idmM335nUT1SNxlEOgdwPD8ATWE3VjNnNFBpNRl6IS4seh8LHCRoMkZh&amp;amp;auth_key=09808ff90da40d535dd3d2cac654a782&amp;amp;vid=wxv_4509539633696817153&amp;amp;format_id=10102&amp;amp;support_redirect=0&amp;amp;mmversion=false" style="display: block; width: 680px; height: 510px;" webkit-playsinline="isiPhoneShowPlaysinline"&gt;
              您的浏览器不支持 video 标签
             &lt;/video&gt;
            &lt;/div&gt;
            &lt;div class="video_poster__info__play" data-v-c66e8e28="" data-v-f4ee5450="" style="display: none;"&gt;
             &lt;i class="" data-v-c66e8e28="" data-v-f4ee5450=""&gt;
             &lt;/i&gt;
            &lt;/div&gt;
            &lt;div class="video_poster__info" data-v-c66e8e28="" data-v-f4ee5450="" style="display: none;"&gt;
             &lt;p style="font-size: 17px;"&gt;
              继续观看
             &lt;/p&gt;
             &lt;p style="font-size: 12px;"&gt;
              10 年了 ，WSL 管理终于有人做了。
             &lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="video_poster__info__mask" data-v-c66e8e28="" data-v-f4ee5450="" style="width: 100%; display: none;"&gt;
            &lt;/div&gt;
           &lt;/div&gt;
           &lt;div class="video_profile_area" data-v-c66e8e28="" style="display: none;"&gt;
            &lt;div data-v-c66e8e28=""&gt;
             &lt;button class="reset_btn video_profile_relate_video_btn js_wx_tap_highlight wx_tap_link" data-v-c66e8e28="" data-v-f4ee5450="" style="display: none;"&gt;
              观看更多
              &lt;i class="weui-icon-filled-arrow video_profile_relate_video_btn_arrow"&gt;
              &lt;/i&gt;
             &lt;/button&gt;
            &lt;/div&gt;
            &lt;div data-v-c66e8e28="" role="link" style="width: fit-content; max-width: 100%;" tabindex="0"&gt;
             &lt;div class="weui-wa-hotarea video_profile_desc_wrp" data-v-c66e8e28="" role="option"&gt;
              &lt;div class="icon_appmsg_tag_wrp" data-v-c66e8e28="" style="display: none;"&gt;
               &lt;div class="icon_appmsg_tag" data-v-c66e8e28=""&gt;
                转载
               &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="weui-hidden_abs" data-v-c66e8e28=""&gt;
               ,
              &lt;/div&gt;
              &lt;div class="video_profile_desc" data-v-c66e8e28=""&gt;
               10 年了 ，WSL 管理终于有人做了。
              &lt;/div&gt;
              &lt;i class="weui-icon-outlined-arrow video_profile_desc_arrow" data-v-c66e8e28=""&gt;
              &lt;/i&gt;
             &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="video_profile_wrp weui-flex" data-v-c66e8e28=""&gt;
             &lt;div class="video_profile weui-flex weui-flex__item" data-v-c66e8e28=""&gt;
              &lt;span style='background: url("http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/0?wx_fmt=png") center center / cover no-repeat;'&gt;
              &lt;/span&gt;
              &lt;span&gt;
               开源日记
              &lt;/span&gt;
              &lt;button class="reset_btn video_profile_follow_btn weui-wa-hotarea" data-v-c66e8e28="" style="display: none;" type="button"&gt;
               已关注
              &lt;/button&gt;
             &lt;/div&gt;
             &lt;div class="video_sns_context" data-v-c66e8e28="" style="display: none;"&gt;
              &lt;button class="video_sns_btn video_sns_btn_share" data-v-c66e8e28="" style="display: none;" type="button"&gt;
               &lt;span&gt;
                分享
               &lt;/span&gt;
              &lt;/button&gt;
              &lt;button class="video_sns_btn video_sns_btn_praise" data-v-c66e8e28="" title="" type="button"&gt;
               &lt;span&gt;
                点赞
               &lt;/span&gt;
              &lt;/button&gt;
              &lt;button class="video_sns_btn video_sns_btn_love" data-v-c66e8e28="" title="" type="button"&gt;
               &lt;span&gt;
                在看
               &lt;/span&gt;
              &lt;/button&gt;
             &lt;/div&gt;
             &lt;div class="like_comment_wrp" data-v-c66e8e28="" role="alert" style="display: none;"&gt;
              &lt;div class="like_comment_inner" data-v-c66e8e28=""&gt;
               &lt;div class="like_comment_bd" data-v-c66e8e28=""&gt;
                &lt;div class="like_comment_tips" data-v-c66e8e28=""&gt;
                 &lt;i class="weui-icon-success" data-v-c66e8e28=""&gt;
                 &lt;/i&gt;
                 &lt;i class="icon-success-primary" data-v-c66e8e28=""&gt;
                 &lt;/i&gt;
                 已同步到看一看
                 &lt;a class="like_comment_share_link weui-wa-hotarea_before" data-v-c66e8e28="" href="javascript:;"&gt;
                  写下你的评论
                 &lt;/a&gt;
                &lt;/div&gt;
               &lt;/div&gt;
              &lt;/div&gt;
             &lt;/div&gt;
            &lt;/div&gt;
           &lt;/div&gt;
          &lt;/div&gt;
         &lt;/div&gt;
         &lt;div data-v-f4ee5450="" style="display: none;"&gt;
          &lt;div class="weui-mask_transparent" data-v-f4ee5450=""&gt;
          &lt;/div&gt;
          &lt;div class="weui-toast" data-v-f4ee5450="" style="top: 45%; position: absolute;"&gt;
           &lt;i class="weui-icon-success-no-circle weui-icon_toast" data-v-f4ee5450=""&gt;
           &lt;/i&gt;
           &lt;p&gt;
           &lt;/p&gt;
          &lt;/div&gt;
         &lt;/div&gt;
         &lt;div class="fullscreen-screenshot__layer" data-v-f4ee5450="" style="background-color: rgb(0, 0, 0); display: none;"&gt;
         &lt;/div&gt;
         &lt;div class="fullscreen-screenshot__layer" data-v-f4ee5450="" style='z-index: -1; background-image: url(""); display: none;'&gt;
         &lt;/div&gt;
        &lt;/div&gt;
       &lt;/div&gt;
      &lt;/div&gt;
     &lt;/div&gt;
     &lt;!-- --&gt;
    &lt;/div&gt;
   &lt;/div&gt;
   &lt;!--E 视频播放器--&gt;
   &lt;!-- S 视频社交--&gt;
   &lt;div class="interact_video" id="bottom_bar" style="display:none;height: 35px;"&gt;
    &lt;div class="inter_opr"&gt;
     &lt;a class="access_original" href="javascript:;" id="video_detail_btn" target="_blank"&gt;
      视频详情
     &lt;/a&gt;
    &lt;/div&gt;
   &lt;/div&gt;
  &lt;/div&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; margin-bottom: 0px;"&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    它其实就是把 WSL 里那些最常用、最容易敲错的操作，变成了一键能搞定的按钮。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   底层是用 Rust、Slint、Skia、Tokio 这几套技术搭起来的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   安全和性能都有了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLPXghKhjn4Xcbov3NBz9hKUHPuKo04zCT3XCSmjXMicVeJ6LnD4SVxuGgw052QYwKcFI8Yc0MjrCT2MWicfjhpvdd9lO4Wia6RZY/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    WSL Dashboard 深色模式
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    它把每个 WSL 实例的关键操作都给你。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    01 发行版状态管理。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   以前你想看WSL状态，想启动或关掉一个，多数人都是上网查命令，复制执行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKe8Bh9gM5tqqGx5wWoyYesfzuf5CnGBicSm5s1IlhX17tDrNGVRk0ibQiaZaGc4oKGmFlhNmq5VqTQUDnXM4jTFq2Rwo9AvCxW2Y/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   现在不用了，一个界面里面，按钮一点就行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 VHDX 迁移。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   以前要搞多条命令来完成一个事，现在它从头到尾把整合流程都打通，一步到位。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   就拿迁移 VHDX 文件这事。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这放在以前。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   一般是先上网查文档，找到正确的命令格式，确认源路径和目标路径，执行命令，然后祈祷不要出错。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   今天你用 WSL Dashboard ，选中点迁移，选目标磁盘点确认，就结束了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   整个过程不需要记命令，自动识别路径，不用担心敲错参数。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKLCQhXVw5kCByWPtUbChQ4RRy64icibcDFZwT7AfJLpU9ywmgNWkMXdCC2wOnekBT2m8aic2acSIofcgibt4WZEUH0uQic8GtMQP5Y/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    添加实例界面
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 系统托盘集成。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它能一直在windows右下角的系统托盘挂着 ，内存占用也就10MB左右。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   双击托盘图标就能秒切窗口，右键菜单有各种常用功能。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIjx2Rwcs62uJERraxibYGO3Bt5ySolHr1hGu13iazpAbPERawmYHlhEJziavWWtG7hvTqVce7YJyEeGTdDMJBNFdlmia00DWn0gKY/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    系统托盘集成
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    04 USB 设备管理。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   平时需要在WSL管理USB设备的朋友，这个功能用起来方便好多。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它把usbipd-win整合进去，不用敲命令，在界面上就能一键绑定、挂载、管理USB设备。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLwYZKJDI3fYBDllLnzwhVR9J6xxK5wQ5m3qm0Gf8t8EiaicJibzQFrv6Sc3icmz02ILH8j9eyd1v3iaSx2fPaoEX6YVAKzVLPicibfbI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    USB 设备管理界面
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    05 网络功能配置。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这个功能做开发的朋友会经常用到。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   像端口转发管理、自动创建防火墙规则、全局 HTTP 代理配置，这些以前需要手动配置的东西，现在都能在界面里直接操作。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJcWMWicrFfItQoOHpU60PCLcHcIpLqqC6TqMj1XN88wic7E7UWOlELCiaGf8hmHar6LpAgzjwPWDwzdt9Zwb90QiamKvh8V631aWY/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    网络配置界面
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    除了核心管理功能，WSL Dashboard 还有一些好的细节。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    它支持 26 种语言，包括中文。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblL1xvSmSFrf5zFWia4icouticlkxKjJicibwibOS2oxYlibazyrp2l8vibWR8FLu6dGicOfvH2ypQVWAv2ic9wFUYs4m7htrXRNfw6mvKDI4/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   对国内开发者也比较友好。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    快速集成工具。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   一键启动 Windows Terminal、VS Code 或文件资源管理器，还能自定义工作目录和启动脚本钩子。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   对于习惯在 VS Code 里开发的用户来说，这个功能能提升效率。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    Rust 带来的性能优势。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这些功能组合在一起，再加上 Rust 带来的性能优势，体验更顺滑。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   启动速度接近即时，界面响应流畅。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    看完这些功能，相信各位已经迫不及待了。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   最低门槛的打开方式是：去 GitHub Releases 页面下载最新的 wsldashboard.exe，直接运行就行，不需要安装。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblK6UTRWoWUF0cyWHW6m4SGqb0jOpd8dYYGia6spiaeET7H2BnJBnVcLWWP2GszRVhjzq6xuzoKIyNV0yTEo1dXIMuET0OjO8vBbs/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=9" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你已经有 WSL 发行版，打开就能看到所有实例的状态。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJZD4RdFMmofmoACbL1lCzSeYqribfdPOz8AVrQnYEhMfCCdSJ6Ahl6ClGqWI4VwLCLOHLibIFf4ujiaqVuTd7FJ0VGrIMjl9MxFQ/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=10" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    WSL Dashboard 主界面
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    到这里不足也给大家提提。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   目前只支持 Windows 10/11，需要 WSL 2。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   有人希望增加安装程序，现在下载新版本都是独立的文件，没法固定到开始菜单。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   作者在 GitHub WSL 官方讨论区介绍项目时说：我开发 WSL Dashboard 的目标不是用 GUI 包装每个命令，而是把最常见、最容易出错的操作变成一键动作。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你也在用 WSL，而且经常需要管理多个发行版、做迁移备份、或者配置网络和 USB 设备，这个工具值得试一下。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   能省掉不少查文档和试错的时间。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我也经常用 WSL，发现 WSL Dashboard 确实能省很多事。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   以前查发行版状态、迁移磁盘、克隆备份，得打开黑框框敲命令，现在用一个界面都能搞定了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   而且它不需要安装，下载就能用，支持中文界面。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   经常需要管理多个 WSL 发行版的朋友，推荐试试。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目基于 GPL-3.0 协议开放，感兴趣的同学可以去 GitHub 仓库看看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/owu/wsl-dashboard
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然看到这了，欢迎随手点赞、在看、转发，也可以给我个星标⭐，接收最新的文章，我们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   &lt;br/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1122" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;section powered-by="werss"&gt;
  &lt;span&gt;
   &lt;br/&gt;
  &lt;/span&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/JrZ8mc7g50UXljniAUDASg</link><pubDate>Sun, 10 May 2026 15:17:27 +0800</pubDate></item><item><id>3877547210-2247511961_1</id><title>一个 Claude Design 平替火了 ，3万多人关注  。</title><description>Claude Design 发布当天，Figma 股价跌了 7% 。          作为一个闭源的 AI 设计工具，杀伤力太大了。          很多人都在惊叹Claude Design的强大能力。          11天后，一个类似的神器在 GitHub 开源 。          它叫 Open Design 。目前已经有 34000+  Star。                 ...</description><guid>https://mp.weixin.qq.com/s/w_xqg71mbA_drn1UiUENNw</guid><enclosure url="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblIKcfYjmPHXIoFAsYPr7uIc7lkRj8A8f6ZKmOoC8FM7mhQC3VOWvyKNqc1X17aj3LH9kXTZu4A4BKU5osIicrOu4GUOZOCUGa8M/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1122" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   Claude Design 发布当天，Figma 股价跌了 7% 。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   作为一个闭源的 AI 设计工具，杀伤力太大了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   很多人都在惊叹Claude Design的强大能力。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   11天后，一个类似的神器在 GitHub 开源 。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它叫 Open Design 。目前已经有 34000+  Star。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIfGuJbbmd0UpSVPef4LDpuQrqebuEhiaaNTOnicH9xrJibuaeolZv6GwB73nIyONQv2yQmZtCfU8aLP4CXNaPE9wDnBNjWnAPToU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    这是一个开源的 AI 设计工具，输入一句话，它能生成网页原型、PPT、落地页、移动端界面。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   值得说的是它不会被绑死在任何一个模型上，今天用 Claude，明天换 Gemini，后天切到本地模型看你喜欢。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   支持 16 种 Coding Agent CLI，像 Claude、Gemini、OpenAI、Local ...。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLtfjo17H7aSg7OSRnzABho2vpMBtrZkcYVnTmcyAgMficfYBficBfsCnJVQYHicOiabrvaIgJicIdHoXDMFz9p1H4WbfhevrnGPmhk/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px; text-align: center; color: rgb(136, 136, 136); display: block; font-size: 12px; font-family: PingFangSC-Light; visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    Open Design Banner
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px; visibility: visible;"&gt;
  &lt;span style="font-family: STHeitiSC-Light; font-size: 22px; color: rgb(14, 136, 235); font-weight: bolder; display: inline-block; padding-left: 10px; border-left-width: 5px; border-left-style: solid; border-left-color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    内置了 31 个技能和 129 套设计系统。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    01 技能系统。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   每个技能对应一种设计场景。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   你要做 SaaS 落地页，有 saas-landing 技能；要做社交媒体轮播图，有 social-carousel 技能；要做移动端引导流程，有 mobile-onboarding 技能。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   每个技能都是一个文件夹，里面有模板、样式、检查清单。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   你想新增一个技能，只要按照它的 SKILL.md 规范写好，放到 skills 目录下，重启服务就能用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    02 设计系统库。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblLuUOBma9Ew1HtfFAszvuZMn1TMyeKHN6hKfHLr1LjPicCngGbQ5yd5r5vnfzQoQfW7ia49MQlxebUrEstl0PZg8G8LQ4CLwlZmU/640?wx_fmt=jpeg&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    设计系统库
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它内置了一些很有名的产品设计规范。想Linear、Stripe、Vercel、Airbnb、Tesla、Notion、Apple、Anthropic。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   每套系统用Markdown定义了颜色、字体、间距、布局、组件、动效、品牌语调这些内容。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   切换设计系统之后，会保存当前的样式，下次直接用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    Web, 移动端, 营销都能做出来。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    Web 端的效果。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;em style="font-style: italic;color: #0e88eb;letter-spacing: 0.3em;"&gt;
   &lt;span&gt;
    01 杂志质感网页PPT，经典杂志版面排布，配上WebGL超大首屏视觉，整体观感高级又震撼。
   &lt;/span&gt;
  &lt;/em&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblLzBbKL2eJ0YvdZPqkMdiauKkzlibSOMd3YmYLAIpBRFJiae3WM9lMsMHGicvkpQq7cNLrLArlbH5cqvLuD3p55RPTkjTHhW7DW6pg/640?wx_fmt=jpeg&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    杂志风格 Deck
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;em style="font-style: italic;color: #0e88eb;letter-spacing: 0.3em;"&gt;
   &lt;span&gt;
    02 约会匹配专属仪表盘，左侧导航搭配核心 KPI 与多维图表。
   &lt;/span&gt;
  &lt;/em&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblKfMvLaUeO3icYwtuFkOd7JmpTgiaZCVkM9glDN1QDU6pHMfNk3Iy0llub7c835mJiaTcOkSwyR98yNEPIZRIrp8YgOBPCM2ycVv4/640?wx_fmt=jpeg&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    dating-web
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;em style="font-style: italic;color: #0e88eb;letter-spacing: 0.3em;"&gt;
   &lt;span&gt;
    03 双页数字电子指南，封面加课程页 。
   &lt;/span&gt;
  &lt;/em&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblKicnNCBNEErhUoFgOZMiaxSibjKVAvibQcWuRzFrZianK0ibFDAL8LvKJ20vXfmyqicI56vBel6ywyxBIeV3bHic7M9n06RVHyBZDQzibg/640?wx_fmt=jpeg&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    digital-eguide
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    移动端的效果也很精致。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;em style="font-style: italic;color: #0e88eb;letter-spacing: 0.3em;"&gt;
   &lt;span&gt;
    04 iPhone 15 Pro 精准机框复刻，多端原型连贯衔接，一气呵成。
   &lt;/span&gt;
  &lt;/em&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblLxrFiaSw7UDU4Dvng22dO9NyDu2mIIEIOlmvBnGndHe4B3mVcRx9NiagL9tWSDicvLfqbRHsEGjDHSOK5AV1ibZM8vHyCZAq5HCMg/640?wx_fmt=jpeg&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    移动端原型
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;em style="font-style: italic;color: #0e88eb;letter-spacing: 0.3em;"&gt;
   &lt;span&gt;
    05 三帧移动端引导流程，splash、value-prop、sign-in 做的都很精致。
   &lt;/span&gt;
  &lt;/em&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblIiauwNThp8H4zjMcsE6TM8OibxHBo84rcUaKIDebERicia1S4icKWFicpqvsibQYmyqcMeJMh7B1qoY7fMsn3ViatMAYMScmukvJX0GTI/640?wx_fmt=jpeg&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    mobile-onboarding
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;em style="font-style: italic;color: #0e88eb;letter-spacing: 0.3em;"&gt;
   &lt;span&gt;
    06 三帧就能做游戏化 APP 原型，主打一个快。
   &lt;/span&gt;
  &lt;/em&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblJkdtrndQNticPyTXx7msmwIompupLdnDCG3pJXyAc9OfuelA6HX5V28Hjz121Tsg0iccibO4XDGjr2LQ84fBQyFgIdaRFsJjLjmI/640?wx_fmt=jpeg&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    gamified-app
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    搞营销也行。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;em style="font-style: italic;color: #0e88eb;letter-spacing: 0.3em;"&gt;
   &lt;span&gt;
    07 品牌产品发布的 HTML 邮件，里面带表格也不会乱。
   &lt;/span&gt;
  &lt;/em&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblKEzxYg6wCfX04M83JRR4Ic47icfDtIDVjjDglrqcZ3ogNZgic0rhicu9EiaQqBRBibeCKgyv835CLJnPAbWicJudxlP7iaDPQ82ib6Gz4/640?wx_fmt=jpeg&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=9" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    email-marketing
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;em style="font-style: italic;color: #0e88eb;letter-spacing: 0.3em;"&gt;
   &lt;span&gt;
    08 三张 1080×1080 社交媒体轮播图，发朋友圈、发小红书都够用。
   &lt;/span&gt;
  &lt;/em&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblJV4jDdiadGCcD4rAibIgp6y6KamMHJRbHTnGuWFzdjnxg1KHOuCpnR0ndZtpK9htttf2dj67tbhM6VA5BeGdzc2cJjxRLM5vUhU/640?wx_fmt=jpeg&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=10" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    social-carousel
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;em style="font-style: italic;color: #0e88eb;letter-spacing: 0.3em;"&gt;
   &lt;span&gt;
    09 动态设计 Hero，支持CSS 循环动画。
   &lt;/span&gt;
  &lt;/em&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblIAKUMNRBUwNDe5UxiaE0gPlgE4GeUYye52IqXVibyKHBJH33XjOt2ib8NFQDicTRBj9r3Cl5RjHH5gqQibDReV6EiclkdukqrkTNJKU/640?wx_fmt=jpeg&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=11" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    motion-frames
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;em style="font-style: italic;color: #0e88eb;letter-spacing: 0.3em;"&gt;
   &lt;span&gt;
    10 8-bit 像素动画解释幻灯片。
   &lt;/span&gt;
  &lt;/em&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblJwC5VGUKiaQhGmIlpCWIc5PE62LdkxAmQwqHiaEOA6eshTu9mftzibbqNIFEO1cNsiacxsaZTaZYj4orbBrmwConsfCmnSbXkZvIc/640?wx_fmt=jpeg&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=12" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    sprite-animation
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   另外它还支持媒体生成，包括图片、视频、音频。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   图片用 gpt-image-2，视频用 ByteDance 的 Seedance 2.0，动态图形用 HyperFrames。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    看完这些功能，像体验一把也不难。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   先装一个 Claude Code 或者其他支持的 Agent CLI，然后克隆仓库，运行
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    pnpm tools-dev
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   ，打开浏览器就能用了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你不想装 Agent，也可以直接在设置里填 API Key，效果是一样的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   首选确保你电脑上已经安装了 Node.js 18+ 和 pnpm。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   先用git下载代码。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;git clone https://github.com/nexu-io/open-design.git&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;cd open-design&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   传统操作，安装依赖。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;pnpm install&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   最后一行命令跑起来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;pnpm tools-dev&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   没有报错，用浏览器打开 http://localhost:3000，就能开始使用了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    用起来so easy。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   打开 Open Design。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   直接输入"帮我做一个杂志风格的官网"，它先弹出个表单，让你确认目标平台、受众、调性这些信息。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblJEVdTrnUhkXbefW36Rz6VcRBpQibt2NlibSib7ddKaFrbF7AGBpqumJQ83sBPP1nKlXUa2l5A3d1UHBZS6Sibib3hBsdkpMqztAAtc/640?wx_fmt=jpeg&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=13" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    入口视图
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblJQJVygmbAD7AAFUk8GnLiatibto1kcm0afRATJlPyCibgVyxiaQPVOb58Hic5nljtQWjVPD9P1M2UDkaIFoHM0iaCXoAicJJaT8cB7fg/640?wx_fmt=jpeg&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=14" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    问题表单
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它还会让你选视觉效果。有5种风格让你选。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;br/&gt;
  &lt;/span&gt;
  &lt;section powered-by="werss" style="text-align: center;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLJMtsibOEjIGmdRafZMnXRwbosia3OBJlIYomWBN8ze36cS9SKibYiaWuJFjlCibwWstjsjnpq3QHtVAuK3m9WzcXVcIicpoHlCOnTw/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=15" style="width: 563px !important; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/section&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    &lt;br/&gt;
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   到这 Agent 就能真正干活了，计划实时显示在界面上，你能看到它正在做什么、下一步要做什么。一旦发现方向不对，你可以随时打断，不用等全部做完再重来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblJS0k2suH56ACOxQXiclIbISpjnxeDUYuTvNV9DnbpqmkOmCuYaCriagGlgIOCxejMHRCnZJFrADbB6qvcrasvuw1kQbkBph06cY/640?wx_fmt=jpeg&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=16" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Todo 进度
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   生成出来的东西在沙箱 iframe 里预览，可以直接编辑，也能下载成 HTML、PDF、PPTX 或 ZIP 包。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblIn7bS4zXI3aP2SKyptkAcWHyVgoGqBBmm8MDKvNGVaOgicWmBYLHx6B5Y3wlaEM3Bric3rFK0IAvz5uNtQ9zlYZib4P3r5YBhEA0/640?wx_fmt=jpeg&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=17" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    沙箱预览
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    需要注意的2点我也提一下。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    01 目前不支持多人实时协作，复杂项目AI 生成的元素只是近似匹配，不是精确还原。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 像素级精确的生产级设计，推荐还是用 Figma。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   AI设计工具越来越多，不能说哪个最好，各有特点。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   大家根据自己的需求选自己合适的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你也在用 Claude Code 或其他 Coding Agent，想快速出个设计原型，不妨试试 Open Design。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目基于 Apache-2.0 协议开放，感兴趣的同学可以去 GitHub 仓库看看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/nexu-io/open-design
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然看到这了，欢迎随手点赞、在看、转发，也可以给我个星标⭐，接收最新的文章，我们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1122" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/w_xqg71mbA_drn1UiUENNw</link><pubDate>Sat, 09 May 2026 15:16:51 +0800</pubDate></item><item><id>3877547210-2247511939_1</id><title>DeepSeek 版 Claude Code 上热搜了 。</title><description>短短几天，Star 数从 2300 暴涨到 19000+，直接冲上 GitHub 热榜。               离谱的是这个项目的作者不是专业程序员，是一个音乐教育专业出身的美国法学院学生。          这个项目最近在美国开发者社区和中文社区都爆了。          它叫 DeepSeek-TUI。          一句话概括就是          它能帮你写代码的工具，跟 Cur...</description><guid>https://mp.weixin.qq.com/s/RCmzVEAfjvNQOfxs9K27zw</guid><enclosure url="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblITqgeaAafj0HicQpaiapqUNDVGU8HGpMlrxJcM0Wg5vvo5gYfKGGdCzQV2GPJc4TKSiaB2uJo3icicjlXyC9ShJ0xZzJXw4u5YHBsc/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1123" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   短短几天，Star 数从 2300 暴涨到 19000+，直接冲上 GitHub 热榜。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJYT3WbZox1lwpIT33Q3cealfCHJMsLn9Qnk71wmkWy1HYib6Elo0k7XgicQibxTzspmoia8KpWajyvofWYxS3qqibB4ZECbwZftJYU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   离谱的是这个项目的作者不是专业程序员，是一个音乐教育专业出身的美国法学院学生。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   这个项目最近在美国开发者社区和中文社区都爆了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它叫 DeepSeek-TUI。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   一句话概括就是
  &lt;/span&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    它能帮你写代码的工具，跟 Cursor、Claude Code 一样，只不过它跑在终端里，不是图形界面。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKG5WxOSu9nvt2frwrZIyxw8mcjo7ekReWPeYia9laWfmWcH8rhxBbqBNvib6u6h4GhQcBLlBgzmN6dXUlxSfsOwicxXC6yE7lfnk/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它能帮你写代码，改文件，跑命令，管理 git，所有这些都是命令行完成。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   关键是便宜，用的是 DeepSeek V4 模型，一个月几十块钱就够用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   上下文窗口有 100 万 token，比 Claude Code 的 20 万和 Cursor 的 3.2 万都大很多。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px; visibility: visible;"&gt;
  &lt;span style="font-family: STHeitiSC-Light; font-size: 22px; color: rgb(14, 136, 235); font-weight: bolder; display: inline-block; padding-left: 10px; border-left-width: 5px; border-left-style: solid; border-left-color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    下面就来拆解它最实用的5大核心亮点。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    01 三种运行模式。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   Plan模式适合整体把项目看一遍，干之前先给给你一个计划清单。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJqJUZTh5hYQK2bu9XIibJox2XhyA4RUlaAhNFFVxfGFyicQJ3icFb73wibzzXIyLJ35XLqLoS8vvtkRiceIyfF9VkopBISk2aq9fhk/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    PLAN模式
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Agent模式是默认开启 ，每干一步 ，就要让你确认，不确认就不继续往后执行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   YOLO模式和Agent模式相反，它是全自动的、从头执行到尾。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIdwHslyV3Nnib2UPGJLtMJLgaUmtgcLuziaIwJVM0421VTL1srUMB5ON6JIjaoLCzvC1ttNNFZm35BZLTulgFrD7b0YEdmBRRFU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    YOLO模式
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 Auto Mode 自动选择。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   有时候不知道怎么选？直接加个
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    --model auto
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   参数让它自己看着办。它会用小模型估摸一下任务难不难，再决定用哪个模型、要不要开推理。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我让它帮我分析这个项目的代码结构，它就会自动判断任务复杂度，选择合适的模型和推理强度。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIPSct8rGKkaSQO0bNSY5NE0ibTp91uA7XibD5t49gmOia9eoPNBqg2Jm7VEClnOe7F8DvjuMr9poicic61hibgyKgU8JwVibJvFHwgzQ/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    帮我分析这个项目的代码结构
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKgmTr7FjLYqTSBmGKPUK7JfsdZCXnumZSgKtXL6tsIkic7yOWSWsE2unib3STxnxYKz6alrgoNkibQ4SCf3ZzvuNOLkD1lwpSV2k/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    帮我分析这个项目的代码结构
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 RLM 并行推理能力。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   说人话就是主模型能同时派 1 到 16 个小模型干活，批量分析、拆任务、并行推理都行。花的还是 Flash 的钱，但速度快多了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我让它给我分析整个项目的所有功能，主模型派出多个子模型并行处理，没有一个一个排队，并行干活，长时间任务很省时间。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKxx3E13uIupRlibfAD7icjRK5Gqrvh26INNkj6NUmm8Xk31gPazf0ss51ZkFKA0wyhc7iamHM3ibaoPolU7Tibr8gMRZYXthXaFMPg/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    RLM 并行推理
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    04 用多少token实时能看见。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它有一个小设计。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   每次对话都会在最下面展示token 使用量、会话级别的成本估算、缓存命中情况。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这样你可以清楚地知道这次任务花了多少钱，心里踏实好多。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIFHtZrXfqPmN3SB6GwLIaCdyuzqNb3PteibNBicewvKFpshxiaP5kAl6ETufRN5ajAFzDkRK0iaFtQyRsfMQmXVW1iagtI99vpKCP0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    成本统计
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    05 会话管理机制。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你想找到之前的一次对话继续聊下去，也没问题，直接用：
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    deepseek fork 会话ID
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   来调出。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   恢复最近一次会话，用
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    deepseek resume --last
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   就行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKyktF9Pkriap39yzSucrUOfB1gVBiaPCG7Gv6ZdBrrS0HRvLPZWpLm5SLPMV3AukZjtxLwSTPWKES37lKrE0Tia5CMoZ1wUxdpZE/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    会话管理
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLUlkYwBOkeUkqLopryRr7gbYmbTwvEh2HgibKyEib2d6p8EzkflZDk3rkUPZL4fQEC1P0cZJ6n21IiaIWHs09by3ibiaSKiaODmKrzs/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=9" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    恢复最后的会话
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   另外工作区改乱了也没事，用
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    /restore
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   就能一键回退还原，完全不碰你的 Git 仓库，不用担心代码被搞坏了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    DeepSeek-TUI 和 Claude Code差异性。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我两个都用过，简单说说我的看法。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    先说成本。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Claude Code 每月 200 美元，一年光工具费就得 17000 元。DeepSeek-TUI 按 token 算钱，Flash 模型 100 万 token 只要 1 块钱，一个月几十块就够了。算下来只要 Claude Code 的 1% 到 2%。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    再说上下文窗口。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   DeepSeek-TUI 有 100 万 token，Claude Code 才 20 万。中型项目几十万行代码加文档，Claude Code 很容易就装不下了。DeepSeek-TUI 能装更大的项目，不用担心塞不进去。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    模型能力方面。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Claude 在代码理解和复杂推理上确实强，DeepSeek V4 整体稍微差一点，但编程任务够用了。而且 DeepSeek 支持 RLM 并行调度，批量处理效率更高。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    使用门槛也不同。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Claude Code 要国外信用卡，国内用起来麻烦，还有封号风险。DeepSeek-TUI 国内直连，支付宝充值，注册就能用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    如何部署你的第一个 DeepSeek-TUI。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   废话不多说，下面咱们一起来看看，怎么部署你的第一个 DeepSeek-TUI。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;ol class="list-paddingleft-1" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: black;list-style-type: decimal;"&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     环境准备
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
 &lt;/ol&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你的电脑装了Node.js ， 直接用npm装就可以了:
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;npm install -g deepseek-tui&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   用macOS的朋友推荐用brew装。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;brew tap Hmbown/deepseek-tui&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;brew install deepseek-tui&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   linux可以用cargo装上去。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;cargo install deepseek-tui-cli --locked&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;cargo install deepseek-tui --locked&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Windows 用户如果有 Node.js 环境，直接运行这行命令就能装好:
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;deepseek --version&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLcJjicXOrkYTn78PbjnWa2j51IjFYJibLz0gicXnolBOl2us1QeOh7Fso0YTtuNuEmPg5UsJR451hWVO2kdpS8vQZa1FL5amZgVM/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=10" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    查看版本
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;ol class="list-paddingleft-1" start="2" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: black;list-style-type: decimal;"&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     基础配置
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
 &lt;/ol&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   安装好后，去 DeepSeek 官网https://platform.deepseek.com/api_keys ，获取 API key。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   首次运行时，系统会提示你配置 API key:
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;deepseek --model auto&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIXiaeRxO86b61Lyesk6tjm2M4UbnszZ5GXuicxyvOB7OsxeREzlFS3ddgfX2DCCOKYUZSbicjyibXtSYR5QaZgUkhQpK2428Nd5g0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=11" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    初始化
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   输入你的 DeepSeek API key:
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIWQHG6SHdWJprUojV5oIbvj92v6W79XnpwIXHQ3uVsIrgNVuud1DMOuGxMw0G0QM46B9aXPjS6WyNSAuKvNBK9fATVAFDpf7s/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=12" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    设置api key
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   系统会自动保存到配置文件中，下次就不用再输入了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;ol class="list-paddingleft-1" start="3" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: black;list-style-type: decimal;"&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;span&gt;
     开始使用
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
 &lt;/ol&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   配置完成后，直接运行:
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;deepseek&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   此时，终端里就会打开 DeepSeek-TUI 的界面，你就可以开始和它对话了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKZ7UmNLEbLeZD3FH4nRG1tTKeiaktCDP2Ib9vicbxnrqRia2JUGsGSVF6ibTt5S8Ha7Gy8H3CicZKRicbS9RurMvvRMZR8fsIw4H5sU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=13" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    执行成功的界面
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你可以让它帮你写代码、改文件、跑命令，或者管理 git 仓库。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它还支持技能系统，你可以通过
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    /skills
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   命令查看可用的技能列表:
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKtl4R2zVTeiciaJ5rXqT6A80wwUibD37bjklPOaqxQMuycmIHuqWESIHdYib0o8OPwVS74oSQ8ljicaBfvVa9xMznxvX8oY70A3ZuI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=14" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    技能列表
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    这个新项目的不足也提一下。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   首先是终端界面的学习曲线比较陡峭，信息展示也比较密集，如果你不习惯命令行工具，可能需要一点时间适应。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   其次是它的第三方插件和技能生态还不如 Cursor 那么成熟，毕竟项目才创建几个月。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   另外Windows 目前只支持 x64，不支持 ARM64。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   试用了一下，我觉得DeepSeek-TUI 还行，但也别指望它能解决所有问题。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   想要 Cursor 那样的图形界面，或者需要复杂的代码补全，可能会觉得差点意思。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它适合这些人:
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你已经有明确的任务，需要 AI 帮你执行;你习惯命令行操作;你对成本很敏感。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   感兴趣的朋友可以试试。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目基于 MIT 协议开放，感兴趣的同学可以去 GitHub 仓库看看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址:https://github.com/Hmbown/DeepSeek-TUI
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然看到这了，欢迎随手点赞、在看、转发，也可以给我个星标⭐，接收最新的文章，我们下期见!
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1123" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   &lt;br/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/RCmzVEAfjvNQOfxs9K27zw</link><pubDate>Fri, 08 May 2026 15:17:14 +0800</pubDate></item><item><id>3877547210-2247511920_1</id><title>Agent 监控，终于有人做出来了。</title><description>同时跑 3 个 AI Agent，你根本不知道哪个在烧钱。          自从 Claude Code 和 Codex CLI 出来之后，好些人会同时开好几个 Agent干活。          这边让它写前端，那边让它改后端，还有个在跑测试。          但问题很快就来了，哪个会话已经烧了多少 Token？上下文窗口快满了没？速率限制还剩多少？          这些重要信息，你只能一...</description><guid>https://mp.weixin.qq.com/s/auHwdAFbTcoUODH4-zFaRg</guid><enclosure url="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblIFBoLias3dtgdyUZnnbOGFrDZibJVqrOCCZ4GtM6iaiat4IE5niav0ISwN8tNTj8CmagGnJB5exU4odQHmybsQRux4f9OrYhlCa6ibM/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1118" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   同时跑 3 个 AI Agent，你根本不知道哪个在烧钱。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   自从 Claude Code 和 Codex CLI 出来之后，好些人会同时开好几个 Agent干活。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   这边让它写前端，那边让它改后端，还有个在跑测试。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   但问题很快就来了，哪个会话已经烧了多少 Token？上下文窗口快满了没？速率限制还剩多少？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   这些重要信息，你只能一个一个切回去看。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   最近在 GitHub 上刷到一个项目，能解决这个问题。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它叫
  &lt;/span&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    abtop
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span style="visibility: visible;"&gt;
   ，在 GitHub 上已经有 1800 个 Star。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIfuY4UvfuPH5avrhkL6b5kCq5xubmZbkiclVw3v1AZR7T3xKqZs3rIsUa5ib8PoUEWePsG5yo5a6OgmeAE0Opd7ffJzLLt138e8/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    它其实就是用来监控本地运行的 AI 编程 Agent 的终端工具
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span style="visibility: visible;"&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   就像你以前用 htop 看服务器进程一样，abtop 让你一眼看到所有 Claude Code 和 Codex CLI 会话的状态。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   Token 用了多少、上下文窗口还剩多少、速率限制还剩多少配额、有没有启动子进程、有没有打开端口忘记关。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   这些信息，以前你只能一个一个切回去看，现在全部集中在一个界面里。
  &lt;/span&gt;
 &lt;/p&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="text-align: center; visibility: visible;"&gt;
 &lt;img src="https://mmbiz.qpic.cn/mmbiz_gif/VDCUoW3UiblLiauibQU4WRGfOwYelDyMfbngODuEDBnzoyl5O1Q9ojAHMcSc6RibLSB3AUNv1WXz64IXSU2GWyXxuwDcN5abGw9cJ1RQwVaHzwI/640?wx_fmt=gif&amp;amp;from=appmsg&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="height: auto !important; visibility: visible !important; width: 680px !important;"/&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px; text-align: center; color: rgb(136, 136, 136); display: block; font-size: 12px; font-family: PingFangSC-Light; visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    abtop 实时监控演示
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   真正有意思的是，它完全不需要 API Key，也不需要登录认证。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   abtop 只读取本地文件和进程状态，所有监控都在你自己的机器上完成，工具名称和文件路径都显示在界面上，文件内容和提示文本永远不会暴露。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px; visibility: visible;"&gt;
  &lt;span style="font-family: STHeitiSC-Light; font-size: 22px; color: rgb(14, 136, 235); font-weight: bolder; display: inline-block; padding-left: 10px; border-left-width: 5px; border-left-style: solid; border-left-color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    它把每个 AI Agent 会话的关键信息都给你。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    01 Token追踪。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   每轮会话耗多少Token、花多少钱，界面上实时都能看到，不用等账单日再去查。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 上下文窗口监控。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   实时显示会话上下文占用率，快满了就会直接提醒，自己判断是否要新开会话，防止窗口满了任务中断。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 还有接口限速监控。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   另外界面上还会显示API剩余配额、重置时间，根据这些数据你可以提前安排任务，避免被限速中断。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    04 孤儿端口检测。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   有时间Agent开了忘了关掉，端口会一直占用，abtop能自动检测、一键清理，特别省事。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIbPN4NkLUF2eAp1PhdQWjJKMUp2ibaurYbgzPuRQXJ4NE7Ml7oorNeayCicMs6jq2RBWyzbBWIKmaaLmXnIXyMiaUctic6E4iaJvRs/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    abtop 默认主题界面
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    除了核心监控功能，abtop 还有一些好的细节。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    它能在 Windows 上原生运行，不需要 WSL
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这在同类工具里并不多见，大部分终端工具要么只支持 macOS 和 Linux，要么在 Windows 上需要通过 WSL 才能跑。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   abtop 直接用 sysinfo 获取进程信息，用 netstat -ano 获取监听端口。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不用苦哈哈地折腾虚拟化环境。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    12 个自带主题
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   ，包括 4 个色盲友好主题。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这点真的挺惊喜的，居然还做了高对比度、红绿色盲、蓝色盲这些适配，色盲朋友也能轻松看清界面信息了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKbicDCXbRm5zja0s6N1uj2ibiaIKFI15x42m04bFYDR16OQ5OL19riccY5MVYHYRiaqR5YbUJibwhPRproQGtj6BJqrEflTSILxhtFE/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    主题展示
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    另外abtop 提供了 12 个自带主题，有从经典到现代的各种风格。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    经典主题。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   btop 风格的默认主题用经典的蓝绿配色，适合习惯传统终端界面的开发者。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJ2Ah3wMtGKDA6T6xldSaibibz6baR4UVgb7bptw9RHJK8lzAB2iaSQU36r9urvMcwLLuxlicDNhLUIlPnAg35oH89QBo30cn4BibYs/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    btop 默认主题
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    现代主题。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   则更加丰富，比如 Dracula 主题用紫色系配色，在暗色终端里特别显眼。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKF2SF6xQ1rvria1IY7CDxOkNKbfz7bfQkyrIQCNqkMJRM8tuamR3vHVFY65CjnBTfibgmcJ4OHXHe5ZH0FU70ESdnSMtgBCfP0s/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Dracula 主题
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Catppuccin 主题则走的是柔和路线，整体色调温和舒适。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKtJVibKEfRXW3E6S6h3VJn1iae6icKcd6uTJMb1AkfNh4RCYAcyBeN0FlibyltjRt5IGIGcaEscU0LMvGmjtrL9WQ4g0ACicZr53U4/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Catppuccin 主题
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Tokyo Night 这个主题挺有意思的，灵感是东京夜景，深蓝背景配上亮色高亮，晚上用的时候很有感觉。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIbMocBOfcBYML1ELrty3yLHyVdIqW3hJ0MfVRhzJ4PiaiciawTF6QibluD48KbEqUmttXZxjBhB0gD5X18ts8NxXQEe7MNAHkGMx8/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Tokyo Night 主题
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Gruvbox 走的是复古风，暖色调看起来很舒服，时间长了眼睛也不累。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKYGicAm44iapxU7nY84ZicJKc9rQXQicq1m1x7R7ptbhWxDkzgibjvibBhSRriczvTVEfwYyskQyK9jqcWkXmmohTNZy25EBicQ3RghaE/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Gruvbox 主题
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Nord 主题主打冷色调特别干净。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJiasTy9UsNj0fzI9ia2QL0cbCnicF1adNbQDRib7UNzdxYibX69OboDhyUzTHh6mbiagUZNJbBJRnkUxzbdtXjEDWXiclzlnTmlkFOiac/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=9" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    Nord 主题
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   对了前面说的色盲友好主题，我觉得这个做得挺贴心的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   高对比度那个，就算在光线不好的地方也能看清楚。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblL45iaSkYc4vcRzkoU4NERmGFAduErbice6JsgwrlCZa3osbPJ4xC5haZVMMC9C1G4YdytHpjz7EicFmluX8zdicpmkLVTTdZPfsF8/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=10" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    高对比度主题
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   绿色盲主题专门给绿色盲朋友调整了颜色。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblICRjhpzTZn0NANAibdMsSSANiaxVs25OJwfYr8HBAJBuGLvrxp99BJKibb3qQpdJZFPcZnlSq9ck0OmvZKaib6yibtCUSqibtVex2RQ/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=11" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    绿色盲主题
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   蓝色盲主题也是一样，针对蓝色盲改了配色。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJjOQzH5erdOtBDUqMzS7f8zphbOBcFwZ3eYwj8PcdDyaWSRQjZEpLxG8sMkVBf72Tfe7HLQaNWruZL7dv7FypaUobn3Wyp6iaA/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=12" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    蓝色盲主题
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你喜欢浅色背景，还有两个选择。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   一个是 Solarized 风格的，奶油色调看着很舒服。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLduZw7iaNw7Q1p01JoJgsicvSWRG2puDMTY0Vn3RvWWwPYyVm2wGCHkHYNFMxJbu84xhicvl6aHZqDcP64I3zMypvrY3ZXKsLgZ0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=13" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    浅色主题
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   另一个是 GitHub 风格的纯白主题，特别干净。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIibf1eLFYHYF2pj5F9VNcibXU7YTicRicT1L1TTw1IEyicicOU5QSsqaRVNZeicJjyJv5e2GyxNWVxia5G9rM7icicDAyom83iaDR4n8Vrz0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=14" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    白色主题
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   想换主题的话，直接按
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    t
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   键就行，选好了自己会保存，下次打开还是你选的那个。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    tmux 也集成了。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   在 tmux 里运行 abtop，按 Enter 就能直接跳转到运行该 Agent 的 pane。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   习惯用 tmux 的朋友能省掉不少手动切换的麻烦。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    看完这些功能，相信各位已经迫不及待了。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   macOS 和 Linux 用户可以直接用 curl 安装：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;curl --proto &lt;/span&gt;&lt;span style="color: #98c379;line-height: 26px;"&gt;&lt;span&gt;'=https'&lt;/span&gt;&lt;/span&gt;&lt;span&gt; --tlsv1.2 -LsSf https://github.com/graykode/abtop/releases/latest/download/abtop-installer.sh | sh&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Windows 用户用 PowerShell 一行命令就能装好：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;powershell -c "irm https://github.com/graykode/abtop/releases/latest/download/abtop-installer.ps1 | iex"&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   装好之后直接运行
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    abtop
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   就能启动。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   注意先把 Claude Code 或 Codex CLI 跑起来，不然它看不到。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    到这里缺点也给大家提提。
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它目前只支持 Claude Code 和 Codex CLI 两种 Agent。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你在用 Aider、Cursor、Gemini CLI 或 Goose，那就暂时用不了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   竞品 agtop 能用更多 Agent 类型，但主题系统和 Windows 支持不如 abtop 好。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它也没有历史数据存储和分析功能，只能看实时状态。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你需要一直看 Token 消耗情况，可能还得用 ccusage 这类工具。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   但如果你主要用 Claude Code 和 Codex CLI，而且经常同时开好几个会话。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   abtop 确实能帮你把监控这件事变得更简单。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它不需要 API Key，不需要折腾配置，装好就能用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 22px;text-align: left;margin: 20px 10px 0px 0px;"&gt;
  &lt;span style="font-family: STHeitiSC-Light;font-size: 22px;color: #0e88eb;font-weight: bolder;display: inline-block;padding-left: 10px;border-left: 5px solid #0e88eb;"&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h2&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我也经常跑好几个 AI Agent，发现 abtop 神器确实能省很多事。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   以前想知道 Token 用了多少、上下文窗口快满了没，得一个一个切回去看。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   现在用一个界面都能看到了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   而且它不需要 API Key，不需要登录，装好就能用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   经常同时跑 Claude Code 和 Codex CLI 的朋友，推荐试试。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目基于 MIT 协议开放，感兴趣的同学可以去 GitHub 仓库看看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/graykode/abtop
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然看到这了，欢迎随手点赞、在看、转发，也可以给我个星标⭐，接收最新的文章，我们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   &lt;br/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1118" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   &lt;br/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/auHwdAFbTcoUODH4-zFaRg</link><pubDate>Thu, 07 May 2026 15:16:43 +0800</pubDate></item><item><id>3877547210-2247511901_1</id><title>又一个神级 skill 开源  !  好用很多。</title><description>20 天，2600+ Star。          又一个做PPT的项目在 GitHub 火了，叫 html-ppt-skill。          它做的事情听起来很简单：让 AI 帮你做 PPT。          自带 36 套主题、31 种布局、47 个动效，还有一个像素级精确的演讲者模式，后面我会详细讲讲。            html-ppt-skill不生成 PPTX 文件，而是直...</description><guid>https://mp.weixin.qq.com/s/5xuQnjeESkJ1SdQVfk8aSw</guid><enclosure url="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblK2Lt6hBf2yfl8ibt2dZVpIfypzAffxb3gP8T3eydoDMm2icUZxlASdDDvGOmoqWCdWs3Aia8aqcQGM3icHr1rAR3XZdYZTXvkSxtg/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1117" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   20 天，2600+ Star。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   又一个做PPT的项目在 GitHub 火了，叫 html-ppt-skill。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它做的事情听起来很简单：让 AI 帮你做 PPT。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   自带 36 套主题、31 种布局、47 个动效，还有一个像素级精确的演讲者模式，后面我会详细讲讲。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    html-ppt-skill不生成 PPTX 文件，而是直接输出一份纯静态的 HTML 文件，零构建、零依赖、AI 原生，双击打开浏览器就能演示
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span style="visibility: visible;"&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它本质上是一个 AgentSkill——AI Agent 的插件。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   装好后，直接告诉 AI 你要什么：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px; margin-bottom: 10px; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px; visibility: visible;"&gt;&lt;code style='overflow-x: auto; padding: 15px 16px 16px; color: rgb(171, 178, 191); display: -webkit-box; font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace; font-size: 12px; background: rgb(40, 44, 52); border-radius: 5px; visibility: visible;'&gt;&lt;span style="visibility: visible;"&gt;做一份微服务架构的技术分享，10 页，暗色主题，要有架构图和代码示例&lt;/span&gt;&lt;span style="visibility: visible;"&gt;&lt;br style="visibility: visible;"/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   AI 会自动选择模板、主题、布局，输出一个完整的 HTML 文件。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    双击打开，按
   &lt;/span&gt;
   &lt;code style='font-size: 14px; overflow-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0px 2px; color: rgb(30, 107, 184); background-color: rgba(27, 31, 35, 0.05); font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace; word-break: break-all; visibility: visible;'&gt;
    &lt;span style="visibility: visible;"&gt;
     F
    &lt;/span&gt;
   &lt;/code&gt;
   &lt;span style="visibility: visible;"&gt;
    全屏，直接演示。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_gif/VDCUoW3UiblIL0wRc1tTbNibWictuwjaH0UbkjrXwhXDju2JU6Kpz7VIE5jHoCLWwZQNJTPlAL23vXa3RhBAHJPSTauJTUakesLdoudv6tTibvQ/640?wx_fmt=gif&amp;amp;from=appmsg&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px; text-align: center; color: rgb(136, 136, 136); display: block; font-size: 12px; font-family: PingFangSC-Light; visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    html-ppt 封面演示
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   这个项目到底有什么特别之处 ？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    它内置了 36 套。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   覆盖了极简、暗色、渐变、科技、出版、柔和、商务、效果等不同风格。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   从 minimal-white、editorial-serif 这种适合学术汇报的极简风，到 cyberpunk-neon、terminal-green 这种适合技术分享的赛博风。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   再到 xiaohongshu-white、soft-pastel 这种适合小红书图文的柔和风，基本覆盖了常见场景。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    按 T 键可以实时切换主题，方便快速对比效果
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span style="visibility: visible;"&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLfqJVhaFWR9zxDM5iauEibjVYOYcCSeam9I8mKruT3P7dBGmHQcTh3pTgMq0xVHAKsnpkUHK474p9L0P89ho49ld9nz0wFt4ufQ/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px; text-align: center; color: rgb(136, 136, 136); display: block; font-size: 12px; font-family: PingFangSC-Light; visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    36 主题 · 其中 8 个
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    除了主题，它还提供了 15 套从真实项目里提炼出来的完整模板
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   比如
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    tech-sharing
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   是 GitHub 暗底风格，专门给技术分享用的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    pitch-deck
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   是 YC 风格的融资路演模板。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss" style="text-align: center;"&gt;
  &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblL6AduicB82MQy8b6o1Hib2fLKou02Gbq0F0qiaBibJla7vFzcQ6NSbhpdO0eTELLNGtL25dBmWuibMpUapB9GFL5IiarPojtUibVb8ibI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="width: 560px !important; height: auto !important; visibility: visible !important;"/&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    xhs-post
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   是 3:4 竖版的小红书图文模板，直接对标小红书内容创作需求。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss" style="text-align: center;"&gt;
  &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIpqRRfWw68daKxA4y9UHFlHXNicZXGVoee5iaqIvhSQGSWHURYwvNgzBgcyGBdZpicJmNr4G7C11F8icGyRQmR5se4nCSeGicnFnnU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="width: 546px !important; height: auto !important; visibility: visible !important;"/&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   还有一套
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    presenter-mode-reveal
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   ，每一页都带了 150-300 字的示例逐字稿，专门配合演讲者模式设计。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你要准备一场正式分享，直接拿这套模板改内容就行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIt2YkAjQELj23viaOjMAAvicPXjZgJ012ENSd7aRuLebDq0CKXhnwBRG3XTFKXT7gjEp7sIiaFXmZzVdEDctWfHPMsO8zqTD1WYI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    15 套完整模板
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   有了模板，接下来就是布局和动效了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    布局有 31 种之多
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   从封面、目录、章节分隔，到文字排版、数据图表、代码展示，再到时间线、架构图、流程图，基本够用了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   每种布局都带真实的示例数据，复制粘贴就能用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_gif/VDCUoW3UiblJgicaHKzNsmPS57HMqlZAQ84dwc6r1icmFicCgJ245aCw1Zxy0kSJmYovPPpCMuNJbhPiaejMvZYic2W1piaIXnr5Ws8lTOiam3xwmgA/640?wx_fmt=gif&amp;amp;from=appmsg&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    31 种布局实时演示
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    动效也有 47 个，27 个 CSS 动画加上 20 个 Canvas FX。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   前者轻量，适合常规入场。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   后者是手写的 canvas 模块，
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    粒子爆发、星空飞行、神经网络脉冲这种电影级效果，适合封面或关键时刻
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKCOYUKPKP7LJdibEm4AUlaamicG0e7ueKFDW7GGO2mNH5AAmEWMVibS6iaCXoEiceXeYK2h31m8ch5ib3M9FcN9MbJjTiaPn6hEU4Dvs/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    47 个动效 · 27 CSS + 20 Canvas FX
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   说到这里，你可能会好奇：为什么作者选择用 HTML 而不是传统的 PPTX？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h4 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 18px;"&gt;
  &lt;span&gt;
   为什么是 HTML 而不是 PPTX？
  &lt;/span&gt;
 &lt;/h4&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   作者的想法很明确：
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    零构建
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   生成的文件不需要安装任何软件，双击用浏览器打开就能演示。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   没有 node_modules，没有构建步骤，只有 CDN 上的字体文件。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   对于开发者来说，这种方式比打开 PowerPoint 顺滑太多。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   除了技术选型，这个项目在演讲者模式上也下了不少功夫。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h4 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 18px;"&gt;
  &lt;span&gt;
   演讲者模式，真正用心的地方
  &lt;/span&gt;
 &lt;/h4&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   按 S 键，会弹出一个独立的演讲者窗口。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   里面有四个可拖拽、可缩放的磁吸卡片：当前页预览、下一页预览、逐字稿、计时器。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   每个预览卡片其实是一个 iframe，加载的是同一份 HTML 文件，只是 URL 多了一个
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    ?preview=N
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   参数。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这意味着
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    预览和观众看到的是完全相同的 CSS、主题、字体、viewport——像素级精确
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不会出现"预览和实际不一样"的尴尬。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblKOnVCP5YiaqQgObWaHYmagPqolRgWDk31APaSM2R51wbBgNLyWHpP7FwSXy2gScuKMQSydaFl01iaIe7fGNFCplsjkGbUMr45A0/640?wx_fmt=jpeg&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    演讲者模式 · 4 个磁吸卡片
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   翻页的时候，演讲者窗口通过 BroadcastChannel 和主窗口同步，用 postMessage 通知 iframe 切换页面。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    整个过程不重新加载页面，不白屏，不闪烁
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你也想试一下，最低门槛的打开方式是这样的：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   先运行
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    npx skills add https://github.com/lewislulu/html-ppt-skill
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   把它装成 AgentSkill，然后在你支持的 AI Agent 里直接说需求。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你用的是 Claude Code，它会自动调用这个 skill 生成 HTML 文件。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不想装 skill 的话，也可以直接 git clone 仓库，用
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    ./scripts/new-deck.sh my-talk
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   创建新项目，然后用浏览器打开生成的 HTML。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   生成好 HTML 文件后，操作其实很简单。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    用浏览器打开，按
   &lt;/span&gt;
   &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
    &lt;span&gt;
     ←
    &lt;/span&gt;
   &lt;/code&gt;
   &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
    &lt;span&gt;
     →
    &lt;/span&gt;
   &lt;/code&gt;
   &lt;span&gt;
    键翻页，按
   &lt;/span&gt;
   &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
    &lt;span&gt;
     F
    &lt;/span&gt;
   &lt;/code&gt;
   &lt;span&gt;
    进全屏，按
   &lt;/span&gt;
   &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
    &lt;span&gt;
     S
    &lt;/span&gt;
   &lt;/code&gt;
   &lt;span&gt;
    打开演讲者窗口
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLS4C10AlicYRiceBUA0Lgaib4qAnrJmxWX1zIb1edl1ceNZnG38XMC3GzYAGmOgiaYVG4r6N1DsXASnmtcUWmVmfYu0OtYPuOsXuo/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你想快速预览所有页面，按
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    O
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   键会弹出一个幻灯片网格，一目了然。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   觉得当前主题不合适？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   按
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    T
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   键循环切换，36 套主题挨个试，找到顺眼的为止。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJLsWfOeay8qZEgh7M83SosLBvDPNE8GJaVaBIia5C6c39PgMMHKrtxwYfhJbpG5p9ibtNRTfS2yBGRdTqzHhJ5fxrVQGERdlXPs/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=9" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   想在某一页加个动效？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   按
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    A
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   键，它会在当前页循环演示各种入场动画，挑一个喜欢的记下来，回头改 HTML 加上就行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你只是想先感受一下它的效果，可以直接打开仓库里的
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    templates/theme-showcase.html
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss" style="text-align: center;"&gt;
  &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblI1kZV7kGWfUNfIpUjAbyKcUyvNJhc3QNml5yBTeZKUgvQh04BxGAsWZEm0YtOzLBDlR1IojricJEQbfVFGA1oMMUQiaCIKgdb2k/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=10" style="width: 571px !important; height: auto !important; visibility: visible !important;"/&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这是 36 套主题的展示页面，每一页用独立的 iframe 渲染，避免样式互相污染。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   或者打开
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    templates/full-decks-index.html
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   ，浏览全部 15 套完整模板。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJduXUHV6dVzWApIF0iczyJXibEQobQicFibg5QnWWsygB1I01eeqQIhdXuFvPGSOIVfFnt4biba8PiaBicKMPAHBMHBs4kplibv2aQagI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=11" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这些都是现成的 HTML 文件，双击就能看。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   想导出PDF就用浏览器的功能，用打印功能，选择另存为 PDF就行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   给你润色得更流畅、口语自然、逻辑通顺，直接可用：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不过最后还有两个小问题想跟大家提一下。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;ol class="list-paddingleft-1" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: black;list-style-type: decimal;"&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
     &lt;span&gt;
      目前它
     &lt;/span&gt;
     &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
      &lt;span&gt;
       只能导出 PNG 图片格式
      &lt;/span&gt;
     &lt;/strong&gt;
     &lt;span&gt;
      ，没法直接生成 PPTX。 只能先执行
     &lt;/span&gt;
     &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
      &lt;span&gt;
       ./scripts/render.sh 你的PPT文件.html
      &lt;/span&gt;
     &lt;/code&gt;
     &lt;span&gt;
      ，借助无头 Chrome 把每一页单独渲染成 PNG，之后再手动粘贴到 PPT 里，或者用别的工具批量转成 PPTX。
     &lt;/span&gt;
    &lt;/p&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
     &lt;span&gt;
      另外修改内容需要
     &lt;/span&gt;
     &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
      &lt;span&gt;
       直接编辑 HTML 源码
      &lt;/span&gt;
     &lt;/strong&gt;
     &lt;span&gt;
      ，对不懂前端、不会 HTML 的人来说，上手门槛会偏高。
     &lt;/span&gt;
    &lt;/p&gt;
   &lt;/section&gt;
  &lt;/li&gt;
 &lt;/ol&gt;
 &lt;h4 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 18px;"&gt;
  &lt;span&gt;
   写在最后
  &lt;/span&gt;
 &lt;/h4&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   以前做技术分享，光是排版、调样式就得耗一两个小时。现在简单跟AI说清楚需求，几分钟就生成好，省下的时间专心打磨内容就行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   就跟开车从手动挡换成自动挡一样，虽说少了点手动操控的感觉，但是真的省事、省心太多了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目基于 MIT 协议开放，感兴趣的同学可以去 GitHub 仓库看看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/lewislulu/html-ppt-skill
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1117" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   &lt;br/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/5xuQnjeESkJ1SdQVfk8aSw</link><pubDate>Wed, 06 May 2026 15:18:01 +0800</pubDate></item><item><id>3877547210-2247511885_1</id><title>复刻 Winamp 经典体验，3万电台更香了 。</title><description>如果你是 90 后,大概率用过或者见过 Winamp。          那个可以在电脑桌面上放音乐、带频谱可视化、还能换皮肤的播放器,曾经是很多人的青春回忆。               最近发现有人在终端里把这个体验复现出来了。          cliamp 是一个用 Go 写的终端音乐播放器,          目前在 GitHub 上已经有 2021 个 Star          。 ...</description><guid>https://mp.weixin.qq.com/s/9CquyAfOiUBRzk6g_3-Ecg</guid><enclosure url="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblKQL1fkDW5rps8a4xaBDzibqrfAghZ3X1Mf4P0PfoaOUURYFADiadkuMy5Yl4XBVIFHS08U2Uq1ic7TvVL6ib0zHSj9PO6uyZw2ibuw/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1116" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   如果你是 90 后,大概率用过或者见过 Winamp。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   那个可以在电脑桌面上放音乐、带频谱可视化、还能换皮肤的播放器,曾经是很多人的青春回忆。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIhK6vxnkxs5qz3eWbcFBaDRbUwUpbia0gfRfwGRyJVF6QlymVXce7fsVYuXLdN9GCibWPHzpZaicztHhfP6RYdibdJugWiccmtsXiaw/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="height: auto !important; visibility: visible !important; width: 670px !important;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   最近发现有人在终端里把这个体验复现出来了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   cliamp 是一个用 Go 写的终端音乐播放器,
  &lt;/span&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    目前在 GitHub 上已经有 2021 个 Star
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span style="visibility: visible;"&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJSxq0Xibu9Sib7FWITZfPMxtpqAej74wn3cqIeev4m9QF4LDKESBrIZR2aYDuTxu6BGqtgkYrBWCTS1kjUHN7IMaibWDaMoicNxBU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    它最大的特点是把本地文件、流媒体、播客、YouTube、Spotify、小宇宙等 10 多种音源统一到了一个终端界面里。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   同时提供 10 段参数均衡器和实时频谱可视化。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   刚看到这个项目时,我还以为就是个普通的终端播放器。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLp3usHFZncnWpQoBpMVI739hMdQrcVnrbcTZfkcSuJVH0OzWmZ1KRPibmUadLSXwnNTic4ic9caFqt9AicbK66t0pANNdsiawAxHT0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   结果一用才发现,没那么简单。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h4 data-tool="mdnice编辑器" style="margin-top: 30px; margin-bottom: 15px; font-weight: bold; color: black; font-size: 18px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它把好几个平台的歌都整合到一块儿
  &lt;/span&gt;
 &lt;/h4&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   我以前听歌听播客最头疼的就是音源太散，乱七八糟不在一块儿，想听啥都不好找。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   本地文件用的是 cmus 或 mpd 播放, 但想听 Spotify 就得开官方客户端。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   本来想在终端里保持专注,结果反而被各种窗口切来切去,搞得心里很不爽。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   cliamp 的做法是——
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    把这些音源全部拉到一个界面里。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJGKXJBZ1nqcJ48tbtwk0Ll4vMVwfkF6EEmfkcb9kMk52Av4d5ibyxSIUsCYWsaia8iaDqFkmNEa3Du8QINVkBFrkLoz7PH9ibuzpI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它支持本地文件(MP3、FLAC、OGG、AAC 等)、HTTP 流媒体、播客 RSS 订阅。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它用 yt-dlp 集成了 YouTube、YouTube Music、SoundCloud、Bilibili。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它还通过 go-librespot 接入了 Spotify,加上 Navidrome、Plex、Jellyfin 这些自托管音乐服务器也能连。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKick5glCRPBiaX647uMV7Y6A40uUEROMIcrHuTIYBLiaeD2smYpRl4O5Qel2ZpgsCspH6abZUluPgibLia4k9nmlicH6GEHBzSia3NwM/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你有自己的音乐库,也可以直接在终端里访问。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这样一来,不管你想听本地收藏、在线电台、播客节目,还是流媒体平台,都能在同一个终端窗口里搞定,再也不用来回切窗口了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我之前也用过一些终端播放器,如 cmus、mpd、mpv。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   很多终端播放器的问题是功能太简陋。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   连个均衡器都没有,更别提什么音质调节。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   cliamp 这一点做的很不错。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    它直接给你配了个 10 段参数均衡器 。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   频率范围覆盖 70Hz 到 16kHz,每个频段可以在 -12dB 到 +12dB 之间调整。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   更牛X的是它还内置了 10 个预设:Flat、Rock、Pop、Jazz、Classical、Bass Boost、Treble Boost、Vocal、Electronic、Acoustic。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLqbvOGUuTryOEAeibGsicowicKntkIMk4McfmSCg3XyS4HGMRXTDQYE8bhcdV5X8EwMTjD1KSvtrnOIgKkTwX7IiblK4GxxViahJibU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    还有一个实时频谱可视化器,能看到音频频率的动态变化。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   可视化模式有 8 种:Bars(条形)、Bricks(砖块)、Columns(柱状)、Wave(波形)、Scatter(散点)、Flame(火焰)、Retro(复古)、None(关闭)。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLPnRPpuDMEqPPncXMMj7y9cyVhobsZeAAM7icc95QEPsymQcGP5ubudprjZnO0R8PL3LYAeIKSLMvnY8TfynVNf6rXs8UW19M0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKZvA8RtyfdB8rXiaYvmdiasx4szJvefJB9M4F7psYFmMKbhFHIH5iczAKm2cgrBEUQ7cAm9JYbShIfiaIDYHhvFJ34jnt3WU4opJ8/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我最喜欢 Flame 模式,看起来像火焰在跳动,特别适合听摇滚的时候。Wave 模式也不错,比较优雅,适合听古典乐。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你对音质有要求,或者想针对不同的耳机、音箱做调校。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    还有个让我挺惊喜的功能——它内置了 30,000+ 在线电台。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   通过 Radio Browser 目录集成。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLWfRpibzwDu5aVCPCicC6vVXey8AToKleT8kYAiatcjuicYc12gC4M2vgADwA3Lly8IveicJ7QQGTZxibARzRJ9KYfsGbnF6zwukLc8/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   按 R 键就能浏览和搜索,想听什么电台直接选就行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    cliamp 的安装方式很丰富,基本覆盖了主流平台。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   macOS 用户可以直接用 Homebrew 安装:
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;brew install bjarneo/cliamp/cliamp&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Arch Linux 用户可以通过 AUR 安装:
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;yay -S cliamp&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   其他 Linux 发行版和 Windows 用户可以下载预编译二进制。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJYaHUxTQCBcCMDNFzp0IJDiczicLnOVlngZiagiaosCzaicVMBmOnFwpL1B1wAKSeBGqpbonZzoeIXlsnEqc7j5CcNStvu8wygh3QA/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=9" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   安装完成后,最简单的用法就是:
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;cliamp ~/Music  &lt;/span&gt;&lt;span style="color: #5c6370;font-style: italic;line-height: 26px;"&gt;&lt;span&gt;# 播放本地音乐目录&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   或者直接播放一个 URL:
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;cliamp https://example.com/stream&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果想配置 Spotify、Navidrome 这些远程音源,可以运行:
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;cliamp setup&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它会通过交互式向导帮你配置,验证连接后自动写入配置文件。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   配置文件位于
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    ~/.config/cliamp/config.toml
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   ,你可以手动编辑它:
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;# 默认音量 (范围: -30 到 6)&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;volume = 0&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;# 重复模式: "off", "all", 或 "one"&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;repeat = "off"&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;# 启用随机播放&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;shuffle = false&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;# 启用单声道输出&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;mono = false&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;# EQ 预设&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;eq_preset = "Flat"&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;# 10 段 EQ 增益 (范围: -12 到 12)&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;eq = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;# 主题&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;theme = "catppuccin"&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   进入播放界面后,按 Ctrl+K 可以看到所有快捷键。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   按 R 可以浏览在线电台。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    主题这块儿做得也挺用心。cliamp 内置了 20 个精心设计的主题。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblL1DwoCz6kDIkiaHCdnIVZAczyB6VQeKviafnbpNhtRHzaiaoF4OyHeFxujpLnJffKyPQ6Hugo3JpIhicRpZa51icYZxibvunSpJgkL8/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=10" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;ul class="list-paddingleft-1" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: black;list-style-type: disc;"&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
     &lt;span&gt;
      catppuccin
     &lt;/span&gt;
    &lt;/strong&gt;
    &lt;span&gt;
     : 流行的 Catppuccin 配色,柔和舒适
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
     &lt;span&gt;
      dracula
     &lt;/span&gt;
    &lt;/strong&gt;
    &lt;span&gt;
     : 经典的 Dracula 深色主题
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
     &lt;span&gt;
      gruvbox
     &lt;/span&gt;
    &lt;/strong&gt;
    &lt;span&gt;
     : 复古风格的 Gruvbox
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
     &lt;span&gt;
      nord
     &lt;/span&gt;
    &lt;/strong&gt;
    &lt;span&gt;
     : 冷色调的 Nord 主题
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
     &lt;span&gt;
      tokyo-night
     &lt;/span&gt;
    &lt;/strong&gt;
    &lt;span&gt;
     : 东京夜景风格,赛博朋克感十足
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
  &lt;li&gt;
   &lt;section powered-by="werss" style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1,1,1);font-weight: 500;font-size: 15px;"&gt;
    &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
     &lt;span&gt;
      vantablack
     &lt;/span&gt;
    &lt;/strong&gt;
    &lt;span&gt;
     : 极致黑色主题
    &lt;/span&gt;
   &lt;/section&gt;
  &lt;/li&gt;
 &lt;/ul&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我挨个试了一遍,最中意 catppuccin 和 tokyo-night。catppuccin 的配色很柔和,长时间看也不累眼;tokyo-night 有种赛博朋克的感觉,看着就酷。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   像自己弄一个主题只需要在
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    ~/.config/cliamp/themes/
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   目录下创建一个 .toml 文件:
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;mkdir -p ~/.config/cliamp/themes&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   然后创建一个主题文件,比如
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    mytheme.toml
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   :
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;accent = "&lt;a class="wx_topic_link" data-recommend="" data-topic="1" href="javascript:;" link-id="7827" style="color: #576B95 !important;" topic-id="mos6q6an-b39kha"&gt;#268bd2&lt;/a&gt;"&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;bright_fg = "&lt;a class="wx_topic_link" data-recommend="" data-topic="1" href="javascript:;" link-id="2af6" style="color: #576B95 !important;" topic-id="mos6q6an-1x821f"&gt;#eee8d5&lt;/a&gt;"&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;fg = "&lt;a class="wx_topic_link" data-recommend="" data-topic="1" href="javascript:;" link-id="5cb0" style="color: #576B95 !important;" topic-id="mos6q6an-u91rv2"&gt;#839496&lt;/a&gt;"&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;green = "&lt;a class="wx_topic_link" data-recommend="" data-topic="1" href="javascript:;" link-id="0ed5" style="color: #576B95 !important;" topic-id="mos6q6an-nuu5d1"&gt;#859900&lt;/a&gt;"&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;yellow = "&lt;a class="wx_topic_link" data-recommend="" data-topic="1" href="javascript:;" link-id="8a27" style="color: #576B95 !important;" topic-id="mos6q6an-4qh0lj"&gt;#b58900&lt;/a&gt;"&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;red = "&lt;a class="wx_topic_link" data-recommend="" data-topic="1" href="javascript:;" link-id="d815" style="color: #576B95 !important;" topic-id="mos6q6an-ndg5t0"&gt;#dc322f&lt;/a&gt;"&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   按 t 键就能看到你的主题出现在列表里了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   按 v 可以切换可视化模式。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h4 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 18px;"&gt;
  &lt;span&gt;
   除了基本功能,cliamp 还支持一些进阶玩法。
  &lt;/span&gt;
 &lt;/h4&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它支持Lua插件，社区已有音频气泡可视化、Last.fm听歌同步插件，会Lua还能自己开发扩展。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   还能SSH串流、IPC远程控制，可在服务器后台运行，本地SSH播放，也能被其他软件联动控制。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   普通用户用不上，但重度终端玩家、服务器部署场景特别好用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    快捷键一览
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   cliamp 的快捷键设计得挺合理的,大部分都是单键操作:
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJhzagBJAyFNzLND5wuVqu57lSuYcxrsztZ823iaXMWbNTS0a0ocA5zW8jPdGHBVyU45oD660cR1Mu9xUfKIr6t6OyYhwYpNSRA/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=11" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   整体来说,快捷键设计得还算直观,用几天就能记住。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    命令行参数速查
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   cliamp 还支持很多命令行参数。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLa0DON54ichhTMytEFb0sNoU9BWfS7ZZB3gaeAicicfibapcUwBKnm5t2Q2ZGibnbP9iciaMnic3aYNfmJBaXuDPT8C0Pf1MmKjYvIAqg/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=12" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这些参数可以组合使用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;cliamp --shuffle --volume -5 --theme tokyo-night --visualizer Flame ~/Music&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;h4 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 18px;"&gt;
  &lt;span&gt;
   写在最后
  &lt;/span&gt;
 &lt;/h4&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   cliamp整体不错，不过我要吐槽两个小缺点。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    01 遥测默认开启
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   ，虽说能手动关掉，但隐私相关功能本该让用户自己选择，默认收集数据真的观感一般。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 是编译教程太简略
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   ，新手很容易踩坑，网上不少人都吐槽编译失败，对新人不太友好。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我是终端重度患者，很喜欢这种简约的设计 ，不用切窗口，直接在命令行就能听歌，体验特别舒服。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   瑕不掩瑜，推荐终端玩家试试 ！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目基于 MIT 协议开放,感兴趣的同学可以去 GitHub 仓库看看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址:https://github.com/bjarneo/cliamp
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然看到这了,欢迎随手点赞、在看、转发,也可以给我个星标⭐,接收最新的文章,我们下期见!
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1116" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="margin-bottom: 0px;"&gt;
 &lt;span&gt;
  &lt;br/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/9CquyAfOiUBRzk6g_3-Ecg</link><pubDate>Tue, 05 May 2026 15:13:12 +0800</pubDate></item><item><id>3877547210-2247511868_1</id><title>2.8K Star 零依赖，AI全包Office三件套 。</title><description>一个多月，2800+ Star，这个项目火了。               AI Agent 办公自动化是今年最热的赛道之一，微软、OpenAI 都在推自己的方案。          但大部分方案要么绑死云端、要么闭源收费、要么功能单一。          最近刷到一个开源的OfficeCLI ，看起来很有用。          零依赖、运行起来只有一个二进制文件，让任何 AI Agent 用一行...</description><guid>https://mp.weixin.qq.com/s/dD3VdIco_Fec5G3sv_a2fw</guid><enclosure url="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblLxU7icEBMtv5ibWsGF8AYFQ9mE5ibnLaFY87RicolKlsafB4clu5xuicUMW29HIT9jVzEaDPPHNBCy5naHtMJUm8nU7iad1YP9u6XEQ/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1115" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   一个多月，2800+ Star，这个项目火了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblL7HoVxBqImja8iay51hvGRq0rJ8Zib0wicHWWal3CezUnlz06vSNghr3mcOAnyCDcpzDzRpgzzia4GgQU0kBTZpiayib2fsxAqNWeoQ/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   AI Agent 办公自动化是今年最热的赛道之一，微软、OpenAI 都在推自己的方案。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   但大部分方案要么绑死云端、要么闭源收费、要么功能单一。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   最近刷到一个开源的OfficeCLI ，看起来很有用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   零依赖、运行起来只有一个二进制文件，让任何 AI Agent 用一行命令就能完全控制 Word、Excel、PowerPoint。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   一句话总结：
  &lt;/span&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    OfficeCLI 是一个命令行工具，专为 AI Agent 打造的 Office 工具，轻松读写和修改 Word、Excel、PowerPoint 文件的
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span style="visibility: visible;"&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKy36LrWksc8CzBkocCMlV7viaq87uWpGfxzHI2sXOqPyHlzMqCtXx5y5fCDzgYdyLXkb9dnAf02vV6VickZJ2XZbASxF4GLaPoY/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   和传统 Python 库最大的不同在于，
  &lt;/span&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    它是从零开始为 AI Agent 设计的
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span style="visibility: visible;"&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   不用装 Office、不用装 .NET 运行时、不用管 XML 命名空间——下载一个二进制文件就能跑。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   macOS、Linux、Windows 全支持，真正做到了开箱即用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    Agent 不需要学三套不同的 API，只需要理解一套路径语法
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span style="visibility: visible;"&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   比如要修改第一张幻灯片的第一个形状文本，命令就是：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px; margin-bottom: 10px; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px; visibility: visible;"&gt;&lt;code style='overflow-x: auto; padding: 15px 16px 16px; color: rgb(171, 178, 191); display: -webkit-box; font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace; font-size: 12px; background: rgb(40, 44, 52); border-radius: 5px; visibility: visible;'&gt;&lt;span style="visibility: visible;"&gt;officecli &lt;/span&gt;&lt;span style="color: rgb(230, 192, 123); line-height: 26px; visibility: visible;"&gt;&lt;span style="visibility: visible;"&gt;set&lt;/span&gt;&lt;/span&gt;&lt;span style="visibility: visible;"&gt; deck.pptx &lt;/span&gt;&lt;span style="color: rgb(152, 195, 121); line-height: 26px; visibility: visible;"&gt;&lt;span style="visibility: visible;"&gt;'/slide[1]/shape[1]'&lt;/span&gt;&lt;/span&gt;&lt;span style="visibility: visible;"&gt; --prop text=&lt;/span&gt;&lt;span style="color: rgb(152, 195, 121); line-height: 26px; visibility: visible;"&gt;&lt;span style="visibility: visible;"&gt;"Hello"&lt;/span&gt;&lt;/span&gt;&lt;span style="visibility: visible;"&gt;&lt;br style="visibility: visible;"/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   所有命令都支持
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    --json
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   输出，返回结构化数据。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Agent 拿到就能直接用，不用再写正则去解析。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我看到这个演示的时候还挺惊讶的，整个 PPT 创建过程完全由 AI Agent 驱动，没有任何人工干预：
  &lt;/span&gt;
 &lt;/p&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="text-align: center;"&gt;
 &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIqaTbBu9fLtjnrJiaV4X34robcLzIOvX9e6JVk41IgJLCINkXCJhckYS6VqZhPWV1AAlf5ZJBb7TcO7Mun9IGVYbxEs50OniabI/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="width: 562px !important; height: auto !important; visibility: visible !important;"/&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; margin-bottom: 0px;"&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   下面来看看它具体能做什么。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Word 支持段落、表格、页眉页脚、水印、目录、公式、表单字段，还有完整的国际化支持，包括从右到左的文字排版。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Word 文档生成的效果还不错。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss" style="text-align: center;"&gt;
  &lt;img src="https://mmbiz.qpic.cn/mmbiz_gif/VDCUoW3UiblJcwXyOQBGoEiaqlKEmiaT1vPibT1OPhGic7whXNCabib0j2llcnbJge1xAVY15AibGQn0gW7vjuibdtyK35LElVIVR6TxhXTibp2PHTU8/640?wx_fmt=gif&amp;amp;from=appmsg&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="width: 560px !important; height: auto !important; visibility: visible !important;"/&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   &lt;br/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Excel 支持单元格、公式（150+ 内置函数自动求值）、数据透视表、图表、条件格式、CSV 导入。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Excel 这块我测得比较多，公式支持确实完善：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_gif/VDCUoW3UiblLWn4Q2Bic19k1qfib2ic49P6JfJ3ibvS2FZGicbd9yYxfakibiaL9TOVzgU3JzcPjdoeMia4QrVsKicqhicyJLyiakNQ6XglBxURkhb2vIy4/640?wx_fmt=gif&amp;amp;from=appmsg&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   150+ 内置函数都能自动求值，这点对于做数据分析的朋友应该挺有用的：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_gif/VDCUoW3UiblK6iaPVrERcJnBQrPJJ0oMt4RQWM9uyrTVLmXyPEy6VgHIeKYPeCE0ib2Hibpy3hn9SjkCBw1qbMwPQW5ySvMjyNrXT8uM0RSlgwg/640?wx_fmt=gif&amp;amp;from=appmsg&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   PowerPoint 支持幻灯片、形状、图表、3D 模型、动画、Morph 过渡效果。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目里还放了一些太空主题的 PPT 示例，我看了下确实挺酷的：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_gif/VDCUoW3UiblJBjBsUvthciaTNFuyzkLEujKrbsDUhLz5IHDMibjBlOldbRVIn4RGDK5JnTDYekKqSFcAmSn4HicLmZrKQD2jKeYkWxpc2Z6UibRs/640?wx_fmt=gif&amp;amp;from=appmsg&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_gif/VDCUoW3UiblKkO2pibtW6kdpsvoy1waIOeq0RLCuX2vrJeWxeUlznTvazP4woGuOkC3TtM1UszIiaRpK3CHVoDoicyNUURLe3pZUhNd8oVXhrZU/640?wx_fmt=gif&amp;amp;from=appmsg&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_gif/VDCUoW3UiblJkEG0sbrbq8YgAdrRxKsiadhZWCAIx7Lspnn0Ks9xzqzibibjPWP38iaKEv677Dpw1XZP76gg3iblg73nvibqUicPeZzQzM07CoNfwGg/640?wx_fmt=gif&amp;amp;from=appmsg&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这些全部由 AI Agent 通过 OfficeCLI 生成，没用任何模板，也没人工编辑过。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   还有一个我挺喜欢的功能是实时预览。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   用
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    watch
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   命令启动一个本地服务器，浏览器里就能实时看到文档变化。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   每次修改自动刷新，对于调试和迭代特别方便。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Excel 的预览甚至支持原生风格的单元格选择和拖拽重定位图表，我录了个动图：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_gif/VDCUoW3UiblKZNgXtGeb3icRzIbNdXJUfYHR9bibANoyxAb9NVS9bUEwNx0ZD08AjibqduK4QgVBdelgZuXnG34guJga0f3P3JctPvZdQbXcMok/640?wx_fmt=gif&amp;amp;from=appmsg&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=9" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   功能覆盖确实比较完整，但 OfficeCLI 最大的亮点还是与 AI Agent 的无缝集成。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   对于 AI Agent 集成，它内置了 MCP 服务器。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   一条命令就能注册到 Claude Code、Cursor、VS Code、LM Studio 这些工具里：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;officecli mcp claude&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    它还自带 9 个专业技能包。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   比如生成投资人路演 Deck、学术论文、财务模型、数据仪表板。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这些技能包本质上是预置的工作流模板，让 Agent 不用从零开始设计文档结构。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我挑了几个觉得比较实用的案例给大家看看：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   学术论文，支持复杂公式排版：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLB2M08B49nm7iaPibuBRrHXtKbTKpTGuJ7KcamCJmBTYrWibfQvpmP88TN7CDyecOzeibQuiaEGyEOFXONda2MGbCmmnNtczede4Fw/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=10" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   销售数据仪表板，图表和条件格式都支持：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLw9Hy7oWa0v5Qq3awFxk770Jtq1T4HlAj3ibTNN3B2ugHsnGFoFmoh503FOpTMejpVjgiaTEhibHKD2FfSKic6PxIq5EfODnpsmb8/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=11" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目提案文档，格式排版都比较专业：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJfXndt4N4R9PAVwfITEPwf58WR91Kbo9yFqdbTLI50ZAkBVlYTITPHpnhtrnSctuud6ChiaJTMseVDZTSBahlq9Ed8sYMPiamrc/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=12" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如何部署你的第一个 OfficeCLI
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   看完功能介绍，是不是想动手试试？下面来看看如何快速上手。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   1）一键安装
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   macOS 或 Linux，一行命令搞定。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;curl -fsSL https://raw.githubusercontent.com/iOfficeAI/OfficeCLI/main/install.sh | bash&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Windows打开 PowerShell 也一行命令可以安装。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;irm https://raw.githubusercontent.com/iOfficeAI/OfficeCLI/main/install.ps1 | iex&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   2）创建第一个文档
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   安装完命令行直接运行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;officecli create deck.pptx&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   一个空白 PPT 就创建好了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   3）添加内容
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;officecli add deck.pptx / --&lt;/span&gt;&lt;span style="color: #e6c07b;line-height: 26px;"&gt;&lt;span&gt;type&lt;/span&gt;&lt;/span&gt;&lt;span&gt; slide --prop title=&lt;/span&gt;&lt;span style="color: #98c379;line-height: 26px;"&gt;&lt;span&gt;"Hello, World!"&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   4）实时预览
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;officecli watch deck.pptx&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   浏览器打开 http://localhost:26315，就能看到实时预览。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_gif/VDCUoW3UiblIpGkEw00JWlcogzfiax8aKQIVMexmibEadAQqYNBcNTDlnOyVGjFnuns8tlqsnpsQrr9nupwl0aF4OAXXnLian4P0iaGXBxqwNZOA/640?wx_fmt=gif&amp;amp;from=appmsg&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=13" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   上手之后，你可能会好奇它的设计理念。
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    它把操作分成了三层。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   L1 为语义视图，直接执行 view 命令，便可查看文档大纲、纯文本以及问题列表。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   L2 属于 DOM 元素操作层面，可通过 get、set、add、remove 等命令，对具体元素进行操控。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   L3 是原始 XML 底层，倘若 L2 层级的操作无法满足需求，就可以借助 XPath 直接修改底层 XML。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss" style="text-align: center;"&gt;
  &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKFjDQ1jBIWGN4rK50CTrGPFRonKE25TOsJbDStzWqvIaSYAO8IzkDjNJibkVLJ3S3vosxeezRibybj01vSANaX2Z1Dk3tgiaMyZk/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=14" style="height: auto !important; visibility: visible !important; width: 680px !important;"/&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   简单说就是大部分时候用简单的命令就够了，实在搞不定才需要深入到底层。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    有几个需要注意的地方。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   路径语法不是标准 XPath，需要稍微适应一下。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   部分特别偏门的 Office 功能可能需要通过 L3 原始 XML 层操作。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   还有社区讨论和真实用户反馈还不多，遇到问题可能得自己翻文档或 Issue。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h4 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 18px;"&gt;
  &lt;span&gt;
   写在最后
  &lt;/span&gt;
 &lt;/h4&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    一行命令，不用管 XML，不用学三套 API
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我觉得这才是 AI Agent 真正需要的，不是多聪明的模型，而是顺手的工具。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   感兴趣的朋友，建议花半小时试试。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目基于 Apache-2.0 协议开放，感兴趣的同学可以去 GitHub 仓库看看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/iOfficeAI/OfficeCLI
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然看到这了，欢迎随手点赞、在看、转发，也可以给我个星标⭐，接收最新的文章，我们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1115" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/dD3VdIco_Fec5G3sv_a2fw</link><pubDate>Mon, 04 May 2026 15:22:33 +0800</pubDate></item><item><id>3877547210-2247511848_1</id><title>仅 1.5MB 提词器 ，我不打算再找了 。</title><description>仅 1.5MB 大小。          上线不到三个月，GitHub Star 突破 3100。               这款叫 Textream 开源的 macOS 提词器，正在视频自媒体里悄悄传播。          一句话说清楚。            实时追踪你的语音，逐词高亮显示脚本。你念到哪，它就亮到哪。完全本地运行。            不需要联网，不需要上传任何内容到云端，...</description><guid>https://mp.weixin.qq.com/s/bhWMQ6uxZoWVKrG3nAxAvA</guid><enclosure url="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblIGEEKX4Cibbd69KtOUT47DjQDa2V4h0UwZc4icR3bYWsNBanSkBia6Br1icshTKb26PH4fEiczlIiar7r5ibC7J9datJOL7V3ibcR6GTY/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1115" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   仅 1.5MB 大小。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   上线不到三个月，GitHub Star 突破 3100。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLuW9DsEXbN7ZT5z53svCD5Jh7ZjCyRa1MPIobgLJ9YuUibCfKwQJK6QW8jrqE6BY4VwHEWdWFy07mCuXwPicjOy83UP6ACOZNdY/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   这款叫 Textream 开源的 macOS 提词器，正在视频自媒体里悄悄传播。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   一句话说清楚。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    实时追踪你的语音，逐词高亮显示脚本。你念到哪，它就亮到哪。完全本地运行。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   不需要联网，不需要上传任何内容到云端，所有语音识别都在你的 Mac 上完成。对于在意隐私的内容创作者来说，这点确实加分。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLadI4ibWfIiaUXVGvTPbhb1l0GxSeRuWV3H6u4FC2vNm9iaZES2kkN8zd55bCJltaSzIicBvmiaP3wQ3TJ3toE0aVVRkOArwy9ccP0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   我之前要做一个教程临时要用一个提示器。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   发现好些传统提词器的滚动节奏，永远跟不上真人说话的节奏，稍微停顿一下喝口水，或者想加个语气词，脚本早就滚到九霄云外去了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   这种人追着机器跑的体验，用过的都知道有多操蛋。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   这次的Textream 直接调用 macOS 原生语音识别，在本地实时识别你说的每一个词。点击任意一个词，就能直接跳转过去。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    作者设计了三种引导模式，适应不同场景。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIj1icHcWEMYXV5DSMpHaTtdjukoticAX4Ww2xB9TylpcOzJGlx3pVHsZqeTlk2yMm906uRsicztrhOu4TBpaUPlD1kZUseich6VjE/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   第一种是 Word Tracking，也就是语音追踪模式。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开口说话，它就跟着高亮；你停下来，它也停下来。支持几十种语言，中文完全没问题。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   第二种是 Classic 模式，就是传统的匀速滚动。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   习惯按固定节奏念，或者不想开麦克风，这个模式更合适。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它语速能在0.5～8 词每秒之间随便调，有时候需要快速找文字位置，还能用鼠标滚轮随时追赶进度。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   第三种是Voice-Activated语音触发模式，就是你说话它就跟着滚动，一停下来它也自动暂停。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   很适合想要自然朗读节奏、不想被固定语速卡死的情况。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h4 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 18px;"&gt;
  &lt;span&gt;
   提供三种窗口模式，想怎么布局就怎么来。
  &lt;/span&gt;
 &lt;/h4&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    01 刘海置顶模式。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它把提词器卡在MacBook刘海下边，搞的很像动岛，妥妥的风格风 ，一直悬浮在最上层，其它窗口根本挡不住。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss" style="text-align: center;"&gt;
  &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJ2uv567jafc2m2njhQSaMsGyu88ZibaDwMIRKLCuwHwB9nDWpBd15wZv7ibYlu15WQia5olrVfeX4e8ibclgAxb5J92LklbxenficU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="width: 565px !important; height: auto !important; visibility: visible !important;"/&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    02 悬浮窗口模式。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你可以把窗口到处拖动，随便放到哪个位置都行。外加上磨砂可调透明度的毛玻璃效果，质感体验拉满。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    03 全屏沉浸模式。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   想保持专注做视频就用这个模式。整个画面干干净净，不受打扰。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h4 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 18px;"&gt;
  &lt;span&gt;
   外部显示器和隐私保护。
  &lt;/span&gt;
 &lt;/h4&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它还能投屏到另外一个显示器上，比如用苹果的 Sidecar 功能连上 iPad，就能拿它当个副屏来提词。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   就连专业实体提词器也能完美适配，横竖翻转、各种镜像模式全都支持，一键就能调好。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   另外开 Zoom 会议、录屏做演示的时候，如果设置隐藏屏幕共享画面，别人完全看不到你的提词器，只有自己能看见。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJn5nNWgVFp74Z69JKOX5eeQ8jmfnmiaKhc7fjw3H2OiaWcay2PNIGYrYLrKsqqGwaZcEu2CkuSjKLvMtP1csMXVwBqUCbh3Y0ibM/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    支持远程连接和导演模式。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   远程连接功能会在本地启动一个轻量的 HTTP + WebSocket 服务器，默认用 7373端口。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   浏览器打开
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    localhost:7373
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   用手机、平板直接扫个二维码就行，不用装任何额外 APP，打开浏览器就能实时同步提词画面。像文字高亮、进度更新全部实时同步。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你是一个导演。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   那还可以开启导演协作模式，场外搭档可以远程帮你改文案、控脚本节奏。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   对方只需要打开网页，粘贴或现场编辑稿子，一键就能控制你的提词器启动。读过的内容会自动锁定标亮，界面只聚焦还没念的部分。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKSBbQs0kT8WibFGFZsSD6F78n9BTLS7Pb06rI6PjVeciaicoRDAYsbD8VKOrtxaicE8jdXkMxqbQ6o5gGMNj0l54R3G6X2mhNFkKs/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    可以随意调整字体和显示颜色。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   字体支持 Sans、Serif、Mono ，还有专门为阅读障碍人群设计的OpenDyslexic字体，这个细节有心了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   字号从 14pt 到 24pt 可以随意调整，高亮颜色有白、黄、绿、蓝、粉、橙六种。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIBIngGA85icvmpy9WGHAibL07kEP8ropsTP06jxmqFhXicVGaFps5SgSOO4lrVO6cKD3BczibnBibTo0Z8iaukEbu9zTmiaMTusKia6Fg/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblI3d5oeh41TSfic5icMZpQXYDciad8wsLeRtVWXkSiaiab8tO8MyicMibpuCTKicRRjkqOA76ut1vnTKCxaDLsmmZDnfSzqqORwmEjVbes/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   看到这我们说一下咋安装，有两种方式。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你可以直接从 GitHub Releases 下载 DMG 文件，Apple Silicon 和 Intel 都能运行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblI5wNhIRyWG703yfH1T9cxmnr1QXn9vy6BpgLg784L6SY2lxkmpn69q8qa99cMN1HG0kJX1aibBW32Uxnnp5ia8yF43lviaPKHoibQ/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   想用 Homebrew 安装只需要运行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;brew install f/textream/textream&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   唯一需要注意的是它没有通过 Mac App Store 公证，首次启动可能会被 macOS 拦截。需要在终端运行
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    xattr -cr /Applications/Textream.app
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   来解决。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIByxjicDdVtxfPkUKaO7fDAYwJiacgAPt0STgicYg5vM5zYXK2kyiaxhuu6Vuwea4jicQtsYam6mtxzaBz2FMXAZwHV1VOM9wrPcvk/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=9" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   还有一点对系统版本有要求，要macOS 15 Sequoia 及以上。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    和其他工具怎么选？
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   简单说：需要跨平台、企业级功能，选 PromptSmart；只想快速念稿、不想联网上传，选 Textream。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Textream 的优势就是轻和本地，打开就能用，不用注册，不用订阅，不用担心内容泄露。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   当然，Textream 也并非全能。先把短板和适用范围讲清楚。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   目前只支持 macOS。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   很可惜Windows 和 Linux 用户暂时用不了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目也没有明确指定开源许可证，虽然代码公开，但在法律层面还是个模糊地带。如果你在意许可证问题，可能需要先去 GitHub 上确认一下。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   还有一个需要注意的地方：它不做云端同步，脚本只存在本地。有多个终端同步需求的朋友要自己想办法搞一下。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h4 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 18px;"&gt;
  &lt;span&gt;
   写在最后
  &lt;/span&gt;
 &lt;/h4&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我偶尔会录一些系统教程视频，不频繁，但每次都需要个提词器。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   说实话之前找过好几款，体验都不太好。有的要注册账号，有的要把脚本传到云端，还有的要按月付费。我就想临时用一下，搞这么多门槛，真麻烦。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   今天刷到 Textream，试了一下，这就是我想要的——下载、打开、粘贴脚本、开始录，完事。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    它不会取代你电脑里的 PromptSmart 或其他商业提词器，但当你只想快速干完一件事就走的时候，它会是你第一个想打开的工具。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你也像我一样，只是偶尔需要个提词器，不想折腾那些有的没的，可以试试。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/f/textream
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然看到这了，欢迎随手点赞、在看、转发，也可以给我个星标⭐，接收最新的文章，我们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1115" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/bhWMQ6uxZoWVKrG3nAxAvA</link><pubDate>Sun, 03 May 2026 15:16:00 +0800</pubDate></item><item><id>3877547210-2247511833_1</id><title>牛皮 ！把VS Code大小做到 16MB 。</title><description>一个月1800+ Star。          这个数字在开源世界里不算炸裂，不过SideX 做的事情有点意思。          它把          VS Code 的整套 workbench          搬到了 Tauri 上，甩掉了 Electron 那个几百 MB 的 Chromium 包。               体积从近          800MB 压到了 16MB  ...</description><guid>https://mp.weixin.qq.com/s/2RnLZ1OIl2LXeeTjCfsuBw</guid><enclosure url="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblK6iaf94UIHJ82icrlkvqZFjIe2l82JUe0YNusqWFkA0RljjxfricvVFJmQEickKJdQM5cbVhic2D2TyChJfIibXzM1uPQBdEwLzRTmc/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1115" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   一个月1800+ Star。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   这个数字在开源世界里不算炸裂，不过SideX 做的事情有点意思。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   它把
  &lt;/span&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    VS Code 的整套 workbench
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span style="visibility: visible;"&gt;
   搬到了 Tauri 上，甩掉了 Electron 那个几百 MB 的 Chromium 包。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJzIiaA5rpYtSPtFbib5IGZhL1FNIuSjj5r5o2sFGAzAodKagdaPwAVrKHS949xic3Fg0Aj97rtvrHh03XtyIzv5abvG9lCyMBy0Q/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   体积从近
  &lt;/span&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    800MB 压到了 16MB
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span style="visibility: visible;"&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   官方给出的对比图很直观——一个是 797.8 MB，一个是 16.4 MB。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblLsvaFwrVJ5LJvrCBSiclC4gjlhfunawmWEAzeApGno6gqcEbnGDHK91CAwhaDvumkNfq8uCJ6Iicia7QjXqvS0r4DQX3vMOx6icus/640?wx_fmt=jpeg&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px; text-align: center; color: rgb(136, 136, 136); display: block; font-size: 12px; font-family: PingFangSC-Light; visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    SideX 16.4 MB vs VSCode 797.8 MB
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    VS Code 的内存占用，几乎全部来自它捆绑的 Chromium
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span style="visibility: visible;"&gt;
   ，不是编辑器本身。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   我以前一直纳闷，明明只是个编辑器，怎么比一些 IDE 还能吃内存，后来才知道Electron 的设计决定了每个应用都要自带一个完整的浏览器引擎，这也解释了Electron的软件都比较大的原因。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKn4Zd16WiaOGFshRF2CthP0v3hjOxefFcUr2iczqFXNyPhd2wFciaAV6WWiaKeSj5amjAIjF5DLibLfyxOuCXzKLNb7I4Q4IGxjk8o/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   这事有意思点有两个地方。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   SideX 的思路很直接：
  &lt;/span&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    用系统自带的 webview 替代 Chromium
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span style="visibility: visible;"&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    1. 渲染方面。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Mac 这边直接用 WKWebView，能跟 Safari 共用内核内存。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Windows 就用 WebView2。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Linux 平台则采用 WebKitGTK 来实现。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这些 webview 本来就在你的电脑里面，不用额外打包，这也是它能小体积的原因。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    2. 内存方面。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   官方的目标是
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    macOS 空闲状态下控制在 200MB 以内
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不过他们也说了，正式的基准测试要等应用稳定之后才会发布。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Windows 上的情况会更复杂一些，WebView2 的内存表现是 Tauri 生态里正在讨论的话题。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   从这些操作不难看出SideX没想山寨一个 VS Code，而是直接移植了 VS Code 的 workbench。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    这样做的好处是你熟悉的那些东西都在。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLqshbiaYO0wibQDib9zD7UcKR8VojPH3w9N2BGbHGia9qCVMUbytrHHhMH9uHu88P4unKtrBwE0949dDbJf3NpcPsfGU0XjTq7Ayg/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Monaco 编辑器：语法高亮和基础 IntelliSense 都能用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   文件浏览器：打开文件夹、创建、重命名、删除。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   集成终端：完整 PTY 支持，用的是 Rust 的 portable-pty，Shell 自动检测、大小调整、信号传递都没问题。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Git 集成：状态查看、diff 对比、提交日志、stage/commit、分支管理、push/pull/fetch、stash/reset 全支持。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   主题系统：直接从 VS Code 目录搬过来的，内置多套主题。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   文件搜索：Rust 后端，dashmap + rayon + regex 实现并行索引。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   还有一个值得说的点：扩展安装。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   SideX 用的是
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    Open VSX Registry
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   ，这是 VS Code Marketplace 的开源替代。像VSCodium、Gitpod 也在用它。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJB4dUA1W7ibhsJzicR98ALsg4qCUT6r51Xk1vHxyXuGcheUQ6ISOw3MibmRSJ2D50mibcqSGmct0WWdIOsxUibfK67CkWFnkyibR0oo/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不过扩展宿主目前还在开发中，用的是 Sidecar 进程模式，所以扩展功能还不完整。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   和 Zed、Lapce 有什么区别？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Zed 和 Lapce 我都试过，确实快，但用起来总有点别扭——快捷键不一样、插件生态要重新适应、有些习惯的操作找不到在哪。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它们是用 Rust 重新写的编辑器，思路是「另起炉灶」。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   SideX 不一样：
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    不重新造编辑器，只换底层架构。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   前端直接移植 VS Code 的 TypeScript workbench 代码，后端用 Rust 重写原生模块，渲染层用系统 webview。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   好处是你不用重新学一个新编辑器，代价是调试器和扩展宿主还在开发中。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   想体验的朋友可以到Github直接下载安装包。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLjS8F1ib4KES8yADp2ohLZmLianp4ib1o2Fic9UxP4k86VD43oc52tMAuu7VXic9zpypl3SMFfWV52k0jVSLgPDVIa74rPXmUMx3rM/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   有macOS，Windows，Linux的安装包，按需自取。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我实际体验下来macOS体验会更好一些，因为 WKWebView 和 Safari 共享内存，节省效果最明显。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Windows 上 WebView2 的表现还在优化中。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   还有一些小问题，我也提前说清楚。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目目前标记为
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    「Early release」
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   ，核心编辑和终端是稳定的，但扩展宿主和调试器还在开发中。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你依赖某些特定的 VS Code 扩展，可能要等等看兼容性如何。我自己试的时候发现有些插件确实装不上，不过基础的 Python、Go 语法高亮倒是没问题。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   另外，
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    远程开发功能（SSH、WSL、容器）目前没有提到
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   ，如果你需要这些能力，VS Code 还是更成熟的选择。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   社区里也有人质疑这个项目是不是 LLM 生成的，担心后面烂尾。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这种担忧也很合理，毕竟把 VS Code 的整个架构迁移到 Tauri 上，工作量不小。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   从另一个角度看，项目开源一个月就有 1800+ Star，说明
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    像SideX这种轻量化的编辑器很多人都在关注。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJnXETyPScHLY72rKRYiaRbpicWJVu7cRxiamtssN7DZHvyNicQHNB9DxpcnXrbWSxAVkUaOI29nKTuQ0hCm1CWx7nY60koMTjbfiaQ/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 666.390625px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   VS Code 和 SideX，怎么选？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   看到这里，可能很多朋友会纠结，VS Code 和 SideX，到底选哪一个比较好？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我的建议是，两者皆可用，但得分场景。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    场景 A：看重扩展生态和远程开发，就选 VS Code
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你依赖特定的 VS Code 扩展，或者需要 SSH、WSL、容器等远程开发功能，VS Code 在生态完整性上还是更成熟的选择。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    场景 B：追求轻量和低配机器部署，选 SideX
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你的机器配置有限，或者只是需要基础的代码编辑、终端、Git 操作，SideX 的轻量优势就很明显了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   对于低配云主机或者老笔记本本来说，SideX 是一个很好的选择。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h4 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 18px;"&gt;
  &lt;span&gt;
   写在最后
  &lt;/span&gt;
 &lt;/h4&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   现阶段，
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    桌面应用的「重」已经成了开发者的心病
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Electron 让跨平台开发变得简单，但也让每个应用都背上了 Chromium 的包袱。我电脑上装了几个 Electron 应用，光 Chrome 进程就能排一大片。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   SideX站出来提供了一种新的思路
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    不重新造轮子，只换更轻的引擎
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它用
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    Tauri + Rust
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   的组合，把 VS Code 从 Electron 的泥潭里拉了出来。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   实话说我挺期待这个项目的发展。如果扩展和调试器能做完善，我大概率会把 VS Code 换掉，毕竟谁不想用一个 16MB 的编辑器呢？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   想尝鲜的朋友可以试试，但别急着把 VS Code 卸了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目基于 MIT 协议开放，感兴趣的同学可以去 GitHub 仓库看看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   GitHub 项目地址：https://github.com/Sidenai/sidex
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然看到这了，欢迎随手点赞、在看、转发，也可以给我个星标⭐，接收最新的文章，我们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1115" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/2RnLZ1OIl2LXeeTjCfsuBw</link><pubDate>Sat, 02 May 2026 15:13:59 +0800</pubDate></item><item><id>3877547210-2247511822_1</id><title>不到6MB ，这个PDF神器已足够用了 。</title><description>两周时间，一个刚开源的 PDF 编辑器就拿到了 1000+ Star。          没什么宣传，没什么大厂背书，就是一个 Windows 上的单文件小工具，压缩包只有 6MB。          但它在开发者圈子里传得很快，原因很简单：它真的做到了一件事——不订阅、不注册、不联网、不遥测，打开就能干活。          这个项目叫 KillerPDF。          刚开源两周，热度涨...</description><guid>https://mp.weixin.qq.com/s/-6ef2s_LYF9WqaIvqK4cKQ</guid><enclosure url="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblKLEGM1ZgPhzY1T1icrImjDrH3VlOETgLh67oZK2XafjriaiaZIctLgPWbadrGzSTib3xLJRDm66xZKkjA9Wx6HISfBejWl1zicq41M/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1116" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   两周时间，一个刚开源的 PDF 编辑器就拿到了 1000+ Star。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   没什么宣传，没什么大厂背书，就是一个 Windows 上的单文件小工具，压缩包只有 6MB。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   但它在开发者圈子里传得很快，原因很简单：它真的做到了一件事——不订阅、不注册、不联网、不遥测，打开就能干活。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   这个项目叫 KillerPDF。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   刚开源两周，热度涨得挺快。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJtIvdAf4qHolwF3b13lBjrsBKznk4e3fCHdW064FJTtefT0vnIKZKic9xGmE14GiblmLVHvOFIgfz0MSpdqEG9l04awOEIaPO3Y/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 578px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    它就是一个用来快速查看、编辑、合并、拆分、批注、签名和打印 PDF 的本地工具
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span style="visibility: visible;"&gt;
   ，主打四个字，干净利落。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblJvgaSreRjEpoibKG1oVibg0jQpgJsdwkbE9JuPAoPBEvmJd6XsCjgQ736YbuxnJ1KjMSmSQywZibm2XguQZ9EBwVz0tNOSNxxz5k/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 578px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   支持绿色安装，不要登录，整个过程不需要联网 。整个安装包也就 6MB，下载解压直接运行 exe就可以了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   你会发现现在很多 PDF 工具越做越大，开个文件转圈半天，功能堆了一大堆，实际上很多日常根本用不到，时不时还弹窗催你开会员升级 。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px 5px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   KillerPDF主打一个小而美。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblL5muLichicjRBEvW4jhzyLU3J1wNNABbIzFAg4REM8M3goxzvQ6KY95lJB4cto02Bq3ABSQo5kW26AZeOjTwr0PvWOcp0UnjZws/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 578px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    KillerPDF 主界面
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   实用功能就集中在7大类，但每一项都很实用 。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    最基本的PDF查看和编辑。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   打开 PDF 直接编辑文字，还能自动适配原文字体，改完之后排版和谐统一 。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIGVz78ThgUsSL3icYkB5vJ5oEVIicfeduuiadv6p8w80QNxnvjadibwbicBIQbiciaSbU3DLvIUlPVQHImWjrS6vF7paJbRLlz7cFrbk/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 578px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   别看只是个基础功能，市面上很多免费工具要么根本没法直接改文字，要么一编辑就字体错乱、排版变形，体验特别差。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   日常只是改个名字、调整日期、订正错别字这类简单需求，用它就完全够用了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    PDF的合并和拆分也很方便。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   遇到多份 PDF 直接拖拽就能合成一个整文件，也能从一个长 PDF文件里把你想要的页面另存为一个新的 PDF 文件 。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   操作直观，页面顺序随手拖拽就能调换。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    批注和签名。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它也支持文字高亮、插文本框、随手手绘标记，像颜色、字号、透明度都能自由自定义。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   手写签名可以一次保存好，后续直接调用，随便放在文档任意位置。不用再打印纸质版手签、再扫描回电脑，标注重点、电子签字一步到位。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblILibC9G7QW1lEMJIM9K4CYDZTBLjbYbPjkVWWdZdcIDl7yd7j38ib8Wj9QDVmJMTZ8syvXlfLBz9GFGekVIoZf3CGnjP5WtXM48/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 578px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
  &lt;figcaption style="margin-top: 5px;text-align: center;color: #888;display: block;font-size: 12px;font-family: PingFangSC-Light;"&gt;
   &lt;span&gt;
    高亮与批注功能
   &lt;/span&gt;
  &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    全文搜索和复制。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   想找 PDF 里某个关键词，直接搜索就能定位，相关内容会高亮显示。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIIFAhlg9cEmj6jpvBl6wAuia3iayUyxrfFUT2TCRsIFnTSdAd50MVxMWicpwmNpPRoQMTU0qP9E96Jm1kPbEia5aH6YDDG4GaAGpg/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 578px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   文档文字也能直接选中复制。其实很多阅读器都有这功能，但是差异在于这个比较轻巧，秒开秒搜，不用漫长加载等待。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    打印和扁平化。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   打印文件时，所有批注、电子签名都会一并正常打印，不用额外再设置。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   自带的扁平化保存更好用，一键把 PDF 转成图片版式，别人没法随意篡改文字。发合同、交正式报备材料特别合适，从根源避免被私下改动内容。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJn8QiaEImC0A1gUd2NRTQibCuqib6icq1sYaZRgz2vtMD2KxhGI1tmicDyDHKuEV0QBiaq2zmxxZ57uIug0MtnGxekNgWCrAlaEVWLY/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 578px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    密码保护PDF支持。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我们日常常会碰到带密码保护的 PDF，很多工具碰上直接报错打不开。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   从 v1.2.0 版本开始，它会直接弹出密码输入框，输对密码就能正常打开编辑，兼容能力很到位。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    支持绿色安装。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   默认就是绿色便携版，点开即用。想要常规的安装模式，首次启动也能选择切换。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   安装后自动关联 PDF 格式、生成开始菜单快捷方式，还不用管理员权限，后期卸载也干干净净无残留。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIbOC73TvI5j53BKq2NZzwJLcRopau3eTx0mD4rGZxUqCFNOXSu347icMZUbhCjFeJDtlkP8BgHTAAtFIw9FR0T7b2fjl7C2w6Y/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 578px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   实话实说，
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    这款工具也并非全能，先把短板和适用范围讲清楚，大家按需选择就好。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   KillerPDF 本身就是轻量日常工具，没必要拿它对标专业的 Adobe 完整版，也不适合拿来做公司整套企业级文档管理。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   它
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    没有OCR文字识别
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   ，那种图片扫描版PDF，是没法提取、编辑里面文字的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   也
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    不做格式互转
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   ，不能把PDF直接转成Word、Excel这类文件。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   像专业的可填写表单制作、批量自动处理、云端多人协作这些高阶功能，它也都没有。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   还有一点要说明，目前仅适配
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    Windows 10/11 64位
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   系统，Mac 和 Linux 用户暂时没法安装使用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   下面具体介绍一下安装和使用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   去 GitHub Releases 页面下载 KillerPDF.zip，解压后双击 KillerPDF.exe。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLxia1LfibaQGCrMIYlckug2IVfjW5Qh9uibcpI6r1ngPQKJYMXoro6W6nKbLmLTP0ia4J91Ul2lwfrxq21IoHRFNa0Lk0Iic5WTNNY/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 20px auto; width: 578px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   首次启动会弹出一个对话框，问你要不要安装。如果只是临时用用，选运行就行；如果想把它设为默认 PDF 打开方式，选安装。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   整个过程不用配置环境，不用装运行时，Windows 10/11 自带的 .NET Framework 4.8 就够用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    和其他工具怎么选？
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   简单说：需要 OCR、格式转换、跨平台，选 PDFgear 或 PDF24；只想快速改字、签名、合并文件，选 KillerPDF。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   KillerPDF 的优势就是轻和快，打开就能干活，不用等加载，不用被弹窗骚扰。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h4 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 18px;"&gt;
  &lt;span&gt;
   &lt;span&gt;
    写在最后
   &lt;/span&gt;
  &lt;/span&gt;
 &lt;/h4&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   说实话，用完 KillerPDF 之后，我反而更清楚自己真正需要什么了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   以前总觉得 PDF 工具功能越多越好，结果装了一堆软件，打开要等半天，弹窗比功能还多。真正用到的，无非就是改几个字、签个名、拼几个文件。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   KillerPDF 就像一把趁手的小刀，不花哨，但该切的地方一刀到位。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    它不会取代你电脑里的 PDFgear 或 Acrobat，但当你只想快速干完一件事就走的时候，它会是你第一个想打开的工具。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目基于 GPLv3 协议开放，感兴趣的同学可以去 GitHub 仓库看看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源地址：https://github.com/SteveTheKiller/KillerPDF
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 5px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然看到这了，欢迎随手点赞、在看、转发，也可以给我个星标⭐，接收最新的文章，我们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1116" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/-6ef2s_LYF9WqaIvqK4cKQ</link><pubDate>Fri, 01 May 2026 15:16:35 +0800</pubDate></item><item><id>3877547210-2247511785_1</id><title>等了五年，彻底火了，Open AI看上的终端开源了。</title><description>等了五年，彻底火了，Open AI看上的终端开源了。</description><guid>https://mp.weixin.qq.com/s/imIGzAJxB74PGzdhgBU44A</guid><enclosure url="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblLjpb2TQeaEUF2DubkXB5Eye60yFGUdeY9aoiaSoYRgpC9VPl4wV5bHKP65DLYiaXN1zoXQVic3adKfuM0TibsBT0yA3CBCxFE4lK4/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded></content:encoded><link>https://mp.weixin.qq.com/s/imIGzAJxB74PGzdhgBU44A</link><pubDate>Thu, 30 Apr 2026 12:39:17 +0800</pubDate></item><item><id>3877547210-2247511765_1</id><title>搞AI画图有福了 ，看高手怎么玩gpt-image。</title><description>搞AI画图有福了 ，看高手怎么玩gpt-image。</description><guid>https://mp.weixin.qq.com/s/Xnon4yIwF70avvW9-yN5yg</guid><enclosure url="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblLm5CQDGeiahBIfmJiafJgjHrkWcaPYSaX5FdAEAEibdnAUeIKq58aft4GbLw4W23wJ83ASxtoyCgkcrETtpLpj8CJga3opVWcWxk/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded></content:encoded><link>https://mp.weixin.qq.com/s/Xnon4yIwF70avvW9-yN5yg</link><pubDate>Wed, 29 Apr 2026 15:09:00 +0800</pubDate></item><item><id>3877547210-2247511746_1</id><title>10天破万 Star，逆向Claude Mythos</title><description>最近GitHub 上有个项目爆了。          4 月 18 日创建的，10 天 Star 数就破了 10000。                    离谱的是作者 Kye Gomez 今年才 22 岁。          这个项目的名字叫 OpenMythos，仅仅68 KB大小，它只用 PyTorch 就实现的 Recurrent-Depth Transformer。         ...</description><guid>https://mp.weixin.qq.com/s/jqjyyGOzyohvPi9BzzJlnQ</guid><enclosure url="https://mmbiz.qpic.cn/mmbiz_jpg/VDCUoW3UiblLSxnQlkCLohpZETv7nuINlzapm99tnDYV3CMVL65KfFvN8tj3hlJ0AXn5VfG6IEWuW8xhu6OJerqDJgIic98FbFdXrYW0nzhcY/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1109" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   最近GitHub 上有个项目爆了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   4 月 18 日创建的，10 天 Star 数就破了 10000。
  &lt;/span&gt;
 &lt;/p&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="text-align: center; visibility: visible;"&gt;
 &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJJXrSjn0IzH9iaZXW0JozhmKygMf0CE7womZYsMMdMiaDwm5cEdDu49kRqrb0ojgmePX2dlZBEk8f5NfUHxCZqdDk3lL5LBdkAM/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="width: 550px !important; height: auto !important; visibility: visible !important;"/&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   离谱的是作者 Kye Gomez 今年才 22 岁。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   这个项目的名字叫 OpenMythos，仅仅68 KB大小，它只用 PyTorch 就实现的 Recurrent-Depth Transformer。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss" style="text-align: center; visibility: visible;"&gt;
  &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLr2sQiaHKIU8NGECMrI3t1lNtEc2azKWuxyThqjzwCubpqzFgkfAJBTK6y2Pt5XiarPlV2DhLzC9JoDsYmibc1mib8sMWbE3uClCU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="width: 554px !important; height: auto !important; visibility: visible !important;"/&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   一句话说清楚，
  &lt;/span&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    它是基于公开论文和社区假设，逆向重建 Anthropic Claude Mythos 的理论架构。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   为什么一个理论重建的项目会这么火？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   回头看，这和 Claude Mythos 本身的发布方式有很大关系。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   4 月 7 日，Anthropic 发布了 Claude Mythos Preview。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJM3xwQzMorrk72sQpbP9GjLCRfa8iakk0FyYy7cxwbPj9icyWbgCkUK5BJWn00utXYLdxU8ros3bOKoX29tw3xzQdFPtyqwu23M/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 646px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这不是一个普通的模型更新，而是比现有旗舰 Opus 更强大的新一代模型。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   官方数据显示，
  &lt;/span&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    自主识别了数千个高危零日漏洞，覆盖所有主流操作系统和网页浏览器。在 CyberGym 基准测试中得分 83.1%，在网络安全领域的能力超越几乎所有人类顶尖专家
   &lt;/span&gt;
  &lt;/strong&gt;
  &lt;span&gt;
   。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Mozilla 报告称，Mythos 在 Firefox 148 源代码中发现了 271 个零日漏洞，并在 Firefox 150 版本中完成修复。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJcefpV3oXWU3mMjCWQTEkb26NTQeaNEiaJU6GNgoOicgL7NK7uHggulCkNEcsNDREnehjicLoZMjKyhgicXHxPOZEZDjNudDP9PCw/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 646px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   但 Anthropic 做了一个出人意料的决定：拒绝向公众发布。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    原因是网络安全风险——发现漏洞的能力同样可以被用于攻击。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我整理了一下 Anthropic 披露的漏洞信息。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblK5uUyWTVb39iceJiaEmlXAdtHTMtmKnOe1sicUPBbKpGn14Bf9QQc7xXnVhD437FWMNuydWot3YhVyZsRUByQUtxvOZicl8kvDkics/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 646px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   模型仅通过 Project Glasswing 项目向约 40-48 家合作伙伴提供访问权限，包括亚马逊、苹果、微软、Google、CrowdStrike、Cisco、JPMorgan Chase 等关键基础设施公司，专用于防御性安全研究。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这个决定在社区引发了讨论。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   支持者认为这是负责任的做法，质疑者则认为危险叙事可能被营销化了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   有独立安全研究机构用更小的开源模型复现测试，发现也能恢复出大部分分析，质疑 Mythos 的独特性是否被夸大。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   还有报道称，在 7000 个漏洞中，严重漏洞可能只有 10 个。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这些质疑未必能否定 Mythos 的价值，但至少说明一个问题：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Anthropic 对技术细节完全保密，只发布了 System Card、Alignment Risk Update 和 Responsible Scaling Policy 三份文件，没有公开架构设计。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   &lt;br/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   网上一直在猜，Mythos 到底用了什么架构？
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   OpenAI O1 和 DeepSeek R1，都是靠生成思考字符，把推理过程明明白白写出来。但 Mythos 不一样，它是在模型内部自己完成深度思考，输出结果中间的推理步骤不给看。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   就在这个背景下，OpenMythos 出现了。也火了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   作者给出的假设是，Mythos 可能是 Recurrent-Depth Transformer（循环深度 Transformer）。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    同一组权重被反复使用，每次循环都在潜在空间里做一次推理迭代，但对外不输出任何中间结果。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这就跟我们平时琢磨问题特别像，第一遍先捋个大概思路，再往下多想一轮，补上漏掉的细节，反复梳理之后，最后再精简整合，提炼出关键内容。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   最终呈现出来的答案看着很简洁，其实私底下已经在脑子里来回打磨优化好几遍了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   作者这个假设不是什么空想，是参考Loop, Think, &amp;amp; Generalize（2026）、Parcae（2026）、Reasoning with Latent Thoughts（2025）多篇近期论文。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLibyhf392b9ebniaLSCjLtjmQJziaseFqQDvmkW9hwX4npTOgUMpAbpaIhFMEjNqChXegVgfZaRESvslHt1D2MKFZvFNq7ucRMU8/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 646px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   OpenMythos 把这些理论变成了可运行的代码。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   传统 Transformer 推理是一次过的。模型收到输入后，经过固定层数处理一遍，直接出结果，是不会反复迭代。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    OpenMythos把架构分成三段，分别是Prelude、Recurrent Block和Coda。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKoymNchTUplqunNJQNqGokTsbR3booJCJT7SII73qHFASKfWDtnylfKA3qral2SAnPeJAmRXEkyYjzmSlwQgTRBvnwWSicbRpY/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 646px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   循环用了一套参数就能重复调用、反复运行。每多循环一轮，内部状态就会更新一遍，模型也能慢慢想得更深、更全面。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   循环中核心公式长这样。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLRenwtbW60DaVecSgEggN6Ip4s0TfN7icTcDUyRx5aJHic8ZNGm039qS4DyyPI78y7MYVQXlIhR91L5n5vbIsSpNVHYseGQGka0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 646px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   每次循环时，原始输入
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    e
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   都会被重新注入。这是为了防止隐藏状态在深层循环中漂移，就像你在思考时，时不时要把问题本身再看一遍，确保没跑题。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   看起来这个项目很复杂，但安装起来只需一行命令。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;pip install open-mythos&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   接着就能用 Python 创建一个简单的模型。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblJKHMcr1NYSM9icicfRsd7nTRSibxQPzbicickgqxYSm8rfiaS4FltKR2a68Ffu26Fjxm1UdEXclJpQ2rIlwHjW8Y0SZPHgG0iaZjiciako/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 646px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   想要更深推理，可以调整 n_loops 循环参数，当然也需要更多计算时间。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   OpenMythos 还支持 GQA 和 MLA 两种注意力机制。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   FFN 层换成了混合专家 MoE 设计，把原本完整的 FFN 拆成一堆小型专家模块。推理时，路由机制会自动给每个 token 挑选最合适的前 k 个专家来干活，不用全部跑一遍。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   除了被路由选择的专家，还有少量共享专家始终激活，吸收跨领域通用知识。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   MoE 的路由机制是这样的。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIMvm210Y1ePt41iarVsiblldr6PBaVibKPyVS4PCROyZicL8ichpy8n0G75L2dZVd09Z6JJAUh889iaFDY3ZybfO9ibdx9H7GMBVaicQQ/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=9" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 646px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   共享专家防止每个路由专家都重复学习语法、基本推理等基础内容。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目提供了 7 种预设配置，从 1B 到 1T，覆盖从实验到生产的各种需求。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   训练脚本也准备好了，单 GPU 和多 GPU 分布式训练都支持。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   但 OpenMythos 在社区也引发了争议。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   支持者认为这是开创性的工作：首次完整实现 Recurrent-Depth Transformer，基于多篇顶级论文，提供了可运行的 PyTorch 代码，为社区探索新型架构提供了工具。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   质疑者则指出：这只是架构实现，没有预训练权重，需要大量资源从头训练；不确定是否真的接近 Claude Mythos 架构；作者 Kye Gomez 的 Open-X 系列项目有开源对标闭源的营销嫌疑。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIV0s2RnId7RScmErw9A0JnRULHsmhoyd12IY4eP4AxSklQCA1owx4LKuNwLAAwHPeXYQ1d0q1xGfIkibXZdTj3E1ibAl3Nms0Rs/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=10" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 646px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    你要说他骗人了吧，他没有。README 开头就声明了这是理论重建，与 Anthropic 无任何关联。你要说他没骗人吧，整个传播链条上……
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKZSyZWU5lm7mIUWvDdTFkHOz1G6VXXm3hdqJoJRRDg5mHPiaN8eGj4ThEMbNibWIACnhCbcTgy6JWp1UNH2J7d7oczic7u7PSPU0/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=11" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 646px !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; height: auto !important; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   这和 Claude Mythos 本身的争议形成了呼应，Anthropic 以安全为由限制 Mythos 的公开发布，但批评者认为这可能加剧技术鸿沟。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   同时OpenMythos的价值也需要实际训练结果来验证，而不是只停留在理论层面。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   当然OpenMythos 本身也有局限。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    无预训练权重，需要从头训练，门槛高。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   大规模模型100B+需要分布式训练，长上下文1M tokens需要大量显存。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   虽说LTI约束理论上能稳住训练、减少波动，但实际好不好用，还得靠大量实测来确认。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   循环也不是堆得越多越强，深度一旦超标，模型容易想太多、过度推演，最后反而影响预测准确度。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h4 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 18px;"&gt;
  &lt;span&gt;
   最后说说
  &lt;/span&gt;
 &lt;/h4&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   以前想知道 Claude Mythos 的架构，只能靠猜。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   Anthropic 不公开技术细节，社区只能从 System Card 里一点点拼凑线索。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   有了 OpenMythos，相当于有人把论文里的理论变成了可运行的代码，让抽象假设变得可以验证。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    AI 能力到了某个临界点后，敢不敢发可能比能不能做更难决策。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   OpenMythos 目前还处于早期阶段，没有预训练权重，需要从头训练。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   但方向是对的——让社区有机会探索新型架构，而不是只能等官方开源。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你对 Recurrent-Depth Transformer 感兴趣，可以试试跑一个最小示例，感受一下循环推理的过程。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   项目基于 MIT 协议开放，感兴趣的同学可以去 GitHub 仓库看看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;项目地址：https://github.com/kyegomez/OpenMythos&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然看到这了，欢迎随手点赞、在看、转发，也可以给我个星标⭐，接收最新的文章，我们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1109" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/jqjyyGOzyohvPi9BzzJlnQ</link><pubDate>Tue, 28 Apr 2026 15:14:12 +0800</pubDate></item><item><id>3877547210-2247511729_1</id><title>2.4K Star ！自主进化的国产Hermes项目</title><description>凌晨三点，手机突然响了，又是服务器告警。          磁盘满了，日志堆积，服务快挂了。你爬起来 SSH 登录，查日志、清理文件、重启服务……忙完一套流程，往往就睡不着了。          半夜被叫醒、手动处理告警、反复执行巡检脚本，这些琐碎但关键的工作占掉了大量时间。AI Agent 火了很久，但通用框架解决不了运维的专业需求——告警要自动处理、危险命令需要审批、巡检要定时执行。     ...</description><guid>https://mp.weixin.qq.com/s/vPydqvNv8HoY9M_VquRJ7w</guid><enclosure url="https://mmbiz.qpic.cn/sz_mmbiz_jpg/VDCUoW3UiblKJBBWtCLZTTxj3p0nRcuIhLFF5VyWuMTTkiaXPAhtIdq5PpX9oOA89xnknyiaXXpLYFuofU9ffwuMPdfbycHmQbibIicw7zxxNKq8/0?wx_fmt=jpeg" length="0" type="image/jpeg"></enclosure><content:encoded>&lt;section powered-by="werss" style="visibility: visible;"&gt;
 &lt;span style="visibility: visible;"&gt;
  &lt;br style="visibility: visible;"/&gt;
 &lt;/span&gt;
&lt;/section&gt;
&lt;section powered-by="werss" style="font-size: 16px; color: black; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; margin-top: -10px; font-family: PingFangSC-Light; padding: 0px; visibility: visible; margin-bottom: 0px;"&gt;
 &lt;section powered-by="werss" style="visibility: visible;"&gt;
  &lt;mp-common-profile class="js_uneditable custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="0" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1108" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0" style="visibility: visible;"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;br style="visibility: visible;"/&gt;
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   凌晨三点，手机突然响了，又是服务器告警。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   磁盘满了，日志堆积，服务快挂了。你爬起来 SSH 登录，查日志、清理文件、重启服务……忙完一套流程，往往就睡不着了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   半夜被叫醒、手动处理告警、反复执行巡检脚本，这些琐碎但关键的工作占掉了大量时间。AI Agent 火了很久，但通用框架解决不了运维的专业需求——告警要自动处理、危险命令需要审批、巡检要定时执行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   最近在 GitHub 刷到一个叫 OpenOcta 的项目，专门为运维场景打造。上线两个月，Star 数已经冲到 2.4k，累计下载超过 60k。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblI4zQgwYY1H0JIXXX7pib5eA1ia3nkWiaEt2mmqKMPNJRXDEmGEyk4h2BWcETNyg61E4gLskNQH3jMJodnJLrOGvGGUog8EthqD1Y/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 646px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblLicIkibrch0p5mHWhm9t6bhpXpOwKpnq7zZJEfI7LZTe3m79MW9mvj5cmAiaS5rIGCj8NUBruzg7LGyz9DVWRA1LSOaFCsZGzUfM/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 646px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    从通用到垂直，要的是能落地
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   通用 AI Agent 框架虽然强大，但通用和专业之间，隔着一道场景深度的鸿沟。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   OpenOcta 专门为运维场景深度定制，内置了 Prometheus 告警处理、定时巡检、运维专家 Skill、危险操作审批等运维专属能力。告警要能自动处理、危险命令必须审批、巡检要定时执行、token 成本要可控，这些都是运维专属的需求。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   AI Agent 的竞争正在从谁的模型更强转向谁更懂用户的工作流。通用 Agent 解决的是能不能用的问题，垂直 Agent 解决的是好不好用的问题。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    为什么选了Go语言
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   OpenOcta 用 Go 重写了整个后端。运维环境服务器多、网络复杂、很多机器连桌面都没有，对稳定性要求极高。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   Go 编译出来就是一个二进制文件，没有运行时依赖，内存占用低。而且 Go 的并发模型天然适合运维场景——同时处理多个告警、并行执行巡检任务、高并发的消息推送。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   前端通过 go:embed 打包进二进制，一个文件就是全套。下载一个文件就能跑，对运维人来说太友好了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 10px 0px; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKJKGBsiblNdiaTKZBSSmr84HjdW4M6O0bb2MiaId86yH3Chiaj5sVftOI7O3wPhP1icPcUWWrhSaiaoicicakhuWUr0JcFHZTcN7y75X4/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=2" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 646px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;strong style="color: rgb(14, 136, 235); visibility: visible;"&gt;
   &lt;span style="visibility: visible;"&gt;
    国产大模型支持
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px; padding-bottom: 8px; color: black; margin: 10px; line-height: 1.75; letter-spacing: 0.2em; font-size: 14px; word-spacing: 0.1em; visibility: visible;"&gt;
  &lt;span style="visibility: visible;"&gt;
   OpenOcta 直接把国产大模型做了首要支持，像 MiniMax、火山方舟、阿里百炼、Kimi，开箱即用。不需要代理，API Key 填进去就能跑，数据全程不出内网。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKceM1LG1KgbeNSfWV69Qm6gn6Dq0cwWf8a0Shb9Po6BbcuDC657g9dEZsDZpdcMeu4y1yDE4MYo81P5BRicGXqoXicSMvhRpLQc/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=3" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 646px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    数字员工：运维工程师的 AI 分身
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   OpenOcta 最大的亮点是数字员工（Digital Employee）设计。传统 AI 助手是"帮你做事"，你问一句它答一句。但运维场景不一样，半夜三点服务器告警了，你不可能随时在线，需要的是能"替你做事"的数字员工。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblLpSxzpn2Il8z2wVNA8WGXbYbo8VuRXbV9OO9CV6CGlE3h8Dyibv8aAvuPsQUo8yofrjm3CqcNdPLbB9ndm2y2uYkOw5WThV9UU/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=4" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 646px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   OpenOcta 的数字员工有三个关键特性：
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   1）专业分工，各司其职
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   你可以创建多个数字员工，每个员工有自己的专业领域。DBA 员工负责数据库巡检、慢查询分析；SRE 员工负责服务器监控、日志分析；Security 员工负责安全扫描、漏洞检测。v0.2.7 版本开始，定时巡检任务可以指定由哪个数字员工执行。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   2）7×24 小时待命
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   配置好告警接入和定时任务后，数字员工会一直在后台运行。凌晨 3 点刚好收到告警，它自动分析、生成处置建议、并推送到你配置的企业微信群或飞书群。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   定时巡检也没问题，也能定时将结果推到群里面，保证重要信息看的见。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   3）持续学习，越用越懂你
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   数字员工会记住你的运维习惯和项目特点，哪些告警是误报、哪些操作需要审批、你的服务器架构和常用命令。这些知识会沉淀在 L2 项目持久记忆里，跨会话复用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIC3kEds9ZPeMe3b4Aic6QUfgicBreWXfwUMNCGyhJibxqeBicwu8aSXJre8DD9Offyty0ebEYibQbicvu7tzSXWibQ3TKrmZPqUBRCfk/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=5" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 646px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    运维场景深度适配
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   OpenOcta 真正的差异化在于对运维场景的深度适配。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   1）告警自动处理
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   OpenOcta 提供
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    /hooks/alert
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   接口，能直接接入 Prometheus。告警进来后，Agent 会自动解析内容、关联历史事件、生成处置建议，推送到飞书或微信群。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblI0oCFH412XysxiaJAf14iaDGu4ibjVibMmGxRfhA13rTicDHREGSYXWUOeXib6q6DNMy0583zguaaQrvkIianhcM4SDlb8FCasuod4mg/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=6" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 646px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   2）定时巡检
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   OpenOcta 内置 Cron 调度，打开页面里配一下就行。每天自动跑，结果自动推到 IM 里。v0.2.7 还支持指定数字员工执行，数据库巡检用 DBA 员工，服务器巡检用 SRE 员工。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   3）运维专家 Skill
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   官方提供了几十个现成的专家技能包，比如 MySQLOps，专门处理 MySQL 的事。安装直接把 zip 文件上传就行，常见运维操作都封装好了。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblIxy2v9JRwroeLNPog7j9LywXUgl0yqD3gib4I6kt1gneibUAQ2VVAITlXBuibFfia9qXgHFeHp9GONicQXREcQDtDLLRKLGcu1hCibE/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=7" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 646px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   4）危险操作审批
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   OpenOcta 给危险操作加了人工审批，Agent 不能绕过这个机制。针对运维场景做了更严格的安全策略， 保证关键操作运维能知道并确认。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    Skylark 机制，省 token
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我们都知道运维场景的巡检任务需要密集执行，token 消耗会非常夸张。传统 Agent 每次对话都会把完整的 skill 列表、工具描述、历史对话一股脑塞给模型。一天跑几十次巡检，每次都全量加载，一个月下来 token 成本比模型 API 本身还贵。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   而OpenOcta的思路是Skylark 机制，第一轮对话只加载最基础的能力，如果发现需要某个 skill，第二轮再按需加载。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   简单问题少加载，复杂问题多加载。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKbIyN584XWys33PsyHroxHZu49MDbtXZtvYI2ibZibHIs2OcFmzEktP98ojMyVS6GhYybfibwEnw9ABsiaibC1kGMIoOUOzelAORyg/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=8" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 646px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    先跑起来，比什么都重要
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   我以 Windows 系统为例，安装桌面版本。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   先去官网或Github下载Windows的安装包。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKTtCUFHsHSVG6KeNwWo1dftcK7HkjT3Qrbib3IwQ4sV0VGWlicNvGmK09p2d4WoM95c0R9at6UMWV2DsiaN7HhHCFXoFciah0LhZQ/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=9" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 646px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   下一步执行到最后。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblIVQOztQNID4zTOBj5ZLEpQpSiabS9f82aCmjQ9iaobj9oZ2wUPkkgsXI3KerUUmxkPbc2sS5DRMg4S3v3LLiaSl4hA2iaKSx5fXos/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=10" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 646px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   不报错的话，浏览器打开
  &lt;/span&gt;
  &lt;code style="font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0 2px;color: #1e6bb8;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;"&gt;
   &lt;span&gt;
    http://127.0.0.1:18900
   &lt;/span&gt;
  &lt;/code&gt;
  &lt;span&gt;
   就能进控制台。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/sz_mmbiz_png/VDCUoW3UiblKh24NWiazkmZb7icXjS7gUL0N57smwUGcSNsHKiaH9n9RiapQn3r4ou7OAEnFq3LSRM5dvqsdlvphhHvDqSNhgicu3w1Xia8AIMViadE/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=11" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 646px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   第一件事是配模型。如果你有火山方舟或阿里百炼的 API Key，在"模型"页面添加厂商，填进去就行。没有的话，MiniMax 有免费额度可以先用。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblKTvt0fz3agibZ3jHickZ8JphYZUKfLApzzBIlTpJiarOiaIiabehOkEA69FBUGC57pPeIEh17nV2lCAVHmdA4eNMlQQlQLSp9w6PLE/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=12" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 646px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   配好模型之后，在对话界面输入："帮我检查一下本机的磁盘使用情况"。Agent 会调用内置的 Shell 工具，执行命令，把结果整理成易读的格式返回。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;h4 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;font-weight: bold;color: black;font-size: 18px;"&gt;
  &lt;span&gt;
   最后说说
  &lt;/span&gt;
 &lt;/h4&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   以前让通用 AI Agent 帮你做运维，它只能凭通用知识来猜。半夜告警来了，它可能给你一堆理论分析，但不知道该执行什么命令。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   有了 OpenOcta，相当于给 AI 配了一套运维专用工具箱。它知道告警怎么处理、巡检怎么执行、危险命令要审批、token 成本要控制。数字员工设计让每个运维工程师都能拥有专业的 AI 分身，7×24 小时替你值班。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;strong style="font-weight: border;color: #0e88eb;"&gt;
   &lt;span&gt;
    通用 Agent 解决能不能用的问题，垂直 Agent 解决好不好用的问题。
   &lt;/span&gt;
  &lt;/strong&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   如果你是运维工程师，最近正好被半夜告警折磨、被重复巡检烦恼，不妨试一下。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   开源版本基于 GPLv3 协议开源，感兴趣的同学可以去 GitHub 仓库看看源码和文档。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;"&gt;&lt;code style="overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;"&gt;&lt;span&gt;GitHub 地址：https://github.com/openocta/openocta&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   还想要更多专业支持，恰好他们也有团队版，适用于中大型企业、多 BU、强合规场景，从「龙虾智能体」走向团队级智能体平台。包含多租户/多组织管理、模型与 Token 级治理、资源市场生命周期管理。
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;figure data-tool="mdnice编辑器" style="margin: 0;margin-top: 10px;margin-bottom: 10px;"&gt;
  &lt;span&gt;
   &lt;img src="https://mmbiz.qpic.cn/mmbiz_png/VDCUoW3UiblK8qqwNjCjACKsWgktBDPvO5Gm9WkeYQ3UqCF0icGvc7ibq1BUA6QmFs9Uib4s6sTGGiaMkibRw7jublrMGBqkIuZUAhb39f9R0ElKE/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;watermark=1&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=13" style="max-width: 100%; border-radius: 0px 0px 5px 5px; display: block; margin: 10px auto; width: 646px !important; height: auto !important; object-fit: contain; box-shadow: rgb(132, 161, 168) 0px 10px 15px; visibility: visible !important;"/&gt;
  &lt;/span&gt;
 &lt;/figure&gt;
 &lt;p style="padding-top: 8px;padding-bottom: 8px;color: black;margin: 10px 10px;line-height: 1.75;letter-spacing: 0.2em;font-size: 14px;word-spacing: 0.1em;"&gt;
  &lt;span&gt;
   既然看到这了，欢迎随手点赞、在看、转发，也可以给我个星标⭐，接收最新的文章，我们下期见！
  &lt;/span&gt;
 &lt;/p&gt;
 &lt;section powered-by="werss"&gt;
  &lt;mp-common-profile class="js_uneditable custom_select_card mp_profile_iframe mp_common_widget js_wx_tap_highlight" data-alias="" data-biz_account_status="0" data-from="0" data-headimg="http://mmbiz.qpic.cn/mmbiz_png/KTkWjEKNj2aqWzxNZkhgsNov0uiaibyrjsoBnQdv89yBicSKuk8IhAdr4gNpNrD2CfhQ2ZbfJYfV7H0gFm12Tcvwg/300?wx_fmt=png&amp;amp;wxfrom=19" data-id="Mzg3NzU0NzIxMA==" data-index="1" data-is_biz_ban="0" data-isban="0" data-nickname="开源日记" data-origin_num="1108" data-pluginname="mpprofile" data-service_type="1" data-signature="分享优质开源项目 , 探索AI生产力。" data-verify_status="0"&gt;
  &lt;/mp-common-profile&gt;
 &lt;/section&gt;
&lt;/section&gt;
&lt;p style="display: none;"&gt;
 &lt;mp-style-type data-value="3"&gt;
 &lt;/mp-style-type&gt;
&lt;/p&gt;</content:encoded><link>https://mp.weixin.qq.com/s/vPydqvNv8HoY9M_VquRJ7w</link><pubDate>Mon, 27 Apr 2026 16:28:22 +0800</pubDate></item></channel></rss>