Full Code of tjy-gitnub/win12 for AI

main b413814161a9 cached
87 files
963.3 KB
302.1k tokens
112 symbols
1 requests
Download .txt
Showing preview only (1,000K chars total). Download the full file or copy to clipboard to get everything.
Repository: tjy-gitnub/win12
Branch: main
Commit: b413814161a9
Files: 87
Total size: 963.3 KB

Directory structure:
gitextract_uat3ea75/

├── .claude/
│   └── settings.local.json
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── 1-bug_report.yaml
│   │   ├── 2-new-proposal.yaml
│   │   ├── 3-others.md
│   │   └── config.yml
│   └── workflows/
│       └── notify-preview-deploy.yml
├── .gitignore
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── apps/
│   ├── LICENSE
│   ├── NOTICE.md
│   └── style/
│       ├── about.css
│       ├── bios.css
│       ├── calc.css
│       ├── camera.css
│       ├── code-editor.css
│       ├── copilot.css
│       ├── defender.css
│       ├── edge.css
│       ├── explorer.css
│       ├── imgviewer.css
│       ├── login.css
│       ├── mediaplayer.css
│       ├── msstore.css
│       ├── notepad.css
│       ├── pythonEditor.css
│       ├── recognition.css
│       ├── run.css
│       ├── setting.css
│       ├── taskmgr.css
│       ├── terminal.css
│       ├── whiteboard.css
│       └── word.css
├── base.css
├── bios.html
├── bluescreen.html
├── boot.html
├── bootstrap-icons.css
├── changelog.md
├── data/
│   ├── disconnected.html
│   ├── disconnected_dark.html
│   └── tasks.js
├── desktop.css
├── desktop.html
├── desktop.js
├── fonts/
│   └── LICENSE
├── games/
│   └── minesweeper.html
├── icon/
│   ├── LICENSE
│   └── NOTICE.md
├── img/
│   ├── LICENSE
│   └── NOTICE.md
├── index.html
├── lang/
│   ├── README_trans.md
│   ├── lang.properties
│   ├── lang_en.properties
│   ├── lang_zh.properties
│   ├── lang_zh_CN.properties
│   ├── lang_zh_TW.properties
│   ├── readme.md
│   └── trans.py
├── mainpage.html
├── media/
│   └── LICENSE
├── module/
│   ├── apps.js
│   ├── tab.css
│   ├── tab.js
│   ├── widget.css
│   ├── widget.js
│   └── window.js
├── pwa/
│   └── manifest.json
├── readme/
│   ├── README_en_us.md
│   ├── README_fr_fr.md
│   └── README_zh_tw.md
├── reload.html
├── robots.txt
├── scripts/
│   ├── AI Copilot service/
│   │   └── README.md
│   ├── Lunar.js
│   ├── bios_kernel.js
│   ├── boot_kernel.js
│   ├── calculator_kernel.js
│   ├── jquery.i18n.properties.js
│   ├── news.js
│   ├── setting_getTime.js
│   └── utils.js
├── shutdown.html
└── sw.js

================================================
FILE CONTENTS
================================================

================================================
FILE: .claude/settings.local.json
================================================
{
  "permissions": {
    "allow": [
      "Bash(gh issue:*)"
    ]
  }
}


================================================
FILE: .github/ISSUE_TEMPLATE/1-bug_report.yaml
================================================
name: Bug report / 故障报告
description: Please report any vulnerabilities you discover during use to us / 请向我们汇报您在使用过程中发现的漏洞
title: "[Bug]"
body:
  - type: markdown
    id: introduction
    attributes:
      value: |
        请使用此模板来报告 bug,并尽可能多地提供信息。
        Please use this template while reporting a bug and provide as much info as possible.
  - type: checkboxes
    id: prerequisites
    attributes:
      label: 先决条件 (Prerequisites)
      options:
        - label: |
            我已确认这个问题没有在[其他 issues](https://github.com/tjy-gitnub/win12/issues)中提出过。
            I am sure that this problem has NEVER been discussed in [other issues](https://github.com/tjy-gitnub/win12/issues).
          required: true
        - label: |
            我确认我正在使用官方地址 (tjy-gitnub.github.io/win12)。
            I confirm that I am using the official url (tjy-gitnub.github.io/win12).
          required: true
        - label: |
            我确保我遵守行为准则
            I have followed the code of conduct
          required: true
        - label: |
            我已查看了常见问题解答(#735)
            I have reviewed the Frequently Asked Questions (#735)
          required: true           
  - type: textarea
    id: what_happened
    attributes:
      label: 发生了什么(What happened)
    validations:
      required: true
  - type: textarea
    id: expected_behavior
    attributes:
      label: 期望的现象(What you expected to happen)
    validations:
      required: true
  - type: textarea
    id: how_to_reproduce
    attributes:
      label: 如何重现此问题(How to reproduce it)
    validations:
      required: true
  - type: input
    id: os_version
    attributes:
      label: 操作系统(OS Version)
  - type: input
    id: browser
    attributes:
      label: 浏览器(Browser version)
  - type: textarea
    id: other_env
    attributes:
      label: 其他环境(Other environments)
  - type: textarea
    id: others
    attributes:
      label: 其他需要说明的事项(Anything else we need to know)


================================================
FILE: .github/ISSUE_TEMPLATE/2-new-proposal.yaml
================================================
name: New Proposal / 提出建议
description: Please provide us with your valuable suggestions / 请向我们提出宝贵的建议
title: "[建议] "
body:
  - type: markdown
    id: introduction
    attributes:
      value: |
        欢迎向 Windows12 网页版 提出建议。您的建议将帮助本项目变得更好。
        Welcome to submit suggestions to Windows12 Online. Your suggestions will help this project become better.
  - type: checkboxes
    id: prerequisites
    attributes:
      label: 先决条件 (Prerequisites)
      options:
        - label: |
            我已确认这个问题没有在[其他 issues](https://github.com/tjy-gitnub/win12/issues)中提出过。
            I am sure that this problem has NEVER been discussed in [other issues](https://github.com/tjy-gitnub/win12/issues).
          required: true
        - label: |
            我确认我正在使用官方地址 (tjy-gitnub.github.io/win12)。
            I confirm that I am using the official url (tjy-gitnub.github.io/win12).
          required: true
        - label: |
            我确保我遵守行为准则
            I have followed the code of conduct
          required: true
  - type: textarea
    id: name
    attributes:
      label: 描述
      description: 请简述您的建议 Please briefly describe your proposal
    validations:
      required: true
  - type: textarea
    id: upstream
    attributes:
      label: 方案
      description: 请简述您建议的实现方案 Please briefly describe your proposed implementation
    validations:
      required: true
  - type: textarea
    id: more_info
    attributes:
      label: 备注 (Note)
      description: 其他补充信息 Additional information
    validations:
      required: false


================================================
FILE: .github/ISSUE_TEMPLATE/3-others.md
================================================
---
name: Others / 其他事项
about: For other issues, use this template / 不能归类为上述事项,请用此模版
---

================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false

================================================
FILE: .github/workflows/notify-preview-deploy.yml
================================================
# 监听 PR 事件,通知下游仓库触发预览部署
name: PR 预览部署

on:
  pull_request_target:
    types: [opened, synchronize, reopened]


permissions: {}

jobs:
  notify:
    name: 发送部署通知
    runs-on: ubuntu-latest
    # 跳过草稿 PR
    if: github.event.pull_request.draft == false
    steps:
      - name: 检查 Secret 是否存在
        env:
          TOKEN: ${{ secrets.DOWNSTREAM_PAT }}
        run: |
          if [ -z "$TOKEN" ]; then
            echo "::error::DOWNSTREAM_PAT secret 未配置,请在仓库 Settings → Secrets 中添加"
            exit 1
          fi

      - name: 构造事件类型
        id: event-type
        run: |
          # 将 PR 动作映射为下游仓库的 repository_dispatch 事件类型
          echo "type=upstream-pr-${{ github.event.action }}" >> "$GITHUB_OUTPUT"

      - name: 触发下游仓库预览部署
        env:
          TOKEN: ${{ secrets.DOWNSTREAM_PAT }}
        run: |
          # 向下游仓库发送 repository_dispatch 请求
          curl -fS -X POST \
            -H "Accept: application/vnd.github+json" \
            -H "Authorization: Bearer $TOKEN" \
            -H "X-GitHub-Api-Version: 2022-11-28" \
            https://api.github.com/repos/tangyuan0821/win12-pr-preview/dispatches \
            -d '{
              "event_type": "${{ steps.event-type.outputs.type }}",
              "client_payload": {
                "pr_number": ${{ github.event.pull_request.number }},
                "sha": "${{ github.event.pull_request.head.sha }}"
              }
            }'


================================================
FILE: .gitignore
================================================
web.config
.vscode
.idea

.DS_Store


================================================
FILE: CODE_OF_CONDUCT.md
================================================
# 行为准则

>[!NOTE]
>简而言之:用户均应当秉持“与人为善、文明和谐”的原则。

Win12 网页版项目社区讲求文明,用户均应当秉持与人为善、开放包容、求同存异、文明和谐、共同进步的原则。

在社区讨论中,请对其他用户展现开放、尊重、善意的态度,并以达成共识为首要目标。当出现激烈的争论时,请保持冷静,不要扰乱社区环境,不要实施人身攻击。

任何来到本项目进行贡献的用户,都应遵守文明规则。在本项目中,“文明”的内涵是广泛的,包括但不仅限于讨论文明以及沟通文明等范畴。

## 文明行为
我们鼓励的行为包括:

* 对其他用户展现开放、包容、善意的态度;尊重不同人的不同主张、意见和感受; 
* 在讨论中以文明的方式提出自己的主张或建设性意见; 
* 勇于纠正项目中非正确的事项,消除有关非正确事项的影响。

## 不文明行为
不文明行为,包括但不限于:

* **粗鲁无礼**:无礼、轻蔑、侮辱、谩骂中伤、人身攻击或其他贬损性表述;
* **恶意推定**:轻率鲁莽地指控他人行为不当,或在无充分证据前提下预设对方是恶意的;
* **不当语气**:讥讽他人或诱使他人作出不文明行为;
* **骚扰他人**:跟踪、欺凌、人身威胁、性骚扰、泄露他人隐私等;
* **欺诈他人**;
* **诽谤他人**:援引他人留言并断章取义,或虚构他人言论、行为,以图降低他人社会评价。

## 解决不文明行为的方式
当想要做有违文明的事情时,请务必冷静,三思而后行。

如果您遇到他人的不文明行为,我们希望您做到冷静行动(即使这或许很困难)。保持冷静有利于防止负面影响扩大化,也是使他人收手、事态能够很好收场的最好态度。您可以选择拉黑该用户,并不对这种行为做任何答复,原谅并忘掉他们,也可以选择探究诱使其做出不文明行为的原因,并加以解决。

在遇到争议时,您可以尝试解决争议。通过[电子邮件](https://www.qiuwenbaike.cn/wiki/%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6)或[即时通讯软件](https://www.qiuwenbaike.cn/wiki/%E5%8D%B3%E6%97%B6%E9%80%9A%E4%BF%A1#%E5%8D%B3%E6%99%82%E9%80%9A%E8%A8%8A%E8%BD%AF%E4%BB%B6)私下沟通是最常见的争议解决方式。如需其他用户的更广泛参与,则可以在项目的“Discussions“(讨论)页提出。

## 我们对不文明行为的处理
拥有Collaborator权限的用户有处理用户不文明行为的权力。此类用户对用户不文明行为的处理方法包括但不限于:

* 若冲突发生于Issue页面,可以对页面实施锁定,给冲突双方一定的冷静期;
* 若可以,限制或禁止存在不文明行为的用户与其他用户讨论;
* 若可以,限制或禁止存在冲突的两名或多名用户与其他用户讨论;
* 向Github 社区举报该用户的行为。



================================================
FILE: CONTRIBUTING.md
================================================
# 贡献指南
我们鼓励每个人为Windows 12网页版贡献内容。

若您想贡献本仓库,那您必须仔细阅读本指南的所有内容。您还应当注意本指南中**加粗的文字**和[开发规范](#开发规范)章节的内容。

本仓库仍有很多问题待解决,Issue列表长期处于积压状态。您可以先试着解决[Issue列表](https://github.com/tjy-gitnub/win12/issues)中的已知问题和功能请求。

## 基本流程

下面是贡献 pull request(下文中简称“PR”)所需的基本步骤。

1. 您可以寻找可改善的任何东西,代码逻辑、格式规范或是页面内容等进行改进。

2. 然后Fork本仓库,将其Clone到本地。

3. 在本地进行修改,完成后Commit。(请尽量一次Commit提交全部内容。可以追加Commits,但尽量不要超过5个Commits。)

4. 将修改推送到您的仓库

5. 再[创建一个Pull Request](https://github.com/tjy-gitnub/win12/pulls)。

6. 然后`坐和放宽`,等待其他人对你的代码进行审查。
>[!TIP]
>在此过程中请尽量使用Git命令行、Github Desktop、[https://github.dev](https://github.dev/tjy-gitnub/win12)等方式进行提交。

## 重要提醒
* 若您的修改具有一定重要性或量级时,请按照以下格式阐述更新内容:

      ```
      v11.4.5 - 更新了xxx

      (更新来自 @Somebody)
      - 更新了...
      - 优化了...
      - 修复了...
      ...
      ```

>[!TIP]
>  1. 标题要带有版本号、主要更新内容。
>  2. 内容第一行注明更新来源。
>  3. 内容要用列表的方式阐述更新内容。

>[!NOTE]
>  1. **请不要**任意选取版本号。若您不清楚,可以通过[我们的交流群](https://teams.live.com/l/invite/FEA0yrNkE_bAn-ddwI)与我们取得联系并分配到版本号。
>  2. 在更新时,**记住**要在“关于 Windows 12 网页版”应用的更新记录中,添加关于该更新的相关内容。

* **请善用`Update branch`按钮**。点击`Update branch`按钮可将`main`分支的最新更改合并到当前PR中。但无充分理由请勿操作——会误通知关注者“有新变更”,且会消耗[预览机器人](https://github.com/Bedevere-win12-bot)的 GitHub Action 资源。

* 根据中华人民共和国有关法律的规定您**不可以**通过本项目传播违法和违规内容,否则我们将会采取锁定+视情况封禁的处理(温馨提示:时事新闻也不行),同时我们保留在任何时间以一切方式采取法律行动、追究法律责任的权利。

* 若您贡献此项目,则代表您知情并同意:为使得您贡献的内容得到更好的分享及推广,就您在本项目所贡献的内容,您授权我们一项全球范围内的、免费的、非独家的、可再许可的权利;该等内容包括但不限于文字作品、美术作品、图形作品、视听作品、计算机程序源代码等各种著作权法意义上构成“作品”的内容;该等权利包括但不限于复制、翻译、整理、汇编、注释、改编、信息网络传播、发行等各项著作权及其相关权利,且该等权利应至少涵盖对于“Windows12 网页版”项目或以其他方式开发相关内容的一部分或全部的权利及许可。

### 开发规范

1. 对于HTML文件的规定

   详见 `desktop.html` 开头的代码规范,务必认真阅读。

2. 对JS文件的规定

   1. 请按照以下代码风格进行开发:

   ```js
      var sum = 0;
      for (var i = 0; i < 10; i++) {
         sum += i;
      }
      console.log(sum);
   ```

   2. 对于函数名及变量命名,请使用驼峰式命名法,如:

      - isLoaded

      - storagedItems

   3. 对于类名,请使用帕斯卡命名法(大驼峰式命名法),如:

      - WindowManager

      - Widgets

   4. 对于代码规范的规定:

      对于那些不需要展开的代码,尽量压成一行


================================================
FILE: LICENSE
================================================
Eclipse Public License - v 2.0

    THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
    PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION
    OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.

1. DEFINITIONS

"Contribution" means:

  a) in the case of the initial Contributor, the initial content
     Distributed under this Agreement, and

  b) in the case of each subsequent Contributor:
     i) changes to the Program, and
     ii) additions to the Program;
  where such changes and/or additions to the Program originate from
  and are Distributed by that particular Contributor. A Contribution
  "originates" from a Contributor if it was added to the Program by
  such Contributor itself or anyone acting on such Contributor's behalf.
  Contributions do not include changes or additions to the Program that
  are not Modified Works.

"Contributor" means any person or entity that Distributes the Program.

"Licensed Patents" mean patent claims licensable by a Contributor which
are necessarily infringed by the use or sale of its Contribution alone
or when combined with the Program.

"Program" means the Contributions Distributed in accordance with this
Agreement.

"Recipient" means anyone who receives the Program under this Agreement
or any Secondary License (as applicable), including Contributors.

"Derivative Works" shall mean any work, whether in Source Code or other
form, that is based on (or derived from) the Program and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship.

"Modified Works" shall mean any work in Source Code or other form that
results from an addition to, deletion from, or modification of the
contents of the Program, including, for purposes of clarity any new file
in Source Code form that contains any contents of the Program. Modified
Works shall not include works that contain only declarations,
interfaces, types, classes, structures, or files of the Program solely
in each case in order to link to, bind by name, or subclass the Program
or Modified Works thereof.

"Distribute" means the acts of a) distributing or b) making available
in any manner that enables the transfer of a copy.

"Source Code" means the form of a Program preferred for making
modifications, including but not limited to software source code,
documentation source, and configuration files.

"Secondary License" means either the GNU General Public License,
Version 2.0, or any later versions of that license, including any
exceptions or additional permissions as identified by the initial
Contributor.

2. GRANT OF RIGHTS

  a) Subject to the terms of this Agreement, each Contributor hereby
  grants Recipient a non-exclusive, worldwide, royalty-free copyright
  license to reproduce, prepare Derivative Works of, publicly display,
  publicly perform, Distribute and sublicense the Contribution of such
  Contributor, if any, and such Derivative Works.

  b) Subject to the terms of this Agreement, each Contributor hereby
  grants Recipient a non-exclusive, worldwide, royalty-free patent
  license under Licensed Patents to make, use, sell, offer to sell,
  import and otherwise transfer the Contribution of such Contributor,
  if any, in Source Code or other form. This patent license shall
  apply to the combination of the Contribution and the Program if, at
  the time the Contribution is added by the Contributor, such addition
  of the Contribution causes such combination to be covered by the
  Licensed Patents. The patent license shall not apply to any other
  combinations which include the Contribution. No hardware per se is
  licensed hereunder.

  c) Recipient understands that although each Contributor grants the
  licenses to its Contributions set forth herein, no assurances are
  provided by any Contributor that the Program does not infringe the
  patent or other intellectual property rights of any other entity.
  Each Contributor disclaims any liability to Recipient for claims
  brought by any other entity based on infringement of intellectual
  property rights or otherwise. As a condition to exercising the
  rights and licenses granted hereunder, each Recipient hereby
  assumes sole responsibility to secure any other intellectual
  property rights needed, if any. For example, if a third party
  patent license is required to allow Recipient to Distribute the
  Program, it is Recipient's responsibility to acquire that license
  before distributing the Program.

  d) Each Contributor represents that to its knowledge it has
  sufficient copyright rights in its Contribution, if any, to grant
  the copyright license set forth in this Agreement.

  e) Notwithstanding the terms of any Secondary License, no
  Contributor makes additional grants to any Recipient (other than
  those set forth in this Agreement) as a result of such Recipient's
  receipt of the Program under the terms of a Secondary License
  (if permitted under the terms of Section 3).

3. REQUIREMENTS

3.1 If a Contributor Distributes the Program in any form, then:

  a) the Program must also be made available as Source Code, in
  accordance with section 3.2, and the Contributor must accompany
  the Program with a statement that the Source Code for the Program
  is available under this Agreement, and informs Recipients how to
  obtain it in a reasonable manner on or through a medium customarily
  used for software exchange; and

  b) the Contributor may Distribute the Program under a license
  different than this Agreement, provided that such license:
     i) effectively disclaims on behalf of all other Contributors all
     warranties and conditions, express and implied, including
     warranties or conditions of title and non-infringement, and
     implied warranties or conditions of merchantability and fitness
     for a particular purpose;

     ii) effectively excludes on behalf of all other Contributors all
     liability for damages, including direct, indirect, special,
     incidental and consequential damages, such as lost profits;

     iii) does not attempt to limit or alter the recipients' rights
     in the Source Code under section 3.2; and

     iv) requires any subsequent distribution of the Program by any
     party to be under a license that satisfies the requirements
     of this section 3.

3.2 When the Program is Distributed as Source Code:

  a) it must be made available under this Agreement, or if the
  Program (i) is combined with other material in a separate file or
  files made available under a Secondary License, and (ii) the initial
  Contributor attached to the Source Code the notice described in
  Exhibit A of this Agreement, then the Program may be made available
  under the terms of such Secondary Licenses, and

  b) a copy of this Agreement must be included with each copy of
  the Program.

3.3 Contributors may not remove or alter any copyright, patent,
trademark, attribution notices, disclaimers of warranty, or limitations
of liability ("notices") contained within the Program from any copy of
the Program which they Distribute, provided that Contributors may add
their own appropriate notices.

4. COMMERCIAL DISTRIBUTION

Commercial distributors of software may accept certain responsibilities
with respect to end users, business partners and the like. While this
license is intended to facilitate the commercial use of the Program,
the Contributor who includes the Program in a commercial product
offering should do so in a manner which does not create potential
liability for other Contributors. Therefore, if a Contributor includes
the Program in a commercial product offering, such Contributor
("Commercial Contributor") hereby agrees to defend and indemnify every
other Contributor ("Indemnified Contributor") against any losses,
damages and costs (collectively "Losses") arising from claims, lawsuits
and other legal actions brought by a third party against the Indemnified
Contributor to the extent caused by the acts or omissions of such
Commercial Contributor in connection with its distribution of the Program
in a commercial product offering. The obligations in this section do not
apply to any claims or Losses relating to any actual or alleged
intellectual property infringement. In order to qualify, an Indemnified
Contributor must: a) promptly notify the Commercial Contributor in
writing of such claim, and b) allow the Commercial Contributor to control,
and cooperate with the Commercial Contributor in, the defense and any
related settlement negotiations. The Indemnified Contributor may
participate in any such claim at its own expense.

For example, a Contributor might include the Program in a commercial
product offering, Product X. That Contributor is then a Commercial
Contributor. If that Commercial Contributor then makes performance
claims, or offers warranties related to Product X, those performance
claims and warranties are such Commercial Contributor's responsibility
alone. Under this section, the Commercial Contributor would have to
defend claims against the other Contributors related to those performance
claims and warranties, and if a court requires any other Contributor to
pay any damages as a result, the Commercial Contributor must pay
those damages.

5. NO WARRANTY

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT
PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS"
BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF
TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR
PURPOSE. Each Recipient is solely responsible for determining the
appropriateness of using and distributing the Program and assumes all
risks associated with its exercise of rights under this Agreement,
including but not limited to the risks and costs of program errors,
compliance with applicable laws, damage to or loss of data, programs
or equipment, and unavailability or interruption of operations.

6. DISCLAIMER OF LIABILITY

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT
PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS
SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

7. GENERAL

If any provision of this Agreement is invalid or unenforceable under
applicable law, it shall not affect the validity or enforceability of
the remainder of the terms of this Agreement, and without further
action by the parties hereto, such provision shall be reformed to the
minimum extent necessary to make such provision valid and enforceable.

If Recipient institutes patent litigation against any entity
(including a cross-claim or counterclaim in a lawsuit) alleging that the
Program itself (excluding combinations of the Program with other software
or hardware) infringes such Recipient's patent(s), then such Recipient's
rights granted under Section 2(b) shall terminate as of the date such
litigation is filed.

All Recipient's rights under this Agreement shall terminate if it
fails to comply with any of the material terms or conditions of this
Agreement and does not cure such failure in a reasonable period of
time after becoming aware of such noncompliance. If all Recipient's
rights under this Agreement terminate, Recipient agrees to cease use
and distribution of the Program as soon as reasonably practicable.
However, Recipient's obligations under this Agreement and any licenses
granted by Recipient relating to the Program shall continue and survive.

Everyone is permitted to copy and distribute copies of this Agreement,
but in order to avoid inconsistency the Agreement is copyrighted and
may only be modified in the following manner. The Agreement Steward
reserves the right to publish new versions (including revisions) of
this Agreement from time to time. No one other than the Agreement
Steward has the right to modify this Agreement. The Eclipse Foundation
is the initial Agreement Steward. The Eclipse Foundation may assign the
responsibility to serve as the Agreement Steward to a suitable separate
entity. Each new version of the Agreement will be given a distinguishing
version number. The Program (including Contributions) may always be
Distributed subject to the version of the Agreement under which it was
received. In addition, after a new version of the Agreement is published,
Contributor may elect to Distribute the Program (including its
Contributions) under the new version.

Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
receives no rights or licenses to the intellectual property of any
Contributor under this Agreement, whether expressly, by implication,
estoppel or otherwise. All rights in the Program not expressly granted
under this Agreement are reserved. Nothing in this Agreement is intended
to be enforceable by any entity that is not a Contributor or Recipient.
No third-party beneficiary rights are created under this Agreement.

Exhibit A - Form of Secondary Licenses Notice

"This Source Code may also be made available under the following
Secondary Licenses when the conditions for such availability set forth
in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
version(s), and exceptions or additional permissions here}."

  Simply including a copy of this Agreement, including this Exhibit A
  is not sufficient to license the Source Code under Secondary Licenses.

  If it is not possible or desirable to put the notice in a particular
  file, then You may include the notice in a location (such as a LICENSE
  file in a relevant directory) where a recipient would be likely to
  look for such a notice.

  You may add additional accurate notices of copyright ownership.


================================================
FILE: README.md
================================================
<p align="center">
    <img src="./icon/windows12.svg" width="100" height="100">
</p>
<h1 align="center">Windows 12 网页版</h1>
<p align="center" class="shields">
  <span href="https://github.com/tjy-gitnub/win12/issues" style="text-decoration:none">
    <img src="https://img.shields.io/github/issues/tjy-gitnub/win12.svg" alt="GitHub issues"/>
  </span>
  <span href="https://github.com/tjy-gitnub/win12/stargazers" style="text-decoration:none">
    <img src="https://img.shields.io/github/stars/tjy-gitnub/win12.svg" alt="GitHub stars"/>
  </span>
  <span href="https://github.com/tjy-gitnub/win12/network" style="text-decoration:none">
    <img src="https://img.shields.io/github/forks/tjy-gitnub/win12.svg" alt="GitHub forks"/>
  </span>
  <!-- <span href="https://tjy-gitnub.github.io/win12/desktop.html" style="text-decoration:none">
    <img src="https://status.tangyuan0821.com/api/badge/5/status" alt="Status"/>
  </span> -->
  <a href="https://trendshift.io/repositories/115" target="_blank"><img src="https://trendshift.io/api/badge/repositories/115" alt="tjy-gitnub%2Fwin12 | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
</p>
<p align="center" class="language" title="Language selection 语言选择">
  <a href="readme/README_en_us.md">English</a> | 
  <b>简体中文</b> | 
  <a href="readme/README_fr_fr.md">Français</a>|
  <a href="readme/README_zh_tw.md">繁體中文</a>
</p>
<details align="center">
  <summary>Star History</summary>
  <a href="https://star-history.com/#tjy-gitnub/win12&Date" style="text-decoration:none">
    <img src="https://api.star-history.com/svg?repos=tjy-gitnub/win12&type=Date" alt="Star History Chart">
  </a>
</details>

## 目录

- [Windows 12 网页版](#windows-12-网页版)
  - [前言](#前言)
  - [在线体验](#在线体验)
  - [效果展示](#效果展示)
  - [前景规划](#前景规划)
  - [开源声明](#开源声明)
  - [贡献须知](#贡献须知)
  - [贡献者](#贡献者)
  - [资助我们](#资助我们)

## 前言

很久以前 @tjy-gitnub 看到 Windows 12 概念版(Powered by PowerPoint)后深受启发,决定做一个 Windows 12 网页版,就像 [Windows 11 网页版](https://win11.blueedge.me/) 一样。 它拥有精美的 ui 设计,流畅丰富的动画,各种高级的功能。

于是就有了这个项目(是的)

> [!NOTE]
> 目前移动端适配不太完善,开桌面版网站凑合着用吧 `>v-)o`

## 在线体验

点击[此处](tjy-gitnub.github.io/win12/desktop.html)即可体验。

## 效果展示

> 新的版本有很多变化,仅供参考,请以实物为准(你点一下 [这里](https://tjy-gitnub.github.io/win12/desktop.html) 就知道了啊,不麻烦`-_-)o` )

![image](https://tjy-gitnub.github.io/win12/img/start-menu.png)

_开始菜单_

![image](https://tjy-gitnub.github.io/win12/img/colorful-apps.png)

_丰富的应用_

![image](https://tjy-gitnub.github.io/win12/img/dark-mode.png)

_深色模式_

![image](https://tjy-gitnub.github.io/win12/img/ai-copilot.png)
_AI Copilot([相关信息](./scripts/AI%20Copilot%20service/README.md))_

## 前景规划

关于该项目的路径规划:

- [x] 基本功能与应用
- [x] 外观整体优化
- [x] 加入特效
- [x] 窗口功能
- [x] 应用完善
- [x] 添加更多个性化方面的设置
- [x] 添加 Edge 应用
- [ ] 为更多应用添加标签页
- [x] 完善小组件,添加到桌面等功能
- [ ] 动态壁纸
- [ ] 更多任务栏的自定义
- [ ] 丰富应用生态,添加 Microsoft Store
- [ ] 完善设置及 Windows 更新

下面是一些...呃......畅..想 `~o~)/`:

- [x] 建立文件系统
- [ ] 建立自己的可执行文件机制
- [ ] 将 .exe 文件转化并执行
- [ ] 提供更多 api 供应用调用
- [x] 内置浏览器内核,成为应用
- [ ] 将项目更名为 "Windows 12"
- [ ] 封装到 Windows 系统中
- [ ] 将启动程序设为此应用
- [ ] 去除多余系统功能,封装成独立的操作系统
- [ ] 将项目更名为 "Doswin 1.0"
- [ ] 适配量子计算机
- [x] 接入 AI
- [ ] 将项目更名为 "550W"

## 开源声明

Windows12 网页版的内容均采用较为宽松的著作权许可协议授权社会公众使用。

### 计算机程序源代码

Wndows12 网页版是自由软件,采用Eclipse基金会发行的Eclipse Public License 2.0许可证(网址:<https://www.eclipse.org/legal/epl-2.0/>)进行许可。在遵守该许可证的前提下,您可以自由使用本项目的源代码。

### 媒体文件

Windows12 网页版的媒体文件内容(图形作品、美术作品、视听作品)依照依照知识共享 署名-相同方式共享 4.0 协议国际版(CC BY-SA 4.0)公开发表(另有声明的部分除外);在遵守该许可协议的前提下,您可以自由使用本项目内的媒体文件。

相关文件属于合理使用的范畴,应注意使用相关的媒体文件存在法律风险,请在使用前查阅著作权法律法规之规定。

### 附加条款

> [!CAUTION]<br> 以下条款适用于中华人民共和国(不含香港特别行政区、澳门特别行政区、台湾地区)以及“Windows12 网页版”项目服务器所在地的相关法律、法规、政府规章和其他具有强制性的规定。

1. 任何使用、分享或分发本项目者,必须在项目介绍、文档或相关材料中明确附上原作者信息(谭景元,tjy-gitnub)及原项目链接(<https://github.com/tjy-gitnub/win12>)。**您不得故意隐瞒、移除或修改原项目中的署名信息、作者信息或项目链接等;不得限制他人查看这些信息**。
2. 将本项目用于商业用途者,必须标明原作者及项目链接,并以 EPL-2.0 协议开源全部相关源代码。
3. 未经修改的源代码不得用于商业用途。
4. 任何使用或分享本项目者,不得移除、隐藏或限制查看本开源声明。
5. 您在发现他人违反前四款所列各项要求时,请及时[向我们报告](https://github.com/tjy-gitnub/win12/issues),并尽可能及时制止相关内容的发布与传输。
6. 若您实施侵权行为,我们将根据法律规定保留记录,且保留在任何时间以一切方式采取法律行动、追究法律责任的权利(包括但不限于依法向执法机关提交报告、向司法机关提出控告、配合执法机关和司法机关调查等)。

## 贡献须知

详情请见 [贡献指南](./CONTRIBUTING.md)。

本项目使用 i18n 库实现多语言,翻译工作依据[翻译贡献指南](lang/readme.md)进行。

## 贡献者

核心开发者: tjy-gitnub([Bilibili](https://space.bilibili.com/2010692096/)),NB-group([Bilibili](https://space.bilibili.com/1570243738/)),782([Bilibili](https://space.bilibili.com/1046361194/))(三人当年均为初中生)

项目贡献者:详见[此处](https://github.com/tjy-gitnub/win12/graphs/contributors)(感谢我们出色的贡献者!)

## 资助我们

可以向我们的[爱发电账户](https://afdian.com/a/qstudio)捐款

特别感谢以下赞助者:

- CursoR\_光标(<https://afdian.com/a/cursor>)
- Baymax(<https://afdian.com/u/a131cd504dea11eeb6be5254001e7c00>)


================================================
FILE: apps/LICENSE
================================================
Attribution-ShareAlike 4.0 International

=======================================================================

Creative Commons Corporation ("Creative Commons") is not a law firm and
does not provide legal services or legal advice. Distribution of
Creative Commons public licenses does not create a lawyer-client or
other relationship. Creative Commons makes its licenses and related
information available on an "as-is" basis. Creative Commons gives no
warranties regarding its licenses, any material licensed under their
terms and conditions, or any related information. Creative Commons
disclaims all liability for damages resulting from their use to the
fullest extent possible.

Using Creative Commons Public Licenses

Creative Commons public licenses provide a standard set of terms and
conditions that creators and other rights holders may use to share
original works of authorship and other material subject to copyright
and certain other rights specified in the public license below. The
following considerations are for informational purposes only, are not
exhaustive, and do not form part of our licenses.

     Considerations for licensors: Our public licenses are
     intended for use by those authorized to give the public
     permission to use material in ways otherwise restricted by
     copyright and certain other rights. Our licenses are
     irrevocable. Licensors should read and understand the terms
     and conditions of the license they choose before applying it.
     Licensors should also secure all rights necessary before
     applying our licenses so that the public can reuse the
     material as expected. Licensors should clearly mark any
     material not subject to the license. This includes other CC-
     licensed material, or material used under an exception or
     limitation to copyright. More considerations for licensors:
     wiki.creativecommons.org/Considerations_for_licensors

     Considerations for the public: By using one of our public
     licenses, a licensor grants the public permission to use the
     licensed material under specified terms and conditions. If
     the licensor's permission is not necessary for any reason--for
     example, because of any applicable exception or limitation to
     copyright--then that use is not regulated by the license. Our
     licenses grant only permissions under copyright and certain
     other rights that a licensor has authority to grant. Use of
     the licensed material may still be restricted for other
     reasons, including because others have copyright or other
     rights in the material. A licensor may make special requests,
     such as asking that all changes be marked or described.
     Although not required by our licenses, you are encouraged to
     respect those requests where reasonable. More considerations
     for the public:
     wiki.creativecommons.org/Considerations_for_licensees

=======================================================================

Creative Commons Attribution-ShareAlike 4.0 International Public
License

By exercising the Licensed Rights (defined below), You accept and agree
to be bound by the terms and conditions of this Creative Commons
Attribution-ShareAlike 4.0 International Public License ("Public
License"). To the extent this Public License may be interpreted as a
contract, You are granted the Licensed Rights in consideration of Your
acceptance of these terms and conditions, and the Licensor grants You
such rights in consideration of benefits the Licensor receives from
making the Licensed Material available under these terms and
conditions.


Section 1 -- Definitions.

  a. Adapted Material means material subject to Copyright and Similar
     Rights that is derived from or based upon the Licensed Material
     and in which the Licensed Material is translated, altered,
     arranged, transformed, or otherwise modified in a manner requiring
     permission under the Copyright and Similar Rights held by the
     Licensor. For purposes of this Public License, where the Licensed
     Material is a musical work, performance, or sound recording,
     Adapted Material is always produced where the Licensed Material is
     synched in timed relation with a moving image.

  b. Adapter's License means the license You apply to Your Copyright
     and Similar Rights in Your contributions to Adapted Material in
     accordance with the terms and conditions of this Public License.

  c. BY-SA Compatible License means a license listed at
     creativecommons.org/compatiblelicenses, approved by Creative
     Commons as essentially the equivalent of this Public License.

  d. Copyright and Similar Rights means copyright and/or similar rights
     closely related to copyright including, without limitation,
     performance, broadcast, sound recording, and Sui Generis Database
     Rights, without regard to how the rights are labeled or
     categorized. For purposes of this Public License, the rights
     specified in Section 2(b)(1)-(2) are not Copyright and Similar
     Rights.

  e. Effective Technological Measures means those measures that, in the
     absence of proper authority, may not be circumvented under laws
     fulfilling obligations under Article 11 of the WIPO Copyright
     Treaty adopted on December 20, 1996, and/or similar international
     agreements.

  f. Exceptions and Limitations means fair use, fair dealing, and/or
     any other exception or limitation to Copyright and Similar Rights
     that applies to Your use of the Licensed Material.

  g. License Elements means the license attributes listed in the name
     of a Creative Commons Public License. The License Elements of this
     Public License are Attribution and ShareAlike.

  h. Licensed Material means the artistic or literary work, database,
     or other material to which the Licensor applied this Public
     License.

  i. Licensed Rights means the rights granted to You subject to the
     terms and conditions of this Public License, which are limited to
     all Copyright and Similar Rights that apply to Your use of the
     Licensed Material and that the Licensor has authority to license.

  j. Licensor means the individual(s) or entity(ies) granting rights
     under this Public License.

  k. Share means to provide material to the public by any means or
     process that requires permission under the Licensed Rights, such
     as reproduction, public display, public performance, distribution,
     dissemination, communication, or importation, and to make material
     available to the public including in ways that members of the
     public may access the material from a place and at a time
     individually chosen by them.

  l. Sui Generis Database Rights means rights other than copyright
     resulting from Directive 96/9/EC of the European Parliament and of
     the Council of 11 March 1996 on the legal protection of databases,
     as amended and/or succeeded, as well as other essentially
     equivalent rights anywhere in the world.

  m. You means the individual or entity exercising the Licensed Rights
     under this Public License. Your has a corresponding meaning.


Section 2 -- Scope.

  a. License grant.

       1. Subject to the terms and conditions of this Public License,
          the Licensor hereby grants You a worldwide, royalty-free,
          non-sublicensable, non-exclusive, irrevocable license to
          exercise the Licensed Rights in the Licensed Material to:

            a. reproduce and Share the Licensed Material, in whole or
               in part; and

            b. produce, reproduce, and Share Adapted Material.

       2. Exceptions and Limitations. For the avoidance of doubt, where
          Exceptions and Limitations apply to Your use, this Public
          License does not apply, and You do not need to comply with
          its terms and conditions.

       3. Term. The term of this Public License is specified in Section
          6(a).

       4. Media and formats; technical modifications allowed. The
          Licensor authorizes You to exercise the Licensed Rights in
          all media and formats whether now known or hereafter created,
          and to make technical modifications necessary to do so. The
          Licensor waives and/or agrees not to assert any right or
          authority to forbid You from making technical modifications
          necessary to exercise the Licensed Rights, including
          technical modifications necessary to circumvent Effective
          Technological Measures. For purposes of this Public License,
          simply making modifications authorized by this Section 2(a)
          (4) never produces Adapted Material.

       5. Downstream recipients.

            a. Offer from the Licensor -- Licensed Material. Every
               recipient of the Licensed Material automatically
               receives an offer from the Licensor to exercise the
               Licensed Rights under the terms and conditions of this
               Public License.

            b. Additional offer from the Licensor -- Adapted Material.
               Every recipient of Adapted Material from You
               automatically receives an offer from the Licensor to
               exercise the Licensed Rights in the Adapted Material
               under the conditions of the Adapter's License You apply.

            c. No downstream restrictions. You may not offer or impose
               any additional or different terms or conditions on, or
               apply any Effective Technological Measures to, the
               Licensed Material if doing so restricts exercise of the
               Licensed Rights by any recipient of the Licensed
               Material.

       6. No endorsement. Nothing in this Public License constitutes or
          may be construed as permission to assert or imply that You
          are, or that Your use of the Licensed Material is, connected
          with, or sponsored, endorsed, or granted official status by,
          the Licensor or others designated to receive attribution as
          provided in Section 3(a)(1)(A)(i).

  b. Other rights.

       1. Moral rights, such as the right of integrity, are not
          licensed under this Public License, nor are publicity,
          privacy, and/or other similar personality rights; however, to
          the extent possible, the Licensor waives and/or agrees not to
          assert any such rights held by the Licensor to the limited
          extent necessary to allow You to exercise the Licensed
          Rights, but not otherwise.

       2. Patent and trademark rights are not licensed under this
          Public License.

       3. To the extent possible, the Licensor waives any right to
          collect royalties from You for the exercise of the Licensed
          Rights, whether directly or through a collecting society
          under any voluntary or waivable statutory or compulsory
          licensing scheme. In all other cases the Licensor expressly
          reserves any right to collect such royalties.


Section 3 -- License Conditions.

Your exercise of the Licensed Rights is expressly made subject to the
following conditions.

  a. Attribution.

       1. If You Share the Licensed Material (including in modified
          form), You must:

            a. retain the following if it is supplied by the Licensor
               with the Licensed Material:

                 i. identification of the creator(s) of the Licensed
                    Material and any others designated to receive
                    attribution, in any reasonable manner requested by
                    the Licensor (including by pseudonym if
                    designated);

                ii. a copyright notice;

               iii. a notice that refers to this Public License;

                iv. a notice that refers to the disclaimer of
                    warranties;

                 v. a URI or hyperlink to the Licensed Material to the
                    extent reasonably practicable;

            b. indicate if You modified the Licensed Material and
               retain an indication of any previous modifications; and

            c. indicate the Licensed Material is licensed under this
               Public License, and include the text of, or the URI or
               hyperlink to, this Public License.

       2. You may satisfy the conditions in Section 3(a)(1) in any
          reasonable manner based on the medium, means, and context in
          which You Share the Licensed Material. For example, it may be
          reasonable to satisfy the conditions by providing a URI or
          hyperlink to a resource that includes the required
          information.

       3. If requested by the Licensor, You must remove any of the
          information required by Section 3(a)(1)(A) to the extent
          reasonably practicable.

  b. ShareAlike.

     In addition to the conditions in Section 3(a), if You Share
     Adapted Material You produce, the following conditions also apply.

       1. The Adapter's License You apply must be a Creative Commons
          license with the same License Elements, this version or
          later, or a BY-SA Compatible License.

       2. You must include the text of, or the URI or hyperlink to, the
          Adapter's License You apply. You may satisfy this condition
          in any reasonable manner based on the medium, means, and
          context in which You Share Adapted Material.

       3. You may not offer or impose any additional or different terms
          or conditions on, or apply any Effective Technological
          Measures to, Adapted Material that restrict exercise of the
          rights granted under the Adapter's License You apply.


Section 4 -- Sui Generis Database Rights.

Where the Licensed Rights include Sui Generis Database Rights that
apply to Your use of the Licensed Material:

  a. for the avoidance of doubt, Section 2(a)(1) grants You the right
     to extract, reuse, reproduce, and Share all or a substantial
     portion of the contents of the database;

  b. if You include all or a substantial portion of the database
     contents in a database in which You have Sui Generis Database
     Rights, then the database in which You have Sui Generis Database
     Rights (but not its individual contents) is Adapted Material,
     including for purposes of Section 3(b); and

  c. You must comply with the conditions in Section 3(a) if You Share
     all or a substantial portion of the contents of the database.

For the avoidance of doubt, this Section 4 supplements and does not
replace Your obligations under this Public License where the Licensed
Rights include other Copyright and Similar Rights.


Section 5 -- Disclaimer of Warranties and Limitation of Liability.

  a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
     EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
     AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
     ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
     IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
     WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
     PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
     ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
     KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
     ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.

  b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
     TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
     NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
     INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
     COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
     USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
     ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
     DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
     IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.

  c. The disclaimer of warranties and limitation of liability provided
     above shall be interpreted in a manner that, to the extent
     possible, most closely approximates an absolute disclaimer and
     waiver of all liability.


Section 6 -- Term and Termination.

  a. This Public License applies for the term of the Copyright and
     Similar Rights licensed here. However, if You fail to comply with
     this Public License, then Your rights under this Public License
     terminate automatically.

  b. Where Your right to use the Licensed Material has terminated under
     Section 6(a), it reinstates:

       1. automatically as of the date the violation is cured, provided
          it is cured within 30 days of Your discovery of the
          violation; or

       2. upon express reinstatement by the Licensor.

     For the avoidance of doubt, this Section 6(b) does not affect any
     right the Licensor may have to seek remedies for Your violations
     of this Public License.

  c. For the avoidance of doubt, the Licensor may also offer the
     Licensed Material under separate terms or conditions or stop
     distributing the Licensed Material at any time; however, doing so
     will not terminate this Public License.

  d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
     License.


Section 7 -- Other Terms and Conditions.

  a. The Licensor shall not be bound by any additional or different
     terms or conditions communicated by You unless expressly agreed.

  b. Any arrangements, understandings, or agreements regarding the
     Licensed Material not stated herein are separate from and
     independent of the terms and conditions of this Public License.


Section 8 -- Interpretation.

  a. For the avoidance of doubt, this Public License does not, and
     shall not be interpreted to, reduce, limit, restrict, or impose
     conditions on any use of the Licensed Material that could lawfully
     be made without permission under this Public License.

  b. To the extent possible, if any provision of this Public License is
     deemed unenforceable, it shall be automatically reformed to the
     minimum extent necessary to make it enforceable. If the provision
     cannot be reformed, it shall be severed from this Public License
     without affecting the enforceability of the remaining terms and
     conditions.

  c. No term or condition of this Public License will be waived and no
     failure to comply consented to unless expressly agreed to by the
     Licensor.

  d. Nothing in this Public License constitutes or may be interpreted
     as a limitation upon, or waiver of, any privileges and immunities
     that apply to the Licensor or You, including from the legal
     processes of any jurisdiction or authority.


=======================================================================

Creative Commons is not a party to its public licenses.
Notwithstanding, Creative Commons may elect to apply one of its public
licenses to material it publishes and in those instances will be
considered the “Licensor.” The text of the Creative Commons public
licenses is dedicated to the public domain under the CC0 Public Domain
Dedication. Except for the limited purpose of indicating that material
is shared under a Creative Commons public license or as otherwise
permitted by the Creative Commons policies published at
creativecommons.org/policies, Creative Commons does not authorize the
use of the trademark "Creative Commons" or any other trademark or logo
of Creative Commons without its prior written consent including,
without limitation, in connection with any unauthorized modifications
to any of its public licenses or any other arrangements,
understandings, or agreements concerning use of licensed material. For
the avoidance of doubt, this paragraph does not form part of the public
licenses.

Creative Commons may be contacted at creativecommons.org.


================================================
FILE: apps/NOTICE.md
================================================
# 非“自由版权”文件列表
>[!CAUTION]
>本列表内所列文件受著作权保护!相关文件属合理使用范畴。<br>本列表内所列文件可能含有受商标法或其他类似法律、法规保护的内容。

| 文件名称 | 备注| 
| --- | --- |
|disk.png|无| 
|diskwin.png |无|
|folder.png|无|
|od.png|是微软公司的商标|
|rb.png|无|
|thispc.png|无|
|tool-copy|无|
|tool-cut.png|无|
|tool-new.png|无|
|tool-paste.png|无|
|tool-rename.png|无|
|tool-sort.png|无|
|tool-view.png|无|
|apps.png|无|
|blueteeth.png|无|
|game.png|无|
|help.png|无|
|home.png|无|
|ms.png|是微软公司的商标|
|ms365.png|是微软公司的商标|
|network.png|无|
|personal.png|无|
|safe.png|无|
|system.png|无|
|time.png|无|
|update.png|无|
|user.png|无|


================================================
FILE: apps/style/about.css
================================================
#win-about {
    display: flex;
}

#win-setting>.menu>list>a  {
    padding: 5px 10px 5px 20px;
    font-size: 15px;
    display: flex;
    margin-bottom: 4px;
    border-radius: 6px;
}

#win-about>.menu>list>a>img {
    height: 20px;
    width: 20px;
    margin: 1px 10px 0 0;
    font-size: 15px;
}

#win-about>.menu>list>a.check {
    background-color: var(--hover) !important;
}

#win-about>.menu {
    width: 25% !important;
    overflow: hidden;
    min-width: 180px;
    max-width: 300px;
    padding: 3px 5px 5px 15px;
}


#win-about>.menu>list {
    padding-bottom: 50px !important;
    margin-left: 5px;
    height: calc(100% - 138px);
    overflow-y: auto;
    padding-right: 10px;
    border-radius: 6px;
}

#win-about>.menu>list>*>img {
    margin: 2px 7px 0 0;
}

#win-about>.cnt {
    overflow: auto;
    transform: translate(0, 50%);
    opacity: 0;
    width: 0;
    transition: transform 300ms cubic-bezier(0, 0, 0, 1), opacity 300ms 50ms;
    padding: 0 5px 60px 0;
    /* display: none; */
}

#win-about>.cnt.show {
    flex-grow: 1;
    transform: none;
    opacity: 1;
    display: block;
}

#win-about>.cnt .tit {
    margin: 8px 0 3px 0;
    display: flex;
}

#win-about>.cnt .tit>span {
    background: linear-gradient(180deg, var(--theme-1), var(--theme-2));
    border-radius: 10px;
    width: 6px;
    margin: 5px 8px 5px 5px;
    transition: 200ms;
    transform: scaleY(0);
    transform-origin: top;
}

#win-about>.cnt .tit:hover>span {
    transform: none;
}

#win-about>.update>div>details {
    background-color: var(--card);
    padding: 10px 10px 0 15px;
    border-radius: 8px;
    box-shadow: 0 1px 2px 1px var(--s3d);
    margin: 12px 10px 0 0;
    transition: 100ms, height 0ms, padding-bottom 100ms ease-out;
    overflow: hidden;
    height: 45px;
}

:root.corner_squ #win-about>.update>div>details {
    corner-shape: squircle;
    border-radius: 20px;
}

#win-about>.update>div>details[open] {
    padding-bottom: 10px;
    height: 100%;
}

#win-about>.update>div>details:not([open]):hover {
    filter: brightness(1.2);
}

#win-about>.update>div>details:active {
    opacity: 0.6;
}

#win-about>.update>div>details>summary {
    font-size: 17px;
    transition: 200ms;
}

#win-about>.update>div>details>summary>span {
    font-weight: 900;
}

#win-about>.update>div>details>p {
    margin-left: 10px;
}

#contri {
    display: flex;
    flex-wrap: wrap;
}

#contri>.a {
    margin: 3px;
    background: var(--card);
    box-shadow: 0 1px 2px var(--shadow);
    border-radius: 10px;
    width: 110px;
    height: 70px;
    text-align: center;
    padding-top: 10px;
    font-size: 13px;
    transition: 50ms;
}

#contri>.a:hover {
    background: var(--hover);
}

#contri>.a:active {
    opacity: 0.6;
}

#contri>.a>.name {
    font-size: 17px;
    margin: 0px 6px;
    /* border: 6px; */
    white-space: nowrap;
    text-overflow: ellipsis;
    overflow: hidden;
}

#contri>.a>.cbs>.num {
    font-size: 15px;
    font-weight: 550;
}

#contri>.button {
    height: max-content;
    margin: 10px 0 0 10px;
}

.window.winver{
    width: 600px;
    height: 550px;
}

#win-winver>.logo{
    display: flex;
    justify-content: center;
    align-items: center;
}

#win-winver>.logo>.img{
    background: url(../../icon/logo.svg) center;
    background-size: cover;
    height: 70px;
    width: 70px;
    margin:10px;
}

#win-winver>.logo>p{
    background-image: linear-gradient(100deg, #b660d9,#2983cc);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    font-size: 45px;
    /* font-weight: 450; */
    font-family:
    'Microsoft Yahei UI';
    margin: 15px;
}

#win-winver>hr{
    width: calc(100% - 20px);
    margin: 10px;
}

#win-winver p{
    margin: 0 50px;
}

#win-winver>.mesg:hover{
    text-decoration: underline!important;
}

#win-winver>.mesg:active{
    opacity: 0.5;
    transition: 30ms;
}

#win-winver>.bottom{
    position: absolute;
    bottom: 80px;
}


================================================
FILE: apps/style/bios.css
================================================
@font-face {
    font-family: 'dos';
    src: url(../../fonts/dos.ttf);
}

body {
    background-color: #aaaaaa;
}

html,
body {
    width: 100%;
    height: 100%;
}


* {
    font-family: 'dos', monospace;
    padding: 0px;
    margin: 0px;
    border: 0px;
    cursor: none;
    -webkit-user-select: none;
    -moz-user-select: none;
    -o-user-select: none;
    user-select: none;
    scrollbar-width: none;
    -ms-overflow-style: none;
    box-sizing: border-box;
}

::-webkit-scrollbar {
    display: none;
}

.tit {
    font-size: 1.2rem;
    text-align: center;
    background-color: #4ba7a8;
    list-style-type: none;
    margin: 0px;
    padding: 5px;
}

body {
    display: flex;
    flex-direction: column;
}

.pages {
    background-color: #0100a2;
    padding: 5px;
}

a {
    text-decoration: none;
}

.tab {
    font-size: 110%;
    color: #aaaaaa;
    background-color: #0100a2;
    margin: 5px;
    padding: 5px;
}

.tab.foc {
    color: #ffffff !important;
}

.tab.show {
    color: #0100a2;
    background-color: #aaaaaa;
}

.option {
    color: #0100a2;
    background-color: #aaaaaa;
    padding: 0 10px;
}

.page {
    margin: 20px;
    padding: 20px;
    border: 3.5px solid #000;
    height: 100%;
    display: none;
    overflow-y: auto;
}

.page.show {
    display: block !important;
}

.exit {
    color: #0100a2;
    padding: 5px;
}

.confirm-button {
    background-color: #ffffff;
    color: #000000;
}

#mainPage>.table,
#advancedPage>.table,
#bootPage>.table,
#securityPage>.table {
    display: grid;
    grid-template-columns: auto auto;
    gap: 10px;
    width: fit-content;
}

#confirmContainer {
    width: 100%;
    height: 100%;
    position: fixed;
    top: 0px;
    left: 0px;
    display: none;
    justify-content: center;
    align-items: center;
}

#exit_confirm {
    width: calc(30% + 50px);
    height: calc(15% + 70px);
    background-color: #ffffff;
    padding: 20px 10px;
    box-shadow: rgb(0, 0, 0) 8px 16px 0px 0px;
}

#confirm {
    border: 3.5px solid #000;
    height: 100%;
    padding: 20px 10px;
    text-align: center;
    display: grid;
    grid-template-rows: auto auto;
}

#confirm>*:first-child {
    align-self: flex-start;
}

#confirm>*:last-child {
    align-self: flex-end;
}

.submenu {
    padding-left: 20px;
    display: grid;
    grid-template-columns: auto auto;
    gap: 5px;
    margin-bottom: 15px;
}


================================================
FILE: apps/style/calc.css
================================================
@keyframes shine {
    0% {
        border-color: #111;
    }
    49% {
        border-color: #111;
    }
    51% {
        border-color: transparent;
    }
    98% {
        border-color: transparent;
    }
    100% {
        border-color: #111;
    }
}

#win-calc {
    display: flex;
    flex-direction: column;
    padding: 5px;
}

#calc-input {
    /* height: 90px; */
    border: none;
    border-right: 2px solid transparent;
    outline: none;
    background-color: #00000000;
    font-size: 35px;
    text-align: end;
    color: var(--text);
    width: 100%;
}

#win-calc>.container {
    height: 90px;
    display: flex;
    align-items: center;
}

#calc-input:focus {
    border-color: #111;
    animation-name: shine;
    animation-duration: 1s;
    animation-iteration-count: infinite;
}

#win-calc>.keyb {
    flex-grow: 1;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    grid-template-rows: repeat(5, 50px);
    gap: 4px;
}

#win-calc>.keyb>.b {
    /* width: 60px; */
    height: 50px;
    font-size: 25px;
    text-align: center;
    transition: 40ms;
    border-radius: 7px;
    /* border: 1.5px solid #63636330; */
    box-shadow: 0px 1px 1px 1px var(--s3d);
    background: var(--card);
    padding-top: 5px;
    /* border: 1.5px solid var(--bd);
    border-top: 2px solid var(--bd);
    border-bottom: 1px solid var(--bd); */
    /* border-color: var(--bd); */
    transform-origin: bottom;
}

#win-calc>.keyb>.checked {
    background-color: var(--mm) !important;
}

#win-calc>.keyb>.b.u {
    padding-top: 5px;
}

#win-calc>.keyb>.b.ans {
    background-image: linear-gradient(120deg, var(--theme-1), var(--theme-2));
    border: none;
    color: #ddd;
}

#win-calc>.keyb>.b.ans:hover {
    backdrop-filter: brightness(0.8);
}

#win-calc>.keyb>span {
    width: 71px;
    margin: 5px 5px;
    height: 71px;
}

#win-calc>.keyb>.b:hover {
    background-color: var(--hover);
}

#win-calc>.keyb>.b:active {
    opacity: 0.8;
    transform: scale(0.96);
    box-shadow: 0px 1px 1px var(--bd);
}

================================================
FILE: apps/style/camera.css
================================================
.camera-notice {
    width: 300px !important;
    height: 400px !important;
}

#win-camera {
    position: relative;
}

#win-camera>.video {
    width: 100%;
    height: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
}

#win-camera>.control>div {
    width: 45px;
    height: 45px;
}

#win-camera>.control>div>.startbutton {
    width: 45px;
    height: 45px;
    border-radius: 50%;
    background-color: #ffffffee;
    backdrop-filter: blur(10px) saturate(1.3);
    box-shadow: 0 0 0 4px #44444470, 0 0 0 7px #ffffffa0, 1px 1px 15px 7px #00000090;
    transition: 200ms;
}

#win-camera>.control>div>.startbutton:hover {
    background-color: #ffffffc0;
}

#win-camera>.control {
    position: absolute;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #00000010;
}

#win-camera.h>.control {
    height: 100%;
    width: 80px;
    right: 0px;
    top: 0px;
}

#win-camera.v>.control {
    height: 80px;
    width: 100%;
    bottom: 0px;
    left: 0px;
}

#win-camera.h video {
    height: 100%;
}

#win-camera.v video {
    width: 100%;
}

================================================
FILE: apps/style/code-editor.css
================================================
#win-code-editor {
    display: flex;
    flex-direction: column;
    min-height: 0;
    user-select: all;
}

#win-code-editor *::-webkit-scrollbar {
    background-color: #FFFFFF10;
}

#win-code-editor * {
    scroll-behavior: initial !important;
}

#code-ace-editor {
    font-size: 15px;
    line-height: 1.4;
    width: 100% !important;
    height: 100% !important;
    font-weight: 200;
}


================================================
FILE: apps/style/copilot.css
================================================
#copilot{
    position: fixed;
    right: -410px;
    background-color: var(--bg70);
    /* box-shadow: 1px 2px 25px var(--shadow); */
    border: 2px solid #6f6f6f30;
    width: 400px;
    height: calc(100% - 70px);
    top: 10px;
    border-radius: 14px;
    overflow: hidden;
    transition: 300ms cubic-bezier(0.9, 0, 0.1, 1);
    z-index: 92;
    display: flex;
    flex-direction: column;
    padding-top: 5px;
}

#copilot.show{
    right: 10px;
    box-shadow: 1px 2px 25px var(--shadow);
    backdrop-filter: blur(60px) saturate(3) contrast(0.6);
    /* backdrop-filter: blur(80px) saturate(1.3); */
    -webkit-backdrop-filter: blur(60px) saturate(3) contrast(0.6);
}

#copilot>.titbar{
    height: 40px;
    display: flex;
    align-items: center;
    padding: 0 10px;
    min-height: 40px;
}

#copilot>.titbar>.text{
    font-size: 20px;
}

#copilot>.titbar>.alr{
    flex-grow: 1;
    display: flex;
    justify-content: flex-end;
}

#copilot>.titbar>.alr>.btn{
    width: 35px;
    height: 35px;
    text-align: center;
    padding: 6px 0;
    display: block;
}

#copilot>.chat{
    flex-grow: 1;
    padding: 10px 15px;
    overflow-y: auto;
    overflow-x:hidden !important;
    scroll-behavior: smooth;
}

#copilot>.chat>.line{
    width: 100%;
    display: flex;
    margin-top: 15px;
}
#copilot>.chat>.line.user{
    width: 100%;
    flex-direction: row-reverse;
}
@keyframes msg{
    0%{
        opacity: 0;
        transform: translateY(20px);
    }
    100%{
        opacity: 1;
        transform: none;
    }
}

#copilot>.chat>.line>.text{
    width: max-content;
    padding: 10px 15px;
    border-radius: 10px;
    box-shadow: 0 1px 6px var(--shadow);
    max-width: calc(100% - 40px);
    word-break:break-word;
    animation: msg 400ms cubic-bezier(0,0,0,1);
    user-select:text;
}
#copilot>.chat>.line.ai>.text{
    background-color: var(--msg);
}
#copilot>.chat>.line.user>.text{
    background: linear-gradient(100deg,#3397e9c0,#024bb1d6);
    color: #fff;
}
#copilot>.chat>.line.system>.text{
    background: linear-gradient(100deg,#ca3ee0b0,#6f0bbcbe);
    color: #fff;
}
#copilot>.chat>.line.ai>.text>.action{
    background-color: var(--hover-b);
    padding: 10px 15px;
    border-radius: 9px;
    box-shadow: 0 1px 2px var(--s3d);
    margin: 10px 5px;
}
#copilot>.chat>.line.ai>.text>.action>.tit{
    font-size: 20px;
}

#copilot>.inputbox{
    height: 60px;
    display: flex;
    align-items: center;
    min-height: 60px;
}

#copilot>.inputbox.disable{
    pointer-events:none;
    filter: saturate(0.8) brightness(0.9);
}

#copilot>.inputbox>.input{
    margin: 0 10px;
    flex-grow: 1;
    height: 40px;
}

#copilot>.inputbox>.send{
    width: 80px;
    color: #fff;
    text-align: center;
    margin-right: 10px;
    background: linear-gradient(120deg,var(--theme-1),var(--theme-2));
}

================================================
FILE: apps/style/defender.css
================================================
#win-defender icon {
    font-family: SettingsIcons;
    font-size: 20px;
    margin: 0px 20px 0 5px;
    background-image: linear-gradient(100deg, var(--theme-1), var(--theme-2));
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    filter: saturate(130%) brightness(1.1);
}

.window.defender {
    --app-bg-dark: #01081f;
    --app-bg-before: linear-gradient(180deg, rgba(1, 8, 31, 0) 0%, rgba(1, 8, 31, 1) 100%);
    --app-bg-before-2: linear-gradient(0deg, rgba(1, 8, 31, 0) 0%, rgba(1, 8, 31, 1) 100%);
    --app-bg-light: #151c32;
    --app-logo: #3d7eff;
    --nav-link: #5e6a81;
    --nav-link-active: #fff;
    --list-item-hover: #0c1635;
    --main-color: #fff;
    --secondary-color: #5e6a81;
    --color-light: rgba(52, 129, 210, .2);
    --warning-bg: #ffe5e5;
    --warning-icon: #ff8181;
    --applicant-bg: #e3fff1;
    --applicant-icon: #61e1a1;
    --close-bg: #fff8e5;
    --close-icon: #fdbc64;
    --draft-bg: #fed8b3;
    --draft-icon: #e9780e;
}

#win-defender {
    width: 100%;
    height: 100%;
    display: flex;
    position: relative;
    max-width: 1680px;
}

#win-defender .app-left {
    flex-basis: 240px;
    background-color: var(--app-bg-dark);
    height: 100%;
    overflow-y: auto;
    overflow-x: hidden;
    padding: 24px 0;
    transition: all 0.4s ease-in;
}

#win-defender .app-left.show {
    right: 0;
    opacity: 1;
}

#win-defender .app-main {
    flex: 1;
    height: 100%;
    overflow-y: auto;
    overflow-x: hidden;
    background-color: var(--app-bg-light);
    padding: 24px;
    background: radial-gradient(circle, #051340 1%, #040f32 100%);
}

#win-defender .app-right {
    flex-basis: 320px;
    width: 320px;
    background-color: var(--app-bg-dark);
    height: 100%;
    padding: 64px 0 0 0;
    display: flex;
    flex-direction: column;
    position: relative;
    transition: all 0.4s ease-in;
}

#win-defender .app-right:before {
    content: "";
    position: absolute;
    bottom: 0;
    height: 48px;
    width: 100%;
    background-image: var(--app-bg-before);
    z-index: 1;
}

#win-defender .app-right.show {
    right: 0;
    opacity: 1;
}

#win-defender .app-right .close-right {
    display: none;
}

#win-defender .app-right-content {
    flex: 1;
    height: 100%;
    overflow-y: auto;
    overflow-x: hidden;
}

#win-defender .app-logo {
    display: flex;
    align-items: center;
    color: var(--app-logo);
    margin-right: 16px;
    padding: 0 24px;
}

#win-defender .app-logo span {
    color: #fff;
    display: inline-block;
    line-height: 24px;
    font-size: 16px;
    margin-left: 16px;
}

#win-defender ul {
    list-style-type: none;
    padding: 0;
}

#win-defender a {
    text-decoration: none;
    cursor: pointer;
}

#win-defender button {
    cursor: pointer;
}

#win-defender .nav-list {
    margin-top: 40px;
}

#win-defender .nav-list-item {
    margin-bottom: 12px;
}

#win-defender .nav-list-item:not(.active):hover {
    background-color: var(--list-item-hover);
}

#win-defender .nav-list-item.active .nav-list-link {
    color: var(--nav-link-active);
}

#win-defender .nav-list-item.active .nav-list-link:after {
    height: 100%;
    opacity: 1;
}

#win-defender .nav-list-item.active svg {
    stroke: var(--app-logo);
}

#win-defender .nav-list-link {
    font-weight: 300;
    font-size: 14px;
    line-height: 24px;
    padding: 8px 24px;
    color: var(--nav-link);
    display: flex;
    align-items: center;
    position: relative;
}

#win-defender .nav-list-link svg {
    margin-right: 12px;
}

#win-defender .nav-list-link:after {
    content: "";
    height: 100%;
    width: 2px;
    background-color: var(--app-logo);
    right: 0;
    top: 0;
    position: absolute;
    border-radius: 2px;
    opacity: 0;
    height: 0;
}

#win-defender .open-right-area {
    display: none;
    justify-content: center;
    align-items: center;
    border: none;
    background-color: var(--app-bg-dark);
    border-radius: 4px;
    height: 40px;
    width: 40px;
    padding: 0;
}

#win-defender .main-header-line {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 16px;
}

#win-defender .main-header-line h1 {
    color: var(--main-color);
    margin: 0;
    font-size: 24px;
    line-height: 32px;
}

#win-defender .main-header-line input {
    border-radius: 4px;
    background-color: var(--color-light);
    border: none;
    border: 1px solid var(--color-light);
    color: var(--main-color);
    height: 32px;
    padding: 0 8px 0 32px;
    font-size: 14px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%233481d2' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-search'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'/%3E%3C/svg%3E");
    background-position: center left 10px;
    background-repeat: no-repeat;
    background-size: 16px;
    outline: none;
    transition: 0.2s;
    width: 100%;
    max-width: 400px;
    margin-left: 16px;
}

#win-defender .main-header-line input:placeholder {
    font-size: 14px;
    color: rgba(255, 255, 255, 0.6);
}

#win-defender .main-header-line input:hover,
#win-defender .main-header-line input:focus {
    border: 1px solid #3481d2;
    box-shadow: 0 0 0 3px var(--color-light);
}

#win-defender .chart-row {
    display: flex;
    justify-content: space-between;
    margin: 0 -8px;
}

#win-defender .chart-row.three .chart-container-wrapper {
    width: 33.3%;
}

#win-defender .chart-row.three .chart-container-wrapper .chart-container {
    justify-content: space-between;
}

#win-defender .chart-row.two .big {
    flex: 1;
    max-width: 77.7%;
}

#win-defender .chart-row.two .big .chart-container {
    flex-direction: column;
}

#win-defender .chart-row.two .small {
    width: 33.3%;
}

#win-defender .chart-row.two .small .chart-container {
    flex-direction: column;
}

#win-defender .chart-row.two .small .chart-container+.chart-container {
    margin-top: 16px;
}

#win-defender .line-chart {
    width: 100%;
    margin-top: 24px;
}

#win-defender .chart-container {
    width: 100%;
    border-radius: 10px;
    background-color: var(--app-bg-dark);
    padding: 16px;
    display: flex;
    align-items: center;
}

#win-defender .chart-container.applicants {
    max-height: 336px;
    overflow-y: auto;
}

#win-defender .chart-container-wrapper {
    padding: 21px;
}

#win-defender .chart-info-wrapper {
    flex-shrink: 0;
    flex-basis: 120px;
}

#win-defender .chart-info-wrapper h2 {
    color: var(--secondary-color);
    font-size: 12px;
    line-height: 16px;
    font-weight: 600;
    text-transform: uppercase;
    margin: 0 0 8px 0;
}

#win-defender .chart-info-wrapper span {
    color: var(--main-color);
    font-size: 24px;
    line-height: 32px;
    font-weight: 500;
}

#win-defender .chart-svg {
    position: relative;
    max-width: 90px;
    min-width: 40px;
    flex: 1;
}

#win-defender .circle-bg {
    fill: none;
    stroke: #eee;
    stroke-width: 1.2;
}

#win-defender .circle {
    fill: none;
    stroke-width: 1.6;
    stroke-linecap: round;
    -webkit-animation: progress 1s ease-out forwards;
    animation: progress 1s ease-out forwards;
}

#win-defender .circular-chart.orange .circle {
    stroke: #ff9f00;
}

#win-defender .circular-chart.orange .circle-bg {
    stroke: #776547;
}

#win-defender .circular-chart.blue .circle {
    stroke: #00cfde;
}

#win-defender .circular-chart.blue .circle-bg {
    stroke: #557b88;
}

#win-defender .circular-chart.pink .circle {
    stroke: #ff7dcb;
}

#win-defender .circular-chart.pink .circle-bg {
    stroke: #6f5684;
}

#win-defender .percentage {
    fill: #fff;
    font-size: 0.5em;
    text-anchor: middle;
    font-weight: 400;
}

@-webkit-keyframes progress {
    0% {
        stroke-dasharray: 0 100;
    }
}

@keyframes progress {
    0% {
        stroke-dasharray: 0 100;
    }
}

#win-defender .chart-container-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 100%;
    margin-bottom: 12px;
}

#win-defender .chart-container-header h2 {
    margin: 0;
    color: var(--main-color);
    font-size: 12px;
    line-height: 16px;
    opacity: 0.8;
}

#win-defender .chart-container-header span {
    color: var(--app-logo);
    font-size: 12px;
    line-height: 16px;
}

#win-defender .acquisitions-bar {
    width: 100%;
    height: 4px;
    border-radius: 4px;
    margin-top: 16px;
    margin-bottom: 8px;
    display: flex;
}

#win-defender .bar-progress {
    height: 4px;
    display: inline-block;
}

#win-defender .bar-progress.applications {
    background-color: #ff7dcb;
}

#win-defender .bar-progress.shortlisted {
    background-color: #00cfde;
}

#win-defender .bar-progress.on-hold {
    background-color: #fdac42;
}

#win-defender .bar-progress.rejected {
    background-color: #ff5c5c;
}

#win-defender .progress-bar-info {
    display: flex;
    align-items: center;
    margin-top: 8px;
    width: 100%;
}

#win-defender .progress-color {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    margin-right: 8px;
}

#win-defender .progress-color.applications {
    background-color: #ff7dcb;
}

#win-defender .progress-color.shortlisted {
    background-color: #00cfde;
}

#win-defender .progress-color.on-hold {
    background-color: #fdac42;
}

#win-defender .progress-color.rejected {
    background-color: #ff5c5c;
}

#win-defender .progress-type {
    color: var(--secondary-color);
    font-size: 12px;
    line-height: 16px;
}

#win-defender .progress-amount {
    color: var(--secondary-color);
    font-size: 12px;
    line-height: 16px;
    margin-left: auto;
}

#win-defender .applicant-line {
    display: flex;
    align-items: center;
    width: 100%;
    margin-top: 12px;
}

#win-defender .applicant-line img {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    -o-object-fit: cover;
    object-fit: cover;
    margin-right: 10px;
    flex-shrink: 0;
}

#win-defender .applicant-info span {
    color: var(--main-color);
    font-size: 14px;
    line-height: 16px;
}

#win-defender .applicant-info p {
    margin: 4px 0;
    font-size: 12px;
    line-height: 16px;
    color: var(--secondary-color);
}

#win-defender .profile-box {
    display: flex;
    flex-direction: column;
    align-items: center;
    position: relative;
}

#win-defender .profile-box:before {
    content: "";
    position: absolute;
    top: 100%;
    height: 48px;
    width: 100%;
    background-image: var(--app-bg-before-2);
    z-index: 1;
}

#win-defender .profile-photo-wrapper {
    width: 80px;
    height: 80px;
    overflow: hidden;
    border-radius: 50%;
    margin-bottom: 16px;
}

#win-defender .profile-photo-wrapper img {
    width: 100%;
    height: 100%;
    -o-object-fit: cover;
    object-fit: cover;
}

#win-defender .profile-text,
#win-defender .profile-subtext {
    font-size: 12px;
    line-height: 16px;
    color: var(--secondary-color);
    margin: 0 0 8px 0;
}

#win-defender .profile-text {
    font-weight: 600;
}

#win-defender .app-right-section-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0 16px;
    margin-top: 16px;
}

#win-defender .app-right-section-header h2 {
    font-size: 14px;
    line-height: 24px;
    color: var(--secondary-color);
}

#win-defender .app-right-section-header span {
    display: inline-block;
    color: var(--secondary-color);
    position: relative;
}

#win-defender .app-right-section-header span.notification-active:before {
    content: "";
    position: absolute;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background-color: var(--app-logo);
    top: -1px;
    right: -1px;
    box-shadow: 0 0 0 2px var(--app-bg-dark);
}

#win-defender .message-line {
    display: flex;
    align-items: center;
    padding: 8px 16px;
    margin-bottom: 8px;
}

#win-defender .message-line:hover {
    background-color: var(--list-item-hover);
}

#win-defender .message-line img {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    -o-object-fit: cover;
    object-fit: cover;
    margin-right: 8px;
}

#win-defender .message-text-wrapper {
    max-width: calc(100% - 48px);
}

#win-defender .message-text {
    font-size: 14px;
    line-height: 16px;
    color: var(--main-color);
    margin: 0;
    opacity: 0.8;
    width: 100%;
}

#win-defender .message-subtext {
    font-size: 12px;
    line-height: 16px;
    color: var(--secondary-color);
    margin: 4px 0 0 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    width: 100%;
}

#win-defender .activity-line {
    padding: 8px 16px;
    display: flex;
    align-items: flex-start;
    margin-bottom: 8px;
}

#win-defender .activity-link {
    font-size: 12px;
    line-height: 16px;
    color: var(--app-logo);
    text-decoration: underline;
}

#win-defender .activity-text {
    font-size: 12px;
    line-height: 16px;
    color: var(--secondary-color);
    width: 100%;
    margin: 0;
}

#win-defender .activity-text strong {
    color: #fff;
    opacity: 0.4;
    font-weight: 500;
}

#win-defender .activity-icon {
    border-radius: 8px;
    width: 32px;
    height: 32px;
    display: flex;
    justify-content: center;
    align-items: center;
    flex-shrink: 0;
    margin-right: 8px;
}

#win-defender .activity-icon.warning {
    background-color: var(--warning-bg);
    color: var(--warning-icon);
}

#win-defender .activity-icon.applicant {
    background-color: var(--applicant-bg);
    color: var(--applicant-icon);
}

#win-defender .activity-icon.close {
    background-color: var(--close-bg);
    color: var(--close-icon);
}

#win-defender .activity-icon.draft {
    background-color: var(--draft-bg);
    color: var(--draft-icon);
}

#win-defender .action-buttons {
    display: flex;
    align-items: center;
}

#win-defender .menu-button {
    width: 40px;
    height: 40px;
    margin-left: 8px;
    display: none;
    justify-content: center;
    align-items: center;
    padding: 0;
    background-color: var(--app-bg-dark);
    border: none;
    color: var(--main-color);
    border-radius: 4px;
}

#win-defender .close-menu {
    position: absolute;
    top: 16px;
    right: 16px;
    display: none;
    align-items: center;
    justify-content: center;
    border: none;
    background-color: transparent;
    padding: 0;
    color: var(--main-color);
    cursor: pointer;
}

@media screen and (max-width: 1350px) {
    #win-defender .app-right {
        flex-basis: 240px;
        width: 240px;
    }

    #win-defender .app-left {
        flex-basis: 200px;
    }
}

@media screen and (max-width: 1200px) {
    #win-defender .app-right {
        position: absolute;
        opacity: 0;
        top: 0;
        z-index: 2;
        height: 100%;
        width: 320px;
        right: -100%;
        box-shadow: 0 0 10px 5px rgba(1, 8, 31, 0.4);
    }

    #win-defender .app-right .close-right {
        position: absolute;
        top: 16px;
        right: 16px;
        display: flex;
        align-items: center;
        justify-content: center;
        border: none;
        background-color: transparent;
        padding: 0;
        color: var(--main-color);
        cursor: pointer;
    }

    #win-defender .app-main .open-right-area {
        display: flex;
        color: var(--main-color);
    }
}

@media screen and (max-width: 1180px) {
    #win-defender .chart-row.two {
        flex-direction: column;
    }

    #win-defender .chart-row.two .big {
        max-width: 100%;
    }

    #win-defender .chart-row.two .small {
        display: flex;
        justify-content: space-between;
        width: 100%;
    }

    #win-defender .chart-row.two .small .chart-container {
        width: calc(50% - 8px);
    }

    #win-defender .chart-row.two .small .chart-container.applicants {
        margin-top: 0;
    }
}

@media screen and (max-width: 920px) {
    #win-defender .menu-button {
        display: flex;
    }

    #win-defender .app-left {
        position: absolute;
        opacity: 0;
        top: 0;
        z-index: 2;
        height: 100%;
        width: 320px;
        right: -100%;
        box-shadow: 0 0 10px 5px rgba(1, 8, 31, 0.4);
    }

    #win-defender .close-menu {
        display: flex;
    }
}

@media screen and (max-width: 650px) {
    #win-defender .chart-row.three {
        flex-direction: column;
    }

    #win-defender .chart-row.three .chart-container-wrapper {
        width: 100%;
    }

    #win-defender .chart-svg {
        min-height: 60px;
        min-width: 40px;
    }
}

@media screen and (max-width: 520px) {
    #win-defender .chart-row.two .small {
        flex-direction: column;
    }

    #win-defender .chart-row.two .small .chart-container {
        width: 100%;
    }

    #win-defender .chart-row.two .small .chart-container.applicants {
        margin-top: 16px;
    }

    #win-defender .main-header-line h1 {
        font-size: 14px;
    }
}

================================================
FILE: apps/style/edge.css
================================================
.window.edge.max>#win-edge {
    padding-bottom: 55px;
}

#win-edge {
    display: flex;
    flex-direction: column;
    transition: 50ms;
}

#win-edge>.tool {
    display: flex;
    padding: 6px 7px 2px 7px;
}

#win-edge>.tool>.a {
    font-size: 18px;
    border-radius: 6px;
    width: 35px;
    height: 30px;
    text-align: center;
    transition: 50ms;
    margin: 0 1.5px;
    --top:2px;
}

#win-edge>.tool>.a.disabled {
    filter: opacity(0.5);
    pointer-events: none;
}

#win-edge>.tool>.a>.bi::before {
    position: relative;
    top: var(--top);
}

#win-edge>.tool>.a:hover {
    background-color: var(--hover-half);
}

#win-edge>.tool>input {
    background-color: var(--hover-half);
    border-radius: 50px;
    border: 1.5px solid transparent;
    padding: 3px 14px 4px 10px;
    outline: medium;
    color: var(--text);
    transition: 100ms, border 0s;
    height: 30px;
    margin: 0 2px;
}

#win-edge>.tool>input.url {
    flex-grow: 1;
}

#win-edge>.tool>input.rename:not(.show) {
    width: 0;
    padding: 0;
    border: none;
}

#win-edge>.tool>input.rename.show {
    width: 200px;
}

#win-edge>.tool>input:hover {
    border-color: #7f7f7f7f;
}

#win-edge>.tool>input:focus {
    border-color: var(--href);
}

#win-edge>iframe {
    width: calc(100% - 4px);
    flex-grow: 1;
    margin: 2px;
    border-radius: 10px;
    --bg: var(--bg);
    --text: var(--text);
    display: none;
}

#win-edge>iframe.show {
    display: block;
}

.reloading>svg {
    width: 27px !important;
}

.reloading {
    margin-right: -5px;
    margin-bottom: -4px;
    animation: reload 100ms;
}

@keyframes reload {
    0% {
        margin-right: -27px;
    }

    100% {
        margin-right: -5px;
    }
}

.reloading>svg>circle:first-child {
    stroke: #7f7f7f50;
    fill: none;
    stroke-width: 2px;
}

.reloading>svg>circle:last-child {
    stroke: #2983cc;
    stroke-width: 2px;
}

#voiceBall {
    aspect-ratio: 1;
}


================================================
FILE: apps/style/explorer.css
================================================
.window.explorer>.titbar>.tabs>.tab>p>img {
    width: 25px;
    height: 25px;
    margin-right: 5px;
}

.window.explorer>.titbar>.tabs>.tab>p {
    display: flex !important;
    align-items: center;
}

#win-explorer {
    display: flex;
    flex-direction: column;
}

#win-explorer>.page {
    display: flex;
    flex-grow: 1;
    overflow: hidden;
}

#win-explorer>.page>.menu {
    min-width: 250px;
    height: 100%;
    overflow-y: auto;
    margin-right: 6px;
    padding-right: 2px;
}

#win-explorer>.page>.menu>.card {
    margin: 10px 0 10px 15px;
    border-radius: 8px;
    background-color: var(--card);
    padding: 4px;
    box-shadow: 0 1px 2px 1px var(--s3d);
}

#win-explorer>.page>.menu>.card>.title {
    padding: 6px 10px;
    font-weight: 550;
}

#win-explorer>.page>.menu>.card>list>a {
    padding: 4px 5px 4px 20px;
    font-size: 15px;
    border-radius: 7px;
    transition: 100ms;
    display: flex;
    height: 30px;
    align-items: center;
}

#win-explorer>.page>.menu>.card>list>a.check {
    background-color: var(--hover) !important;
}

#win-explorer>.page>.menu>.pinned>list>a>img {
    width: 18px;
    height: 18px;
    /* margin-top: 2px; */
    margin-right: 5px;
}

#win-explorer>.page>.menu>.tags>list>a>span:first-child {
    width: 13px;
    height: 13px;
    margin-left: 4px;
    /* margin-top: 4px; */
    margin-right: 7px;
    border-radius: 50%;
    box-shadow: 0 0 5px var(--shadow);
}

#win-explorer>.page>.main {
    flex-grow: 1;
    height: 100%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    padding-left: 2px;
}

#win-explorer>.page>.main>.tool {
    width: 100%;
    height: 42px;
    display: flex;
    padding: 0 10px 5px 10px;
    margin-top: 3px;
    align-items: center;
}

#win-explorer>.page>.main>.tool>.b {
    height: 33px;
    padding: 6px 8px;
    border-radius: 7px;
    transition: 100ms;
    margin: 0 1px;
}

#win-explorer>.page>.main>.tool>.b.t {
    display: flex;
    align-items: center;
    font-size: 15px;
}

#win-explorer>.page>.main>.tool>.b.t>img {
    display: flex;
    margin-right: 5px;
}

#win-explorer>.page>.main>.tool>.b:hover {
    background-color: var(--hover);
}

#win-explorer>.page>.main>.tool>.b>img {
    width: 20px;
    height: 20px;
}

#win-explorer>.page>.main>.tool>.hr {
    width: 2px;
    height: 25px;
    background-color: #7f7f7f7f;
    border-radius: 10px;
    margin: 5px 3px;
}

#win-explorer>.page>.main>.content {
    width: calc(100% - 15px);
    flex-grow: 1;
    background-color: var(--card);
    border-radius: 8px;
    margin: 0 15px 10px 0;
    padding: 13px 10px 40px 10px;
    overflow-y: auto;
    /* border: 1.5px solid #6f6f6f30; */
    box-shadow: 0 1px 2px 1px var(--s3d);
}

#win-explorer>.path {
    height: 35px;
    width: 100%;
    display: flex;
    padding: 4px 10px 0 10px;
    align-items: center;
    /* margin-bottom: 10px; */
}


#win-explorer>.path>.front.disabled,
#win-explorer>.path>.back.disabled {
    filter: opacity(0.5);
    pointer-events: none;
}

#win-explorer>.path>.btn {
    transition: 100ms;
    font-size: 17px;
    text-align: center;
    padding-top: 4px;
    min-width: 33px;
}

#win-explorer>.path>.tit {
    overflow: hidden;
    display: flex;
    /* background-color: var(--bg70); */
    flex-grow: 1;
    margin: 0px 10px 0px 5px;
    border-radius: 7px;
    height: 32px;
    /* align-items: center; */
}

#win-explorer>.path>.tit>img {
    width: 22px;
    height: 22px;
    margin-top: 2px;
}

#win-explorer>.path>.tit>.path {
    display: flex;
    align-items: center;
    overflow-y: hidden;
    /* flex-grow: 1; */
    width: calc(100% - 35px);
}

#win-explorer>.path>.tit>.path::-webkit-scrollbar {
    height: 2px;
}

#win-explorer>.path>.tit>.path::-webkit-scrollbar-thumb {
    background: #7f7f7f70;
    background-clip: padding-box;
    border: 0px solid transparent;
    border-radius: 10px;
}


#win-explorer>.path>.tit>.path>* {
    display: block;
    height: 100%;
    white-space: nowrap;
}

#win-explorer>.path>.tit>.path>.arrow {
    opacity: 0.4;
    font-size: 14px;
    line-height: 1;
    height: 14px;
    margin: 0 4px;
}

#win-explorer>.path>.tit>.path>.text {
    padding: 2px 5px;
    height: min-content;
    border-radius: 5px;
    font-size: 15px;
    transition: 50ms;
}

#win-explorer>.path>.tit>.path>.text:hover {
    background-color: var(--hover);
}

#win-explorer>.path>.tit>.path>.text:active {
    opacity: 0.8;
}

#win-explorer>.path>.tit>.icon {
    width: 25.6px;
    margin-top: -1px;
    margin-left: 3px;
    margin-right: 5px;
    background-size: contain;
    background-position: 50% 50%;
    background-repeat: no-repeat;
}

#win-explorer>.path>.search {
    min-width: 170px;
    width: 26%;
    max-width: 400px;
}

#win-explorer>.path>.search>* {
    float: right;
}

#win-explorer>.path>.search>.input {
    white-space: nowrap;
    text-overflow: ellipsis;
}

#win-explorer>.path>.search>input-before {
    margin-top: 4px;
    margin-right: -23px;
}

#win-explorer>.page>.main>.content>.view {
    width: 100%;
    height: max-content;
    display: flex;
    flex-direction: column;
}

#win-explorer>.page>.main>.content>.view>.info {
    color: #888;
    text-align: center;
}

#win-explorer>.page>.main>.content>.view>.item {
    width: 100%;
    padding: 2px 5px;
    border-radius: 5px;
    display: flex;
    border: 1.5px solid transparent;
    font-size: 14px;
    align-items: center;
    height: 30px;
    transition: 50ms;
}

:root.corner_squ #win-explorer>.page>.main>.content>.view>.item {
    corner-shape: squircle;
    border-radius: 14px;
}

#win-explorer>.page>.main>.content>.view>.item:active {
    /* transform: scale(0.99); */
    /* transform-origin: bottom; */
    opacity: 0.7;
}

#win-explorer>.page>.main>.content>.view>.item>img {
    width: 25px;
    height: 25px;
    margin-right: 5px;
}

#win-explorer>.page>.main>.content>.view>.item.file>img {
    width: 22px;
    height: 22px;
    margin-left: 2px;
    margin-right: 7px;
}

#win-explorer>.page>.main>.content>.view>.item:hover {
    background-color: var(--hover);
    /* border: 1.5px solid #6f6f6f30; */
    box-shadow: 0 1px 2px var(--s3d);
}

#win-explorer>.page>.main>.content>.view>.item>.input {
    border-radius: 5px;
    /* background: none; */
    font-size: 14px;
    border-width: 2px;
}


:root.corner_squ {
    #win-explorer>.page>.menu>.card,
    #win-explorer>.page>.main>.content {
        corner-shape: squircle;
        border-radius: 18px;
    }

    #win-explorer>.page>.main>.content>.view>.group>.item{
        corner-shape: squircle;
        border-radius: 25px;
    }
}

================================================
FILE: apps/style/imgviewer.css
================================================
#win-imgviewer {
    display: flex;
    justify-content: center;
    align-items: center;
    background: #1e1e1e;
    overflow: hidden;
    height: 100%;
}
#win-imgviewer>.preview-img {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}


================================================
FILE: apps/style/login.css
================================================
#loginback {
    width: 100%;
    height: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
    background-image: url('../../img/login.jpg'); 
    background-size: cover;
    background-repeat: no-repeat;
    background-position: 50% 50%;
    transition: filter 500ms, background-color 500ms, opacity 1500ms ease-in-out;
    position: absolute;
    width: 100%;
    height: 100%;
    opacity: 0;
    display: none;
    z-index: 101;
}

#login {
    background-color: #eeeeee40;
    width: 100px;
    padding: 5.5px 8px;
    color: #fff;
    border-radius: 6px;
    font-size: 15.8px;
    text-align: center;
    border: 3px solid #00000000;
    transition: 50ms;
    margin-bottom: -40px;
    z-index: 1;
}

#login:hover {
    border-color: #ffffff50;
    transition: 50ms;
}

#login:active {
    filter: brightness(2);
    scale: 0.97;
    border-color: #00000000;
    background-color: #eeeeee70;
    transition: 80ms;
}

#login-welc{
    height: 100px;
    display: flex;
    flex-direction: column;
    align-items: center;
}

#loginback>div.user {
    width: 150px;
    height: 150px;
    border-radius: 100%;
    background-image: url("../../icon/user.svg");
    background-size: 65% 65%;
    background-position: 50% 50%;
    background-repeat: no-repeat;
    margin-bottom: 10px;
    background-color: #ddd;
    transition: filter 500ms;
    margin-top: -35px;
}

#loginback>div.name {
    color: #fefefe;
    font-size: 30px;
    font-family: Arial, Helvetica, sans-serif;
    margin-bottom: 15px;
    transition: color 500ms;
}

#loginback.close,
#loginback.close>div.user {
    filter: brightness(0);
    /* backdrop-filter: brightness(0); */
}

#loginback.close>div.name,
#loginback.close #login-after {
    color: #000 !important;
}

#loginback.close {
    background-color: black;
}

#loginback .power {
    display: flex;
    position: absolute;
    bottom: 20px;
    right: 20px;
    /* width: 165px; */
    /* justify-content: space-evenly; */
    color: #fff;
    align-items: center;
}

#loginback .power>* {
    cursor: pointer;
    transition: 100ms;
    font-size: 30px;
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 7px;
    border-radius: 7px;
}

#loginback .power>*:hover {
    background-color: #ffffff30;
}

#loginback .power>*:active {
    opacity: 0.7;
}

#loginback>.langselect{
    position: absolute;
    bottom: 80px;
    right: 10px;
}

#loginback>.langselect>*{
    padding: 4px 18px;
}
#loginback>.langselect>.selected{
    pointer-events: none;
    font-weight: bold;
}


================================================
FILE: apps/style/mediaplayer.css
================================================
#win-mediaplayer {
    display: flex;
    justify-content: center;
    align-items: center;
    background: #0e0e0e;
    height: 100%;
    overflow: hidden;
}

#win-mediaplayer>video {
    max-width: 100%;
    max-height: 100%;
    outline: none;
}

#win-mediaplayer>audio {
    width: 80%;
}

#win-pdfviewer {
    height: 100%;
    overflow: hidden;
}


================================================
FILE: apps/style/msstore.css
================================================
@font-face {
    font-family: StoreIcons;
    src: url("../icons/msstore/icons.ttf");
}
/* I love CSS! */
#win-msstore {
    display: grid;
    grid-template-columns: 80px auto;

    & icon {
        font-family: StoreIcons;
    }

    &>.menu {
        & .m-icon {
            color: transparent;
            -webkit-text-stroke: 2px #000;
        }

        &>list {
            margin-left: 5px;
            overflow-y: auto;
            padding-right: 10px;
            border-radius: 6px;
            height: 100%;

            & icon {
                font-size: 1.8em;
                margin-bottom: 0px;
                line-height: 1.1;
                transition: all 500ms;
            }

            & .t2 {
                font-size: 0.7em !important;
                color: var(--text2);
                transition: all 500ms;
                overflow: hidden;
                opacity: 1.0;
            }

            &>a {
                padding: 5px 10px;
                height: 59px !important;
                display: flex;
                flex-direction: column;
                justify-content: center;
                align-items: center;
                margin-bottom: 4px;
                border-radius: 6px;
                transition: all 500ms;
                overflow: hidden;
                position: relative;

                &.check {
                    background-color: var(--hover) !important;

                    & icon {
                        font-size: 2.3em;
                        background-image: linear-gradient(to right bottom, var(--theme-1), var(--theme-2));
                        -webkit-background-clip: text;
                        background-clip: text;
                        color: #00000022;
                    }

                    & .t2 {
                        opacity: 0.0;
                        margin-bottom: -20px;
                    }
                }
            }

            &>span.focs {
                height: 26px;
                margin-top: -47px;
            }
        }
    }

    &>.page {
        background-color: var(--bg50);
        border-radius: 10px 0px 0px 0px;

        &>.cnt {
            transition: transform 300ms cubic-bezier(0, 0, 0, 1), opacity 300ms 50ms, height 0ms, padding 0ms;
            transform: translate(0, 50%);
            opacity: 0;
            height: 0px;
            padding: 0px;
            overflow: hidden;

            &.show {
                height: 100%;
                transform: none !important;
                opacity: 1;
                overflow-y: auto;
                min-height: 0px;
            }

            &.home {
                &>.container {
                    height: 100%;
                    display: grid;
                    grid-template-rows: auto min-content;
                    padding: 0px 15px 30px 15px;

                    &>.apps {
                        &>.tit {
                            margin-left: 30px;
                            font-size: 1.6em;
                            line-height: 1.5;
                        }

                        &>.app-cards {
                            display: grid;
                            grid-template-columns: auto auto auto;
                            grid-template-rows: auto auto auto;

                            &>* {
                                background-color: var(--hover);
                                margin: 10px;
                                border-radius: 10px;
                                padding: 14px;
                                display: flex; 

                                &>.left {
                                    width: 70px;
                                    height: 70px;
                                    background: initial;
                                }

                                &>.right {
                                    width: 100%;

                                    &>.tit {
                                        width: 100%;

                                        &>.up {
                                            width: 100%;
                                            display: flex;
                                            align-items: center;
                                            justify-content: space-between;

                                            &>.type {
                                                font-size: 0.85em;
                                                padding: 4px 8px;
                                                border-radius: 5px;
                                                background-color: var(--fill);
                                                color: var(--text2);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

.m-icon {
    font-family: StoreIcons;
}

================================================
FILE: apps/style/notepad.css
================================================
#win-notepad{
    overflow: hidden;
}

#win-notepad>.tool{
    width: 100%;
    height: 35px;
    padding-top: 5px;
    margin-bottom: 2px;
}

#win-notepad>.text-box{
    border-radius: 10px 10px 0px 0px;
    /* width: 100%; */
    border: none;
    background-color: var(--card);
    opacity: 0.8;
    transform: translate(0,8px);
    outline: none;
    box-shadow: 0 -3px 5px var(--s3d);
    padding: 10px;
    resize: none;
    font-size: 15px;
    line-height: 1.25;
    color: var(--text);
    height: calc(100% - 35px);
    transition: 200ms;
    margin: 0 10px;
}

#win-notepad>.text-box *:not(div):not(br){
    border-radius: 8px;
    outline: 2px solid transparent;
    transition: 100ms;
    display: block;
}

#win-notepad>.text-box *:not(div):not(br):focus{
    background: red;
}

#win-notepad>.text-box *:not(div):not(br):hover{
    outline-color: #2983cc;
}

#win-notepad>.text-box:focus{
    transform: none;
    opacity: 1;
    box-shadow: 0 -5px 7px var(--s3d);
}

#win-notepad>.text-box::selection{
    background: #2983cc;
    color: #ddd;
}

#win-notepad>.text-box.down{
    transform: translate(0,100%);
}

#win-notepad>.tool>a{
    border-radius: 10px;
    margin: -5px 0 0 5px;
    text-align: center;
    padding: 3px 5px;
    display: inline-block;
    transition: 100ms;
}

#win-notepad>.tool>a:hover{
    background-color: var(--hover);
}

#win-notepad>.tool>.notepad-md-toggle.active{
    background-color: var(--hover-b);
}

#win-notepad>.md-preview{
    border-radius: 10px 10px 0px 0px;
    border: none;
    background-color: var(--card);
    opacity: 0.8;
    outline: none;
    box-shadow: 0 -3px 5px var(--s3d);
    padding: 20px 25px;
    font-size: 15px;
    line-height: 1.6;
    color: var(--text);
    height: calc(100% - 35px);
    margin: 0 10px;
    overflow-y: auto;
    transform: translate(0,8px);
}

#win-notepad>.md-preview h1{font-size: 2em;font-weight: 700;margin: 0.67em 0;border-bottom: 1px solid var(--hover-b);padding-bottom: 0.3em;}
#win-notepad>.md-preview h2{font-size: 1.5em;font-weight: 600;margin: 0.83em 0;border-bottom: 1px solid var(--hover-b);padding-bottom: 0.3em;}
#win-notepad>.md-preview h3{font-size: 1.17em;font-weight: 600;margin: 1em 0;}
#win-notepad>.md-preview h4{font-size: 1em;font-weight: 600;margin: 1.33em 0;}
#win-notepad>.md-preview p{margin: 0.5em 0;}
#win-notepad>.md-preview code{background: var(--hover-b);padding: 2px 6px;border-radius: 4px;font-family: Consolas, monospace;font-size: 0.9em;}
#win-notepad>.md-preview pre{background: var(--hover-b);padding: 12px 16px;border-radius: 8px;overflow-x: auto;margin: 0.8em 0;}
#win-notepad>.md-preview pre code{background: none;padding: 0;}
#win-notepad>.md-preview blockquote{border-left: 4px solid var(--theme-1);padding: 4px 16px;margin: 0.8em 0;opacity: 0.85;}
#win-notepad>.md-preview ul,#win-notepad>.md-preview ol{padding-left: 2em;margin: 0.5em 0;}
#win-notepad>.md-preview li{margin: 0.25em 0;}
#win-notepad>.md-preview a{color: var(--theme-1);text-decoration: underline;}
#win-notepad>.md-preview table{border-collapse: collapse;margin: 0.8em 0;}
#win-notepad>.md-preview th,#win-notepad>.md-preview td{border: 1px solid var(--hover-b);padding: 6px 12px;}
#win-notepad>.md-preview th{background: var(--hover-b);font-weight: 600;}
#win-notepad>.md-preview img{max-width: 100%;border-radius: 6px;}
#win-notepad>.md-preview hr{border: none;border-top: 1px solid var(--hover-b);margin: 1em 0;}

#win-notepad-font>.row {
    display: flex;
    justify-content: space-around;
    height: 266px;
}

.select-input {
    display: inline-block;
    height: 200px;
}

.select-input#win-notepad-font-type {
    width: 200px;
}

.select-input#win-notepad-font-size {
    width: 80px;
}

.select-input#win-notepad-font-style {
    width: 90px;
}

.select-input#win-notepad-font-style>.value-box{
    padding: 5px;
}

/* #win-notepad-font-size {
    vertical-align: top;
} */


.select-input>input[type=text] {
    outline: none;
    width: 100%;
    background-color: rgba(255, 255, 255, 0.3);
    border-radius: 10px 10px 0px 0px;
    border: 2px solid #7f7f7f40;
    background: var(--card);
    border-bottom: none;
    color: var(--text);
    padding: 3px 6px;
    /* box-shadow: 2px 2px 5px var(--shadow); */
}

.select-input>.description {
    margin-left: 3px;
}

.select-input>.value-box {
    width: 100%;
    height: 100%;
    border: 2px solid #7f7f7f40;
    background: var(--card);
    border-radius: 0px 0px 10px 10px;
    border-style: solid;
    overflow-y: auto;
    overflow-x: hidden;
    /* background-color: rgba(255, 255, 255, 0.3); */
    /* box-shadow: inset 0px 4px 2.5px var(--shadow); */
    display: block;
    padding: 5px 0 5px 5px;
    /* box-shadow: 2px 2px 5px var(--shadow); */

}

.select-input>.value-box>.option {
    padding: 3px 7px;
}

/* .select-input>.value-box>.option {
    padding: 3px;
    width: 100%;
} */

#win-notepad-font .preview {
    display: inline-block;
    width: 150px;
    height: 150px;
    margin: 5px 10px;;
}

#win-notepad-font .preview>.preview-box {
    display: flex;
    width: 150px;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    word-break: keep-all;
    height: 150px;
    text-align: center;
    border: 2px solid #7f7f7f40;
    background: var(--card);
    border-width: 2px;
    overflow: hidden;
    border-radius: 10px;
    line-height: 1.25;
}

================================================
FILE: apps/style/pythonEditor.css
================================================
#win-pythonEditor *::-webkit-scrollbar {
    background-color: #FFFFFF10;
}

::-webkit-scrollbar:hover {
    background-color: #ffffff10;
}

#win-pythonEditor *{
    scroll-behavior:initial !important;
}

#win-pythonEditor {
    display: grid;
    grid-template-rows: 60% 40%;
    min-height: 0px;
    user-select: all;
}

.window.pythonEditor .titbar .run {
    font-size: 17px;
    padding-top: 4px;
}

#win-python-ace-editor {
    font-size: 16px;
    line-height: 1.25;
    height: 100% !important;
    font-weight: 200;
}

#win-pythonEditor .output {
    background-color: #0f0f0f;
    color: #f8f8f2;
    border: 25px solid #1a1a1a !important;
    border: none;
    /* border-radius: 5px; */
    padding: 10px;
    width: 100%;
    height: 100%;
    font: 14px / normal 'Consolas', 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'Source Code Pro', 'source-code-pro', monospace;
    overflow-y: scroll;
    white-space: pre-wrap;
    word-wrap: break-word;
    user-select: auto;
}

#win-pythonEditor .output::selection {
    background: #ddd;
    background-clip: content-box;
    color: #333;
}
/* 编辑器 */
.ace_editor.ace_autocomplete.ace_dark.ace-vibrant-ink{
    border-radius: 8px;
    box-shadow: 1px 1px 10px #000;
}

.ace_autocomplete .ace_layer.ace_marker-layer>.ace_active-line{
    border-radius: 5px;
    background-color: #ffffff30 !important;
}
.ace_autocomplete .ace_layer.ace_marker-layer>.ace_line-hover{
    border-radius: 5px;
    background: #ffffff20;
    border-color: var(--href);
    transition: 100ms;
}
.ace_autocomplete .ace_layer.ace_text-layer>.ace_line{
    padding: 0px 6px;
}

.ace_autocomplete .ace_layer.ace_text-layer>.ace_line>.ace_completion-highlight{
    color: var(--theme-1);
}

.ace_tooltip{
    border-radius: 8px;
    box-shadow: 1px 1px 10px #000;
    background-color: #26282c !important;
    border: 1px #484747 solid;
    padding: 5px 8px;
}

================================================
FILE: apps/style/recognition.css
================================================
.rainbow-container-main {
    font-size: 11vmin;
    display: flex;
  }
  .draggable {
    width: 100px;
    height: 30px;
    position: absolute;
    cursor: move;
    z-index: 98;
}
.no-drag {
  cursor: default;
}
  .rainbow-container {
    z-index: 1;
    transform: rotate(0deg) translateZ(0);
    transform-origin: center center;
    width: 1em;
    height: 1em;
    border: 1px solid rgba(255, 255, 255, 0.4);
    -webkit-animation: rainbow 3s infinite linear;
    border-radius: 0.5em;
    box-shadow: 0 0 0.3em 0.05em #2c116e, inset 0.03em 0 0.1em 0.02em #de66e4;
    transform-style: preserve-3d;
    perspective: 1em;
  }
  
  @keyframes rainbow {
    0% {
      transform: rotate(0deg) translateZ(0);
      box-shadow: 0 0 0.3em 0.05em #2c116e, inset 0.03em 0 0.1em 0.02em #de66e4;
    }
    25% {
      transform: rotate(90deg) translateZ(0);
      box-shadow: 0 0 0.3em 0.05em #28126a, inset 0.03em 0 0.1em 0.02em #34ceaa;
    }
    50% {
      transform: rotate(180deg) translateZ(0);
      box-shadow: 0 0 0.3em 0.05em #28126a, inset 0.03em 0 0.1em 0.02em #19b3f5;
    }
    75% {
      transform: rotate(270deg) translateZ(0);
      box-shadow: 0 0 0.3em 0.05em #28126a, inset 0.03em 0 0.1em 0.02em #3d52ac;
    }
    100% {
      transform: rotate(360deg) translateZ(0);
      box-shadow: 0 0 0.3em 0.05em #28126a, inset 0.03em 0 0.1em 0.02em #de66e4;
    }
  }
  .rainbow-container {
    position: relative;
  }
  .rainbow-container > div {
    position: absolute;
    top: 0.1em;
    left: 0.1em;
    width: 0.8em;
    height: 0.8em;
    border-radius: 50%;
  }
  
  .rainbow-container .green {
    background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0) 60%, rgba(115, 213, 186, 0.8) 100%);
    transform: rotateY(0) skew(14deg) rotate3d(1.1, 1, 0.9, 0);
    animation: curve-rotate-green 6s infinite linear;
  }
  
  .rainbow-container .pink {
    background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0) 50%, rgba(215, 115, 229, 0.8) 100%);
    transform: rotateY(180deg) skew(14deg) rotate3d(1.1, 1, 0.9, 0);
    animation: curve-rotate-pink 3s infinite linear;
  }
  
  @-webkit-keyframes curve-rotate-green {
    0% {
      transform: rotateY(0) skew(14deg) rotate3d(1.1, 1, 0.9, 0deg);
    }
    50% {
      transform: rotateY(0) skew(14deg) rotate3d(1.1, 1, 0.9, 180deg);
    }
    100% {
      transform: rotateY(0) skew(14deg) rotate3d(1.1, 1, 0.9, 360deg);
    }
  }
  @-moz-keyframes curve-rotate-green {
    0% {
      transform: rotateY(0) skew(14deg) rotate3d(1.1, 1, 0.9, 0deg);
    }
    50% {
      transform: rotateY(0) skew(14deg) rotate3d(1.1, 1, 0.9, 180deg);
    }
    100% {
      transform: rotateY(0) skew(14deg) rotate3d(1.1, 1, 0.9, 360deg);
    }
  }
  @-o-keyframes curve-rotate-green {
    0% {
      transform: rotateY(0) skew(14deg) rotate3d(1.1, 1, 0.9, 0deg);
    }
    50% {
      transform: rotateY(0) skew(14deg) rotate3d(1.1, 1, 0.9, 180deg);
    }
    100% {
      transform: rotateY(0) skew(14deg) rotate3d(1.1, 1, 0.9, 360deg);
    }
  }
  @keyframes curve-rotate-green {
    0% {
      transform: rotateY(0) skew(14deg) rotate3d(1.1, 1, 0.9, 0deg);
    }
    50% {
      transform: rotateY(0) skew(14deg) rotate3d(1.1, 1, 0.9, 180deg);
    }
    100% {
      transform: rotateY(0) skew(14deg) rotate3d(1.1, 1, 0.9, 360deg);
    }
  }
  @-webkit-keyframes curve-rotate-pink {
    0% {
      transform: rotateY(180deg) skew(14deg) rotate3d(1.1, 1, 0.9, 0deg);
    }
    50% {
      transform: rotateY(180deg) skew(14deg) rotate3d(1.1, 1, 0.9, 180deg);
    }
    100% {
      transform: rotateY(180deg) skew(14deg) rotate3d(1.1, 1, 0.9, 360deg);
    }
  }
  @-moz-keyframes curve-rotate-pink {
    0% {
      transform: rotateY(180deg) skew(14deg) rotate3d(1.1, 1, 0.9, 0deg);
    }
    50% {
      transform: rotateY(180deg) skew(14deg) rotate3d(1.1, 1, 0.9, 180deg);
    }
    100% {
      transform: rotateY(180deg) skew(14deg) rotate3d(1.1, 1, 0.9, 360deg);
    }
  }
  @-o-keyframes curve-rotate-pink {
    0% {
      transform: rotateY(180deg) skew(14deg) rotate3d(1.1, 1, 0.9, 0deg);
    }
    50% {
      transform: rotateY(180deg) skew(14deg) rotate3d(1.1, 1, 0.9, 180deg);
    }
    100% {
      transform: rotateY(180deg) skew(14deg) rotate3d(1.1, 1, 0.9, 360deg);
    }
  }
  @keyframes curve-rotate-pink {
    0% {
      transform: rotateY(180deg) skew(14deg) rotate3d(1.1, 1, 0.9, 0deg);
    }
    50% {
      transform: rotateY(180deg) skew(14deg) rotate3d(1.1, 1, 0.9, 180deg);
    }
    100% {
      transform: rotateY(180deg) skew(14deg) rotate3d(1.1, 1, 0.9, 360deg);
    }
  }
  .footer {
    position: fixed;
    bottom: 1em;
    right: 1em;
    font-size: 12px;
    font-style: italic;
    color: white;
  }
  .footer a {
    color: white;
  }
  

================================================
FILE: apps/style/run.css
================================================
#win-run {
    display: flex !important;
    flex-direction: column;
}

#win-run>.top {
    display: flex;
    padding: 10px;
}

#win-run>.top>.icon {
    min-width: 70px;
    background-image: url('../../icon/run.svg');
    background-position: 50% 50%;
    background-repeat: no-repeat;
    background-size: contain;
    margin-right: 10px;
}

#win-run>.top>.text {
    font-size: 15px;
    line-height: 1.2;
}

#win-run>.open {
    display: flex;
    gap: 15px;
    padding: 10px 20px 10px 20px;
}

#win-run>.open>input {
    flex-grow: 1;
    width: auto !important;
}

#win-run>.open>.prompt {
    margin-top: 3px;
}

================================================
FILE: apps/style/setting.css
================================================
@font-face {
    font-family: SettingsIcons;
    src: url(../icons/setting/icons.woff2) format("woff2")
}

#win-setting>.page>.cnt>.title {
    font-size: 29px;
    padding: 10px 5px 10px 5px;
    display: block;
    margin: 0;
}

.s-icon {
    font-family: SettingsIcons;
}

#win-setting {
    display: flex;
}

#win-setting>* {
    height: 100%
}

#win-setting>.page {
    flex-grow: 1
}


#win-setting>.menu {
    width: 30% !important;
    overflow: hidden;
    min-width: 280px;
    /* max-width: 30%; */
    padding: 3px 5px 5px 15px;
}

#win-setting>.menu>.user {
    display: flex;
    padding: 10px 10px;
    border-radius: 10px;
    margin-bottom: 10px;
    /* transition: 200ms; */
    align-items: center;
}

:root.corner_squ #win-setting>.menu>.user {
    corner-shape: squircle;
    border-radius: 25px;
}

#win-setting>.menu>.user:hover {
    background-color: var(--hover);
}

#win-setting>.menu>.user>div>p:first-child {
    font-size: 19px;
    margin-bottom: -7px;
}

#win-setting>.menu>.user>div>p:last-child {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 15px;
}

#win-setting>.menu>.user>div {
    padding: 0px 0 0 10px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

#win-setting>.menu>.user>svg {
    background-color: var(--hover-b);
    /* box-shadow: 0 0 10px var(--shadow); */
    width: 60px;
    min-width: 60px;
    height: 60px;
    border-radius: 50%;
    padding: 11px;
}

#win-setting>.menu>list {
    padding-bottom: 50px !important;
    margin-left: 5px;
    margin-top: 50px;
    height: calc(100% - 138px);
    overflow-y: auto;
    padding-right: 10px;
    border-radius: 6px;
}

#win-setting>.menu>list>a {
    padding: 5px 10px 5px 20px;
    font-size: 15px;
    display: flex;
    margin-bottom: 4px;
    border-radius: 6px;
}

#win-setting>.menu>list>a:not(.enable) {
    /* transform: none !important; */
    filter: contrast(0.6) opacity(0.3);
    pointer-events: none;
}

#win-setting>.menu>list>a.enable:not(.avlb) {
    filter: opacity(0.5) !important;
}

#win-setting>.menu>list>a>p {
    margin: 5px 7px;
}

#win-setting>.menu>list>a>img {
    height: 20px;
    width: 20px;
    margin: 1px 10px 0 0;
}

#win-setting>.menu>list>a.check {
    background-color: var(--hover) !important;
}

#win-setting>.page {
    overflow: hidden;
    padding-left: 15px;
    padding-right: 5px;
    margin: 2px 0 0 0;
}

#win-setting>.page>.cnt {
    overflow-y: scroll;
    opacity: 0;
    height: 0;
    transition: transform 300ms cubic-bezier(0, 0, 0, 1), opacity 300ms 50ms, height 0ms;
    transform: translate(0, 50%);
}

#win-setting>.page>.cnt.show {
    height: 100%;
    transform: none;
    opacity: 1;
    display: block;
}


.setting-card {
    background: var(--card);
    border-radius: 10px;
    margin-bottom: 10px;
}

:root.corner_squ .setting-card {
    corner-shape: squircle;
    border-radius: 25px;
}

.setting-card>.setting-list {
    padding-bottom: 5px;
    padding: 20px;
}

.setting-list {
    display: flex;
    flex-direction: column;
    padding: 0 5px 60px 5px;
    margin-bottom: 0;
    border-radius: 10px;
    width: 100%;
}

.setting-list>* {
    width: 100%;
    color: var(--text);
    background: var(--card);
    margin-bottom: 7px;
    border-radius: 8px;
    /* border: 1.5px solid #6f6f6f30; */
    box-shadow: 0 1px 2px 0px var(--s3d);
    text-decoration: none;
    display: flex;
    padding: 10px 15px;
    justify-content: center;
    /* box-shadow: 0 1px 2px 1.5px var(--s3d); */
    transition: 100ms;
    justify-content: space-around;
    border: 2px solid #00000000;
    background-clip: padding-box;
    align-items: center; 
}

:root.corner_squ .setting-list>* {
    corner-shape: squircle;
    border-radius: 20px;
}

.setting-list>a:hover {
    text-decoration: none;
    background-color: var(--hover);
    border-color: var(--hover);
}

.setting-list>a:active {
    filter: opacity(0.75);
}

.setting-list>a.dp {
    margin-bottom: 1px;
    z-index: 1;
}

.setting-list>a.dp.show {
    /* border-bottom: none; */
    border-bottom-left-radius: 0 !important;
    border-bottom-right-radius: 0 !important;
    margin-bottom: 1px;
    box-shadow: 0 0.5px 1px 1px var(--s3d);
}

.setting-list>a.dp>.bi::before {
    transition: 150ms;
}

.setting-list>a.dp:active>.bi::before {
    transform: scale(0.7);
}

.setting-list>a.dp.show:active>.bi::before {
    transform: scale(0.7) rotate(-180deg);
}

.setting-list>a.dp.show>.bi::before {
    transform: rotate(-180deg);
}

.setting-list>div.dp {
    border-top: none;
    border-top-left-radius: 0 !important;
    border-top-right-radius: 0 !important;
    max-height: 0;
    transition: max-height 300ms, padding 300ms 100ms, opacity 200ms;
    overflow: hidden;
    display: block;
    padding: 0 15px;
    opacity: 0;
    margin:0 0 6px 0;
    box-shadow: none;
}

.setting-list>div.dp.show {
    padding: 10px 15px;
    transition: max-height 300ms, padding 200ms 50ms, opacity 200ms 100ms;
    max-height: 1000px;
    opacity: 1;
    box-shadow: 0 1px 2px 1px var(--s3d);
}

.checkbox {
    width: 40px;
    height: 20px;
    border-radius: 10px;
    background: linear-gradient(90deg, var(--hover-b), var(--hover-b));
    transition: 200ms;
}

.checkbox::before {
    content: '';
    display: block;
    height: 16px;
    width: 16px;
    border-radius: 8px;
    background: #fff;
    position: relative;
    top: 2px;
    left: 2px;
    transition: 100ms;
    transform: scale(0.8);
}

.checkbox.checked {
    background: linear-gradient(90deg, var(--theme-1), var(--theme-2));
}

.checkbox.checked::before {
    left: 22px;
}

.checkbox:hover::before {
    transform: none;
}

.checkbox:active::before {
    width: 20px;
}

.checkbox.checked:active::before {
    left: 18px;
}

div.app-color .color {
    width: 30px;
    height: 30px;
    border-radius: 8px;
    margin: 3px 0 0 5px;
    outline: none;
    border: none;
    padding: 0;
    transition: 200ms;
}

div.app-color .act.color:active {
    transform: scale(0.8);
}

div.app-color input[type=color] {
    width: 0;
    height: 0;
    overflow: hidden;
    border: none;
    padding: 0;
    outline: none;
    margin: 0;
}

.setting-list>*>icon {
    font-family: SettingsIcons;
    font-size: 20px;
    margin: 10px 20px 10px 5px;
    background-image: linear-gradient(100deg, var(--theme-1), var(--theme-2));
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    filter: saturate(130%) brightness(1.1);
}

.setting-list>*>icon.b {
    font-family: bootstrap-icons;
}

.setting-list>*>div>p:first-child {
    font-size: 19px;
    margin:  3px 0 0 0;
}

.setting-list>*>div>p:last-child {
    font-size: 10px;
    color: #7f7f7f;
    margin-bottom: 0px;
}

.setting-list>*>.bi,
.setting-list>*>.alr {
    flex-grow: 1;
    color: #7f7f7f;
    font-size: 20px;
}

.setting-list>*>.alr>* {
    float: right;
    margin-right: 20px;
}

.setting-list>*>.bi::before {
    position: relative;
    float: right;
    right: 5px;
}

#set-theme {
    display: flex;
    flex-wrap: wrap;
    justify-content: left;
}

#set-theme>.a {
    width: 100px;
    height: 100px;
    border-radius: 10px;
}

#set-theme>.a {
    background-size: cover;
    color: #fff;
    text-shadow: 1px 1px 3px #000;
    text-align: right;
    padding: 3px 8px;
    box-shadow: 1px 1px 5px var(--shadow);
    margin: 7px 7px 0 0;
}

#set-theme>.a:hover {
    filter: brightness(1.3) saturate(1.3);
}

#set-theme>.a:active {
    opacity: 0.75;
}

#win-setting>.page>.cnt.update>.lo>#svg5{
    width: 80px;
    margin: 15px 20px 30px 20px;
}

#win-setting>.page>.cnt.update>.lo{
    display: flex;
    align-items: center;
}

#win-setting>.page>.cnt.update>.lo div{
    flex-grow: 1;
    font-size: 20px;
    padding: 20px 5px;
}
#win-setting>.page>.cnt.update>.lo div>.detail{
    flex-grow: 1;
    font-size: 14px;
    color: #7f7f7f;
}

#win-setting>.page>.cnt.update>.lo>.update-main {
    display: flex;
    justify-content: center;
}

#win-setting>.page>.cnt.update>.lo>.update-main>div {
    display: flex;
    align-items: center;
}

#win-setting>.page>.cnt.update>.lo>.update-main>div:first-child {
    flex-direction: column;
    align-items: flex-start;
}

#win-setting>.page>.cnt.update>.lo>.update-main>div:last-child {
    justify-content: flex-end;
}

#win-setting>.page>.cnt.update .disabled {
    opacity: 0.5;
    pointer-events: none;
}
.blueteeth-tips-text{
	font-size:8px;
}
.setting-user-svg{
	    width: 100px;
	    height: 100px;
	    background-color: var(--hover-b);
	    /* box-shadow: 0 0 10px var(--shadow); */
	    width: 60px;
	    min-width: 60px;
	    height: 60px;
	    border-radius: 50%;
	    padding: 11px;
	    margin-right: 15px;
	    margin-bottom: 15px;
}
/* 时间 必须样式 @Junchen Yi 2023-9-16 */
.selectLanguageA{
    min-height: 67px;
    display: flex;
    align-items: center;
    justify-content: flex-start;
	filter: opacity(1);
}

.languageSelect {
    width: 130px;
        height: 30px;
        text-align: left;
        border-radius: 12px;
        background: var(--card);
        color: var(--text);
		position: absolute;
		    right: 40px;
			margin-right: -20px;
}
.languageSelect option {
    /* 添加样式,例如设置字体颜色和背景颜色 */
	color: var(--text);
    background-color: #fff;
    padding: 5px;
}
.settingTimeItem{
    margin-left: 30px;
    margin-bottom: 20px;
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    align-content: center;
    justify-content: flex-start;
    align-items: center;
}
.settingTime{
	font-size: 28px;
}
/* 时间 必须样式 end @Junchen Yi 2023-9-16 */


================================================
FILE: apps/style/taskmgr.css
================================================
@font-face {
    font-family: t-icon;
    src: url('../icons/taskmgr/icons.ttf');
}

.t-icon {
    font-family: t-icon;
}

#win-taskmgr {
    display: grid;
    grid-template-columns: 280px auto;
    transition: grid-template-columns 200ms;

    /* 左侧菜单 */
    &>.menu {

        /* 选项卡列表 */
        &>list.focs {
            margin: 0px 15px 0px 5px;
            position: relative;
            height: 100%;

            &>a {
                padding: 5px 20px;
                font-size: 15px;
                display: flex;
                gap: 10px;
                margin-bottom: 3px;
                overflow: hidden;

                &>p {
                    overflow-x: auto;
                    display: flex;
                    align-items: center;
                }

                &.check {
                    background-color: var(--hover);
                }
            }
        }

        /* 折叠按钮 */
        &>.fold {
            padding: 5px 20px;
            margin-left: 5px;
            display: block;
            border-radius: 7px;
            max-width: 58px;
            margin-bottom: 3px;
            transition: 80ms, transform 400ms cubic-bezier(0.14, 1.02, 0.17, 0.03) !important;

            &:hover {
                color: var(--text);
                background-color: var(--hover-half);
                text-decoration: none;
                box-shadow: 0 1px 2px var(--s3d);
            }

            &:active {
                transform: scale(0.93);
                filter: opacity(0.75);
            }
        }
    }

    /* 右侧内容区 */
    &>.main {
        max-height: 100%;
        min-height: 0px;
        background-color: var(--bg70);
        padding: 15px;
        border-radius: 10px 0px 0px 0px;

        /* 页面 */
        &>.cnt {
            transition: transform 300ms cubic-bezier(0, 0, 0, 1), opacity 300ms 50ms, height 0ms, padding 0ms;
            transform: translate(0, 50%);
            opacity: 0;
            height: 0px;
            padding: 0px;
            overflow: hidden;

            &>.tit {
                font-size: 1.2em;
            }

            &.show {
                height: 100%;
                transform: none !important;
                opacity: 1;
                overflow-y: auto;
                min-height: 0px;
            }

            /* 进程页面 */
            &.processes {
                &.show {
                    display: flex;
                    flex-direction: column;
                }

                /* 表格 */
                &>table {
                    width: 100%;
                    border-spacing: 0px;
                    table-layout: fixed;

                    & th {
                        font-weight: normal !important;
                        font-size: 0.78em;
                        vertical-align: bottom;
                        /* border-left: 1px solid black; */
                        border-right: 1px solid var(--hr);
                        border-bottom: 1px solid var(--hr);
                        color: var(--text2);
                        padding: 0px 10px;
                        position: relative;

                        &>i {
                            position: absolute;
                            left: 6%;
                            top: 10%;
                        }

                        &>.value {
                            font-size: 1.45em !important;
                            color: var(--text) !important;
                        }

                        &.align-right {
                            text-align: right;
                            width: 95px;
                            transition: background-color 80ms;
                        }

                        &.power {
                            width: 120px;
                        }
                    }

                    & td {
                        border-right: 1px solid var(--hr);
                        padding: 4px 10px;
                        height: 25px;
                        /* line-height: 2; */

                        &>* {
                            display: inline-block;
                        }

                        & .icon {
                            width: 21px;
                            height: 21px;
                            vertical-align: -5px;
                            margin: 0px 8px;
                            background-size: contain;
                            background-position: 50% 50%;
                            background-repeat: no-repeat;
                            display: inline-block;
                        }

                        &>.text {
                            text-overflow: ellipsis;
                            overflow: hidden;
                            line-clamp: 1;
                            -webkit-line-clamp: 1;
                            display: -webkit-inline-box;
                            -webkit-box-orient: vertical;
                            vertical-align: -5px;
                            /* width: 100%; */
                        }
                    }

                    & tr.select {
                        background-color: var(--hover);
                    }
                }
            }
        }
    }
}

#win-taskmgr>.main>.cnt.processes>table th.align-right:hover {
    background-color: var(--hover);
}

#win-taskmgr>.main>.cnt.processes>table tr:not(.title):hover {
    background-color: var(--hover);
}

#win-taskmgr>.main>.cnt.processes>table tr {
    transition: background-color 200ms;
}

#win-taskmgr>.main>.cnt.processes>table tr.notrans {
    transition: none !important;
}

#win-taskmgr>.main>.cnt.performance>.content {
    display: grid;
    grid-template-columns: 320px auto;
    height: 100%;
    min-height: 0px;
}

#win-taskmgr>.main>.cnt.performance>.content>.select-menu {
    margin-right: 20px;
    max-height: 100%;
    overflow: auto;
}

#win-taskmgr>.main>.cnt.performance>.content>.select-menu>* {
    border-radius: 10px;
    padding: 12px;
    margin: 10px 0px;
    transition: 80ms, transform 400ms cubic-bezier(0.14, 1.02, 0.17, 0.03) !important;
    display: grid;
    grid-template-columns: 120px auto;
    gap: 10px;
}

#win-taskmgr>.main>.cnt.performance>.content>.select-menu>*:hover {
    background-color: var(--hover-half);
}

#win-taskmgr>.main>.cnt.performance>.content>.select-menu>*:active {
    transform: scale(0.95);
}

#win-taskmgr>.main>.cnt.performance>.content>.select-menu>*>.right>.tit {
    font-size: 1.4em;
}

#win-taskmgr>.main>.cnt.performance>.content>.select-menu>*>.right>.data>* {
    display: -webkit-inline-box;
    box-orient: vertical;
    -webkit-box-orient: vertical;
    line-clamp: 1;
    -webkit-line-clamp: 1;
    text-overflow: ellipsis;
    overflow: hidden;
}

#win-taskmgr>.main>.cnt.performance>.content>.select-menu>*>.left {
    height: 100%;
}

#win-taskmgr>.main>.cnt.performance>.content>.select-menu>*>.left>* {
    height: 100%;
    width: 100%;
    border: 1px solid;
}

#win-taskmgr>.main>.cnt.performance>.content>.select-menu>*>.left>.graph-view-cpu {
    border-color: #2983cc;
}

#win-taskmgr>.main>.cnt.performance>.content>.select-menu>*>.left>.graph-view-memory {
    border-color: #660099;
}

#win-taskmgr>.main>.cnt.performance>.content>.select-menu>*>.left>.graph-view-disk {
    border-color: #008000;
}

#win-taskmgr>.main>.cnt.performance>.content>.select-menu>*>.left>.graph-view-wifi {
    border-color: #8e5829;
}

#win-taskmgr>.main>.cnt.performance>.content>.select-menu>*>.left>.graph-view-gpu {
    border-color: #2983cc;
}

#win-taskmgr>.main>.cnt.performance>.content>.select-menu>.check {
    background-color: var(--hover);
}

#win-taskmgr>.main>.cnt.performance>.content>.performance-graph {
    max-height: 100%;
    overflow: auto;
}

#win-taskmgr>.main>.cnt.performance>.content>.performance-graph>* {
    transition: transform 300ms cubic-bezier(0, 0, 0, 1), opacity 300ms 50ms, height 0ms;
    transform: translate(0, 50%);
    opacity: 0;
    height: 0px;
    overflow-y: hidden;
}

#win-taskmgr>.main>.cnt.performance>.content>.performance-graph>.show {
    /* display: grid !important; */
    /* grid-template-rows: max-content auto max-content; */
    height: 100%;
    transform: none !important;
    opacity: 1;
    overflow-y: visible;
    display: flex;
    flex-direction: column;
}

#win-taskmgr>.main>.cnt.performance>.content>.performance-graph>*>.tit {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

#win-taskmgr>.main>.cnt.performance>.content>.performance-graph>*>.graph-msg {
    display: flex;
    justify-content: space-between;
    color: var(--text2);
    font-size: 0.8em;
}

#win-taskmgr>.main>.cnt.performance>.content>.performance-graph>*>.graph-msg.top {
    margin-top: 10px;
}

#win-taskmgr>.main>.cnt.performance>.content>.performance-graph>*>.graph-msg.bottom {
    margin-bottom: 10px;
}

#win-taskmgr>.main>.cnt.performance>.content>.performance-graph>*>.graph,
#win-taskmgr>.main>.cnt.performance>.content>.performance-graph>*>.graph2 {
    /* margin: 20px 0px; */
    position: relative;
    min-height: 120px;
    height: 100%;
}

#win-taskmgr>.main>.cnt.performance>.content>.performance-graph>*>.minor {
    height: 50px !important;
    min-height: 50px !important;
}

#win-taskmgr>.main>.cnt.performance>.content>.performance-graph>*>.graph>*,
#win-taskmgr>.main>.cnt.performance>.content>.performance-graph>*>.graph2>*,
#win-taskmgr>.main>.cnt.performance>.content>.performance-graph .graph-gpu svg {
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0px;
    left: 0px;
}

#win-taskmgr>.main>.cnt.performance>.content>.performance-graph>*>.tit>.left-name {
    font-size: 2em;
    display: inline-block;
}

#win-taskmgr>.main>.cnt.performance>.content>.performance-graph>*>.tit>.right-message {
    display: inline-block;
}

#win-taskmgr>.main>.cnt.performance>.content>.performance-graph>*>.information {
    display: grid;
    grid-template-columns: auto 300px;
    gap: 20px;
    font-size: 0.85em;
}

#win-taskmgr>.main>.cnt.performance>.content>.performance-graph>*>.information>.left {
    display: flex;
    flex-wrap: wrap;
    gap: 15px;
    align-items: flex-start;
}

#win-taskmgr>.main>.cnt.performance>.content>.performance-graph>*>.information>.left>*>.top {
    font-size: 0.8em;
    color: var(--text2);
}

#win-taskmgr>.main>.cnt.performance>.content>.performance-graph>*>.information>.left>*>.value {
    font-size: 1.44em;
}

#win-taskmgr>.main>.cnt.performance>.content>.performance-graph>*>.information>.right>table>tbody>tr>td:first-child {
    color: var(--text2);
    padding-right: 20px;
}

#win-taskmgr>.main>.cnt.performance>.content>.performance-graph>.graph-gpu>.graphs {
    position: relative;
    display: grid;
    grid-template-columns: 50% 50%;
    grid-template-rows: 50% 50%;
    height: 100%;
    min-height: 350px;
    gap: 10px;
}

#win-taskmgr>.main>.cnt.performance>.content>.performance-graph>.graph-gpu>.graphs>* {
    display: flex;
    flex-direction: column;
}

#win-taskmgr>.main>.cnt.performance>.content>.performance-graph>.graph-gpu>.graphs>*>.title-gpu {
    margin-bottom: 10px;
}

#win-taskmgr>.main>.cnt.performance>.content>.performance-graph>.graph-gpu>.graphs>*>.chart {
    position: relative;
    width: 100%;
    height: 100%;
}

#win-taskmgr>.main>.cnt.performance>.content>.performance-graph>.graph-gpu>.graphs>* canvas {
    position: absolute;
    top: 0px;
    left: 0px;
    width: 100%;
    height: 100%;
}

================================================
FILE: apps/style/terminal.css
================================================
.window.terminal-apps {
    --text: #ddd;
    --bg: #000000;
    --bg50: #00000060;
    --bg70: radial-gradient(rgba(26, 31, 53, 0.96) 25%, rgba(32, 32, 32, 0.96) 100%);
    --shadow: #000000a0;
    --card: #72727240;
    --hover: #aaaaaa40;
    --hover-half: #ffffff20;
    --hover-b: #eeeeee0f;
    --bggrey: #444;
    --fill:#54545470;
    --mm: #ffffff50;
    --contextmeu: #252525bb;
    --bar: #7272722a;
    --hr:#333;
    --unfoc:#202020;
    --msg:#303030d0;
    --bd:#ffffff06;
    --s3d:#11111160;
    --mica: linear-gradient(140deg,#2d161c,#102d53);
}

.window.terminal-apps.max>.content {
    padding-bottom: 55px !important;
}

.window.terminal-apps>.content {
    overflow-y: auto !important;
    overflow-x: hidden !important;
    padding-bottom: 10px;
}

.window.terminal-apps>.content>pre {
    color: #ddd;
    margin: 0px 15px;
    font-family: "Consolas", "Monaco", "monospace", system-ui;
    user-select: text;
    font-size: 16px;
}

.window.terminal-apps>.content * {
    white-space: break-spaces;
}

.window.terminal-apps>.content *::selection {
    background: #ddd;
    background-clip: content-box;
    color: #333;
}

.window.terminal-apps>.content>pre>input {
    background: none;
    border: none;
    outline: none;
    padding: 0;
    color: #eee;
    cursor: default;
    width: 100%;
}

.window.terminal-apps>pre>input::selection {
    background: #ddd;
    background-clip: content-box;
    color: #333;
}


================================================
FILE: apps/style/whiteboard.css
================================================
#win-whiteboard>canvas {
    background-color: #ffffff88;
}

:root.dark #win-whiteboard>canvas {
    background-color: #aaaaaa88;
}

.window.whiteboard.max>#win-whiteboard>.toolbar {
    bottom: 60px;
}

.window.whiteboard.max>#win-whiteboard>.toolbar>.tools {
    border-radius: 10px !important;
}

#win-whiteboard>.toolbar {
    display: flex;
    justify-content: center;
    align-items: center;
    position: absolute;
    bottom: 0px;
    width: 100%;
    transition: bottom 200ms;
}

#win-whiteboard>.toolbar>.tools {
    display: flex;
    border-radius: 10px 10px 0px 0px;
    justify-content: space-evenly;
    box-shadow: 0px 0px 10px 3px #00000066;
    padding: 0px 15px 0px 15px;
    overflow: hidden;
    transition: border-radius 200ms;
    background-color: #ffffff88;
}

:root.dark #win-whiteboard>.toolbar>.tools {
    background-color: #aaaaaa88;
}

#win-whiteboard>.toolbar>.tools>* {
    margin: 3px 3px 0px 3px;
    transition: background-color 70ms, top 100ms;
    border-radius: 10px 10px 0px 0px;
    position: relative;
    top: 13.5px;
}

#win-whiteboard>.toolbar>.tools>.active {
    top: 6px;
    background-color: #00000020;
}

#win-whiteboard>.toolbar>.tools>.eraser,
#win-whiteboard>.toolbar>.tools>.delete {
    width: 76px;
    display: flex;
    justify-content: center;
    padding-top: 5px;
}

#win-whiteboard>.toolbar>.tools>*:not(.active):hover {
    background-color: #00000015;
}

================================================
FILE: apps/style/word.css
================================================
@font-face {
    font-family: StoreIcons;
    src: url("../icons/msstore/icons.ttf");
}

#win-word {
    display: flex;
    height: 100%;
}

#win-word>.app-left{
    max-width: 125px;
    min-width: 125px;
    height: 100%;
    margin-right: 5px;
    margin-left: 5px;
}

#win-word>.app-main {
    width: 100%;
    height: 100%;
    background-color: var(--card);
    border-radius: 8px 0 0 0;
}

#win-word>.app-main>* {
    margin-left: 24px;
}

#win-word>.app-main>.input {
    width: 512px !important;
    margin-bottom: 12px;
}

#win-word>.app-left>.focs>.home {
    height: 125px !important;
    padding: 0px !important;
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
    margin-bottom: 8px;
}

#win-word>.app-left>.focs>.back {
    height: 75px !important;
    padding: 0px !important;
    display: none;
    justify-content: last;
    align-items: center;
    gap: 16px;
    margin-bottom: 8px;
}

#win-word>.app-left>.focs>.check {
    background-color: var(--hover) !important;
}

#win-word>.app-left>.focs>.home>*{
    display: block;
    max-width: 125px;
    min-width: 125px;
    font-size:24px;
    text-align: center;
    margin: 0;
}

#win-word>.app-left>.focs>.back>*{
    display: block;
    font-size:24px;
    margin-left: 12px;
}

#win-word>.app-left>.focs{
    height: 100% !important;
}

#win-word>.app-main {
    padding: 12px 12px 0 12px;
}

#win-word>.app-main>.card-list {
    width: 100%;
    display: flex;
    gap: 8px;
}

#win-word>.app-main>.card-list>.card {
    height: 250px !important;
    padding: 0px !important;
    width: 150px;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    color: var(--text);
    transition: 80ms !important;
    border-radius: 16px;
}

#win-word>.app-main>.card-list>.card:hover {
    background-color: var(--hover) !important;
}

#win-word>.app-main>.card-list>.card>img {
    height: 175px !important;
    width: 125px !important;
    border-radius: 8px;
    margin: 12.5px;
    background-color: var(--contextmeu);
}

.office-icon {
    font-family: StoreIcons;
}

.window.word>.pages>.home {
    height: 100%;
    position: absolute;
    left: 150%;
    opacity: 0;
    visibility: hidden;
    width: 100%;
    transition: all 0.25s cubic-bezier(0,1,0,1), visibility 0.25s cubic-bezier(0,1,0,1) ,  opacity 0.5s cubic-bezier(0,1,0,1);
}

.window.word>.pages>*.show {
    height: 100%;
    left: 0 !important;
    right: 0 !important;
    position: relative !important;
    opacity: 1 !important;
    visibility: visible !important;
}

.window.word>.pages>.edit {
    position: absolute;
    width: 100%;
    height: 100%;
    left: 150%;
    opacity: 0;
    visibility: hidden;
    transition: all 0.25s cubic-bezier(0,1,0,1), visibility 0.25s cubic-bezier(0,1,0,1) ,  opacity 0.5s cubic-bezier(0,1,0,1);
}

.window.word>.pages>.edit>.content {
    overflow:auto;
    width: 100%;
    height: calc(100% - 225px);
}

.window.word>.pages>.edit>.content>.doc {
    aspect-ratio: 1/1.414;
    width: 60%;
    background-color: var(--contextmeu);
    color: var(--text);
    margin: auto;
    padding: 64px;
    border:none;
    outline:none;
    margin-bottom: 24px;
    overflow: hidden;
}

.window.word>.pages>.edit>.content>.doc>.table {
    width: 100%;
    min-height: 300px;
    max-height: 900px;
    height: auto;
}

.window.word>.pages>.edit>.content>.doc>.table>tr {
    min-height: 300px;
}

.window.word>.pages>.edit>.content>.doc>.square {
    height: 100px;
    width: 100px;
    background-color: #646464;
}

.window.word>.pages>.edit>.ribbon {
    height: 150px;
    width: 100%;
}

.window.word>.pages>.edit>.ribbon>.tab {
    height: 28px;
    margin-top: 8px;
    margin-left: 8px;
    margin-bottom: 8px;
    width: 100%;
    display: flex;
    gap: 8px;
}

.window.word>.pages>.edit>.ribbon>.tab>.tab-selected {
    background-color: #2c579b;
    height: 2.5px;
    width: 24px;
    border-radius: 8px;
    position:absolute;
    left: 62px;
    top: 32px;
}

.window.word>.pages>.edit>.ribbon>.tab>a {
    border-radius: 8px;
    transition: all 80ms;
    padding: 4px;
}

.window.word>.pages>.edit>.ribbon>.tab>a:hover {
    background-color: #88888836;
}


.window.word>.pages>.edit>.ribbon>.items {
    box-shadow: 0px 2.5px 2.5px #88888836;
    height: 100px;
    width: calc(100% - 16px);
    margin: auto;
    border-radius: 8px;
    background-color: var(--card);
    display: flex;
    gap: 4px;
    align-items: center;
}

.window.word>.pages>.edit>.ribbon>.items>.item {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    height: 100%;
    width: 64px;
    border-radius: 8px;
    transition: all 0.1s;
}

.window.word>.pages>.edit>.ribbon>.items>.item:hover {
    background-color: #88888836;
}

.window.word>.pages>.edit>.ribbon>.items>.item>p {
    width: calc(100% - 12px);
    text-align: center;
    font-size:medium;
}

.window.word>.pages>.edit>.ribbon>.items>.item>i {
    text-align: center;
    font-size: xx-large !important;
}

.window.word>.pages>.edit>.ribbon>.tab>h3 {
    margin-top: 0;
    margin-bottom: 0;
}

.window.word>.pages {
    height: 100%;
}

================================================
FILE: base.css
================================================
body {
    margin: 0;
    font-family: system-ui, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, Liberation Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;
    font-size: 1rem;
    font-weight: 400;
    line-height: 1.5;
    color: #212529;
    text-align: left;
    background-color: #fff;
}

*, ::after, ::before {
    box-sizing: border-box;
}

html {
    touch-action: none;
    font-family: sans-serif;
    line-height: 1.15;
    -webkit-text-size-adjust: 100%;
    -webkit-tap-highlight-color: transparent;
}

html * {
    touch-action: auto;
}

pre {
    font-family: monospace;
}


hr {
    box-sizing: content-box;
    height: 0;
    overflow: visible;
    unicode-bidi: isolate;
    margin-block-start: 0.5em;
    margin-block-end: 0.5em;
    margin-inline-start: auto;
    margin-inline-end: auto;
    border: 0;
    border-top: 1px solid rgba(0,0,0,.1);
}

[type=button], [type=reset], [type=submit], button {
    -webkit-appearance: button;
    appearance: button;
}
button, select {
    text-transform: none;
}
button, input {
    overflow: visible;
}
button, input, optgroup, select, textarea {
    margin: 0;
    font-family: inherit;
    font-size: inherit;
    line-height: inherit;
}

button {
    appearance: auto;
    writing-mode: horizontal-tb !important;
    text-rendering: auto;
    letter-spacing: normal;
    word-spacing: normal;
    line-height: normal;
    text-transform: none;
    text-indent: 0px;
    text-shadow: none;
    display: inline-block;
    text-align: center;
    align-items: flex-start;
    cursor: default;
    box-sizing: border-box;
    background-color: -internal-light-dark(rgb(239, 239, 239), rgb(59, 59, 59));
    margin: 0em;
    padding: 1px 6px;
    border-width: 2px;
    border-style: outset;
    border-color: buttonborder;
    border-image: initial;
}

a:-webkit-any-link {
    cursor: pointer;
    text-decoration: none;
}

================================================
FILE: bios.html
================================================
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- 更改页面标题以提高搜索引擎可搜索性 -->
    <title>Windows 12 BIOS Setup</title>
    <!-- 使用相对路径引用外部CSS文件 -->
    <link rel="stylesheet" href="./apps/style/bios.css">
    <link rel="shortcut icon" href="./pwa/logo.png" type="image/x-icon">
</head>

<body id="body" ontouchstart="return;">
    <div id="confirmContainer">
        <div id="exit_confirm">
            <div id="confirm" data-show="false">
                <p id="confirm-tit"> Save configuration changes and exit now? </p>
                <div class="btns" style="display: flex;justify-content: space-around;">
                    <a class="confirm-button" id="ok-btn" style="background-color: #000;color: #fff;" click="" ontouchstart="">[OK]</a>
                    <a class="confirm-button" style="color: #000;background-color: #fff;" ontouchstart="$('#confirmContainer').css('display', 'none');$('#confirm').attr('data-show', 'false');" click="$('#confirmContainer').css('display', 'none');$('#confirm').attr('data-show', 'false');" id="cancel-btn">[Cancel]</a>
                </div>
            </div>
        </div>
    </div>
    
    <div id="background"></div>

    <head>
        <nav>
            <p class="tit">BIOS Setup Utility</p>
        </nav>
        <nav class="pages" style="padding-left: 15px;">
            <a class="tab tab0" id="main" click="tab = 0; changePage(0)" ontouchstart="changePage(0)">Main</a>
            <a class="tab tab1" id="advanced" click="tab = 1; changePage(1)" ontouchstart="changePage(1)">Advanced</a>
            <a class="tab tab2" id="boot" click="tab = 2; changePage(2)" ontouchstart="changePage(2)">Boot</a>
            <a class="tab tab3" id="security" click="tab = 3; changePage(3)" ontouchstart="changePage(3)">Security</a>
            <a class="tab tab4" id="exit" click="tab = 4; changePage(4)" ontouchstart="changePage(4)">Exit</a>
        </nav>
    </head>
    <div id="mainPage" class="page page0">
        <div class="table">
            <div>System Time: </div>
            <div id="time">[11:45:14]</div>
            <div>System Date: </div>
            <div id="date">[11/4/5141]</div>
            <div>BIOS Version: </div>
            <div>Win12 BIOS v1.0.0</div>
            <div>Processor: </div>
            <div>The Wandering Earth (R) NB (R) Quantum Chip 550W @ 8192</div>
            <div>Memory Size: </div>
            <div>100 GB</div>
        </div>
    </div>
    <div id="advancedPage" class="page page1">
        <div class="table">
            <div>CPU Configuration</div>
            <div class="submenu">
                <div>Intel Hyper-Threading: </div>
                <div class="option">[Enabled]</div>
                <div>Intel Turbo Boost: </div>
                <div class="option">[Enabled]</div>
                <div>CPU Core Ratio: </div>
                <div class="option">[Auto]</div>
            </div>
            <div>Memory Configuration</div>
            <div class="submenu">
                <div>Memory Frequency: </div>
                <div class="option">[Auto]</div>
                <div>Memory Timing Mode: </div>
                <div class="option">[Auto]</div>
                <div>XMP Profile: </div>
                <div class="option">[Disabled]</div>
            </div>
        </div>
    </div>
    <div id="bootPage" class="page page2">
        <div class="table">
            <div>Boot Configuration</div>
            <div class="submenu">
                <div>Fast Boot: </div>
                <div class="option">[Enabled]</div>
                <div>Boot Mode: </div>
                <div class="option">[UEFI]</div>
                <div>Boot Priority Order:</div>
                <div class="submenu">
                    <div>1. Windows Boot Manager</div>
                    <div>2. SATA HDD</div>
                    <div>3. USB Device</div>
                    <div>4. Network Boot</div>
                </div>
            </div>
        </div>
    </div>
    <div id="securityPage" class="page page3">
        <div class="table">
            <div>Security Configuration</div>
            <div class="submenu">
                <div>Administrator Password: </div>
                <div class="option">[Not Set]</div>
                <div>User Password: </div>
                <div class="option">[Not Set]</div>
                <div>Secure Boot: </div>
                <div class="option">[Enabled]</div>
                <div>TPM State: </div>
                <div class="option">[Enabled]</div>
            </div>
        </div>
    </div>
    <div id="exitPage" class="page page4">
        <div class="container">
            <div click="BIOS_confirm(' Save configuration changes and exit now? ','toBoot()')" ontouchstart="BIOS_confirm(' Save configuration changes and exit now? ','toBoot()')" class="exit" id="e1">Exit Saving Changes</div>
            <div click="BIOS_confirm(' Discard changes and exit setup? ','toBoot()');" ontouchstart="BIOS_confirm(' Discard changes and exit setup? ','toBoot()');" class="exit" id="e2">Exit Discarding Changes</div>
            <div click="BIOS_confirm('  Restore default setup?  ','$(`#confirmContainer`).css(`display`, `none`);$(`#confirm`).attr(`data-show`, `false`);');" ontouchstart="BIOS_confirm('  Restore default setup?  ','$(`#confirmContainer`).css(`display`, none); $(`#confirm`).attr(`data-show`, `false`);');" class="exit" id="e3">Restore Defaults</div>
        </div>
    </div>
    <script src="./scripts/jq.min.js"></script>
    <script src="scripts/bios_kernel.js"></script>
</body>

</html>

================================================
FILE: bluescreen.html
================================================
<!DOCTYPE html>
<html lang="en" style="height: 100%;">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <meta name="format-detection" content="telephone=no">
    
    <!-- 添加有关网页的描述信息 -->
    <meta name="description" content="Windows 12 Web Version - 一个开放源项目,提供对 Windows 12 的网络预览。">

	<!-- Windows 12 网页版 星源原创  -->

	<!-- Windows 12 网页版是一个开放源项目,
	希望让用户在网络上预先体验 Windows 12,
	内容可能与 Windows 12 正式版本不一致。
	使用标准网络技术,例如 HTML、CSS 和 Javascript
	此项目绝不附属于微软,且不应与微软操作系统或产品混淆,
	这也不是 Windows365 cloud PC
	本项目中微软、Windows和其他示范产品是微软公司的商标 -->
	<link rel="stylesheet" href="./base.css" />
	<base target="_blank">

	<title>Windows 12 网页版</title>
</head>
<body>
    <style>
	*{
        user-select: none;
	}
        body{
            width: 100%;
            height: 100%;
            background-color: #005eaa;
            /* cursor: default; */
            /* 有链接呢,看不到鼠标怎么点 from stsc */
        }
        #box{
            display: flex;
            flex-direction: column;
            justify-items: center;
            width: 70%;
            left: 15%;
            position: absolute;
            height: 100%;
            justify-content: center;
        }
        #happy-face{
            color: #fff;
            font-size: 150px;
            margin: 0;
            line-height: 1;
            /* margin-left: -40px; */
            margin-top: -10px;
            height: 150px;
            height: 150px;
            display: flex;
        }
        #happy-face>*{
            position: relative;
            line-height: 0px;
        }
        @keyframes eyea{
            0%{
                top: -140px;
                left: -40px;
            }
            15%{
                top: -150px;
                left: -60px;
            }
            25%{
                top: -140px;
                left: -40px;
            }
            35%{
                top: -150px;
                left: -20px;
            }
            50%{
                top: -140px;
                left: -40px;
            }
            85%{
                top: -140px;
                left: -40px;
            }
            95%{
                top: -50px;
                left: -40px;
            }
            /* 63%{
                top: 0px;
                left: 0;
            } */
        }
        #happy-face>.eye.a{
            top: -50px;
            left: -40px;
            animation: eyea 2s;
        }
        @keyframes eyeb{
            0%{
                top: -140px;
                left: 14px;
            }
            15%{
                top: -150px;
                left: -6px;
            }
            25%{
                top: -140px;
                left: 14px;
            }
            35%{
                top: -150px;
                left: 34px;
            }
            50%{
                top: -140px;
                left: 24px;
            }
            90%{
                top: -140px;
                left: 24px;
            }
        }
        #happy-face>.eye.b{
            left: -75px;
            top: -120px;
            animation: eyeb 2s;
        }
        @keyframes mou{
            0%{
                transform: rotate(90deg);
                top: 10px;
                left: -60px;
            }
            15%{
                transform: rotate(120deg);
                top: -10px;
                left: -80px;
            }
            25%{
                transform: rotate(90deg);
                top: 10px;
                left: -60px;
            }
            35%{
                transform: rotate(60deg);
                top: -10px;
                left: -20px;
            }
            50%{
                transform: rotate(270deg);
                top: 10px;
                left: -80px;
            }
            80%{
                transform: rotate(270deg);
                top: -10px;
                left: -80px;
            }
            90%{
                transform: rotate(180deg);
                top: -25px;
                left: -60px;
            }
            /* 50%{
                transform: rotate(180deg);
                top: 20px;
                left: 50px;
            } */
        }
        #happy-face>.mouse{
            transform: rotate(180deg);
            top: -25px;
            left: -60px;
            animation: mou 2s;
        }
        #tx1{
            color: #fff;
            font-size: 23px;
            margin-bottom: 5px;
            margin-top: 50px;
        }
        #prog{
            color: #fff;
            font-size: 23px;
        }
        #dtx{
            color: #fff;
            margin-left: 20px;
            font-size: 17px;
            margin-top: 0;
        }
        #qr{
            min-width: 150px;
            width: 150px;
            height: 150px;
            fill: #005eaa;
            background-color: #fff;
        }
        #detail{
            display: flex;
        }
        .link{
            color: #efefef;
            text-decoration: none;
            transition: 100ms;
            cursor: pointer;
        }
        .link:hover{
            color: #aaa;
        }
    </style>
    <div id="box">
        <div id="happy-face">
            <p class="eye a">.</p>
            <p class="eye b">.</p>
            <p class="mouse">)</p>
        </div>
        <p id="tx1">你的设备遇到问题,需要重启。<br>我们只假装收集某些错误信息,然后为你重新蓝屏。</p>
        <p id="prog"><span id="complete">0</span>% 完成</p>
        <div id="detail">
            <svg id="qr" xmlns="http://www.w3.org/2000/svg" version="1.2" baseProfile="tiny" shape-rendering="crispEdges" viewBox="20 15 305 305" style="background-color:rgba(255, 255, 255, 1);"><rect x="42" y="37" width="9" height="63"/><rect x="42" y="109" width="9" height="18"/><rect x="42" y="136" width="9" height="18"/><rect x="42" y="163" width="18" height="9"/><rect x="42" y="181" width="9" height="18"/><rect x="42" y="217" width="36" height="9"/><rect x="42" y="235" width="9" height="63"/><rect x="51" y="37" width="54" height="9"/><rect x="51" y="91" width="54" height="9"/><rect x="51" y="109" width="9" height="9"/><rect x="51" y="145" width="9" height="9"/><rect x="51" y="172" width="9" height="9"/><rect x="51" y="235" width="54" height="9"/><rect x="51" y="289" width="54" height="9"/><rect x="60" y="55" width="27" height="27"/><rect x="60" y="118" width="18" height="9"/><rect x="60" y="136" width="9" height="9"/><rect x="60" y="181" width="9" height="9"/><rect x="60" y="199" width="9" height="9"/><rect x="60" y="253" width="27" height="27"/><rect x="69" y="127" width="72" height="9"/><rect x="69" y="145" width="9" height="9"/><rect x="69" y="190" width="9" height="9"/><rect x="69" y="208" width="9" height="18"/><rect x="78" y="109" width="27" height="9"/><rect x="78" y="154" width="9" height="27"/><rect x="78" y="208" width="9" height="9"/><rect x="87" y="145" width="18" height="9"/><rect x="87" y="190" width="9" height="18"/><rect x="96" y="46" width="9" height="54"/><rect x="96" y="163" width="9" height="9"/><rect x="96" y="181" width="45" height="9"/><rect x="96" y="199" width="9" height="9"/><rect x="96" y="217" width="18" height="9"/><rect x="96" y="244" width="9" height="54"/><rect x="105" y="118" width="9" height="27"/><rect x="105" y="154" width="18" height="9"/><rect x="105" y="172" width="9" height="18"/><rect x="105" y="208" width="9" height="18"/><rect x="114" y="37" width="9" height="36"/><rect x="114" y="82" width="9" height="18"/><rect x="114" y="163" width="18" height="9"/><rect x="114" y="190" width="9" height="18"/><rect x="114" y="226" width="27" height="9"/><rect x="114" y="244" width="9" height="18"/><rect x="114" y="280" width="9" height="18"/><rect x="123" y="55" width="9" height="36"/><rect x="123" y="136" width="9" height="9"/><rect x="123" y="190" width="9" height="9"/><rect x="123" y="235" width="27" height="9"/><rect x="123" y="253" width="18" height="18"/><rect x="123" y="289" width="9" height="9"/><rect x="132" y="64" width="9" height="54"/><rect x="132" y="154" width="9" height="9"/><rect x="132" y="199" width="9" height="9"/><rect x="132" y="271" width="9" height="18"/><rect x="141" y="46" width="27" height="9"/><rect x="141" y="100" width="9" height="9"/><rect x="141" y="145" width="9" height="9"/><rect x="141" y="163" width="9" height="18"/><rect x="141" y="217" width="36" height="9"/><rect x="141" y="244" width="9" height="9"/><rect x="141" y="262" width="9" height="18"/><rect x="150" y="55" width="18" height="27"/><rect x="150" y="91" width="9" height="9"/><rect x="150" y="109" width="18" height="9"/><rect x="150" y="136" width="9" height="9"/><rect x="150" y="154" width="18" height="18"/><rect x="150" y="181" width="27" height="9"/><rect x="150" y="208" width="27" height="27"/><rect x="150" y="271" width="45" height="9"/><rect x="150" y="289" width="27" height="9"/><rect x="159" y="37" width="9" height="45"/><rect x="159" y="118" width="9" height="18"/><rect x="159" y="145" width="9" height="27"/><rect x="159" y="190" width="9" height="54"/><rect x="159" y="262" width="9" height="36"/><rect x="168" y="73" width="9" height="36"/><rect x="168" y="118" width="27" height="9"/><rect x="168" y="136" width="9" height="18"/><rect x="168" y="172" width="9" height="18"/><rect x="168" y="199" width="9" height="36"/><rect x="168" y="244" width="9" height="9"/><rect x="177" y="37" width="18" height="9"/><rect x="177" y="55" width="9" height="18"/><rect x="177" y="127" width="9" height="18"/><rect x="177" y="154" width="9" height="27"/><rect x="177" y="190" width="18" height="9"/><rect x="177" y="226" width="18" height="9"/><rect x="186" y="82" width="9" height="27"/><rect x="186" y="163" width="9" height="9"/><rect x="186" y="181" width="9" height="63"/><rect x="186" y="253" width="9" height="27"/><rect x="195" y="46" width="9" height="18"/><rect x="195" y="82" width="9" height="9"/><rect x="195" y="109" width="9" height="9"/><rect x="195" y="181" width="9" height="9"/><rect x="195" y="208" width="9" height="18"/><rect x="195" y="280" width="9" height="9"/><rect x="204" y="37" width="9" height="9"/><rect x="204" y="91" width="9" height="9"/><rect x="204" y="127" width="18" height="9"/><rect x="204" y="199" width="9" height="18"/><rect x="204" y="226" width="9" height="18"/><rect x="204" y="253" width="9" height="9"/><rect x="204" y="271" width="18" height="9"/><rect x="213" y="55" width="9" height="9"/><rect x="213" y="73" width="18" height="9"/><rect x="213" y="100" width="9" height="90"/><rect x="213" y="208" width="27" height="18"/><rect x="213" y="262" width="9" height="18"/><rect x="222" y="46" width="9" height="9"/><rect x="222" y="64" width="9" height="54"/><rect x="222" y="136" width="18" height="9"/><rect x="222" y="154" width="9" height="9"/><rect x="222" y="172" width="9" height="27"/><rect x="222" y="226" width="9" height="36"/><rect x="231" y="118" width="9" height="36"/><rect x="231" y="172" width="9" height="9"/><rect x="231" y="253" width="45" height="9"/><rect x="240" y="37" width="9" height="63"/><rect x="240" y="118" width="9" height="18"/><rect x="240" y="145" width="9" height="27"/><rect x="240" y="190" width="9" height="18"/><rect x="240" y="217" width="27" height="9"/><rect x="240" y="235" width="9" height="9"/><rect x="240" y="262" width="9" height="36"/><rect x="249" y="37" width="54" height="9"/><rect x="249" y="91" width="54" height="9"/><rect x="249" y="109" width="9" height="18"/><rect x="249" y="145" width="9" height="18"/><rect x="249" y="181" width="9" height="18"/><rect x="249" y="262" width="9" height="9"/><rect x="249" y="280" width="36" height="9"/><rect x="258" y="55" width="27" height="27"/><rect x="258" y="118" width="9" height="18"/><rect x="258" y="154" width="9" height="18"/><rect x="258" y="190" width="9" height="18"/><rect x="258" y="226" width="9" height="36"/><rect x="258" y="271" width="9" height="27"/><rect x="267" y="109" width="36" height="9"/><rect x="267" y="127" width="9" height="27"/><rect x="267" y="163" width="27" height="9"/><rect x="267" y="181" width="27" height="9"/><rect x="267" y="199" width="27" height="9"/><rect x="267" y="226" width="18" height="18"/><rect x="267" y="262" width="27" height="9"/><rect x="276" y="118" width="9" height="18"/><rect x="276" y="145" width="9" height="27"/><rect x="276" y="190" width="18" height="18"/><rect x="276" y="244" width="18" height="9"/><rect x="276" y="271" width="9" height="18"/><rect x="285" y="145" width="9" height="9"/><rect x="285" y="172" width="9" height="45"/><rect x="285" y="271" width="18" height="9"/><rect x="285" y="289" width="9" height="9"/><rect x="294" y="46" width="9" height="54"/><rect x="294" y="127" width="9" height="9"/><rect x="294" y="190" width="9" height="9"/><rect x="294" y="235" width="9" height="9"/><rect x="294" y="253" width="9" height="9"/></svg>
            <p id="dtx">有关此问题的详细信息和可能的解决方案,请访问<br><a onclick="window.open('https:\/\/www.bilibili.com/video/BV1GJ411x7h7','_blank')" class="link">https://www.windows.com/stopcode</a><br><br>如果致电支持人员,请向他们提供以下信息:<br>终止代码: <span id="stopcode" style="user-select:text;">YOU_MAY_DID_NOT_STAR_THIS_PROJECT</span></p>
        </div>
    </div>
    <script src="scripts/jq.min.js"></script>
    <script>
        function sleep(millisecond, callback) {
            // 延迟指定的毫秒数后执行回调函数
            setTimeout(callback, millisecond);
        }

        function update_complete() {
            // 更新complete元素的文本内容,将其值加1
            complete.innerText = (parseInt(complete.innerText) + 1).toString();
        }
        function next_loop(element) {
            // 将complete元素的文本内容解析为整数
            var i = parseInt(complete.innerText, 10);
            // 定义延迟时间数组
            var delays = [300, 200, 100, 50];

            if (i >= 100) {
                 // 重新加载页面
                $('html').css('filter','brightness(0)')
                setTimeout(() => {
                    reload();
                }, 2000);
                return;
            }

            var delay;
            if (i < 20) {
                // 对应i小于20时的延迟时间
                delay = delays[0];
            } else if (i < 60) {
                // 对应i小于60时的延迟时间
                delay = delays[1];
            } else if (i < 80) {
                 // 对应i小于80时的延迟时间
                delay = delays[2];
            } else {
                // 对应i大于等于80时的延迟时间
                delay = delays[3];
            }

            sleep(delay, function () {
                 // 更新complete元素的值
                update_complete();
                 // 递归调用next_loop函数,形成循环
                next_loop();
            });
        }

        function reload() {
            // 重新加载页面
            window.location.reload();
        }

        let complete = document.getElementById("complete");
        next_loop();
        // 从URL参数中获取名为"code"的值
        var r = window.location.search.substr(1).match(/(^|&)code=([^&]*)(&|$)/);
        if(r!=null){
            document.getElementById('stopcode').innerHTML = r[2];
        }
    </script>
</body>
</html>


================================================
FILE: boot.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Windows 12 Web Version</title> <!-- 优化:更具描述性的页面标题 -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <!-- 优化:添加 viewport meta 标签,确保在移动设备上的适配性 -->
    <style>
        @font-face {
            font-family: 'dos';
            src: url(./fonts/dos.ttf);
        }

        html {
            background-color: #000000;
        }

        * {
            font-family: 'dos';
            margin: 0; /* 优化:合并重复的 CSS 属性 */
            padding: 0;
            border: 0;
            user-select: none;
            scrollbar-width: none;
            -webkit-user-select: none;
            -moz-user-select: none;
            -o-user-select: none;
        }

        ::-webkit-scrollbar {
            display: none;
        }

        body {
            background-color: black;
            color: white;
            cursor: none; /* 优化:使用 CSS 属性来隐藏鼠标指针 */
        }

        .loading {
            display: flex;
            align-items: center;
            justify-content: center;
        }

        #info {
            position: absolute;
            bottom: 10px;
            width: 100%;
        }
    </style>
</head>

<body id="body" scroll="no">
    <div id="info">
        <div class="loading">
            <p>Starting</p>
            <div id="load" style="background-color: #acabac; width: 200px; height: 20px;"></div>
            <div id="back" style="background-color: #565656; width: 200px; height: 20px;"></div>
            <br>
        </div>
        <p style="text-align: center;">Press F2 or touch screen to enter SETUP</p>
    </div>
    <script src="./scripts/jq.min.js"></script>
    <script src="./scripts/boot_kernel.js"></script>
</body>
</html>

================================================
FILE: bootstrap-icons.css
================================================
@font-face{font-display:block;font-family:"bootstrap-icons";src:url("./fonts/bootstrap-icons.woff2?8d200481aa7f02a2d63a331fc782cfaf") format("woff2"),url("./fonts/bootstrap-icons.woff?8d200481aa7f02a2d63a331fc782cfaf") format("woff")}.bi::before,[class^="bi-"]::before,[class*=" bi-"]::before{display:inline-block;font-family:bootstrap-icons !important;font-style:normal;font-weight:normal !important;font-variant:normal;text-transform:none;line-height:1;vertical-align:-.125em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.bi-123::before{content:"\f67f"}.bi-alarm-fill::before{content:"\f101"}.bi-alarm::before{content:"\f102"}.bi-align-bottom::before{content:"\f103"}.bi-align-center::before{content:"\f104"}.bi-align-end::before{content:"\f105"}.bi-align-middle::before{content:"\f106"}.bi-align-start::before{content:"\f107"}.bi-align-top::before{content:"\f108"}.bi-alt::before{content:"\f109"}.bi-app-indicator::before{content:"\f10a"}.bi-app::before{content:"\f10b"}.bi-archive-fill::before{content:"\f10c"}.bi-archive::before{content:"\f10d"}.bi-arrow-90deg-down::before{content:"\f10e"}.bi-arrow-90deg-left::before{content:"\f10f"}.bi-arrow-90deg-right::before{content:"\f110"}.bi-arrow-90deg-up::before{content:"\f111"}.bi-arrow-bar-down::before{content:"\f112"}.bi-arrow-bar-left::before{content:"\f113"}.bi-arrow-bar-right::before{content:"\f114"}.bi-arrow-bar-up::before{content:"\f115"}.bi-arrow-clockwise::before{content:"\f116"}.bi-arrow-counterclockwise::before{content:"\f117"}.bi-arrow-down-circle-fill::before{content:"\f118"}.bi-arrow-down-circle::before{content:"\f119"}.bi-arrow-down-left-circle-fill::before{content:"\f11a"}.bi-arrow-down-left-circle::before{content:"\f11b"}.bi-arrow-down-left-square-fill::before{content:"\f11c"}.bi-arrow-down-left-square::before{content:"\f11d"}.bi-arrow-down-left::before{content:"\f11e"}.bi-arrow-down-right-circle-fill::before{content:"\f11f"}.bi-arrow-down-right-circle::before{content:"\f120"}.bi-arrow-down-right-square-fill::before{content:"\f121"}.bi-arrow-down-right-square::before{content:"\f122"}.bi-arrow-down-right::before{content:"\f123"}.bi-arrow-down-short::before{content:"\f124"}.bi-arrow-down-square-fill::before{content:"\f125"}.bi-arrow-down-square::before{content:"\f126"}.bi-arrow-down-up::before{content:"\f127"}.bi-arrow-down::before{content:"\f128"}.bi-arrow-left-circle-fill::before{content:"\f129"}.bi-arrow-left-circle::before{content:"\f12a"}.bi-arrow-left-right::before{content:"\f12b"}.bi-arrow-left-short::before{content:"\f12c"}.bi-arrow-left-square-fill::before{content:"\f12d"}.bi-arrow-left-square::before{content:"\f12e"}.bi-arrow-left::before{content:"\f12f"}.bi-arrow-repeat::before{content:"\f130"}.bi-arrow-return-left::before{content:"\f131"}.bi-arrow-return-right::before{content:"\f132"}.bi-arrow-right-circle-fill::before{content:"\f133"}.bi-arrow-right-circle::before{content:"\f134"}.bi-arrow-right-short::before{content:"\f135"}.bi-arrow-right-square-fill::before{content:"\f136"}.bi-arrow-right-square::before{content:"\f137"}.bi-arrow-right::before{content:"\f138"}.bi-arrow-up-circle-fill::before{content:"\f139"}.bi-arrow-up-circle::before{content:"\f13a"}.bi-arrow-up-left-circle-fill::before{content:"\f13b"}.bi-arrow-up-left-circle::before{content:"\f13c"}.bi-arrow-up-left-square-fill::before{content:"\f13d"}.bi-arrow-up-left-square::before{content:"\f13e"}.bi-arrow-up-left::before{content:"\f13f"}.bi-arrow-up-right-circle-fill::before{content:"\f140"}.bi-arrow-up-right-circle::before{content:"\f141"}.bi-arrow-up-right-square-fill::before{content:"\f142"}.bi-arrow-up-right-square::before{content:"\f143"}.bi-arrow-up-right::before{content:"\f144"}.bi-arrow-up-short::before{content:"\f145"}.bi-arrow-up-square-fill::before{content:"\f146"}.bi-arrow-up-square::before{content:"\f147"}.bi-arrow-up::before{content:"\f148"}.bi-arrows-angle-contract::before{content:"\f149"}.bi-arrows-angle-expand::before{content:"\f14a"}.bi-arrows-collapse::before{content:"\f14b"}.bi-arrows-expand::before{content:"\f14c"}.bi-arrows-fullscreen::before{content:"\f14d"}.bi-arrows-move::before{content:"\f14e"}.bi-aspect-ratio-fill::before{content:"\f14f"}.bi-aspect-ratio::before{content:"\f150"}.bi-asterisk::before{content:"\f151"}.bi-at::before{content:"\f152"}.bi-award-fill::before{content:"\f153"}.bi-award::before{content:"\f154"}.bi-back::before{content:"\f155"}.bi-backspace-fill::before{content:"\f156"}.bi-backspace-reverse-fill::before{content:"\f157"}.bi-backspace-reverse::before{content:"\f158"}.bi-backspace::before{content:"\f159"}.bi-badge-3d-fill::before{content:"\f15a"}.bi-badge-3d::before{content:"\f15b"}.bi-badge-4k-fill::before{content:"\f15c"}.bi-badge-4k::before{content:"\f15d"}.bi-badge-8k-fill::before{content:"\f15e"}.bi-badge-8k::before{content:"\f15f"}.bi-badge-ad-fill::before{content:"\f160"}.bi-badge-ad::before{content:"\f161"}.bi-badge-ar-fill::before{content:"\f162"}.bi-badge-ar::before{content:"\f163"}.bi-badge-cc-fill::before{content:"\f164"}.bi-badge-cc::before{content:"\f165"}.bi-badge-hd-fill::before{content:"\f166"}.bi-badge-hd::before{content:"\f167"}.bi-badge-tm-fill::before{content:"\f168"}.bi-badge-tm::before{content:"\f169"}.bi-badge-vo-fill::before{content:"\f16a"}.bi-badge-vo::before{content:"\f16b"}.bi-badge-vr-fill::before{content:"\f16c"}.bi-badge-vr::before{content:"\f16d"}.bi-badge-wc-fill::before{content:"\f16e"}.bi-badge-wc::before{content:"\f16f"}.bi-bag-check-fill::before{content:"\f170"}.bi-bag-check::before{content:"\f171"}.bi-bag-dash-fill::before{content:"\f172"}.bi-bag-dash::before{content:"\f173"}.bi-bag-fill::before{content:"\f174"}.bi-bag-plus-fill::before{content:"\f175"}.bi-bag-plus::before{content:"\f176"}.bi-bag-x-fill::before{content:"\f177"}.bi-bag-x::before{content:"\f178"}.bi-bag::before{content:"\f179"}.bi-bar-chart-fill::before{content:"\f17a"}.bi-bar-chart-line-fill::before{content:"\f17b"}.bi-bar-chart-line::before{content:"\f17c"}.bi-bar-chart-steps::before{content:"\f17d"}.bi-bar-chart::before{content:"\f17e"}.bi-basket-fill::before{content:"\f17f"}.bi-basket::before{content:"\f180"}.bi-basket2-fill::before{content:"\f181"}.bi-basket2::before{content:"\f182"}.bi-basket3-fill::before{content:"\f183"}.bi-basket3::before{content:"\f184"}.bi-battery-charging::before{content:"\f185"}.bi-battery-full::before{content:"\f186"}.bi-battery-half::before{content:"\f187"}.bi-battery::before{content:"\f188"}.bi-bell-fill::before{content:"\f189"}.bi-bell::before{content:"\f18a"}.bi-bezier::before{content:"\f18b"}.bi-bezier2::before{content:"\f18c"}.bi-bicycle::before{content:"\f18d"}.bi-binoculars-fill::before{content:"\f18e"}.bi-binoculars::before{content:"\f18f"}.bi-blockquote-left::before{content:"\f190"}.bi-blockquote-right::before{content:"\f191"}.bi-book-fill::before{content:"\f192"}.bi-book-half::before{content:"\f193"}.bi-book::before{content:"\f194"}.bi-bookmark-check-fill::before{content:"\f195"}.bi-bookmark-check::before{content:"\f196"}.bi-bookmark-dash-fill::before{content:"\f197"}.bi-bookmark-dash::before{content:"\f198"}.bi-bookmark-fill::before{content:"\f199"}.bi-bookmark-heart-fill::before{content:"\f19a"}.bi-bookmark-heart::before{content:"\f19b"}.bi-bookmark-plus-fill::before{content:"\f19c"}.bi-bookmark-plus::before{content:"\f19d"}.bi-bookmark-star-fill::before{content:"\f19e"}.bi-bookmark-star::before{content:"\f19f"}.bi-bookmark-x-fill::before{content:"\f1a0"}.bi-bookmark-x::before{content:"\f1a1"}.bi-bookmark::before{content:"\f1a2"}.bi-bookmarks-fill::before{content:"\f1a3"}.bi-bookmarks::before{content:"\f1a4"}.bi-bookshelf::before{content:"\f1a5"}.bi-bootstrap-fill::before{content:"\f1a6"}.bi-bootstrap-reboot::before{content:"\f1a7"}.bi-bootstrap::before{content:"\f1a8"}.bi-border-all::before{content:"\f1a9"}.bi-border-bottom::before{content:"\f1aa"}.bi-border-center::before{content:"\f1ab"}.bi-border-inner::before{content:"\f1ac"}.bi-border-left::before{content:"\f1ad"}.bi-border-middle::before{content:"\f1ae"}.bi-border-outer::before{content:"\f1af"}.bi-border-right::before{content:"\f1b0"}.bi-border-style::before{content:"\f1b1"}.bi-border-top::before{content:"\f1b2"}.bi-border-width::before{content:"\f1b3"}.bi-border::before{content:"\f1b4"}.bi-bounding-box-circles::before{content:"\f1b5"}.bi-bounding-box::before{content:"\f1b6"}.bi-box-arrow-down-left::before{content:"\f1b7"}.bi-box-arrow-down-right::before{content:"\f1b8"}.bi-box-arrow-down::before{content:"\f1b9"}.bi-box-arrow-in-down-left::before{content:"\f1ba"}.bi-box-arrow-in-down-right::before{content:"\f1bb"}.bi-box-arrow-in-down::before{content:"\f1bc"}.bi-box-arrow-in-left::before{content:"\f1bd"}.bi-box-arrow-in-right::before{content:"\f1be"}.bi-box-arrow-in-up-left::before{content:"\f1bf"}.bi-box-arrow-in-up-right::before{content:"\f1c0"}.bi-box-arrow-in-up::before{content:"\f1c1"}.bi-box-arrow-left::before{content:"\f1c2"}.bi-box-arrow-right::before{content:"\f1c3"}.bi-box-arrow-up-left::before{content:"\f1c4"}.bi-box-arrow-up-right::before{content:"\f1c5"}.bi-box-arrow-up::before{content:"\f1c6"}.bi-box-seam::before{content:"\f1c7"}.bi-box::before{content:"\f1c8"}.bi-braces::before{content:"\f1c9"}.bi-bricks::before{content:"\f1ca"}.bi-briefcase-fill::before{content:"\f1cb"}.bi-briefcase::before{content:"\f1cc"}.bi-brightness-alt-high-fill::before{content:"\f1cd"}.bi-brightness-alt-high::before{content:"\f1ce"}.bi-brightness-alt-low-fill::before{content:"\f1cf"}.bi-brightness-alt-low::before{content:"\f1d0"}.bi-brightness-high-fill::before{content:"\f1d1"}.bi-brightness-high::before{content:"\f1d2"}.bi-brightness-low-fill::before{content:"\f1d3"}.bi-brightness-low::before{content:"\f1d4"}.bi-broadcast-pin::before{content:"\f1d5"}.bi-broadcast::before{content:"\f1d6"}.bi-brush-fill::before{content:"\f1d7"}.bi-brush::before{content:"\f1d8"}.bi-bucket-fill::before{content:"\f1d9"}.bi-bucket::before{content:"\f1da"}.bi-bug-fill::before{content:"\f1db"}.bi-bug::before{content:"\f1dc"}.bi-building::before{content:"\f1dd"}.bi-bullseye::before{content:"\f1de"}.bi-calculator-fill::before{content:"\f1df"}.bi-calculator::before{content:"\f1e0"}.bi-calendar-check-fill::before{content:"\f1e1"}.bi-calendar-check::before{content:"\f1e2"}.bi-calendar-date-fill::before{content:"\f1e3"}.bi-calendar-date::before{content:"\f1e4"}.bi-calendar-day-fill::before{content:"\f1e5"}.bi-calendar-day::before{content:"\f1e6"}.bi-calendar-event-fill::before{content:"\f1e7"}.bi-calendar-event::before{content:"\f1e8"}.bi-calendar-fill::before{content:"\f1e9"}.bi-calendar-minus-fill::before{content:"\f1ea"}.bi-calendar-minus::before{content:"\f1eb"}.bi-calendar-month-fill::before{content:"\f1ec"}.bi-calendar-month::before{content:"\f1ed"}.bi-calendar-plus-fill::before{content:"\f1ee"}.bi-calendar-plus::before{content:"\f1ef"}.bi-calendar-range-fill::before{content:"\f1f0"}.bi-calendar-range::before{content:"\f1f1"}.bi-calendar-week-fill::before{content:"\f1f2"}.bi-calendar-week::before{content:"\f1f3"}.bi-calendar-x-fill::before{content:"\f1f4"}.bi-calendar-x::before{content:"\f1f5"}.bi-calendar::before{content:"\f1f6"}.bi-calendar2-check-fill::before{content:"\f1f7"}.bi-calendar2-check::before{content:"\f1f8"}.bi-calendar2-date-fill::before{content:"\f1f9"}.bi-calendar2-date::before{content:"\f1fa"}.bi-calendar2-day-fill::before{content:"\f1fb"}.bi-calendar2-day::before{content:"\f1fc"}.bi-calendar2-event-fill::before{content:"\f1fd"}.bi-calendar2-event::before{content:"\f1fe"}.bi-calendar2-fill::before{content:"\f1ff"}.bi-calendar2-minus-fill::before{content:"\f200"}.bi-calendar2-minus::before{content:"\f201"}.bi-calendar2-month-fill::before{content:"\f202"}.bi-calendar2-month::before{content:"\f203"}.bi-calendar2-plus-fill::before{content:"\f204"}.bi-calendar2-plus::before{content:"\f205"}.bi-calendar2-range-fill::before{content:"\f206"}.bi-calendar2-range::before{content:"\f207"}.bi-calendar2-week-fill::before{content:"\f208"}.bi-calendar2-week::before{content:"\f209"}.bi-calendar2-x-fill::before{content:"\f20a"}.bi-calendar2-x::before{content:"\f20b"}.bi-calendar2::before{content:"\f20c"}.bi-calendar3-event-fill::before{content:"\f20d"}.bi-calendar3-event::before{content:"\f20e"}.bi-calendar3-fill::before{content:"\f20f"}.bi-calendar3-range-fill::before{content:"\f210"}.bi-calendar3-range::before{content:"\f211"}.bi-calendar3-week-fill::before{content:"\f212"}.bi-calendar3-week::before{content:"\f213"}.bi-calendar3::before{content:"\f214"}.bi-calendar4-event::before{content:"\f215"}.bi-calendar4-range::before{content:"\f216"}.bi-calendar4-week::before{content:"\f217"}.bi-calendar4::before{content:"\f218"}.bi-camera-fill::before{content:"\f219"}.bi-camera-reels-fill::before{content:"\f21a"}.bi-camera-reels::before{content:"\f21b"}.bi-camera-video-fill::before{content:"\f21c"}.bi-camera-video-off-fill::before{content:"\f21d"}.bi-camera-video-off::before{content:"\f21e"}.bi-camera-video::before{content:"\f21f"}.bi-camera::before{content:"\f220"}.bi-camera2::before{content:"\f221"}.bi-capslock-fill::before{content:"\f222"}.bi-capslock::before{content:"\f223"}.bi-card-checklist::before{content:"\f224"}.bi-card-heading::before{content:"\f225"}.bi-card-image::before{content:"\f226"}.bi-card-list::before{content:"\f227"}.bi-card-text::before{content:"\f228"}.bi-caret-down-fill::before{content:"\f229"}.bi-caret-down-square-fill::before{content:"\f22a"}.bi-caret-down-square::before{content:"\f22b"}.bi-caret-down::before{content:"\f22c"}.bi-caret-left-fill::before{content:"\f22d"}.bi-caret-left-square-fill::before{content:"\f22e"}.bi-caret-left-square::before{content:"\f22f"}.bi-caret-left::before{content:"\f230"}.bi-caret-right-fill::before{content:"\f231"}.bi-caret-right-square-fill::before{content:"\f232"}.bi-caret-right-square::before{content:"\f233"}.bi-caret-right::before{content:"\f234"}.bi-caret-up-fill::before{content:"\f235"}.bi-caret-up-square-fill::before{content:"\f236"}.bi-caret-up-square::before{content:"\f237"}.bi-caret-up::before{content:"\f238"}.bi-cart-check-fill::before{content:"\f239"}.bi-cart-check::before{content:"\f23a"}.bi-cart-dash-fill::before{content:"\f23b"}.bi-cart-dash::before{content:"\f23c"}.bi-cart-fill::before{content:"\f23d"}.bi-cart-plus-fill::before{content:"\f23e"}.bi-cart-plus::before{content:"\f23f"}.bi-cart-x-fill::before{content:"\f240"}.bi-cart-x::before{content:"\f241"}.bi-cart::before{content:"\f242"}.bi-cart2::before{content:"\f243"}.bi-cart3::before{content:"\f244"}.bi-cart4::before{content:"\f245"}.bi-cash-stack::before{content:"\f246"}.bi-cash::before{content:"\f247"}.bi-cast::before{content:"\f248"}.bi-chat-dots-fill::before{content:"\f249"}.bi-chat-dots::before{content:"\f24a"}.bi-chat-fill::before{content:"\f24b"}.bi-chat-left-dots-fill::before{content:"\f24c"}.bi-chat-left-dots::before{content:"\f24d"}.bi-chat-left-fill::before{content:"\f24e"}.bi-chat-left-quote-fill::before{content:"\f24f"}.bi-chat-left-quote::before{content:"\f250"}.bi-chat-left-text-fill::before{content:"\f251"}.bi-chat-left-text::before{content:"\f252"}.bi-chat-left::before{content:"\f253"}.bi-chat-quote-fill::before{content:"\f254"}.bi-chat-quote::before{content:"\f255"}.bi-chat-right-dots-fill::before{content:"\f256"}.bi-chat-right-dots::before{content:"\f257"}.bi-chat-right-fill::before{content:"\f258"}.bi-chat-right-quote-fill::before{content:"\f259"}.bi-chat-right-quote::before{content:"\f25a"}.bi-chat-right-text-fill::before{content:"\f25b"}.bi-chat-right-text::before{content:"\f25c"}.bi-chat-right::before{content:"\f25d"}.bi-chat-square-dots-fill::before{content:"\f25e"}.bi-chat-square-dots::before{content:"\f25f"}.bi-chat-square-fill::before{content:"\f260"}.bi-chat-square-quote-fill::before{content:"\f261"}.bi-chat-square-quote::before{content:"\f262"}.bi-chat-square-text-fill::before{content:"\f263"}.bi-chat-square-text::before{content:"\f264"}.bi-chat-square::before{content:"\f265"}.bi-chat-text-fill::before{content:"\f266"}.bi-chat-text::before{content:"\f267"}.bi-chat::before{content:"\f268"}.bi-check-all::before{content:"\f269"}.bi-check-circle-fill::before{content:"\f26a"}.bi-check-circle::before{content:"\f26b"}.bi-check-square-fill::before{content:"\f26c"}.bi-check-square::before{content:"\f26d"}.bi-check::before{content:"\f26e"}.bi-check2-all::before{content:"\f26f"}.bi-check2-circle::before{content:"\f270"}.bi-check2-square::before{content:"\f271"}.bi-check2::before{content:"\f272"}.bi-chevron-bar-contract::before{content:"\f273"}.bi-chevron-bar-down::before{content:"\f274"}.bi-chevron-bar-expand::before{content:"\f275"}.bi-chevron-bar-left::before{content:"\f276"}.bi-chevron-bar-right::before{content:"\f277"}.bi-chevron-bar-up::before{content:"\f278"}.bi-chevron-compact-down::before{content:"\f279"}.bi-chevron-compact-left::before{content:"\f27a"}.bi-chevron-compact-right::before{content:"\f27b"}.bi-chevron-compact-up::before{content:"\f27c"}.bi-chevron-contract::before{content:"\f27d"}.bi-chevron-double-down::before{content:"\f27e"}.bi-chevron-double-left::before{content:"\f27f"}.bi-chevron-double-right::before{content:"\f280"}.bi-chevron-double-up::before{content:"\f281"}.bi-chevron-down::before{content:"\f282"}.bi-chevron-expand::before{content:"\f283"}.bi-chevron-left::before{content:"\f284"}.bi-chevron-right::before{content:"\f285"}.bi-chevron-up::before{content:"\f286"}.bi-circle-fill::before{content:"\f287"}.bi-circle-half::before{content:"\f288"}.bi-circle-square::before{content:"\f289"}.bi-circle::before{content:"\f28a"}.bi-clipboard-check::before{content:"\f28b"}.bi-clipboard-data::before{content:"\f28c"}.bi-clipboard-minus::before{content:"\f28d"}.bi-clipboard-plus::before{content:"\f28e"}.bi-clipboard-x::before{content:"\f28f"}.bi-clipboard::before{content:"\f290"}.bi-clock-fill::before{content:"\f291"}.bi-clock-history::before{content:"\f292"}.bi-clock::before{content:"\f293"}.bi-cloud-arrow-down-fill::before{content:"\f294"}.bi-cloud-arrow-down::before{content:"\f295"}.bi-cloud-arrow-up-fill::before{content:"\f296"}.bi-cloud-arrow-up::before{content:"\f297"}.bi-cloud-check-fill::before{content:"\f298"}.bi-cloud-check::before{content:"\f299"}.bi-cloud-download-fill::before{content:"\f29a"}.bi-cloud-download::before{content:"\f29b"}.bi-cloud-drizzle-fill::before{content:"\f29c"}.bi-cloud-drizzle::before{content:"\f29d"}.bi-cloud-fill::before{content:"\f29e"}.bi-cloud-fog-fill::before{content:"\f29f"}.bi-cloud-fog::before{content:"\f2a0"}.bi-cloud-fog2-fill::before{content:"\f2a1"}.bi-cloud-fog2::before{content:"\f2a2"}.bi-cloud-hail-fill::before{content:"\f2a3"}.bi-cloud-hail::before{content:"\f2a4"}.bi-cloud-haze-1::before{content:"\f2a5"}.bi-cloud-haze-fill::before{content:"\f2a6"}.bi-cloud-haze::before{content:"\f2a7"}.bi-cloud-haze2-fill::before{content:"\f2a8"}.bi-cloud-lightning-fill::before{content:"\f2a9"}.bi-cloud-lightning-rain-fill::before{content:"\f2aa"}.bi-cloud-lightning-rain::before{content:"\f2ab"}.bi-cloud-lightning::before{content:"\f2ac"}.bi-cloud-minus-fill::before{content:"\f2ad"}.bi-cloud-minus::before{content:"\f2ae"}.bi-cloud-moon-fill::before{content:"\f2af"}.bi-cloud-moon::before{content:"\f2b0"}.bi-cloud-plus-fill::before{content:"\f2b1"}.bi-cloud-plus::before{content:"\f2b2"}.bi-cloud-rain-fill::before{content:"\f2b3"}.bi-cloud-rain-heavy-fill::before{content:"\f2b4"}.bi-cloud-rain-heavy::before{content:"\f2b5"}.bi-cloud-rain::before{content:"\f2b6"}.bi-cloud-slash-fill::before{content:"\f2b7"}.bi-cloud-slash::before{content:"\f2b8"}.bi-cloud-sleet-fill::before{content:"\f2b9"}.bi-cloud-sleet::before{content:"\f2ba"}.bi-cloud-snow-fill::before{content:"\f2bb"}.bi-cloud-snow::before{content:"\f2bc"}.bi-cloud-sun-fill::before{content:"\f2bd"}.bi-cloud-sun::before{content:"\f2be"}.bi-cloud-upload-fill::before{content:"\f2bf"}.bi-cloud-upload::before{content:"\f2c0"}.bi-cloud::before{content:"\f2c1"}.bi-clouds-fill::before{content:"\f2c2"}.bi-clouds::before{content:"\f2c3"}.bi-cloudy-fill::before{content:"\f2c4"}.bi-cloudy::before{content:"\f2c5"}.bi-code-slash::before{content:"\f2c6"}.bi-code-square::before{content:"\f2c7"}.bi-code::before{content:"\f2c8"}.bi-collection-fill::before{content:"\f2c9"}.bi-collection-play-fill::before{content:"\f2ca"}.bi-collection-play::before{content:"\f2cb"}.bi-collection::before{content:"\f2cc"}.bi-columns-gap::before{content:"\f2cd"}.bi-columns::before{content:"\f2ce"}.bi-command::before{content:"\f2cf"}.bi-compass-fill::before{content:"\f2d0"}.bi-compass::before{content:"\f2d1"}.bi-cone-striped::before{content:"\f2d2"}.bi-cone::before{content:"\f2d3"}.bi-controller::before{content:"\f2d4"}.bi-cpu-fill::before{content:"\f2d5"}.bi-cpu::before{content:"\f2d6"}.bi-credit-card-2-back-fill::before{content:"\f2d7"}.bi-credit-card-2-back::before{content:"\f2d8"}.bi-credit-card-2-front-fill::before{content:"\f2d9"}.bi-credit-card-2-front::before{content:"\f2da"}.bi-credit-card-fill::before{content:"\f2db"}.bi-credit-card::before{content:"\f2dc"}.bi-crop::before{content:"\f2dd"}.bi-cup-fill::before{content:"\f2de"}.bi-cup-straw::before{content:"\f2df"}.bi-cup::before{content:"\f2e0"}.bi-cursor-fill::before{content:"\f2e1"}.bi-cursor-text::before{content:"\f2e2"}.bi-cursor::before{content:"\f2e3"}.bi-dash-circle-dotted::before{content:"\f2e4"}.bi-dash-circle-fill::before{content:"\f2e5"}.bi-dash-circle::before{content:"\f2e6"}.bi-dash-square-dotted::before{content:"\f2e7"}.bi-dash-square-fill::before{content:"\f2e8"}.bi-dash-square::before{content:"\f2e9"}.bi-dash::before{content:"\f2ea"}.bi-diagram-2-fill::before{content:"\f2eb"}.bi-diagram-2::before{content:"\f2ec"}.bi-diagram-3-fill::before{content:"\f2ed"}.bi-diagram-3::before{content:"\f2ee"}.bi-diamond-fill::before{content:"\f2ef"}.bi-diamond-half::before{content:"\f2f0"}.bi-diamond::before{content:"\f2f1"}.bi-dice-1-fill::before{content:"\f2f2"}.bi-dice-1::before{content:"\f2f3"}.bi-dice-2-fill::before{content:"\f2f4"}.bi-dice-2::before{content:"\f2f5"}.bi-dice-3-fill::before{content:"\f2f6"}.bi-dice-3::before{content:"\f2f7"}.bi-dice-4-fill::before{content:"\f2f8"}.bi-dice-4::before{content:"\f2f9"}.bi-dice-5-fill::before{content:"\f2fa"}.bi-dice-5::before{content:"\f2fb"}.bi-dice-6-fill::before{content:"\f2fc"}.bi-dice-6::before{content:"\f2fd"}.bi-disc-fill::before{content:"\f2fe"}.bi-disc::before{content:"\f2ff"}.bi-discord::before{content:"\f300"}.bi-display-fill::before{content:"\f301"}.bi-display::before{content:"\f302"}.bi-distribute-horizontal::before{content:"\f303"}.bi-distribute-vertical::before{content:"\f304"}.bi-door-closed-fill::before{content:"\f305"}.bi-door-closed::before{content:"\f306"}.bi-door-open-fill::before{content:"\f307"}.bi-door-open::before{content:"\f308"}.bi-dot::before{content:"\f309"}.bi-download::before{content:"\f30a"}.bi-droplet-fill::before{content:"\f30b"}.bi-droplet-half::before{content:"\f30c"}.bi-droplet::before{content:"\f30d"}.bi-earbuds::before{content:"\f30e"}.bi-easel-fill::before{content:"\f30f"}.bi-easel::before{content:"\f310"}.bi-egg-fill::before{content:"\f311"}.bi-egg-fried::before{content:"\f312"}.bi-egg::before{content:"\f313"}.bi-eject-fill::before{content:"\f314"}.bi-eject::before{content:"\f315"}.bi-emoji-angry-fill::before{content:"\f316"}.bi-emoji-angry::before{content:"\f317"}.bi-emoji-dizzy-fill::before{content:"\f318"}.bi-emoji-dizzy::before{content:"\f319"}.bi-emoji-expressionless-fill::before{content:"\f31a"}.bi-emoji-expressionless::before{content:"\f31b"}.bi-emoji-frown-fill::before{content:"\f31c"}.bi-emoji-frown::before{content:"\f31d"}.bi-emoji-heart-eyes-fill::before{content:"\f31e"}.bi-emoji-heart-eyes::before{content:"\f31f"}.bi-emoji-laughing-fill::before{content:"\f320"}.bi-emoji-laughing::before{content:"\f321"}.bi-emoji-neutral-fill::before{content:"\f322"}.bi-emoji-neutral::before{content:"\f323"}.bi-emoji-smile-fill::before{content:"\f324"}.bi-emoji-smile-upside-down-fill::before{content:"\f325"}.bi-emoji-smile-upside-down::before{content:"\f326"}.bi-emoji-smile::before{content:"\f327"}.bi-emoji-sunglasses-fill::before{content:"\f328"}.bi-emoji-sunglasses::before{content:"\f329"}.bi-emoji-wink-fill::before{content:"\f32a"}.bi-emoji-wink::before{content:"\f32b"}.bi-envelope-fill::before{content:"\f32c"}.bi-envelope-open-fill::before{content:"\f32d"}.bi-envelope-open::before{content:"\f32e"}.bi-envelope::before{content:"\f32f"}.bi-eraser-fill::before{content:"\f330"}.bi-eraser::before{content:"\f331"}.bi-exclamation-circle-fill::before{content:"\f332"}.bi-exclamation-circle::before{content:"\f333"}.bi-exclamation-diamond-fill::before{content:"\f334"}.bi-exclamation-diamond::before{content:"\f335"}.bi-exclamation-octagon-fill::before{content:"\f336"}.bi-exclamation-octagon::before{content:"\f337"}.bi-exclamation-square-fill::before{content:"\f338"}.bi-exclamation-square::before{content:"\f339"}.bi-exclamation-triangle-fill::before{content:"\f33a"}.bi-exclamation-triangle::before{content:"\f33b"}.bi-exclamation::before{content:"\f33c"}.bi-exclude::before{content:"\f33d"}.bi-eye-fill::before{content:"\f33e"}.bi-eye-slash-fill::before{content:"\f33f"}.bi-eye-slash::before{content:"\f340"}.bi-eye::before{content:"\f341"}.bi-eyedropper::before{content:"\f342"}.bi-eyeglasses::before{content:"\f343"}.bi-facebook::before{content:"\f344"}.bi-file-arrow-down-fill::before{content:"\f345"}.bi-file-arrow-down::before{content:"\f346"}.bi-file-arrow-up-fill::before{content:"\f347"}.bi-file-arrow-up::before{content:"\f348"}.bi-file-bar-graph-fill::before{content:"\f349"}.bi-file-bar-graph::before{content:"\f34a"}.bi-file-binary-fill::before{content:"\f34b"}.bi-file-binary::before{content:"\f34c"}.bi-file-break-fill::before{content:"\f34d"}.bi-file-break::before{content:"\f34e"}.bi-file-check-fill::before{content:"\f34f"}.bi-file-check::before{content:"\f350"}.bi-file-code-fill::before{content:"\f351"}.bi-file-code::before{content:"\f352"}.bi-file-diff-fill::before{content:"\f353"}.bi-file-diff::before{content:"\f354"}.bi-file-earmark-arrow-down-fill::before{content:"\f355"}.bi-file-earmark-arrow-down::before{content:"\f356"}.bi-file-earmark-arrow-up-fill::before{content:"\f357"}.bi-file-earmark-arrow-up::before{content:"\f358"}.bi-file-earmark-bar-graph-fill::before{content:"\f359"}.bi-file-earmark-bar-graph::before{content:"\f35a"}.bi-file-earmark-binary-fill::before{content:"\f35b"}.bi-file-earmark-binary::before{content:"\f35c"}.bi-file-earmark-break-fill::before{content:"\f35d"}.bi-file-earmark-break::before{content:"\f35e"}.bi-file-earmark-check-fill::before{content:"\f35f"}.bi-file-earmark-check::before{content:"\f360"}.bi-file-earmark-code-fill::before{content:"\f361"}.bi-file-earmark-code::before{content:"\f362"}.bi-file-earmark-diff-fill::before{content:"\f363"}.bi-file-earmark-diff::before{content:"\f364"}.bi-file-earmark-easel-fill::before{content:"\f365"}.bi-file-earmark-easel::before{content:"\f366"}.bi-file-earmark-excel-fill::before{content:"\f367"}.bi-file-earmark-excel::before{content:"\f368"}.bi-file-earmark-fill::before{content:"\f369"}.bi-file-earmark-font-fill::before{content:"\f36a"}.bi-file-earmark-font::before{content:"\f36b"}.bi-file-earmark-image-fill::before{content:"\f36c"}.bi-file-earmark-image::before{content:"\f36d"}.bi-file-earmark-lock-fill::before{content:"\f36e"}.bi-file-earmark-lock::before{content:"\f36f"}.bi-file-earmark-lock2-fill::before{content:"\f370"}.bi-file-earmark-lock2::before{content:"\f371"}.bi-file-earmark-medical-fill::before{content:"\f372"}.bi-file-earmark-medical::before{content:"\f373"}.bi-file-earmark-minus-fill::before{content:"\f374"}.bi-file-earmark-minus::before{content:"\f375"}.bi-file-earmark-music-fill::before{content:"\f376"}.bi-file-earmark-music::before{content:"\f377"}.bi-file-earmark-person-fill::before{content:"\f378"}.bi-file-earmark-person::before{content:"\f379"}.bi-file-earmark-play-fill::before{content:"\f37a"}.bi-file-earmark-play::before{content:"\f37b"}.bi-file-earmark-plus-fill::before{content:"\f37c"}.bi-file-earmark-plus::before{content:"\f37d"}.bi-file-earmark-post-fill::before{content:"\f37e"}.bi-file-earmark-post::before{content:"\f37f"}.bi-file-earmark-ppt-fill::before{content:"\f380"}.bi-file-earmark-ppt::before{content:"\f381"}.bi-file-earmark-richtext-fill::before{content:"\f382"}.bi-file-earmark-richtext::before{content:"\f383"}.bi-file-earmark-ruled-fill::before{content:"\f384"}.bi-file-earmark-ruled::before{content:"\f385"}.bi-file-earmark-slides-fill::before{content:"\f386"}.bi-file-earmark-slides::before{content:"\f387"}.bi-file-earmark-spreadsheet-fill::before{content:"\f388"}.bi-file-earmark-spreadsheet::before{content:"\f389"}.bi-file-earmark-text-fill::before{content:"\f38a"}.bi-file-earmark-text::before{content:"\f38b"}.bi-file-earmark-word-fill::before{content:"\f38c"}.bi-file-earmark-word::before{content:"\f38d"}.bi-file-earmark-x-fill::before{content:"\f38e"}.bi-file-earmark-x::before{content:"\f38f"}.bi-file-earmark-zip-fill::before{content:"\f390"}.bi-file-earmark-zip::before{content:"\f391"}.bi-file-earmark::before{content:"\f392"}.bi-file-easel-fill::before{content:"\f393"}.bi-file-easel::before{content:"\f394"}.bi-file-excel-fill::before{content:"\f395"}.bi-file-excel::before{content:"\f396"}.bi-file-fill::before{content:"\f397"}.bi-file-font-fill::before{content:"\f398"}.bi-file-font::before{content:"\f399"}.bi-file-image-fill::before{content:"\f39a"}.bi-file-image::before{content:"\f39b"}.bi-file-lock-fill::before{content:"\f39c"}.bi-file-lock::before{content:"\f39d"}.bi-file-lock2-fill::before{content:"\f39e"}.bi-file-lock2::before{content:"\f39f"}.bi-file-medical-fill::before{content:"\f3a0"}.bi-file-medical::before{content:"\f3a1"}.bi-file-minus-fill::before{content:"\f3a2"}.bi-file-minus::before{content:"\f3a3"}.bi-file-music-fill::before{content:"\f3a4"}.bi-file-music::before{content:"\f3a5"}.bi-file-person-fill::before{content:"\f3a6"}.bi-file-person::before{content:"\f3a7"}.bi-file-play-fill::before{content:"\f3a8"}.bi-file-play::before{content:"\f3a9"}.bi-file-plus-fill::before{content:"\f3aa"}.bi-file-plus::before{content:"\f3ab"}.bi-file-post-fill::before{content:"\f3ac"}.bi-file-post::before{content:"\f3ad"}.bi-file-ppt-fill::before{content:"\f3ae"}.bi-file-ppt::before{content:"\f3af"}.bi-file-richtext-fill::before{content:"\f3b0"}.bi-file-richtext::before{content:"\f3b1"}.bi-file-ruled-fill::before{content:"\f3b2"}.bi-file-ruled::before{content:"\f3b3"}.bi-file-slides-fill::before{content:"\f3b4"}.bi-file-slides::before{content:"\f3b5"}.bi-file-spreadsheet-fill::before{content:"\f3b6"}.bi-file-spreadsheet::before{content:"\f3b7"}.bi-file-text-fill::before{content:"\f3b8"}.bi-file-text::before{content:"\f3b9"}.bi-file-word-fill::before{content:"\f3ba"}.bi-file-word::before{content:"\f3bb"}.bi-file-x-fill::before{content:"\f3bc"}.bi-file-x::before{content:"\f3bd"}.bi-file-zip-fill::before{content:"\f3be"}.bi-file-zip::before{content:"\f3bf"}.bi-file::before{content:"\f3c0"}.bi-files-alt::before{content:"\f3c1"}.bi-files::before{content:"\f3c2"}.bi-film::before{content:"\f3c3"}.bi-filter-circle-fill::before{content:"\f3c4"}.bi-filter-circle::before{content:"\f3c5"}.bi-filter-left::before{content:"\f3c6"}.bi-filter-right::before{content:"\f3c7"}.bi-filter-square-fill::before{content:"\f3c8"}.bi-filter-square::before{content:"\f3c9"}.bi-filter::before{content:"\f3ca"}.bi-flag-fill::before{content:"\f3cb"}.bi-flag::before{content:"\f3cc"}.bi-flower1::before{content:"\f3cd"}.bi-flower2::before{content:"\f3ce"}.bi-flower3::before{content:"\f3cf"}.bi-folder-check::before{content:"\f3d0"}.bi-folder-fill::before{content:"\f3d1"}.bi-folder-minus::before{content:"\f3d2"}.bi-folder-plus::before{content:"\f3d3"}.bi-folder-symlink-fill::before{content:"\f3d4"}.bi-folder-symlink::before{content:"\f3d5"}.bi-folder-x::before{content:"\f3d6"}.bi-folder::before{content:"\f3d7"}.bi-folder2-open::before{content:"\f3d8"}.bi-folder2::before{content:"\f3d9"}.bi-fonts::before{content:"\f3da"}.bi-forward-fill::before{content:"\f3db"}.bi-forward::before{content:"\f3dc"}.bi-front::before{content:"\f3dd"}.bi-fullscreen-exit::before{content:"\f3de"}.bi-fullscreen::before{content:"\f3df"}.bi-funnel-fill::before{content:"\f3e0"}.bi-funnel::before{content:"\f3e1"}.bi-gear-fill::before{content:"\f3e2"}.bi-gear-wide-connected::before{content:"\f3e3"}.bi-gear-wide::before{content:"\f3e4"}.bi-gear::before{content:"\f3e5"}.bi-gem::before{content:"\f3e6"}.bi-geo-alt-fill::before{content:"\f3e7"}.bi-geo-alt::before{content:"\f3e8"}.bi-geo-fill::before{content:"\f3e9"}.bi-geo::before{content:"\f3ea"}.bi-gift-fill::before{content:"\f3eb"}.bi-gift::before{content:"\f3ec"}.bi-github::before{content:"\f3ed"}.bi-globe::before{content:"\f3ee"}.bi-globe2::before{content:"\f3ef"}.bi-google::before{content:"\f3f0"}.bi-graph-down::before{content:"\f3f1"}.bi-graph-up::before{content:"\f3f2"}.bi-grid-1x2-fill::before{content:"\f3f3"}.bi-grid-1x2::before{content:"\f3f4"}.bi-grid-3x2-gap-fill::before{content:"\f3f5"}.bi-grid-3x2-gap::before{content:"\f3f6"}.bi-grid-3x2::before{content:"\f3f7"}.bi-grid-3x3-gap-fill::before{content:"\f3f8"}.bi-grid-3x3-gap::before{content:"\f3f9"}.bi-grid-3x3::before{content:"\f3fa"}.bi-grid-fill::before{content:"\f3fb"}.bi-grid::before{content:"\f3fc"}.bi-grip-horizontal::before{content:"\f3fd"}.bi-grip-vertical::before{content:"\f3fe"}.bi-hammer::before{content:"\f3ff"}.bi-hand-index-fill::before{content:"\f400"}.bi-hand-index-thumb-fill::before{content:"\f401"}.bi-hand-index-thumb::before{content:"\f402"}.bi-hand-index::before{content:"\f403"}.bi-hand-thumbs-down-fill::before{content:"\f404"}.bi-hand-thumbs-down::before{content:"\f405"}.bi-hand-thumbs-up-fill::before{content:"\f406"}.bi-hand-thumbs-up::before{content:"\f407"}.bi-handbag-fill::before{content:"\f408"}.bi-handbag::before{content:"\f409"}.bi-hash::before{content:"\f40a"}.bi-hdd-fill::before{content:"\f40b"}
Download .txt
gitextract_uat3ea75/

├── .claude/
│   └── settings.local.json
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── 1-bug_report.yaml
│   │   ├── 2-new-proposal.yaml
│   │   ├── 3-others.md
│   │   └── config.yml
│   └── workflows/
│       └── notify-preview-deploy.yml
├── .gitignore
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── apps/
│   ├── LICENSE
│   ├── NOTICE.md
│   └── style/
│       ├── about.css
│       ├── bios.css
│       ├── calc.css
│       ├── camera.css
│       ├── code-editor.css
│       ├── copilot.css
│       ├── defender.css
│       ├── edge.css
│       ├── explorer.css
│       ├── imgviewer.css
│       ├── login.css
│       ├── mediaplayer.css
│       ├── msstore.css
│       ├── notepad.css
│       ├── pythonEditor.css
│       ├── recognition.css
│       ├── run.css
│       ├── setting.css
│       ├── taskmgr.css
│       ├── terminal.css
│       ├── whiteboard.css
│       └── word.css
├── base.css
├── bios.html
├── bluescreen.html
├── boot.html
├── bootstrap-icons.css
├── changelog.md
├── data/
│   ├── disconnected.html
│   ├── disconnected_dark.html
│   └── tasks.js
├── desktop.css
├── desktop.html
├── desktop.js
├── fonts/
│   └── LICENSE
├── games/
│   └── minesweeper.html
├── icon/
│   ├── LICENSE
│   └── NOTICE.md
├── img/
│   ├── LICENSE
│   └── NOTICE.md
├── index.html
├── lang/
│   ├── README_trans.md
│   ├── lang.properties
│   ├── lang_en.properties
│   ├── lang_zh.properties
│   ├── lang_zh_CN.properties
│   ├── lang_zh_TW.properties
│   ├── readme.md
│   └── trans.py
├── mainpage.html
├── media/
│   └── LICENSE
├── module/
│   ├── apps.js
│   ├── tab.css
│   ├── tab.js
│   ├── widget.css
│   ├── widget.js
│   └── window.js
├── pwa/
│   └── manifest.json
├── readme/
│   ├── README_en_us.md
│   ├── README_fr_fr.md
│   └── README_zh_tw.md
├── reload.html
├── robots.txt
├── scripts/
│   ├── AI Copilot service/
│   │   └── README.md
│   ├── Lunar.js
│   ├── bios_kernel.js
│   ├── boot_kernel.js
│   ├── calculator_kernel.js
│   ├── jquery.i18n.properties.js
│   ├── news.js
│   ├── setting_getTime.js
│   └── utils.js
├── shutdown.html
└── sw.js
Download .txt
SYMBOL INDEX (112 symbols across 13 files)

FILE: desktop.js
  function loadlang (line 17) | function loadlang(code) {
  function disableIframes (line 113) | function disableIframes() {
  function enableIframes (line 118) | function enableIframes() {
  function api (line 123) | async function api(index, nobase=false) {
  function stop (line 183) | function stop(e) {
  function addMenu (line 192) | function addMenu() {
  function showcm (line 455) | function showcm(e, cl, arg) {
  function playWindowsBackground (line 566) | function playWindowsBackground() {
  function showdp (line 574) | function showdp(e, cl, arg) {
  function hidedp (line 619) | function hidedp(force = false) {
  function showdescp (line 635) | function showdescp(e) {
  function hidedescp (line 657) | function hidedescp(e) {
  function shownotice (line 913) | function shownotice(name) {
  function closenotice (line 925) | function closenotice() {
  function closeVideo (line 932) | function closeVideo() {
  function runcmd (line 950) | function runcmd(cmd, inTerminal=false) {
  function dragMouseDown (line 1527) | function dragMouseDown(e) {
  function elementDrag (line 1535) | function elementDrag(e) {
  function stopDrag (line 1546) | function stopDrag() {
  function insertTextAtCursor (line 1553) | function insertTextAtCursor(text) {
  function startSpeechRecognition (line 1584) | function startSpeechRecognition() {
  function updateVoiceBallStatus (line 1605) | function updateVoiceBallStatus() {
  function decodeHtml (line 1609) | function decodeHtml(s) {
  function msgDoneOperate (line 1613) | function msgDoneOperate(){
  function loadtime (line 1780) | function loadtime() {
  function pinapp (line 1807) | function pinapp(id, name, command) {
  function geticon (line 1828) | function geticon(name) {
  function openapp (line 1834) | function openapp(name) {
  function openDockWidget (line 1879) | function openDockWidget(name){
  function removeEdgeSaveUrl (line 1986) | function removeEdgeSaveUrl(classname) {
  function hide_startmenu (line 1990) | function hide_startmenu() {
  function hide_widgets (line 1995) | function hide_widgets() {
  constant FLY_HIDDEN_LIST_KEY (line 2000) | const FLY_HIDDEN_LIST_KEY = 'control_status_fly_hidden_list'
  function controlStatus (line 2001) | function controlStatus(name) {
  function dragBrightness (line 2051) | function dragBrightness(e) {
  function ch (line 2158) | function ch(e) {
  function toggletheme (line 2181) | function toggletheme() {
  function saveDesktop (line 2215) | function saveDesktop() {
  function setIcon (line 2228) | function setIcon() {
  function checkUpdate (line 2373) | function checkUpdate() {
  function sendToSw (line 2444) | function sendToSw(msg) {
  function calcTimeString (line 2453) | function calcTimeString(second) {
  function setupGlobalKey (line 2475) | function setupGlobalKey(){
  function isMobileDevice (line 2494) | function isMobileDevice() {
  function checkOrientation (line 2498) | function checkOrientation() {
  function showTaskbarPreview (line 2517) | function showTaskbarPreview(name, event) {
  function hideTaskbarPreview (line 2580) | function hideTaskbarPreview() {

FILE: lang/trans.py
  function color (line 19) | def color(what,text=None,bg=None,bold=False,underline=False,blink=False,...
  function clear (line 30) | def clear():
  function clamp (line 41) | def clamp(value: int, low: int, high: int) -> int:
  function load_lines (line 45) | def load_lines(path: Path):
  function save_lines (line 49) | def save_lines(path: Path, lines):
  function append_property (line 53) | def append_property(path: Path, key: str, value: str):
  function display_context (line 58) | def display_context(lines, index: int):
  function prompt_start_line (line 68) | def prompt_start_line(total: int) -> int:
  function main (line 79) | def main():

FILE: module/apps.js
  method traverseDirectory (line 1499) | traverseDirectory(dir, name) {
  method in_div (line 2199) | in_div(id,event) {

FILE: module/tab.js
  function move_f (line 27) | function move_f(e) {
  function up_f (line 62) | function up_f(e) {

FILE: module/widget.js
  function editMode (line 191) | function editMode() {
  function widgetsMove (line 202) | function widgetsMove(elt, e) {

FILE: module/window.js
  function showwin (line 5) | function showwin(name) {
  function hidewin (line 30) | function hidewin(name, arg = 'window') {
  function maxwin (line 78) | function maxwin(name, trigger = true) {
  function minwin (line 117) | function minwin(name) {
  function resizewin (line 148) | function resizewin(win, arg, resizeElt) {
  function win_resizing (line 168) | function win_resizing(win, e, arg) {
  function orderwin (line 285) | function orderwin() {
  function win_move (line 300) | function win_move(e) {
  function focwin (line 477) | function focwin(name, arg = 'window') {
  function taskbarclick (line 489) | function taskbarclick(name) {

FILE: scripts/Lunar.js
  function getLunar (line 6) | async function getLunar() {

FILE: scripts/bios_kernel.js
  function addZero (line 1) | function addZero(i) {
  function timeChange (line 5) | function timeChange() {
  function toBoot (line 11) | function toBoot() {
  function BIOS_confirm (line 21) | function BIOS_confirm(tit, func) {
  function changePage (line 29) | function changePage(t) {
  function toggleOption (line 63) | function toggleOption(optionElement) {
  function handleExitOption (line 84) | function handleExitOption(option) {
  function updateFocus (line 97) | function updateFocus() {

FILE: scripts/boot_kernel.js
  function setProgress (line 1) | function setProgress(n) {
  function toBIOS (line 19) | function toBIOS() {

FILE: scripts/calculator_kernel.js
  class Calculator (line 1) | class Calculator {
    method constructor (line 2) | constructor(input, container) {
    method get_num (line 11) | get_num() {
    method number_key (line 15) | number_key(key) {
    method func_key (line 27) | func_key(key) {
    method check (line 46) | check(elt) {
    method uncheck (line 51) | uncheck() {
    method isCheck (line 57) | isCheck() {
    method point (line 66) | point() {
    method square (line 75) | square() {
    method squareRoot (line 79) | squareRoot() {
    method backspace (line 83) | backspace() {
    method clear_num (line 93) | clear_num() {
    method eq (line 99) | eq() {
    method _calc (line 114) | _calc(n1, n2, c) {

FILE: scripts/jquery.i18n.properties.js
  function callbackIfComplete (line 295) | function callbackIfComplete(settings) {
  function loadAndParseFiles (line 312) | function loadAndParseFiles(fileNames, settings) {
  function loadAndParseFile (line 327) | function loadAndParseFile(filename, settings, nextFile) {
  function parseData (line 366) | function parseData(data, settings) {
  function checkKeyNamespace (line 454) | function checkKeyNamespace(key) {
  function unescapeUnicode (line 495) | function unescapeUnicode(str) {

FILE: scripts/news.js
  method getData (line 14) | async getData() {
  method getData (line 49) | async getData() {
  method setup (line 76) | setup() {
  method setSource (line 93) | setSource(index) {
  method refresh (line 97) | async refresh() {
  method setFullTip (line 145) | setFullTip(hidden = true, loading = false, tit = '', desc = '', data = '...
  method parseToHTMLString (line 157) | async parseToHTMLString(str) {

FILE: sw.js
  function update (line 49) | function update(force = false) {
Condensed preview — 87 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,051K chars).
[
  {
    "path": ".claude/settings.local.json",
    "chars": 73,
    "preview": "{\n  \"permissions\": {\n    \"allow\": [\n      \"Bash(gh issue:*)\"\n    ]\n  }\n}\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/1-bug_report.yaml",
    "chars": 1929,
    "preview": "name: Bug report / 故障报告\ndescription: Please report any vulnerabilities you discover during use to us / 请向我们汇报您在使用过程中发现的漏"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/2-new-proposal.yaml",
    "chars": 1539,
    "preview": "name: New Proposal / 提出建议\ndescription: Please provide us with your valuable suggestions / 请向我们提出宝贵的建议\ntitle: \"[建议] \"\nbod"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/3-others.md",
    "chars": 88,
    "preview": "---\nname: Others / 其他事项\nabout: For other issues, use this template / 不能归类为上述事项,请用此模版\n---"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 27,
    "preview": "blank_issues_enabled: false"
  },
  {
    "path": ".github/workflows/notify-preview-deploy.yml",
    "chars": 1409,
    "preview": "# 监听 PR 事件,通知下游仓库触发预览部署\nname: PR 预览部署\n\non:\n  pull_request_target:\n    types: [opened, synchronize, reopened]\n\n\npermissio"
  },
  {
    "path": ".gitignore",
    "chars": 36,
    "preview": "web.config\n.vscode\n.idea\n\n.DS_Store\n"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 1255,
    "preview": "# 行为准则\n\n>[!NOTE]\n>简而言之:用户均应当秉持“与人为善、文明和谐”的原则。\n\nWin12 网页版项目社区讲求文明,用户均应当秉持与人为善、开放包容、求同存异、文明和谐、共同进步的原则。\n\n在社区讨论中,请对其他用户展现开放、"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 1968,
    "preview": "# 贡献指南\n我们鼓励每个人为Windows 12网页版贡献内容。\n\n若您想贡献本仓库,那您必须仔细阅读本指南的所有内容。您还应当注意本指南中**加粗的文字**和[开发规范](#开发规范)章节的内容。\n\n本仓库仍有很多问题待解决,Issue"
  },
  {
    "path": "LICENSE",
    "chars": 14197,
    "preview": "Eclipse Public License - v 2.0\n\n    THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE\n    PUBLIC LICE"
  },
  {
    "path": "README.md",
    "chars": 4685,
    "preview": "<p align=\"center\">\n    <img src=\"./icon/windows12.svg\" width=\"100\" height=\"100\">\n</p>\n<h1 align=\"center\">Windows 12 网页版<"
  },
  {
    "path": "apps/LICENSE",
    "chars": 20135,
    "preview": "Attribution-ShareAlike 4.0 International\n\n=======================================================================\n\nCreat"
  },
  {
    "path": "apps/NOTICE.md",
    "chars": 544,
    "preview": "# 非“自由版权”文件列表\n>[!CAUTION]\n>本列表内所列文件受著作权保护!相关文件属合理使用范畴。<br>本列表内所列文件可能含有受商标法或其他类似法律、法规保护的内容。\n\n| 文件名称 | 备注| \n| --- | --- |\n"
  },
  {
    "path": "apps/style/about.css",
    "chars": 3972,
    "preview": "#win-about {\n    display: flex;\n}\n\n#win-setting>.menu>list>a  {\n    padding: 5px 10px 5px 20px;\n    font-size: 15px;\n   "
  },
  {
    "path": "apps/style/bios.css",
    "chars": 2384,
    "preview": "@font-face {\n    font-family: 'dos';\n    src: url(../../fonts/dos.ttf);\n}\n\nbody {\n    background-color: #aaaaaa;\n}\n\nhtml"
  },
  {
    "path": "apps/style/calc.css",
    "chars": 2031,
    "preview": "@keyframes shine {\n    0% {\n        border-color: #111;\n    }\n    49% {\n        border-color: #111;\n    }\n    51% {\n    "
  },
  {
    "path": "apps/style/camera.css",
    "chars": 1111,
    "preview": ".camera-notice {\n    width: 300px !important;\n    height: 400px !important;\n}\n\n#win-camera {\n    position: relative;\n}\n\n"
  },
  {
    "path": "apps/style/code-editor.css",
    "chars": 394,
    "preview": "#win-code-editor {\n    display: flex;\n    flex-direction: column;\n    min-height: 0;\n    user-select: all;\n}\n\n#win-code-"
  },
  {
    "path": "apps/style/copilot.css",
    "chars": 2831,
    "preview": "#copilot{\n    position: fixed;\n    right: -410px;\n    background-color: var(--bg70);\n    /* box-shadow: 1px 2px 25px var"
  },
  {
    "path": "apps/style/defender.css",
    "chars": 17114,
    "preview": "#win-defender icon {\n    font-family: SettingsIcons;\n    font-size: 20px;\n    margin: 0px 20px 0 5px;\n    background-ima"
  },
  {
    "path": "apps/style/edge.css",
    "chars": 1935,
    "preview": ".window.edge.max>#win-edge {\n    padding-bottom: 55px;\n}\n\n#win-edge {\n    display: flex;\n    flex-direction: column;\n   "
  },
  {
    "path": "apps/style/explorer.css",
    "chars": 6632,
    "preview": ".window.explorer>.titbar>.tabs>.tab>p>img {\n    width: 25px;\n    height: 25px;\n    margin-right: 5px;\n}\n\n.window.explore"
  },
  {
    "path": "apps/style/imgviewer.css",
    "chars": 257,
    "preview": "#win-imgviewer {\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    background: #1e1e1e;\n    o"
  },
  {
    "path": "apps/style/login.css",
    "chars": 2604,
    "preview": "#loginback {\n    width: 100%;\n    height: 100%;\n    display: flex;\n    justify-content: center;\n    align-items: center;"
  },
  {
    "path": "apps/style/mediaplayer.css",
    "chars": 353,
    "preview": "#win-mediaplayer {\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    background: #0e0e0e;\n   "
  },
  {
    "path": "apps/style/msstore.css",
    "chars": 5074,
    "preview": "@font-face {\n    font-family: StoreIcons;\n    src: url(\"../icons/msstore/icons.ttf\");\n}\n/* I love CSS! */\n#win-msstore {"
  },
  {
    "path": "apps/style/notepad.css",
    "chars": 5388,
    "preview": "#win-notepad{\n    overflow: hidden;\n}\n\n#win-notepad>.tool{\n    width: 100%;\n    height: 35px;\n    padding-top: 5px;\n    "
  },
  {
    "path": "apps/style/pythonEditor.css",
    "chars": 1892,
    "preview": "#win-pythonEditor *::-webkit-scrollbar {\n    background-color: #FFFFFF10;\n}\n\n::-webkit-scrollbar:hover {\n    background-"
  },
  {
    "path": "apps/style/recognition.css",
    "chars": 4798,
    "preview": ".rainbow-container-main {\n    font-size: 11vmin;\n    display: flex;\n  }\n  .draggable {\n    width: 100px;\n    height: 30p"
  },
  {
    "path": "apps/style/run.css",
    "chars": 621,
    "preview": "#win-run {\n    display: flex !important;\n    flex-direction: column;\n}\n\n#win-run>.top {\n    display: flex;\n    padding: "
  },
  {
    "path": "apps/style/setting.css",
    "chars": 9638,
    "preview": "@font-face {\n    font-family: SettingsIcons;\n    src: url(../icons/setting/icons.woff2) format(\"woff2\")\n}\n\n#win-setting>"
  },
  {
    "path": "apps/style/taskmgr.css",
    "chars": 11555,
    "preview": "@font-face {\n    font-family: t-icon;\n    src: url('../icons/taskmgr/icons.ttf');\n}\n\n.t-icon {\n    font-family: t-icon;\n"
  },
  {
    "path": "apps/style/terminal.css",
    "chars": 1445,
    "preview": ".window.terminal-apps {\n    --text: #ddd;\n    --bg: #000000;\n    --bg50: #00000060;\n    --bg70: radial-gradient(rgba(26,"
  },
  {
    "path": "apps/style/whiteboard.css",
    "chars": 1420,
    "preview": "#win-whiteboard>canvas {\n    background-color: #ffffff88;\n}\n\n:root.dark #win-whiteboard>canvas {\n    background-color: #"
  },
  {
    "path": "apps/style/word.css",
    "chars": 5189,
    "preview": "@font-face {\n    font-family: StoreIcons;\n    src: url(\"../icons/msstore/icons.ttf\");\n}\n\n#win-word {\n    display: flex;\n"
  },
  {
    "path": "base.css",
    "chars": 1950,
    "preview": "body {\n    margin: 0;\n    font-family: system-ui, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans"
  },
  {
    "path": "bios.html",
    "chars": 5666,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-widt"
  },
  {
    "path": "bluescreen.html",
    "chars": 15121,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\" style=\"height: 100%;\">\n\n<head>\n    <meta charset=\"UTF-8\">\n    <meta http-equiv=\"X-UA-Com"
  },
  {
    "path": "boot.html",
    "chars": 1805,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <title>Windows 12 Web Version</title> <!-- 优化:更具描"
  },
  {
    "path": "bootstrap-icons.css",
    "chars": 77396,
    "preview": "@font-face{font-display:block;font-family:\"bootstrap-icons\";src:url(\"./fonts/bootstrap-icons.woff2?8d200481aa7f02a2d63a3"
  },
  {
    "path": "changelog.md",
    "chars": 18761,
    "preview": "# 更新记录\n## v1.0.0~v7.4.2\n>[!NOTE]\n> *v7.4.2之后的更新记录请前往“关于 Windows 12 网页版”应用内查看*\n\n\n<details><summary><span>v7.4.2</span> AI"
  },
  {
    "path": "data/disconnected.html",
    "chars": 2163,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width"
  },
  {
    "path": "data/disconnected_dark.html",
    "chars": 5442,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width"
  },
  {
    "path": "data/tasks.js",
    "chars": 2924,
    "preview": "let taskmgrTasks = [\n    {\n        name: '任务管理器',\n        icon: 'icon/taskmgr.png',\n        link: 'taskmgr'\n    },\n    {"
  },
  {
    "path": "desktop.css",
    "chars": 52633,
    "preview": "@import \"./bootstrap-icons.css\";\n@import \"./base.css\";\n\n/* 注:应用样式请在 /apps/style 中设置,并在 desktop.html 开头引用 */\n\n\n/* 通用颜色配置,"
  },
  {
    "path": "desktop.html",
    "chars": 186288,
    "preview": "<!-- Windows 12 网页版是一个开放源项目,\n\t希望让用户在网络上预先体验 Windows 12,\n\t内容可能与 Windows 12 正式版本不一致。\n\t使用标准网络技术,例如 HTML、CSS 和 JavaScript,\n\t"
  },
  {
    "path": "desktop.js",
    "chars": 100259,
    "preview": "'use strict';\n\n/*\n\nWindows 12 网页版\n    GitHub: tjy-gitnub/win12\n\n*/\n\n/********** 禁止格式化此文档! **********/\n\nconsole.log('%cWi"
  },
  {
    "path": "fonts/LICENSE",
    "chars": 20135,
    "preview": "Attribution-ShareAlike 4.0 International\n\n=======================================================================\n\nCreat"
  },
  {
    "path": "games/minesweeper.html",
    "chars": 14141,
    "preview": "<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-wi"
  },
  {
    "path": "icon/LICENSE",
    "chars": 20135,
    "preview": "Attribution-ShareAlike 4.0 International\n\n=======================================================================\n\nCreat"
  },
  {
    "path": "icon/NOTICE.md",
    "chars": 437,
    "preview": "# 非“自由版权”文件列表\n>[!CAUTION]\n>本列表内所列文件受著作权保护!相关文件属合理使用范畴。<br>本列表内所列文件可能含有受商标法或其他类似法律、法规保护的内容。\n\n| 文件名称 | 备注| \n| --- | --- |\n"
  },
  {
    "path": "img/LICENSE",
    "chars": 20135,
    "preview": "Attribution-ShareAlike 4.0 International\n\n=======================================================================\n\nCreat"
  },
  {
    "path": "img/NOTICE.md",
    "chars": 251,
    "preview": "# 非“自由版权”文件列表\n>[!CAUTION]\n>本列表内所列文件受著作权保护!相关文件属合理使用范畴。<br>本列表内所列文件可能含有受商标法或其他类似法律、法规保护的内容。\n\n| 文件名称 | 备注| \n| --- | --- |\n"
  },
  {
    "path": "index.html",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "lang/README_trans.md",
    "chars": 1666,
    "preview": "# trans.py 使用说明\n## 简介 / Introduction\n这是一个简单的交互式标注工具,用来给 HTML 标签插入 `data-i18n` 属性,并把翻译键值写入属性文件(`.properties`)。\n\nThis is a"
  },
  {
    "path": "lang/lang.properties",
    "chars": 106,
    "preview": "# Base language file for jQuery i18n properties\n# This file is intentionally minimal to prevent 404 errors"
  },
  {
    "path": "lang/lang_en.properties",
    "chars": 13120,
    "preview": "updating=Updating\ncover-hp=Landscape for the best experience\nlogin=Login\nwelcome=Welcome\nstmenu-avlb=Available\nstmenu-we"
  },
  {
    "path": "lang/lang_zh.properties",
    "chars": 106,
    "preview": "# Base language file for jQuery i18n properties\n# This file is intentionally minimal to prevent 404 errors"
  },
  {
    "path": "lang/lang_zh_CN.properties",
    "chars": 7407,
    "preview": "updating=休对故人思故国,且将新火试新茶<br>正在更新\ncover-hp=横屏以获得最佳体验\nlogin=登录\nwelcome=欢迎\nstmenu-avlb=可用\nstmenu-webapp=Web 应用\nbilibili.nam"
  },
  {
    "path": "lang/lang_zh_TW.properties",
    "chars": 8165,
    "preview": "updating=休對故人思故國,且將新火試新茶<br />正在更新\ncover-hp=請轉為橫向檢視以獲得最佳體驗\nlogin=登入\nwelcome=歡迎\nstmenu-avlb=可用\nstmenu-webapp=Web 應用程式\nbil"
  },
  {
    "path": "lang/readme.md",
    "chars": 1983,
    "preview": "# 翻译贡献指南\n开始翻译前,**务必[联系我们](https://teams.live.com/l/invite/FEA0yrNkE_bAn-ddwI),并征得同意**,以了解是否还有其他人正在翻译,避免重复劳动和合并冲突。<br>\nBe"
  },
  {
    "path": "lang/trans.py",
    "chars": 5602,
    "preview": " # Windows 12 网页版是一个开放源项目,希望让用户在网络上预先体验 Windows 12.\n # @author tangyuan0821 <tangyuan0821@email.cn>  tjy-gitnub <starry-"
  },
  {
    "path": "mainpage.html",
    "chars": 3693,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=e"
  },
  {
    "path": "media/LICENSE",
    "chars": 20135,
    "preview": "Attribution-ShareAlike 4.0 International\n\n=======================================================================\n\nCreat"
  },
  {
    "path": "module/apps.js",
    "chars": 121519,
    "preview": "// 应用功能\nlet apps = {\n    setting: {\n        init: () => {\n            $('#win-setting>.menu>list>a.home')[0].click();\n  "
  },
  {
    "path": "module/tab.css",
    "chars": 2816,
    "preview": ".window.tabs>.titbar>.tabs {\n    display: flex;\n    flex-grow: 1 !important;\n    height: calc(100% - 2px);\n    padding: "
  },
  {
    "path": "module/tab.js",
    "chars": 4860,
    "preview": "let m_tab={\n    newtab: (appn,n) => {\n        app=apps[appn];\n        app.tabs.push([app.len++, n]);\n        m_tab.setta"
  },
  {
    "path": "module/widget.css",
    "chars": 6183,
    "preview": "@keyframes shine {\n    0% {\n        border-color: #111;\n    }\n    49% {\n        border-color: #111;\n    }\n    51% {\n    "
  },
  {
    "path": "module/widget.js",
    "chars": 14454,
    "preview": "// 小组件功能\n\nlet widgets = {\n    widgets: {\n        add: (arg) => {\n            if ($(`.wg.${arg}.menu,.wg.${arg}.toolbar,."
  },
  {
    "path": "module/window.js",
    "chars": 18296,
    "preview": "// 窗口操作模块\n\n/***** 项目一级保护代码 *****\n 未经允许,严禁擅改,否则可致灾难性错误 */\nfunction showwin(name) {\n    $('.window.' + name).addClass('sho"
  },
  {
    "path": "pwa/manifest.json",
    "chars": 294,
    "preview": "{\n  \"name\": \"Windows 12\",\n  \"short_name\": \"Windows 12\",\n  \"display\": \"standalone\",\n  \"start_url\": \"/win12/boot.html\",\n  "
  },
  {
    "path": "readme/README_en_us.md",
    "chars": 7621,
    "preview": "<p align=\"center\">\n    <img src=\"./icon/windows12.svg\" width=\"100\" height=\"100\">\n</p>\n<h1 align=\"center\">Windows12 Onlin"
  },
  {
    "path": "readme/README_fr_fr.md",
    "chars": 8323,
    "preview": "<p align=\"center\">\n    <img src=\"./icon/windows12.svg\" width=\"100\" height=\"100\">\n</p>\n<h1 align=\"center\">Windows 12 vers"
  },
  {
    "path": "readme/README_zh_tw.md",
    "chars": 4176,
    "preview": "<p align=\"center\">\n    <img src=\"./icon/windows12.svg\" width=\"100\" height=\"100\">\n</p>\n<h1 align=\"center\">Windows 12 網頁版<"
  },
  {
    "path": "reload.html",
    "chars": 3037,
    "preview": "<!DOCTYPE html>\n<html lang=\"zh\"> <!-- 优化:添加 lang 属性以指定页面语言为中文 -->\n<head>\n    <meta charset=\"UTF-8\"> <!-- 优化:指定字符集为UTF-8 "
  },
  {
    "path": "robots.txt",
    "chars": 490,
    "preview": "User-agent: *\n\n# 若想要让搜索引擎爬取以下目录,请注释掉相应的索引规则\n\n# 外部数据文件:不允许搜索引擎爬取外部数据文件,以保护敏感数据\nDisallow: /data/ # 阻止搜索引擎访问外部数据文件\n\n# 应用程序:"
  },
  {
    "path": "scripts/AI Copilot service/README.md",
    "chars": 435,
    "preview": "# AI Copilot 介绍\n本AI由云智API提供支持,文档来自 github@tangyuan0821\n\n原文档由github@NB-Group提供,可查看其在互联网档案馆的[存档](https://web.archive.org/w"
  },
  {
    "path": "scripts/Lunar.js",
    "chars": 1879,
    "preview": "//农历获取实现 By @stxttkx\n// 由 lingbopro 改良\n\nlet lunarCache = null;\nlet lunarCachePromise = null;\nasync function getLunar() {"
  },
  {
    "path": "scripts/bios_kernel.js",
    "chars": 7598,
    "preview": "function addZero(i) {\n    return i < 10 ? `0${i}` : i;\n}\n\nfunction timeChange() {\n    const d = new Date();\n    $('#time"
  },
  {
    "path": "scripts/boot_kernel.js",
    "chars": 939,
    "preview": "function setProgress(n) {\n    $('#load').css('width', `${(400 / 20 * n)}px`);\n    $('#back').css('width', `${(400 / 20 *"
  },
  {
    "path": "scripts/calculator_kernel.js",
    "chars": 3380,
    "preview": "class Calculator {\n    constructor(input, container) {\n        this.elt = input;\n        this.num1 = null;\n        this."
  },
  {
    "path": "scripts/jquery.i18n.properties.js",
    "chars": 21387,
    "preview": "/******************************************************************************\n * jquery.i18n.properties\n *\n * Dual lic"
  },
  {
    "path": "scripts/news.js",
    "chars": 5869,
    "preview": "/**\n * @author lingbopro\n * 在线新闻功能\n */\n\nconst wait = (duration) => new Promise((resolve) => setTimeout(resolve, duration"
  },
  {
    "path": "scripts/setting_getTime.js",
    "chars": 831,
    "preview": "//设置页面时间获取逻辑  @Junchen Yi  2023-9-17\n\n// 抱歉,但这确实是多余的 qwq from stsc\n\n\n// // 获取具有class=\"settingTime\"的元素\n// const settingTi"
  },
  {
    "path": "scripts/utils.js",
    "chars": 96,
    "preview": "HTMLElement.prototype.$$ = function (selector) {\n    return this.querySelectorAll(selector);\n};\n"
  },
  {
    "path": "shutdown.html",
    "chars": 3290,
    "preview": "<!DOCTYPE html>\n<html lang=\"zh\"> <!-- 优化:添加 lang 属性以指定页面语言 -->\n<head>\n    <meta charset=\"UTF-8\"> <!-- 优化:指定字符集为UTF-8 -->"
  },
  {
    "path": "sw.js",
    "chars": 4480,
    "preview": "let dymanic = [\n  'api.github.com',\n  'tjy-gitnub.github.io/win12-theme',\n  'win12server.freehk.svipss.top',\n  'assets.m"
  }
]

About this extraction

This page contains the full source code of the tjy-gitnub/win12 GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 87 files (963.3 KB), approximately 302.1k tokens, and a symbol index with 112 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!