<!DOCTYPE html>
<html lang="zh-cmn">

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <link rel="shortcut icon" href="k5web.png" type="image/png" />
  <title>K5Web</title>
  <meta name="description" content="一款 K5/K6 在线写频工具,使用应第一时间备份配置及校准数据,提供信道管理、设置管理、备份还原、固件升级等功能。"/>
  <meta name="keywords" content="k5web,uv-k5,uv-k6,chirp,k5,k6">
  <style>
    ::-webkit-scrollbar {
      width: 12px;
      height: 4px;
    }

    ::-webkit-scrollbar-thumb {
      border: 4px solid transparent;
      background-clip: padding-box;
      border-radius: 7px;
      background-color: var(--color-text-4);
    }

    ::-webkit-scrollbar-thumb:hover {
      background-color: var(--color-text-3);
    }
  </style>
  <style>
    #loading-mask {
      position: fixed;
      left: 0;
      top: 0;
      height: 100%;
      width: 100%;
      background: #fff;
      user-select: none;
      z-index: 9999;
      overflow: hidden;
    }

    .loading-wrapper {
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -100%);
    }

    .loading-dot {
      animation: antRotate 1.2s infinite linear;
      transform: rotate(45deg);
      position: relative;
      display: inline-block;
      font-size: 64px;
      font-size: 2.5vw;
      width: 64px;
      width: 2.5vw;
      height: 64px;
      height: 2.5vw;
      box-sizing: border-box;
    }

    .loading-dot i {
      width: 22px;
      width: 0.859vw;
      height: 22px;
      height: 0.859vw;
      position: absolute;
      display: block;
      background-color: #1890ff;
      border-radius: 100%;
      transform: scale(0.75);
      transform-origin: 50% 50%;
      opacity: 0.3;
      animation: antSpinMove 1s infinite linear alternate;
    }

    .loading-dot i:nth-child(1) {
      top: 0;
      left: 0;
    }

    .loading-dot i:nth-child(2) {
      top: 0;
      right: 0;
      -webkit-animation-delay: 0.4s;
      animation-delay: 0.4s;
    }

    .loading-dot i:nth-child(3) {
      right: 0;
      bottom: 0;
      -webkit-animation-delay: 0.8s;
      animation-delay: 0.8s;
    }

    .loading-dot i:nth-child(4) {
      bottom: 0;
      left: 0;
      -webkit-animation-delay: 1.2s;
      animation-delay: 1.2s;
    }

    @keyframes antRotate {
      to {
        -webkit-transform: rotate(405deg);
        transform: rotate(405deg);
      }
    }

    @-webkit-keyframes antRotate {
      to {
        -webkit-transform: rotate(405deg);
        transform: rotate(405deg);
      }
    }

    @keyframes antSpinMove {
      to {
        opacity: 1;
      }
    }

    @-webkit-keyframes antSpinMove {
      to {
        opacity: 1;
      }
    }
  </style>
  <script src="serial.js"></script>
  <meta name="builtTime" content="20250319224829">
  <script type="module" crossorigin src="./assets/index.4b21480b.js"></script>
  <link rel="modulepreload" crossorigin href="./assets/@intlify.b8ed1d74.js">
  <link rel="modulepreload" crossorigin href="./assets/@vue.2faf1d8e.js">
  <link rel="modulepreload" crossorigin href="./assets/vue.24dcbee8.js">
  <link rel="modulepreload" crossorigin href="./assets/resize-detector.a8854a64.js">
  <link rel="modulepreload" crossorigin href="./assets/tslib.c6ba9914.js">
  <link rel="modulepreload" crossorigin href="./assets/zrender.ce26131e.js">
  <link rel="modulepreload" crossorigin href="./assets/echarts.5b0e6023.js">
  <link rel="modulepreload" crossorigin href="./assets/vue-echarts.29561399.js">
  <link rel="modulepreload" crossorigin href="./assets/b-tween.8dd4e2fe.js">
  <link rel="modulepreload" crossorigin href="./assets/dayjs.08dc07e5.js">
  <link rel="modulepreload" crossorigin href="./assets/b-validate.1fdaeb97.js">
  <link rel="modulepreload" crossorigin href="./assets/number-precision.5cddbed2.js">
  <link rel="modulepreload" crossorigin href="./assets/resize-observer-polyfill.2b976e6e.js">
  <link rel="modulepreload" crossorigin href="./assets/compute-scroll-into-view.17358474.js">
  <link rel="modulepreload" crossorigin href="./assets/scroll-into-view-if-needed.0a5da943.js">
  <link rel="modulepreload" crossorigin href="./assets/@arco-design.95e0b031.js">
  <link rel="modulepreload" crossorigin href="./assets/vue-router.425aabc5.js">
  <link rel="modulepreload" crossorigin href="./assets/nprogress.77f16b3e.js">
  <link rel="modulepreload" crossorigin href="./assets/mitt.550594b0.js">
  <link rel="modulepreload" crossorigin href="./assets/vue-demi.1e0b7689.js">
  <link rel="modulepreload" crossorigin href="./assets/pinia.510425a1.js">
  <link rel="modulepreload" crossorigin href="./assets/axios.234ce069.js">
  <link rel="modulepreload" crossorigin href="./assets/vue-i18n.4b9acc8b.js">
  <link rel="modulepreload" crossorigin href="./assets/@vueuse.c5c16882.js">
  <link rel="modulepreload" crossorigin href="./assets/aegis-web-sdk.088ecaea.js">
  <link rel="modulepreload" crossorigin href="./assets/@zxing.8654f0db.js">
  <link rel="modulepreload" crossorigin href="./assets/tdesign-icons-vue-next.514651cc.js">
  <link rel="modulepreload" crossorigin href="./assets/sortablejs.b2e3c7c4.js">
  <link rel="modulepreload" crossorigin href="./assets/@popperjs.f3f73334.js">
  <link rel="modulepreload" crossorigin href="./assets/tdesign-vue-next.62a9d0ce.js">
  <link rel="modulepreload" crossorigin href="./assets/vue-matomo.ed94ba67.js">
  <link rel="stylesheet" href="./assets/@arco-design.2b8b31ee.css">
  <link rel="stylesheet" href="./assets/nprogress.8b89e2e0.css">
  <link rel="stylesheet" href="./assets/tdesign-icons-vue-next.8494edcb.css">
  <link rel="stylesheet" href="./assets/tdesign-vue-next.875637ac.css">
  <link rel="stylesheet" href="./assets/index.565c3a6b.css">
</head>

<body>
  <div id="app">
    <div id="loading-mask">
      <div class="loading-wrapper">
        <span class="loading-dot loading-dot-spin"><i></i><i></i><i></i><i></i></span>
      </div>
    </div>
  </div>
  
  <script>
    (async ()=>{
      let wakeLock = null;
      try {
        wakeLock = await navigator.wakeLock.request("screen");
      } catch {}
      document.addEventListener("visibilitychange", async () => {
        if (wakeLock !== null && document.visibilityState === "visible") {
          wakeLock = await navigator.wakeLock.request("screen");
        }
      });
    })();
  </script>
</body>

</html>