Showing preview only (1,441K chars total). Download the full file or copy to clipboard to get everything.
Repository: adams549659584/go-proxy-bingai
Branch: master
Commit: 76d44c7d0abe
Files: 95
Total size: 1.4 MB
Directory structure:
gitextract_29oud4j_/
├── .github/
│ └── workflows/
│ └── build.yml
├── .gitignore
├── .vscode/
│ ├── extensions.json
│ └── launch.json
├── LICENSE
├── README.md
├── Taskfile.yaml
├── api/
│ ├── helper/
│ │ └── helper.go
│ ├── index.go
│ ├── sydney.go
│ ├── sys-config.go
│ └── web.go
├── cloudflare/
│ ├── index.html
│ └── worker.js
├── common/
│ ├── env.go
│ ├── ip.go
│ └── proxy.go
├── docker/
│ ├── Dockerfile
│ └── docker-compose.yml
├── frontend/
│ ├── .eslintrc.cjs
│ ├── .gitignore
│ ├── .prettierrc.config.js
│ ├── .vscode/
│ │ └── extensions.json
│ ├── README.md
│ ├── index.html
│ ├── package.json
│ ├── postcss.config.js
│ ├── public/
│ │ ├── compose.html
│ │ ├── data/
│ │ │ └── prompts/
│ │ │ ├── prompts-zh-TW.json
│ │ │ ├── prompts-zh.json
│ │ │ └── prompts.csv
│ │ └── js/
│ │ └── bing/
│ │ └── chat/
│ │ ├── amd.js
│ │ ├── config.js
│ │ ├── core.js
│ │ ├── global.js
│ │ └── lib.js
│ ├── src/
│ │ ├── App.vue
│ │ ├── api/
│ │ │ ├── model/
│ │ │ │ ├── ApiResult.ts
│ │ │ │ └── sysconf/
│ │ │ │ └── SysConfig.ts
│ │ │ └── sysconf.ts
│ │ ├── assets/
│ │ │ └── css/
│ │ │ ├── base.css
│ │ │ ├── conversation.css
│ │ │ └── main.css
│ │ ├── components/
│ │ │ ├── ChatNav/
│ │ │ │ ├── ChatNav.vue
│ │ │ │ └── ChatNavItem.vue
│ │ │ ├── ChatPromptStore/
│ │ │ │ ├── ChatPromptItem.vue
│ │ │ │ └── ChatPromptStore.vue
│ │ │ ├── ChatServiceSelect/
│ │ │ │ └── ChatServiceSelect.vue
│ │ │ ├── CreateImage/
│ │ │ │ └── CreateImage.vue
│ │ │ ├── LoadingSpinner/
│ │ │ │ └── LoadingSpinner.vue
│ │ │ └── ReloadPWA/
│ │ │ └── ReloadPWA.vue
│ │ ├── main.ts
│ │ ├── router/
│ │ │ └── index.ts
│ │ ├── stores/
│ │ │ ├── index.ts
│ │ │ └── modules/
│ │ │ ├── chat/
│ │ │ │ └── index.ts
│ │ │ ├── prompt/
│ │ │ │ └── index.ts
│ │ │ └── user/
│ │ │ └── index.ts
│ │ ├── sw.ts
│ │ ├── utils/
│ │ │ ├── cookies.ts
│ │ │ └── utils.ts
│ │ └── views/
│ │ └── chat/
│ │ ├── components/
│ │ │ └── Chat/
│ │ │ ├── Chat.vue
│ │ │ └── ChatPromptItem.vue
│ │ └── index.vue
│ ├── tailwind.config.js
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ ├── tsconfig.node.json
│ ├── types/
│ │ ├── bing/
│ │ │ └── index.d.ts
│ │ ├── env.d.ts
│ │ ├── global.d.ts
│ │ └── vue3-virtual-scroll-list.d.ts
│ └── vite.config.ts
├── go.mod
├── go.sum
├── main.go
├── render.yaml
├── vercel.json
└── web/
├── assets/
│ ├── index-1dc749ba.css
│ ├── index-29dab197.css
│ ├── index-3a8b3b00.js
│ └── index-63d32cbb.js
├── compose.html
├── data/
│ └── prompts/
│ ├── prompts-zh-TW.json
│ ├── prompts-zh.json
│ └── prompts.csv
├── index.html
├── js/
│ └── bing/
│ └── chat/
│ ├── amd.js
│ ├── config.js
│ ├── core.js
│ ├── global.js
│ └── lib.js
├── manifest.webmanifest
├── registerSW.js
├── sw.js
└── web.go
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/workflows/build.yml
================================================
name: Build Go-Proxy-BingAI
on:
push:
tags:
- v*
jobs:
release:
runs-on: ubuntu-latest
outputs:
upload_url: ${{ steps.create_release.outputs.upload_url }}
steps:
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: ${{ github.ref }}
draft: false
prerelease: false
amd64build:
name: build amd64 version
needs: release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Go
uses: actions/setup-go@v4
- name: build linux amd64 version
run: |
go build -ldflags="-s -w" -tags netgo -trimpath -o go-proxy-bingai main.go
- name: package linux amd64
run: tar -zcvf go-proxy-bingai-linux-amd64.tar.gz go-proxy-bingai
- name: upload linux amd64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
with:
upload_url: ${{ needs.release.outputs.upload_url }}
asset_path: go-proxy-bingai-linux-amd64.tar.gz
asset_name: go-proxy-bingai-linux-amd64.tar.gz
asset_content_type: application/gzip
- name: build windows amd64 version
run: |
GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -tags netgo -trimpath -o go-proxy-bingai.exe main.go
- name: package windows amd64
run: tar -zcvf go-proxy-bingai-windows-amd64.tar.gz go-proxy-bingai.exe
- name: upload windows amd64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
with:
upload_url: ${{ needs.release.outputs.upload_url }}
asset_path: go-proxy-bingai-windows-amd64.tar.gz
asset_name: go-proxy-bingai-windows-amd64.tar.gz
asset_content_type: application/gzip
arm64build:
name: build arm64 version
needs: release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Go
uses: actions/setup-go@v4
- name: build linux arm64 version
run: |
go build -ldflags="-s -w" -tags netgo -trimpath -o go-proxy-bingai main.go
- name: package linux arm64
run: tar -zcvf go-proxy-bingai-linux-arm64.tar.gz go-proxy-bingai
- name: upload linux arm64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
with:
upload_url: ${{ needs.release.outputs.upload_url }}
asset_path: go-proxy-bingai-linux-arm64.tar.gz
asset_name: go-proxy-bingai-linux-arm64.tar.gz
asset_content_type: application/gzip
- name: build windows amd64 version
run: |
GOOS=windows GOARCH=arm64 go build -ldflags="-s -w" -tags netgo -trimpath -o go-proxy-bingai.exe main.go
- name: package windows arm64
run: tar -zcvf go-proxy-bingai-windows-arm64.tar.gz go-proxy-bingai.exe
- name: upload windows arm64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
with:
upload_url: ${{ needs.release.outputs.upload_url }}
asset_path: go-proxy-bingai-windows-arm64.tar.gz
asset_name: go-proxy-bingai-windows-arm64.tar.gz
asset_content_type: application/gzip
docker-build:
runs-on: ubuntu-latest
permissions:
packages: write
contents: read
steps:
- uses: actions/checkout@v3
- name: Setup timezone
uses: zcong1993/setup-timezone@master
with:
timezone: Asia/Shanghai
- name: Login to GHCR
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GH_TOKEN }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v4
with:
platforms: linux/amd64,linux/arm64
context: .
file: ./docker/Dockerfile
push: true
tags: |
ghcr.io/${{ github.repository }}:${{ github.ref_name }}
ghcr.io/${{ github.repository }}:latest
docker.io/${{ github.repository }}:${{ github.ref_name }}
docker.io/${{ github.repository }}:latest
cache-from: type=registry,ref=${{ github.repository }}:cache
cache-to: type=registry,ref=${{ github.repository }}:cache,mode=max
================================================
FILE: .gitignore
================================================
# Editor directories and files
.vscode/*
!.vscode/extensions.json
!.vscode/launch.json
.idea
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
.DS_Store
release
================================================
FILE: .vscode/extensions.json
================================================
{
"recommendations": [
"golang.go"
]
}
================================================
FILE: .vscode/launch.json
================================================
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Launch Package",
"type": "go",
"request": "launch",
"mode": "auto",
"program": "${workspaceFolder}",
"env": {
"PORT": "8899",
"Go_Proxy_BingAI_Debug": "true",
"Go_Proxy_BingAI_SOCKS_URL": "192.168.0.88:1070",
// "Go_Proxy_BingAI_SOCKS_USER": "xxx",
// "Go_Proxy_BingAI_SOCKS_PWD": "xxx",
// "Go_Proxy_BingAI_USER_TOKEN_1": "xxx",
// "Go_Proxy_BingAI_USER_TOKEN_2": "xxx"
// "Go_Proxy_BingAI_AUTH_KEY": "xxx",
}
}
]
}
================================================
FILE: LICENSE
================================================
MIT License Copyright (c) 2023 adams549659584
Permission is hereby granted, free
of charge, to any person obtaining a copy of this software and associated
documentation files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use, copy, modify, merge,
publish, distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to the
following conditions:
The above copyright notice and this permission notice
(including the next paragraph) shall be included in all copies or substantial
portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
================================================
FILE: README.md
================================================
# go-proxy-bing
基于微软 New Bing 用 Vue3 和 Go 简单定制的微软 New Bing 演示站点,拥有一致的 UI 体验,支持 ChatGPT 提示词,国内可用,基本兼容微软 Bing AI 所有功能,无需登录即可畅聊。
⭐ Bing 官方聊天服务器(相对较快和稳定,推荐)不可用时,可参考以下方案
> 1. 可用 ModHeader 添加 X-Forwarded-For 请求头,对应 URL 是 wss://sydney.bing.com/sydney/ChatHub,具体可参考 [issues #71](https://github.com/adams549659584/go-proxy-bingai/issues/71) 及 https://zhuanlan.zhihu.com/p/606655303
> 2. 本地部署再部署一份作为聊天中转服务,或下载 Release 直接运行,自定义聊天服务器中填入 http://localhost:8080,并选择。
⭐ 聊天服务器 (暂时默认 Cloudflare Workers,请求数每天限额 100,000,撑不了多久 ,推荐自行部署,参考下面 [部署聊天服务器](#部署聊天服务器) ) 可在右上角 设置 => 服务选择 中切换
⭐ 国内可用 (部署服务器需要直连 www.bing.com 不重定向 CN ,可配置 socks 连接)
⭐ 支持现有开源 ChatGPT 提示词库
⭐ 需要画图等高级功能时(需选更有创造力模式或右上角 设置 => 图像创建 ),可登录微软账号设置用户 Cookie 进行体验
⭐ 遇到一切问题,先点左下角  试试,不行使用刷新大法(Shift + F5 或 Ctrl + Shift + R 或 右上角设置中的一键重置),最终大招就 清理浏览器缓存 及 Cookie ,比如(24 小时限制、未登录提示等等)
- [go-proxy-bing](#go-proxy-bing)
- [网页展示](#网页展示)
- [侧边栏](#侧边栏)
- [演示站点](#演示站点)
- [设置用户](#设置用户)
- [环境变量](#环境变量)
- [部署](#部署)
- [Docker](#Docker)
- [Release](#Release)
- [Railway](#Railway)
- [Vercel](#Vercel)
- [Render](#Render)
- [部署聊天服务器](#部署聊天服务器)
- [TODO](#TODO)
## 网页展示
- 电脑端未登录状态

- 电脑端登录




- 电脑端画图
> ⭐ 需登录,并选择 更有创造力 对话模式

- 手机端未登录状态

## 侧边栏
- 在 Edge 浏览器可把聊天和撰写分别添加侧边栏



## 演示站点
### 甲骨文小鸡仔,轻虐
- https://bing.vcanbb.top
### Railway 搭建
- https://bing-railway.vcanbb.top
- https://go-proxy-bingai-production.up.railway.app
### Vercel 搭建
- https://bing-vercel.vcanbb.top
- https://go-proxy-bingai-adams549659584.vercel.app
### Render 搭建
- https://bing-render.vcanbb.top
- https://go-proxy-bingai.onrender.com
## 设置用户
- 访问 https://www.bing.com/ 或 https://cn.bing.com/ ,登录
- F12 或 Ctrl + Shift + I 打开控制台
- 拿到 Cookie 中 _U 的值 后,在网站设置 => 设置用户 中填入即可。

## 环境变量
```bash
# 运行端口 默认 8080 可选
PORT=8080
# Socks 环境变量 示例 可选
Go_Proxy_BingAI_SOCKS_URL=192.168.0.88:1070
# Socks 账号、密码 可选
Go_Proxy_BingAI_SOCKS_USER=xxx
Go_Proxy_BingAI_SOCKS_PWD=xxx
# 默认用户 Cookie 设置,可选,不推荐使用,固定前缀 Go_Proxy_BingAI_USER_TOKEN 可设置多个,未登录用户将随机使用,多人共用将很快触发图形验证,并很快达到该账号的24小时限制
Go_Proxy_BingAI_USER_TOKEN_1=xxx
Go_Proxy_BingAI_USER_TOKEN_2=xxx
Go_Proxy_BingAI_USER_TOKEN_3=xxx ...
# 简单授权认证密码,可选
Go_Proxy_BingAI_AUTH_KEY=xxx
```
## 部署
> ⭐ 需 https 域名 (自行配置 nginx 等) (前后端都有限制 只有在HTTPS的情况下,浏览器 Accept-Encoding 才会包含 br , localhost 除外)
> 支持 Linux (amd64 / arm64)、Windows (amd64 / arm64)
> 国内机器部署可配置 socks 环境变量
### Docker
> 参考 [Dockerfile](./docker/Dockerfile) 、[docker-compose.yml](./docker/docker-compose.yml)
- docker 示例
```bash
# 运行容器 监听8080 端口
docker run -d -p 8080:8080 --name go-proxy-bingai --restart=unless-stopped adams549659584/go-proxy-bingai
# 配置 socks 环境变量
docker run -e Go_Proxy_BingAI_SOCKS_URL=192.168.0.88:1070 -e Go_Proxy_BingAI_SOCKS_USER=xxx -e Go_Proxy_BingAI_SOCKS_PWD=xxx -d -p 8080:8080 --name go-proxy-bingai --restart=unless-stopped adams549659584/go-proxy-bingai
```
- docker compose 示例
```yaml
version: '3'
services:
go-proxy-bingai:
# 镜像名称
image: adams549659584/go-proxy-bingai
# 容器名称
container_name: go-proxy-bingai
# 自启动
restart: unless-stopped
ports:
- 8080:8080
# environment:
# - Go_Proxy_BingAI_SOCKS_URL=192.168.0.88:1070
# - Go_Proxy_BingAI_SOCKS_USER=xxx
# - Go_Proxy_BingAI_SOCKS_PWD=xxx
# - Go_Proxy_BingAI_USER_TOKEN_1=xxx
# - Go_Proxy_BingAI_USER_TOKEN_2=xxx
```
### Release
在 [GitHub Releases](https://github.com/adams549659584/go-proxy-bingai/releases) 下载适用于对应平台的压缩包,解压后可得到可执行文件 go-proxy-bingai,直接运行即可。
### Railway
> 主要配置 Dockerfile 路径 及 端口就可以
```bash
PORT=8080
RAILWAY_DOCKERFILE_PATH=docker/Dockerfile
```
一键部署,点这里 => [](https://railway.app/template/uIckWS?referralCode=BBs747)

自行使用 Railway 部署配置如下


### Vercel
> ⭐ Vercel 部署不支持 Websocket ,需选择 官方聊天服务器 或 Cloudflare
一键部署,点这里 => [](https://vercel.com/new/clone?repository-url=https://github.com/adams549659584/go-proxy-bingai&project-name=go-proxy-bingai&repository-name=go-proxy-bingai-vercel)


### Render
一键部署,点这里 => [](https://render.com/deploy?repo=https://github.com/adams549659584/go-proxy-bingai)


## 部署聊天服务器
> 核心代码 [worker.js](./cloudflare/worker.js)
> 具体部署 Cloudflare Workers 教程自行查询,大概如下
- [注册 Cloudflare 账号](https://dash.cloudflare.com/sign-up)
- 创建 Worker 服务,复制 [worker.js](./cloudflare/worker.js) 全部代码,粘贴至创建的服务中,保存并部署。
- 触发器 中自定义访问域名。
## TODO
- [x] 撰写
- [x] Vue3 重构
- [x] 提示词
- [x] 历史聊天
- [x] 导出消息到本地(Markdown、图片、PDF)
- [x] 简单访问权限控制
================================================
FILE: Taskfile.yaml
================================================
version: '3'
vars:
BUILD_VERSION:
sh: git describe --tags
BUILD_DATE:
sh: date "+%F %T"
COMMIT_ID:
sh: git rev-parse HEAD
tasks:
clean:
cmds:
- rm -rf frontend/node_modules
- rm -rf release
# extended globbing is not supported
# - rm -rf web/!(web.go)
- cp web/web.go web.go
- rm -rf web/*
- mv web.go web/web.go
build_web:
dir: frontend
cmds:
# 修订号,例如 0.0.1
- npm version patch
# - pnpm build
- pnpm install && pnpm build
build_web_minor:
dir: frontend
cmds:
# 次版本号,例如 0.1.0
- npm version minor
# - pnpm build
- pnpm install && pnpm build
build_web_major:
dir: frontend
cmds:
# 主版本号,例如 1.0.0
- npm version major
# - pnpm build
- pnpm install && pnpm build
build_tpl:
label: build-{{.TASK}}
cmds:
- |
GOOS={{.GOOS}} GOARCH={{.GOARCH}} GOARM={{.GOARM}} GOMIPS={{.GOMIPS}} GOAMD64={{.GOAMD64}} \
go build -tags netgo -trimpath -o release/go-proxy-bingai_{{.TASK}} -ldflags \
"-w -s -X 'main.version={{.BUILD_VERSION}}' -X 'main.buildDate={{.BUILD_DATE}}' -X 'main.commitID={{.COMMIT_ID}}'"
linux_386:
cmds:
- task: build_tpl
vars: {
TASK: "{{.TASK}}",
GOOS: linux,
GOARCH: 386
}
linux_amd64:
cmds:
- task: build_tpl
vars: {
TASK: "{{.TASK}}",
GOOS: linux,
GOARCH: amd64
}
linux_amd64_v2:
cmds:
- task: build_tpl
vars: {
TASK: "{{.TASK}}",
GOOS: linux,
GOARCH: amd64,
GOAMD64: v2
}
linux_amd64_v3:
cmds:
- task: build_tpl
vars: {
TASK: "{{.TASK}}",
GOOS: linux,
GOARCH: amd64,
GOAMD64: v3
}
linux_amd64_v4:
cmds:
- task: build_tpl
vars: {
TASK: "{{.TASK}}",
GOOS: linux,
GOARCH: amd64,
GOAMD64: v4
}
linux_armv5:
cmds:
- task: build_tpl
vars: {
TASK: "{{.TASK}}",
GOOS: linux,
GOARCH: arm,
GOARM: 5
}
linux_armv6:
cmds:
- task: build_tpl
vars: {
TASK: "{{.TASK}}",
GOOS: linux,
GOARCH: arm,
GOARM: 6
}
linux_armv7:
cmds:
- task: build_tpl
vars: {
TASK: "{{.TASK}}",
GOOS: linux,
GOARCH: arm,
GOARM: 7
}
linux_armv8:
cmds:
- task: build_tpl
vars: {
TASK: "{{.TASK}}",
GOOS: linux,
GOARCH: arm64
}
linux_mips_hardfloat:
cmds:
- task: build_tpl
vars: {
TASK: "{{.TASK}}",
GOOS: linux,
GOARCH: mips,
GOMIPS: hardfloat
}
linux_mipsle_softfloat:
cmds:
- task: build_tpl
vars: {
TASK: "{{.TASK}}",
GOOS: linux,
GOARCH: mipsle,
GOMIPS: softfloat
}
linux_mipsle_hardfloat:
cmds:
- task: build_tpl
vars: {
TASK: "{{.TASK}}",
GOOS: linux,
GOARCH: mipsle,
GOMIPS: hardfloat
}
linux_mips64:
cmds:
- task: build_tpl
vars: {
TASK: "{{.TASK}}",
GOOS: linux,
GOARCH: mips64
}
linux_mips64le:
cmds:
- task: build_tpl
vars: {
TASK: "{{.TASK}}",
GOOS: linux,
GOARCH: mips64le
}
windows_386.exe:
cmds:
- task: build_tpl
vars: {
TASK: "{{.TASK}}",
GOOS: windows,
GOARCH: 386
}
windows_amd64.exe:
cmds:
- task: build_tpl
vars: {
TASK: "{{.TASK}}",
GOOS: windows,
GOARCH: amd64
}
windows_amd64_v2.exe:
cmds:
- task: build_tpl
vars: {
TASK: "{{.TASK}}",
GOOS: windows,
GOARCH: amd64,
GOAMD64: v2
}
windows_amd64_v3.exe:
cmds:
- task: build_tpl
vars: {
TASK: "{{.TASK}}",
GOOS: windows,
GOARCH: amd64,
GOAMD64: v3
}
windows_amd64_v4.exe:
cmds:
- task: build_tpl
vars: {
TASK: "{{.TASK}}",
GOOS: windows,
GOARCH: amd64,
GOAMD64: v4
}
darwin_amd64:
cmds:
- task: build_tpl
vars: {
TASK: "{{.TASK}}",
GOOS: darwin,
GOARCH: amd64,
}
darwin_arm64:
cmds:
- task: build_tpl
vars: {
TASK: "{{.TASK}}",
GOOS: darwin,
GOARCH: arm64,
}
docker:
cmds:
- docker build -t adams549659584/go-proxy-bingai:{{.BUILD_VERSION}} -f docker/Dockerfile .
- docker tag adams549659584/go-proxy-bingai:{{.BUILD_VERSION}} adams549659584/go-proxy-bingai
default:
cmds:
- task: clean
- task: build_web
# - task: linux_386
- task: linux_amd64
# - task: linux_amd64_v2
# - task: linux_amd64_v3
# - task: linux_amd64_v4
# - task: linux_armv5
# - task: linux_armv6
# - task: linux_armv7
- task: linux_armv8
# - task: linux_mips_hardfloat
# - task: linux_mipsle_softfloat
# - task: linux_mipsle_hardfloat
# - task: linux_mips64
# - task: linux_mips64le
# - task: windows_386.exe
# - task: windows_amd64.exe
# - task: windows_amd64_v2.exe
# - task: windows_amd64_v3.exe
# - task: windows_amd64_v4.exe
# - task: darwin_amd64
# - task: darwin_arm64
release:
cmds:
- task: default
================================================
FILE: api/helper/helper.go
================================================
package helper
import (
"adams549659584/go-proxy-bingai/common"
"encoding/json"
"net/http"
)
type Response struct {
Code int `json:"code"`
Message string `json:"message"`
Data interface{} `json:"data"`
}
func CommonResult(w http.ResponseWriter, code int, msg string, data interface{}) error {
res := Response{
Code: code,
Message: msg,
Data: data,
}
w.Header().Set("Content-Type", "application/json")
err := json.NewEncoder(w).Encode(res)
if err != nil {
return err
}
return nil
}
func SuccessResult(w http.ResponseWriter, data interface{}) error {
return CommonResult(w, http.StatusOK, "success", data)
}
func ErrorResult(w http.ResponseWriter, code int, msg string) error {
return CommonResult(w, code, msg, nil)
}
func UnauthorizedResult(w http.ResponseWriter) error {
return ErrorResult(w, http.StatusUnauthorized, "unauthorized")
}
func CheckAuth(r *http.Request) bool {
isAuth := true
if len(common.AUTH_KEY) > 0 {
ckAuthKey, _ := r.Cookie(common.AUTH_KEY_COOKIE_NAME)
isAuth = ckAuthKey != nil && len(ckAuthKey.Value) > 0 && common.AUTH_KEY == ckAuthKey.Value
}
return isAuth
}
================================================
FILE: api/index.go
================================================
package api
import (
"adams549659584/go-proxy-bingai/api/helper"
"adams549659584/go-proxy-bingai/common"
"net/http"
"strings"
)
func Index(w http.ResponseWriter, r *http.Request) {
if r.URL.Path == "/" {
http.Redirect(w, r, common.PROXY_WEB_PAGE_PATH, http.StatusFound)
return
}
if strings.HasPrefix(r.URL.Path, "/turing") {
if !helper.CheckAuth(r) {
helper.UnauthorizedResult(w)
return
}
}
common.NewSingleHostReverseProxy(common.BING_URL).ServeHTTP(w, r)
}
================================================
FILE: api/sydney.go
================================================
package api
import (
"adams549659584/go-proxy-bingai/api/helper"
"adams549659584/go-proxy-bingai/common"
"net/http"
)
func Sydney(w http.ResponseWriter, r *http.Request) {
if !helper.CheckAuth(r) {
helper.UnauthorizedResult(w)
return
}
common.NewSingleHostReverseProxy(common.BING_SYDNEY_URL).ServeHTTP(w, r)
}
================================================
FILE: api/sys-config.go
================================================
package api
import (
"adams549659584/go-proxy-bingai/api/helper"
"adams549659584/go-proxy-bingai/common"
"net/http"
)
type SysConfig struct {
// 是否系统配置 cookie
IsSysCK bool `json:"isSysCK"`
// 是否已授权
IsAuth bool `json:"isAuth"`
}
func SysConf(w http.ResponseWriter, r *http.Request) {
isAuth := helper.CheckAuth(r)
conf := SysConfig{
IsSysCK: len(common.USER_TOKEN_LIST) > 0,
IsAuth: isAuth,
}
helper.SuccessResult(w, conf)
}
================================================
FILE: api/web.go
================================================
package api
import (
"adams549659584/go-proxy-bingai/api/helper"
"adams549659584/go-proxy-bingai/common"
"adams549659584/go-proxy-bingai/web"
"net/http"
)
func WebStatic(w http.ResponseWriter, r *http.Request) {
if _, ok := web.WEB_PATH_MAP[r.URL.Path]; ok || r.URL.Path == common.PROXY_WEB_PREFIX_PATH {
http.StripPrefix(common.PROXY_WEB_PREFIX_PATH, http.FileServer(web.GetWebFS())).ServeHTTP(w, r)
} else {
if !helper.CheckAuth(r) {
helper.UnauthorizedResult(w)
return
}
common.NewSingleHostReverseProxy(common.BING_URL).ServeHTTP(w, r)
}
}
================================================
FILE: cloudflare/index.html
================================================
<!doctype html>
<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="content-type" />
<link rel="icon" type="image/svg+xml" href="/github/frontend/public/img/logo.svg" />
<meta content="yes" name="apple-mobile-web-app-capable" />
<link rel="apple-touch-icon" href="/github/frontend/public/img/pwa/logo-192.png">
<meta name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, viewport-fit=cover" />
<meta name="referrer" content="origin-when-cross-origin" />
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
<title>BingAI - 聊天</title>
<script src="https://cdn.tailwindcss.com"></script>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-MM5J5X8QQC"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag () { dataLayer.push(arguments); }
gtag('js', new Date());
gtag('config', 'G-MM5J5X8QQC');
</script>
<!-- 百度统计 -->
<script>
var _hmt = _hmt || [];
(function () {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?299c614daa53fbcede70f2d22df0a31b";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
</head>
<body>
<div class="relative flex min-h-screen flex-col justify-center overflow-hidden bg-gray-50 py-6 px-4 sm:py-12">
<div class="absolute inset-0 bg-slate-100 bg-center [mask-image:linear-gradient(180deg,white,rgba(255,255,255,0))]">
</div>
<div
class="relative bg-white px-6 pb-8 pt-10 shadow-xl ring-1 ring-gray-900/5 sm:mx-auto sm:max-w-lg sm:rounded-lg sm:px-10 lg:max-w-3xl">
<div class="mx-auto max-w-3xl">
<div class="flex justify-center">
<img src="/github/frontend/public/img/logo.svg" class="h-24" alt="BingAI" />
</div>
<div class="mt-6 text-center text-3xl text-gray-600">聊天服务器已部署完成</div>
<div class="divide-y divide-gray-300/50">
<div class="space-y-6 py-8 text-base leading-7 text-gray-600">
<ul class="space-y-4">
<li class="flex items-center">
<svg class="h-6 w-6 flex-none fill-sky-100 stroke-sky-500 stroke-2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="11" />
<path d="m8 13 2.165 2.165a1 1 0 0 0 1.521-.126L16 9" fill="none" />
</svg>
<p class="ml-4">
在基于 go-proxy-bingai 搭建的站点中
<code class="text-sm font-bold text-sky-500">设置 => 服务选择</code>
添加此站点即可
</p>
</li>
<li class="flex items-center">
<svg class="h-6 w-6 flex-none fill-sky-100 stroke-sky-500 stroke-2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="11" />
<path d="m8 13 2.165 2.165a1 1 0 0 0 1.521-.126L16 9" fill="none" />
</svg>
<p class="ml-4">
如有疑问,请参考
<a href="https://github.com/adams549659584/go-proxy-bingai/issues/81" target="_blank"
class="text-sky-500 hover:text-sky-600">issues #81</a>
</p>
</li>
</ul>
</div>
<div class="pt-8 text-base font-semibold leading-7">
<p class="text-gray-600 overflow-hidden">开源地址:<a href="https://github.com/adams549659584/go-proxy-bingai"
target="_blank"
class="text-sky-500 hover:text-sky-600">https://github.com/adams549659584/go-proxy-bingai</a></p>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
================================================
FILE: cloudflare/worker.js
================================================
const SYDNEY_ORIGIN = 'https://sydney.bing.com';
const KEEP_REQ_HEADERS = [
'accept',
'accept-encoding',
'accept-language',
'connection',
'cookie',
'upgrade',
'user-agent',
'sec-websocket-extensions',
'sec-websocket-key',
'sec-websocket-version',
'x-request-id',
'content-length',
'content-type',
'access-control-request-headers',
'access-control-request-method',
];
const IP_RANGE = [
['3.2.50.0', '3.5.31.255'], //192,000
['3.12.0.0', '3.23.255.255'], //786,432
['3.30.0.0', '3.33.34.255'], //205,568
['3.40.0.0', '3.63.255.255'], //1,572,864
['3.80.0.0', '3.95.255.255'], //1,048,576
['3.100.0.0', '3.103.255.255'], //262,144
['3.116.0.0', '3.119.255.255'], //262,144
['3.128.0.0', '3.247.255.255'], //7,864,320
];
/**
* 随机整数 [min,max)
* @param {number} min
* @param {number} max
* @returns
*/
const getRandomInt = (min, max) => Math.floor(Math.random() * (max - min)) + min;
/**
* ip 转 int
* @param {string} ip
* @returns
*/
const ipToInt = (ip) => {
const ipArr = ip.split('.');
let result = 0;
result += +ipArr[0] << 24;
result += +ipArr[1] << 16;
result += +ipArr[2] << 8;
result += +ipArr[3];
return result;
};
/**
* int 转 ip
* @param {number} intIP
* @returns
*/
const intToIp = (intIP) => {
return `${(intIP >> 24) & 255}.${(intIP >> 16) & 255}.${(intIP >> 8) & 255}.${intIP & 255}`;
};
const getRandomIP = () => {
const randIndex = getRandomInt(0, IP_RANGE.length);
const startIp = IP_RANGE[randIndex][0];
const endIp = IP_RANGE[randIndex][1];
const startIPInt = ipToInt(startIp);
const endIPInt = ipToInt(endIp);
const randomInt = getRandomInt(startIPInt, endIPInt);
const randomIP = intToIp(randomInt);
return randomIP;
};
/**
* home
* @param {string} pathname
* @returns
*/
const home = async (pathname) => {
const baseUrl = 'https://raw.githubusercontent.com/adams549659584/go-proxy-bingai/master/';
let url;
// if (pathname.startsWith('/github/')) {
if (pathname.indexOf('/github/') === 0) {
url = pathname.replace('/github/', baseUrl);
} else {
url = baseUrl + 'cloudflare/index.html';
}
const res = await fetch(url);
const newRes = new Response(res.body, res);
if (pathname === '/') {
newRes.headers.delete('content-security-policy');
newRes.headers.set('content-type', 'text/html; charset=utf-8');
}
return newRes;
};
export default {
/**
* fetch
* @param {Request} request
* @param {*} env
* @param {*} ctx
* @returns
*/
async fetch(request, env, ctx) {
const currentUrl = new URL(request.url);
// if (currentUrl.pathname === '/' || currentUrl.pathname.startsWith('/github/')) {
if (currentUrl.pathname === '/' || currentUrl.pathname.indexOf('/github/') === 0) {
return home(currentUrl.pathname);
}
const targetUrl = new URL(SYDNEY_ORIGIN + currentUrl.pathname + currentUrl.search);
const newHeaders = new Headers();
request.headers.forEach((value, key) => {
// console.log(`old : ${key} : ${value}`);
if (KEEP_REQ_HEADERS.includes(key)) {
newHeaders.set(key, value);
}
});
newHeaders.set('host', targetUrl.host);
newHeaders.set('origin', targetUrl.origin);
newHeaders.set('referer', 'https://www.bing.com/search?q=Bing+AI');
const randIP = getRandomIP();
// console.log('randIP : ', randIP);
newHeaders.set('X-Forwarded-For', randIP);
const oldUA = request.headers.get('user-agent');
const isMobile = oldUA.includes('Mobile') || oldUA.includes('Android');
if (isMobile) {
newHeaders.set(
'user-agent',
'Mozilla/5.0 (iPhone; CPU iPhone OS 15_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.7 Mobile/15E148 Safari/605.1.15 BingSapphire/1.0.410427012'
);
} else {
newHeaders.set('user-agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.35');
}
// newHeaders.forEach((value, key) => console.log(`${key} : ${value}`));
const newReq = new Request(targetUrl, {
method: request.method,
headers: newHeaders,
body: request.body,
});
// console.log('request url : ', newReq.url);
const res = await fetch(newReq);
return res;
},
};
================================================
FILE: common/env.go
================================================
package common
import (
"os"
"strings"
)
var (
// is debug
IS_DEBUG_MODE bool
// socks
SOCKS_URL string
SOCKS_USER string
SOCKS_PWD string
// user token
USER_TOKEN_ENV_NAME_PREFIX = "Go_Proxy_BingAI_USER_TOKEN"
USER_TOKEN_LIST []string
// 访问权限密钥,可选
AUTH_KEY string
AUTH_KEY_COOKIE_NAME = "BingAI_Auth_Key"
)
func init() {
initEnv()
initUserToken()
}
func initEnv() {
// is debug
IS_DEBUG_MODE = os.Getenv("Go_Proxy_BingAI_Debug") != ""
// socks
SOCKS_URL = os.Getenv("Go_Proxy_BingAI_SOCKS_URL")
SOCKS_USER = os.Getenv("Go_Proxy_BingAI_SOCKS_USER")
SOCKS_PWD = os.Getenv("Go_Proxy_BingAI_SOCKS_PWD")
// auth
AUTH_KEY = os.Getenv("Go_Proxy_BingAI_AUTH_KEY")
}
func initUserToken() {
for _, env := range os.Environ() {
if strings.HasPrefix(env, USER_TOKEN_ENV_NAME_PREFIX) {
parts := strings.SplitN(env, "=", 2)
USER_TOKEN_LIST = append(USER_TOKEN_LIST, parts[1])
}
}
}
================================================
FILE: common/ip.go
================================================
package common
import (
"fmt"
"math/rand"
"net"
"time"
)
// 使用真实有效的美国ip
// https://lite.ip2location.com/united-states-of-america-ip-address-ranges
// https://cdn-lite.ip2location.com/datasets/US.json?_=1683336720620
//
// async function getIpRange() {
// const results = await fetch(`https://cdn-lite.ip2location.com/datasets/US.json?_=${Date.now()}`)
// .then((res) => res.json())
// .then((res) => {
// const limitCount = 10000;
// return res.data.filter((x) => parseInt(x[2].replace(/,/g,'')) >= limitCount).map((x) => `{"${x[0]}", "${x[1]}"}, //${x[2]}`);
// });
// console.log(`results : `,results);
// return results.join('\n');
// }
//
// copy(await getIpRange());
var IP_RANGE = [][]string{
{"3.2.50.0", "3.5.31.255"}, //192,000
{"3.5.74.0", "3.5.133.255"}, //15,360
{"3.12.0.0", "3.23.255.255"}, //786,432
{"3.30.0.0", "3.33.34.255"}, //205,568
{"3.33.36.0", "3.33.255.255"}, //56,320
{"3.40.0.0", "3.63.255.255"}, //1,572,864
{"3.80.0.0", "3.95.255.255"}, //1,048,576
{"3.100.0.0", "3.103.255.255"}, //262,144
{"3.116.0.0", "3.119.255.255"}, //262,144
{"3.128.0.0", "3.247.255.255"}, //7,864,320
{"4.0.0.0", "4.1.179.255"}, //111,616
{"4.1.181.0", "4.14.241.255"}, //867,584
{"4.15.21.0", "4.16.47.255"}, //72,448
{"4.16.55.0", "4.18.65.255"}, //133,888
{"4.18.68.0", "4.28.135.255"}, //672,768
{"4.28.139.0", "4.31.207.255"}, //214,272
{"4.31.209.0", "4.33.203.255"}, //129,792
{"4.33.234.0", "4.37.0.255"}, //202,496
{"4.37.2.0", "4.42.31.255"}, //335,360
{"4.42.35.0", "4.55.87.255"}, //865,536
{"4.55.95.0", "4.59.175.255"}, //282,880
{"4.59.179.0", "4.71.152.255"}, //779,776
{"4.71.154.0", "4.143.255.255"}, //4,744,704
{"4.148.0.0", "4.157.255.255"}, //655,360
{"4.184.0.0", "4.184.55.255"}, //14,336
{"4.198.160.0", "4.198.255.255"}, //24,576
{"4.203.96.0", "4.203.255.255"}, //40,960
{"4.227.0.0", "4.227.255.255"}, //65,536
{"4.232.200.0", "4.232.255.255"}, //14,336
{"4.236.0.0", "4.236.255.255"}, //65,536
{"4.242.0.0", "4.242.255.255"}, //65,536
{"4.246.0.0", "4.246.255.255"}, //65,536
{"4.248.128.0", "4.249.255.255"}, //98,304
{"4.255.0.0", "4.255.255.255"}, //65,536
{"5.78.0.0", "5.78.255.255"}, //65,536
{"5.153.23.0", "5.153.63.255"}, //10,496
{"6.0.0.0", "8.3.111.255"}, //33,779,712
{"8.3.128.0", "8.5.250.255"}, //162,560
{"8.5.252.0", "8.7.243.255"}, //129,024
{"8.7.245.0", "8.10.5.255"}, //135,424
{"8.10.8.0", "8.14.121.255"}, //291,328
{"8.14.123.0", "8.14.196.255"}, //18,944
{"8.15.0.0", "8.17.204.255"}, //183,552
{"8.17.207.0", "8.18.49.255"}, //25,344
{"8.18.51.0", "8.18.112.255"}, //15,872
{"8.18.197.0", "8.19.7.255"}, //17,152
{"8.19.9.0", "8.20.99.255"}, //88,832
{"8.20.128.0", "8.20.252.255"}, //32,000
{"8.21.42.0", "8.21.109.255"}, //17,408
{"8.21.112.0", "8.22.175.255"}, //81,920
{"8.22.177.0", "8.23.138.255"}, //55,808
{"8.23.140.0", "8.23.239.255"}, //25,600
{"8.24.16.0", "8.24.241.255"}, //57,856
{"8.24.245.0", "8.25.95.255"}, //27,392
{"8.25.99.0", "8.25.248.255"}, //38,400
{"8.25.250.0", "8.26.93.255"}, //25,600
{"8.26.95.0", "8.26.175.255"}, //20,736
{"8.26.181.0", "8.27.63.255"}, //35,584
{"8.27.80.0", "8.28.3.255"}, //46,080
{"8.28.21.0", "8.28.81.255"}, //15,616
{"8.28.83.0", "8.28.126.255"}, //11,264
{"8.28.128.0", "8.28.200.255"}, //18,688
{"8.28.214.0", "8.29.104.255"}, //37,632
{"8.29.106.0", "8.29.223.255"}, //30,208
{"8.29.225.0", "8.30.207.255"}, //61,184
{"8.30.235.0", "8.33.95.255"}, //161,024
{"8.33.138.0", "8.34.68.255"}, //47,872
{"8.34.72.0", "8.34.145.255"}, //18,944
{"8.34.147.0", "8.34.199.255"}, //13,568
{"8.34.224.0", "8.35.56.255"}, //22,784
{"8.35.60.0", "8.35.148.255"}, //22,784
{"8.35.150.0", "8.35.210.255"}, //15,616
{"8.35.212.0", "8.36.76.255"}, //30,976
{"8.36.78.0", "8.36.129.255"}, //13,312
{"8.36.131.0", "8.36.215.255"}, //21,760
{"8.36.221.0", "8.37.40.255"}, //19,456
{"8.37.44.0", "8.38.146.255"}, //91,904
{"8.38.173.0", "8.39.5.255"}, //22,784
{"8.39.19.0", "8.39.124.255"}, //27,136
{"8.39.145.0", "8.39.200.255"}, //14,336
{"8.39.216.0", "8.40.25.255"}, //16,896
{"8.40.32.0", "8.40.106.255"}, //19,200
{"8.40.141.0", "8.41.4.255"}, //30,720
{"8.41.40.0", "8.42.7.255"}, //57,344
{"8.42.9.0", "8.42.50.255"}, //10,752
{"8.42.56.0", "8.42.160.255"}, //26,880
{"8.42.173.0", "8.42.244.255"}, //18,432
{"8.42.246.0", "8.43.120.255"}, //33,536
{"8.43.124.0", "8.43.223.255"}, //25,600
{"8.44.7.0", "8.44.57.255"}, //13,056
{"8.44.93.0", "8.45.95.255"}, //66,304
{"8.45.97.0", "8.46.112.255"}, //69,632
{"8.46.119.0", "8.47.68.255"}, //52,736
{"8.47.70.0", "8.49.215.255"}, //168,448
{"8.49.217.0", "8.50.11.255"}, //13,056
{"8.50.21.0", "8.51.0.255"}, //60,416
{"8.51.64.0", "8.127.255.255"}, //5,029,888
{"8.192.0.0", "8.192.108.255"}, //27,904
{"8.192.110.0", "8.207.255.255"}, //1,020,416
{"8.221.0.0", "8.221.127.255"}, //32,768
{"8.224.0.0", "8.238.42.255"}, //928,512
{"8.238.53.0", "8.238.142.255"}, //23,040
{"8.238.205.0", "8.241.255.255"}, //209,664
{"8.244.80.0", "8.244.130.255"}, //13,056
{"8.244.132.0", "8.244.255.255"}, //31,744
{"8.245.64.0", "8.245.127.255"}, //16,384
{"8.245.160.0", "8.245.255.255"}, //24,576
{"8.246.139.0", "8.246.191.255"}, //13,568
{"8.246.201.0", "9.9.8.255"}, //1,196,032
{"9.9.10.0", "9.255.255.255"}, //16,184,832
{"11.0.0.0", "11.210.23.255"}, //13,768,704
{"11.210.25.0", "12.5.185.255"}, //3,383,552
{"12.5.188.0", "12.19.87.255"}, //891,904
{"12.19.96.0", "12.24.140.255"}, //339,200
{"12.24.142.0", "12.35.147.255"}, //722,432
{"12.35.149.0", "12.41.127.255"}, //387,840
{"12.41.136.0", "12.46.103.255"}, //319,488
{"12.46.106.0", "12.129.111.255"}, //5,441,024
{"12.129.113.0", "12.139.119.255"}, //657,152
{"12.139.121.0", "12.144.81.255"}, //317,696
{"12.144.88.0", "12.159.147.255"}, //998,400
{"12.159.152.0", "12.174.223.255"}, //1,001,472
{"12.175.0.0", "12.184.30.255"}, //597,760
{"12.184.32.0", "12.192.62.255"}, //532,224
{"12.192.64.0", "12.196.47.255"}, //258,048
{"12.196.63.0", "12.204.9.255"}, //510,720
{"12.204.16.0", "12.206.179.255"}, //173,056
{"12.206.184.0", "12.208.168.255"}, //127,232
{"12.208.172.0", "13.32.0.255"}, //5,199,104
{"13.32.176.0", "13.32.215.255"}, //10,240
{"13.34.93.0", "13.34.255.255"}, //41,728
{"13.35.73.0", "13.35.127.255"}, //14,080
{"13.44.0.0", "13.47.255.255"}, //262,144
{"13.52.0.0", "13.52.255.255"}, //65,536
{"13.56.0.0", "13.66.255.255"}, //720,896
{"13.67.128.0", "13.68.255.255"}, //98,304
{"13.71.192.0", "13.72.191.255"}, //65,536
{"13.73.32.0", "13.73.95.255"}, //16,384
{"13.77.64.0", "13.77.255.255"}, //49,152
{"13.78.128.0", "13.78.255.255"}, //32,768
{"13.82.0.0", "13.86.255.255"}, //327,680
{"13.87.127.0", "13.88.199.255"}, //84,224
{"13.89.0.0", "13.92.255.255"}, //262,144
{"13.93.128.0", "13.93.255.255"}, //32,768
{"13.96.0.0", "13.103.255.255"}, //524,288
{"13.104.1.0", "13.104.41.255"}, //10,496
{"13.105.204.0", "13.105.255.255"}, //13,312
{"13.107.55.0", "13.107.136.255"}, //20,992
{"13.107.141.0", "13.107.197.255"}, //14,592
{"13.107.255.0", "13.111.255.255"}, //262,400
{"13.116.0.0", "13.120.63.255"}, //278,528
{"13.120.128.0", "13.121.64.255"}, //49,408
{"13.121.128.0", "13.122.63.255"}, //49,152
{"13.122.128.0", "13.123.255.255"}, //98,304
{"13.128.0.0", "13.199.255.255"}, //4,718,592
{"13.216.0.0", "13.224.15.255"}, //528,384
{"13.226.9.0", "13.226.56.255"}, //12,288
{"13.226.176.0", "13.226.243.255"}, //17,408
{"13.240.0.0", "13.243.255.255"}, //262,144
{"13.248.128.0", "13.248.255.255"}, //32,768
{"13.249.34.0", "13.249.143.255"}, //28,160
{"13.249.176.0", "13.249.240.255"}, //16,640
{"13.252.0.0", "13.255.255.255"}, //262,144
{"15.0.0.0", "15.106.75.255"}, //6,966,272
{"15.106.77.0", "15.109.211.255"}, //231,168
{"15.109.213.0", "15.113.77.255"}, //227,584
{"15.113.79.0", "15.114.96.255"}, //70,144
{"15.114.98.0", "15.118.101.255"}, //263,168
{"15.118.103.0", "15.119.207.255"}, //92,416
{"15.119.209.0", "15.122.23.255"}, //149,248
{"15.122.25.0", "15.124.124.255"}, //156,672
{"15.124.128.0", "15.127.94.255"}, //188,160
{"15.127.98.0", "15.145.19.255"}, //1,159,680
{"15.145.24.0", "15.151.255.255"}, //452,608
{"15.153.0.0", "15.155.255.255"}, //196,608
{"15.158.192.0", "15.159.255.255"}, //81,920
{"15.162.0.0", "15.163.255.255"}, //131,072
{"15.166.0.0", "15.167.255.255"}, //131,072
{"15.169.0.0", "15.177.23.255"}, //530,432
{"15.177.101.0", "15.183.255.255"}, //432,896
{"15.186.0.0", "15.187.255.255"}, //131,072
{"15.189.0.0", "15.189.255.255"}, //65,536
{"15.190.64.0", "15.192.255.255"}, //180,224
{"15.193.11.0", "15.195.184.255"}, //175,616
{"15.195.186.0", "15.205.255.255"}, //673,280
{"15.208.0.0", "15.219.200.255"}, //772,352
{"15.219.202.0", "15.220.43.255"}, //25,088
{"15.221.54.0", "15.221.127.255"}, //18,944
{"15.221.153.0", "15.221.255.255"}, //26,368
{"15.224.0.0", "15.227.255.255"}, //262,144
{"15.231.0.0", "15.234.255.255"}, //262,144
{"15.238.0.0", "15.247.255.255"}, //655,360
{"15.248.72.0", "16.0.89.255"}, //528,896
}
// 获取真实有效的随机IP
func GetRandomIP() string {
seed := time.Now().UnixNano()
rng := rand.New(rand.NewSource(seed))
// 生成随机索引
randomIndex := rng.Intn(len(IP_RANGE))
// 获取随机 IP 地址范围
startIP := IP_RANGE[randomIndex][0]
endIP := IP_RANGE[randomIndex][1]
// 将起始 IP 地址转换为整数形式
startIPInt := ipToUint32(net.ParseIP(startIP))
// 将结束 IP 地址转换为整数形式
endIPInt := ipToUint32(net.ParseIP(endIP))
// 生成随机 IP 地址
randomIPInt := rng.Uint32()%(endIPInt-startIPInt+1) + startIPInt
randomIP := uint32ToIP(randomIPInt)
return randomIP
}
// 将 IP 地址转换为 uint32
func ipToUint32(ip net.IP) uint32 {
ip = ip.To4()
var result uint32
result += uint32(ip[0]) << 24
result += uint32(ip[1]) << 16
result += uint32(ip[2]) << 8
result += uint32(ip[3])
return result
}
// 将 uint32 转换为 IP 地址
func uint32ToIP(intIP uint32) string {
ip := fmt.Sprintf("%d.%d.%d.%d", byte(intIP>>24), byte(intIP>>16), byte(intIP>>8), byte(intIP))
return ip
}
================================================
FILE: common/proxy.go
================================================
package common
import (
"bytes"
"compress/gzip"
"fmt"
"io"
"log"
"math/rand"
"net/http"
"net/http/httputil"
"net/url"
"strconv"
"strings"
"time"
"github.com/andybalholm/brotli"
"golang.org/x/net/proxy"
)
var (
BING_SYDNEY_DOMAIN = "https://sydney.bing.com"
// BING_CHAT_URL, _ = url.Parse(BING_CHAT_DOMAIN + "/sydney/ChatHub")
BING_SYDNEY_URL, _ = url.Parse(BING_SYDNEY_DOMAIN)
BING_URL, _ = url.Parse("https://www.bing.com")
// EDGE_SVC_URL, _ = url.Parse("https://edgeservices.bing.com")
KEEP_REQ_HEADER_MAP = map[string]bool{
"Accept": true,
"Accept-Encoding": true,
"Accept-Language": true,
"Referer": true,
"Connection": true,
"Cookie": true,
"Upgrade": true,
"User-Agent": true,
"Sec-Websocket-Extensions": true,
"Sec-Websocket-Key": true,
"Sec-Websocket-Version": true,
"X-Request-Id": true,
"X-Forwarded-For": true,
"Content-Length": true,
"Content-Type": true,
"Access-Control-Request-Headers": true,
"Access-Control-Request-Method": true,
}
DEL_LOCATION_DOMAINS = []string{
"https://cn.bing.com",
"https://www.bing.com",
}
USER_TOKEN_COOKIE_NAME = "_U"
RAND_COOKIE_INDEX_NAME = "BingAI_Rand_CK"
RAND_IP_COOKIE_NAME = "BingAI_Rand_IP"
PROXY_WEB_PREFIX_PATH = "/web/"
PROXY_WEB_PAGE_PATH = PROXY_WEB_PREFIX_PATH + "index.html"
)
func NewSingleHostReverseProxy(target *url.URL) *httputil.ReverseProxy {
originalScheme := "http"
httpsSchemeName := "https"
var originalHost string
var originalPath string
// var originalDomain string
var randIP string
var resCKRandIndex string
director := func(req *http.Request) {
if req.URL.Scheme == httpsSchemeName || req.Header.Get("X-Forwarded-Proto") == httpsSchemeName {
originalScheme = httpsSchemeName
}
originalHost = req.Host
originalPath = req.URL.Path
// originalDomain = fmt.Sprintf("%s:%s", originalScheme, originalHost)
req.URL.Scheme = target.Scheme
req.URL.Host = target.Host
req.Host = target.Host
// originalRefer := req.Referer()
// if originalRefer != "" && !strings.Contains(originalRefer, originalDomain) {
// req.Header.Set("Referer", strings.ReplaceAll(originalRefer, originalDomain, BING_URL.String()))
// } else {
req.Header.Set("Referer", fmt.Sprintf("%s/search?q=Bing+AI", BING_URL.String()))
// }
// 同一会话尽量保持相同的随机IP
ckRandIP, _ := req.Cookie(RAND_IP_COOKIE_NAME)
if ckRandIP != nil && ckRandIP.Value != "" {
randIP = ckRandIP.Value
}
if randIP == "" {
randIP = GetRandomIP()
}
req.Header.Set("X-Forwarded-For", randIP)
// 未登录用户
ckUserToken, _ := req.Cookie(USER_TOKEN_COOKIE_NAME)
if ckUserToken == nil || ckUserToken.Value == "" {
randCKIndex, randCkVal := getRandCookie(req)
if randCkVal != "" {
resCKRandIndex = strconv.Itoa(randCKIndex)
req.AddCookie(&http.Cookie{
Name: USER_TOKEN_COOKIE_NAME,
Value: randCkVal,
})
}
// ua := req.UserAgent()
// if !strings.Contains(ua, "iPhone") || !strings.Contains(ua, "Mobile") {
// req.Header.Set("User-Agent", "iPhone Mobile "+ua)
// }
}
ua := req.UserAgent()
isMobile := strings.Contains(ua, "Mobile") || strings.Contains(ua, "Android")
// m pc 画图大小不一样
if isMobile {
req.Header.Set("User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 15_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.7 Mobile/15E148 Safari/605.1.15 BingSapphire/1.0.410427012")
} else {
req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.35")
}
for hKey, _ := range req.Header {
if _, ok := KEEP_REQ_HEADER_MAP[hKey]; !ok {
req.Header.Del(hKey)
}
}
// reqHeaderByte, _ := json.Marshal(req.Header)
// log.Println("剩余请求头 : ", string(reqHeaderByte))
}
//改写返回信息
modifyFunc := func(res *http.Response) error {
contentType := res.Header.Get("Content-Type")
if strings.Contains(contentType, "text/javascript") {
contentEncoding := res.Header.Get("Content-Encoding")
switch contentEncoding {
case "gzip":
// log.Println("ContentEncoding : ", contentEncoding, " Path : ", originalPath)
modifyGzipBody(res, originalScheme, originalHost)
case "br":
// log.Println("ContentEncoding : ", contentEncoding, " Path : ", originalPath)
modifyBrBody(res, originalScheme, originalHost)
default:
log.Println("ContentEncoding default : ", contentEncoding, " Path : ", originalPath)
modifyDefaultBody(res, originalScheme, originalHost)
}
}
// 修改响应 cookie 域
// resCookies := res.Header.Values("Set-Cookie")
// if len(resCookies) > 0 {
// for i, v := range resCookies {
// resCookies[i] = strings.ReplaceAll(strings.ReplaceAll(v, ".bing.com", originalHost), "bing.com", originalHost)
// }
// }
// 设置服务器 cookie 对应索引
if resCKRandIndex != "" {
ckRandIndex := &http.Cookie{
Name: RAND_COOKIE_INDEX_NAME,
Value: resCKRandIndex,
Path: "/",
}
res.Header.Set("Set-Cookie", ckRandIndex.String())
}
// 删除 CSP
res.Header.Del("Content-Security-Policy-Report-Only")
res.Header.Del("Report-To")
// 删除重定向前缀域名 cn.bing.com www.bing.com 等
location := res.Header.Get("Location")
if location != "" {
for _, delLocationDomain := range DEL_LOCATION_DOMAINS {
if strings.HasPrefix(location, delLocationDomain) {
res.Header.Set("Location", location[len(delLocationDomain):])
log.Println("Del Location Domain :", location)
log.Println("RandIP : ", randIP)
// 换新ip
randIP = GetRandomIP()
}
}
}
// 设置随机ip cookie
ckRandIP := &http.Cookie{
Name: RAND_IP_COOKIE_NAME,
Value: randIP,
Path: "/",
}
res.Header.Set("Set-Cookie", ckRandIP.String())
// 跨域
// if IS_DEBUG_MODE {
// res.Header.Set("Access-Control-Allow-Origin", "*")
// res.Header.Set("Access-Control-Allow-Methods", "*")
// res.Header.Set("Access-Control-Allow-Headers", "*")
// }
return nil
}
errorHandler := func(res http.ResponseWriter, req *http.Request, err error) {
log.Println("代理异常 :", err)
res.Write([]byte(err.Error()))
}
// tr := &http.Transport{
// TLSClientConfig: &tls.Config{
// // 如果只设置 InsecureSkipVerify: true对于这个问题不会有任何改变
// InsecureSkipVerify: true,
// ClientAuth: tls.NoClientCert,
// },
// }
// 代理请求 请求回来的内容 报错自动调用
reverseProxy := &httputil.ReverseProxy{
Director: director,
ModifyResponse: modifyFunc,
ErrorHandler: errorHandler,
}
// socks
if SOCKS_URL != "" {
var socksAuth *proxy.Auth
if SOCKS_USER != "" && SOCKS_PWD != "" {
socksAuth = &proxy.Auth{
User: SOCKS_USER,
Password: SOCKS_PWD,
}
}
s5Proxy, err := proxy.SOCKS5("tcp", SOCKS_URL, socksAuth, proxy.Direct)
if err != nil {
panic(err)
}
tr := &http.Transport{
Dial: s5Proxy.Dial,
}
reverseProxy.Transport = tr
}
return reverseProxy
}
// return cookie index and cookie
func getRandCookie(req *http.Request) (int, string) {
utLen := len(USER_TOKEN_LIST)
if utLen == 0 {
return 0, ""
}
if utLen == 1 {
return 0, USER_TOKEN_LIST[0]
}
ckRandIndex, _ := req.Cookie(RAND_COOKIE_INDEX_NAME)
if ckRandIndex != nil && ckRandIndex.Value != "" {
tmpIndex, err := strconv.Atoi(ckRandIndex.Value)
if err != nil {
log.Println("ckRandIndex err :", err)
return 0, ""
}
if tmpIndex < utLen {
return tmpIndex, USER_TOKEN_LIST[tmpIndex]
}
}
seed := time.Now().UnixNano()
rng := rand.New(rand.NewSource(seed))
randIndex := rng.Intn(len(USER_TOKEN_LIST))
return randIndex, USER_TOKEN_LIST[randIndex]
}
func replaceResBody(originalBody string, originalScheme string, originalHost string) string {
modifiedBodyStr := originalBody
if originalScheme == "https" {
if strings.Contains(modifiedBodyStr, BING_URL.Host) {
modifiedBodyStr = strings.ReplaceAll(modifiedBodyStr, BING_URL.Host, originalHost)
}
} else {
originalDomain := fmt.Sprintf("%s://%s", originalScheme, originalHost)
if strings.Contains(modifiedBodyStr, BING_URL.String()) {
modifiedBodyStr = strings.ReplaceAll(modifiedBodyStr, BING_URL.String(), originalDomain)
}
}
// 对话暂时支持国内网络,而且 Vercel 还不支持 Websocket ,先不用
// if strings.Contains(modifiedBodyStr, BING_CHAT_DOMAIN) {
// modifiedBodyStr = strings.ReplaceAll(modifiedBodyStr, BING_CHAT_DOMAIN, originalDomain)
// }
// if strings.Contains(modifiedBodyStr, "https://www.bingapis.com") {
// modifiedBodyStr = strings.ReplaceAll(modifiedBodyStr, "https://www.bingapis.com", "https://bing.vcanbb.top")
// }
return modifiedBodyStr
}
func modifyGzipBody(res *http.Response, originalScheme string, originalHost string) error {
gz, err := gzip.NewReader(res.Body)
if err != nil {
return err
}
defer gz.Close()
bodyByte, err := io.ReadAll(gz)
if err != nil {
return err
}
originalBody := string(bodyByte)
modifiedBodyStr := replaceResBody(originalBody, originalScheme, originalHost)
// 修改响应内容
modifiedBody := []byte(modifiedBodyStr)
// gzip 压缩
var buf bytes.Buffer
writer := gzip.NewWriter(&buf)
defer writer.Close()
_, err = writer.Write(modifiedBody)
if err != nil {
return err
}
err = writer.Flush()
if err != nil {
return err
}
err = writer.Close()
if err != nil {
return err
}
// 修改 Content-Length 头
res.Header.Set("Content-Length", strconv.Itoa(buf.Len()))
// 修改响应内容
res.Body = io.NopCloser(&buf)
return nil
}
func modifyBrBody(res *http.Response, originalScheme string, originalHost string) error {
reader := brotli.NewReader(res.Body)
var uncompressed bytes.Buffer
uncompressed.ReadFrom(reader)
originalBody := uncompressed.String()
modifiedBodyStr := replaceResBody(originalBody, originalScheme, originalHost)
// 修改响应内容
modifiedBody := []byte(modifiedBodyStr)
// br 压缩
var buf bytes.Buffer
writer := brotli.NewWriter(&buf)
writer.Write(modifiedBody)
writer.Close()
// 修改 Content-Length 头
// res.ContentLength = int64(buf.Len())
res.Header.Set("Content-Length", strconv.Itoa(buf.Len()))
// 修改响应内容
res.Body = io.NopCloser(bytes.NewReader(buf.Bytes()))
return nil
}
func modifyDefaultBody(res *http.Response, originalScheme string, originalHost string) error {
bodyByte, err := io.ReadAll(res.Body)
if err != nil {
return err
}
originalBody := string(bodyByte)
modifiedBodyStr := replaceResBody(originalBody, originalScheme, originalHost)
// 修改响应内容
modifiedBody := []byte(modifiedBodyStr)
// 修改 Content-Length 头
// res.ContentLength = int64(buf.Len())
res.Header.Set("Content-Length", strconv.Itoa(len(modifiedBody)))
// 修改响应内容
res.Body = io.NopCloser(bytes.NewReader(modifiedBody))
return nil
}
================================================
FILE: docker/Dockerfile
================================================
FROM golang:alpine AS builder
WORKDIR /app
COPY . .
RUN go build -ldflags="-s -w" -tags netgo -trimpath -o go-proxy-bingai main.go
FROM alpine
WORKDIR /app
COPY --from=builder /app/go-proxy-bingai .
EXPOSE 8080
CMD ["/app/go-proxy-bingai"]
================================================
FILE: docker/docker-compose.yml
================================================
version: '3'
services:
go-proxy-bingai:
# 镜像名称
image: adams549659584/go-proxy-bingai
# 容器名称
container_name: go-proxy-bingai
# 自启动
restart: unless-stopped
ports:
- 8080:8080
# environment:
# - Go_Proxy_BingAI_SOCKS_URL=192.168.0.88:1070
# - Go_Proxy_BingAI_SOCKS_USER=xxx
# - Go_Proxy_BingAI_SOCKS_PWD=xxx
# - Go_Proxy_BingAI_USER_TOKEN_1=xxx
# - Go_Proxy_BingAI_USER_TOKEN_2=xxx
# go-proxy-bingai:
# # 镜像名称
# image: adams549659584/go-proxy-bingai
# # 容器名称
# container_name: go-proxy-bingai
# build:
# context: ../
# dockerfile: docker/Dockerfile
# # 自启动
# restart: unless-stopped
# # 加入指定网络
# networks:
# - MyNetwork
# ports:
# - 8888:8080
# environment:
# - Go_Proxy_BingAI_SOCKS_URL=192.168.0.88:1070
# # - Go_Proxy_BingAI_SOCKS_USER=xxx
# # - Go_Proxy_BingAI_SOCKS_PWD=xxx
# networks:
# MyNetwork:
# external: true
================================================
FILE: frontend/.eslintrc.cjs
================================================
/* eslint-env node */
require('@rushstack/eslint-patch/modern-module-resolution')
module.exports = {
root: true,
'extends': [
'plugin:vue/vue3-essential',
'eslint:recommended',
'@vue/eslint-config-typescript',
'@vue/eslint-config-prettier/skip-formatting'
],
parserOptions: {
ecmaVersion: 'latest'
}
}
================================================
FILE: frontend/.gitignore
================================================
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
.DS_Store
dist
dist-ssr
coverage
*.local
/cypress/videos/
/cypress/screenshots/
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
================================================
FILE: frontend/.prettierrc.config.js
================================================
module.exports = {
plugins: [require('prettier-plugin-tailwindcss')],
$schema: 'https://json.schemastore.org/prettierrc',
semi: true,
tabWidth: 2,
singleQuote: true,
printWidth: 100,
trailingComma: 'none',
};
================================================
FILE: frontend/.vscode/extensions.json
================================================
{
"recommendations": [
"vue.volar",
"vue.vscode-typescript-vue-plugin",
"bradlc.vscode-tailwindcss",
"esbenp.prettier-vscode",
"dbaeumer.vscode-eslint"
]
}
================================================
FILE: frontend/README.md
================================================
# go-proxy-bingai
This template should help get you started developing with Vue 3 in Vite.
## Recommended IDE Setup
[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).
## Type Support for `.vue` Imports in TS
TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types.
If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps:
1. Disable the built-in TypeScript Extension
1) Run `Extensions: Show Built-in Extensions` from VSCode's command palette
2) Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)`
2. Reload the VSCode window by running `Developer: Reload Window` from the command palette.
## Customize configuration
See [Vite Configuration Reference](https://vitejs.dev/config/).
## Project Setup
```sh
pnpm install
```
### Compile and Hot-Reload for Development
```sh
pnpm dev
```
### Type-Check, Compile and Minify for Production
```sh
pnpm build
```
### Lint with [ESLint](https://eslint.org/)
```sh
pnpm lint
```
================================================
FILE: frontend/index.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<meta content="text/html; charset=utf-8" http-equiv="content-type" />
<meta name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, viewport-fit=cover" />
<link rel="icon" href="./img/logo.svg" type="image/svg+xml">
<link rel="apple-touch-icon" href="./img/pwa/logo-192.png">
<meta content="yes" name="apple-mobile-web-app-capable" />
<link rel="mask-icon" href="./img/logo.svg" color="#FFFFFF">
<meta name="msapplication-TileColor" content="#FFFFFF">
<meta name="theme-color" content="#ffffff">
<meta name="referrer" content="origin-when-cross-origin" />
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
<title>BingAI - 聊天</title>
<!-- <script src="https://unpkg.com/vconsole@latest/dist/vconsole.min.js"></script>
<script>
var vConsole = new window.VConsole();
</script> -->
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-MM5J5X8QQC"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag () { dataLayer.push(arguments); }
gtag('js', new Date());
gtag('config', 'G-MM5J5X8QQC');
</script>
<!-- 百度统计 -->
<script>
var _hmt = _hmt || [];
(function () {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?299c614daa53fbcede70f2d22df0a31b";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
<script src="/js/bing/chat/global.js"></script>
<script src="/js/bing/chat/amd.js"></script>
<script src="/js/bing/chat/config.js"></script>
</head>
<body>
<div id="b_sydHeadBg"></div>
<div id="b_sydConvCont" _iid="SERP.5029">
<div id="b_sydtoporpole" class="b_sydConvAnsTest"></div>
<div id="b_sydBgCover"></div>
</div>
<script src="/js/bing/chat/core.js"></script>
<script src="/js/bing/chat/lib.js"></script>
<div id="app">
<style>
/* loading start */
.loading-spinner {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
opacity: 1;
transition: opacity 2s ease-out;
}
.loading-spinner.hidden {
opacity: 0;
}
.loading-spinner>div {
width: 30px;
height: 30px;
background: linear-gradient(90deg, #2870EA 10.79%, #1B4AEF 87.08%);
border-radius: 100%;
display: inline-block;
-webkit-animation: sk-bouncedelay 1.4s infinite ease-in-out both;
animation: sk-bouncedelay 1.4s infinite ease-in-out both;
}
.loading-spinner .bounce1 {
-webkit-animation-delay: -0.32s;
animation-delay: -0.32s;
}
.loading-spinner .bounce2 {
-webkit-animation-delay: -0.16s;
animation-delay: -0.16s;
}
@-webkit-keyframes sk-bouncedelay {
0%,
80%,
100% {
-webkit-transform: scale(0)
}
40% {
-webkit-transform: scale(1.0)
}
}
@keyframes sk-bouncedelay {
0%,
80%,
100% {
-webkit-transform: scale(0);
transform: scale(0);
}
40% {
-webkit-transform: scale(1.0);
transform: scale(1.0);
}
}
/* loading end */
</style>
<!-- loading start -->
<div class="loading-spinner">
<div class="bounce1"></div>
<div class="bounce2"></div>
<div class="bounce3"></div>
</div>
<!-- loading end -->
</div>
<script type="module" src="/src/main.ts"></script>
</body>
</html>
================================================
FILE: frontend/package.json
================================================
{
"name": "go-proxy-bingai",
"version": "1.8.7",
"private": true,
"scripts": {
"dev": "vite",
"build": "run-p type-check build-only",
"preview": "vite preview",
"build-only": "vite build",
"type-check": "vue-tsc --noEmit -p tsconfig.app.json --composite false",
"lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore",
"format": "prettier --write src/"
},
"dependencies": {
"naive-ui": "^2.34.4",
"pinia": "^2.0.36",
"pinia-plugin-persistedstate": "^3.1.0",
"vue": "^3.3.2",
"vue-router": "^4.2.0",
"vue3-virtual-scroll-list": "^0.2.1"
},
"devDependencies": {
"@rushstack/eslint-patch": "^1.2.0",
"@tsconfig/node18": "^2.0.1",
"@types/node": "^18.16.8",
"@vitejs/plugin-vue": "^4.2.3",
"@vue/eslint-config-prettier": "^7.1.0",
"@vue/eslint-config-typescript": "^11.0.3",
"@vue/tsconfig": "^0.4.0",
"autoprefixer": "^10.4.14",
"eslint": "^8.39.0",
"eslint-plugin-vue": "^9.11.0",
"npm-run-all": "^4.1.5",
"postcss": "^8.4.23",
"prettier": "^2.8.8",
"prettier-plugin-tailwindcss": "^0.2.8",
"tailwindcss": "^3.3.2",
"typescript": "~5.0.4",
"vite": "^4.3.5",
"vite-plugin-pwa": "^0.14.7",
"vue-tsc": "^1.6.4",
"workbox-cacheable-response": "^6.6.0",
"workbox-expiration": "^6.6.0",
"workbox-precaching": "^6.6.0",
"workbox-routing": "^6.6.0",
"workbox-strategies": "^6.6.0",
"workbox-window": "^6.6.0"
}
}
================================================
FILE: frontend/postcss.config.js
================================================
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
}
================================================
FILE: frontend/public/compose.html
================================================
<!DOCTYPE html>
<html dir="ltr" lang="zh" xml:lang="zh" xmlns="http://www.w3.org/1999/xhtml" xmlns:Web="http://schemas.live.com/Web/">
<script type="text/javascript">//<![CDATA[
si_ST = new Date
//]]></script>
<head><!--pc-->
<title>BingAI - 撰写</title>
<meta content="text/html; charset=utf-8" http-equiv="content-type" />
<meta name="viewport"
content="width=device-width, minimum-scale=1.0, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover" />
<meta name="referrer" content="origin-when-cross-origin" />
<link rel="icon" href="./img/compose.svg" type="image/svg+xml">
<link rel="apple-touch-icon" href="./img/pwa/logo-192.png">
<meta content="yes" name="apple-mobile-web-app-capable" />
<link rel="mask-icon" href="./img/compose.svg" color="#FFFFFF">
<meta name="msapplication-TileColor" content="#FFFFFF">
<meta name="theme-color" content="#ffffff">
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-MM5J5X8QQC"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag () { dataLayer.push(arguments); }
gtag('js', new Date());
gtag('config', 'G-MM5J5X8QQC');
</script>
<!-- 百度统计 -->
<script>
var _hmt = _hmt || [];
(function () {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?299c614daa53fbcede70f2d22df0a31b";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
<script type="text/javascript">//<![CDATA[
try{const logPathReg=new RegExp('/fd/ls/|/web/xls.aspx');const _oldSendBeacon=navigator.sendBeacon;navigator.sendBeacon=function(url,data){if(logPathReg.test(url)){return true}return _oldSendBeacon.call(this,url,data)};const xhrOpen=window.XMLHttpRequest.prototype.open;window.XMLHttpRequest.prototype.open=function(method,url){if(logPathReg.test(url)){this.isLog=true}return xhrOpen.call(this,method,url)};const xhrSend=window.XMLHttpRequest.prototype.send;window.XMLHttpRequest.prototype.send=function(body){if(this.isLog){return this.abort()}return xhrSend.call(this,body)};}catch(error){console.error(error)};
_G = { Region: "US", Lang: "zh-CN", ST: (typeof si_ST !== 'undefined' ? si_ST : new Date), Mkt: "en-US", RevIpCC: "us", RTL: false, Ver: "19", IG: "0", EventID: "6457cdf9bf314d6186c6b7f80c87f395", V: "underside", P: "UNSP", DA: "PUSE01", SUIH: "pvMUA9xkTfwoGd2dQVAmkA", adc: "b_ad", EF: { cookss: 1, bmcov: 1, crossdomainfix: 1, bmasynctrigger: 1, bmasynctrigger3: 1, newtabsloppyclick: 1, chevroncheckmousemove: 1 }, gpUrl: "\/fd\/ls\/GLinkPing.aspx?" }; _G.lsUrl = "/fd/ls/l?IG=" + _G.IG; curUrl = "\/edgesvc\/compose"; _G.XLS = "\/web\/xls.aspx"; function si_T (a) { if (document.images) { _G.GPImg = new Image; _G.GPImg.src = _G.gpUrl + 'IG=' + _G.IG + '&' + a; } return true; } _G.CTT = "3000";; var _w = window, _d = document, sb_de = _d.documentElement, sb_ie = !1, sb_i6 = !1, _ge = function (n) { return _d.getElementById(n) }, _qs = function (n, t) { return t = typeof t == "undefined" ? _d : t, t.querySelector ? t.querySelector(n) : null }, sb_st = function (n, t) { return setTimeout(n, t) }, sb_rst = sb_st, sb_ct = function (n) { clearTimeout(n) }, sb_gt = function () { return (new Date).getTime() }, sj_gx = function () { return new XMLHttpRequest }; _w.sj_ev = function (n) { return n }; _w.sj_ce = function (n, t, i) { var r = _d.createElement(n); return t && (r.id = t), i && (r.className = i), r }; _w.sj_cook = new function () { function u () { var n = location.protocol === "https:"; return n ? ";secure" : "" } function f () { return _G !== undefined && _G.EF !== undefined && _G.EF.cookss !== undefined && _G.EF.cookss === 1 } var n = this, t = !1, i = new Date(0).toGMTString(), r; try { r = _d.cookie } catch (e) { t = !0 } n.get = function (n, i) { var r, u; return t ? null : (r = _d.cookie.match(new RegExp("\\b" + n + "=[^;]+")), i && r) ? (u = r[0].match(new RegExp("\\b" + i + "=([^&]*)")), u ? u[1] : null) : r ? r[0] : null }; n.set = function (i, r, e, o, s, h, c) { var v, l, a, y, b; if (!t) { l = r + "=" + e; a = n.get(i); a ? (y = n.get(i, r), v = y ? a.replace(r + "=" + y, l) : a + "&" + l) : v = i + "=" + l; var p = location.hostname.match(/([^.]+\.[^.]*)$/), k = h && h > 0 ? h * 6e4 : 63072e6, d = new Date((new Date).getTime() + Math.min(k, 63072e6)), w = ""; f() && (b = u(), w = b + (c ? ";SameSite=" + c : ";SameSite=None")); _d.cookie = v + (p ? ";domain=" + p[0] : "") + (o ? ";expires=" + d.toGMTString() : "") + (s ? ";path=" + s : "") + w } }; n.clear = function (n) { if (!t) { var u = n + "=", r = location.hostname.match(/([^.]+\.[^.]*)$/); _d.cookie = u + (r ? ";domain=" + r[0] : "") + ";expires=" + i } } }; _w.sk_merge || (_w.sk_merge = function (n) { _d.cookie = n }); var amd, define, require; (function (n) { function e (n, i, u) { t[n] || (t[n] = { dependencies: i, callback: u }, r(n)) } function r (n) { if (n) { if (n) return u(n) } else { if (!f) { for (var r in t) u(r); f = !0 } return i } } function u (n) { var s, e; if (i[n]) return i[n]; if (t.hasOwnProperty(n)) { var h = t[n], f = h.dependencies, l = h.callback, a = r, o = {}, c = [a, o]; if (f.length < 2) throw "invalid usage"; else if (f.length > 2) for (s = f.slice(2, f.length), e = 0; e < s.length; e++)c.push(u(s[e])); return l.apply(this, c), i[n] = o, o } } var t = {}, i = {}, f = !1; n.define = e; n.require = r })(amd || (amd = {})); define = amd.define; require = amd.require; function lb () { _w.si_sendCReq && sb_st(_w.si_sendCReq, 800); _w.lbc && _w.lbc() }; define("shared", ["require", "exports"], function (n, t) { function s (n, t) { for (var r = n.length, i = 0; i < r; i++)t(n[i]) } function r (n) { for (var i = [], t = 1; t < arguments.length; t++)i[t - 1] = arguments[t]; return function () { n.apply(null, i) } } function u (n) { i && event && (event.returnValue = !1); n && typeof n.preventDefault == "function" && n.preventDefault() } function f (n) { i && event && (event.cancelBubble = !0); n && typeof n.stopPropagation == "function" && n.stopPropagation() } function e (n, t, i) { for (var r = 0; n && n.offsetParent && n != (i || document.body);)r += n["offset" + t], n = n.offsetParent; return r } function o () { return (new Date).getTime() } function h (n) { return i ? event : n } function c (n) { return i ? event ? event.srcElement : null : n.target } function l (n) { return i ? event ? event.fromElement : null : n.relatedTarget } function a (n) { return i ? event ? event.toElement : null : n.relatedTarget } function v (n, t, i) { while (n && n != (i || document.body)) { if (n == t) return !0; n = n.parentNode } return !1 } function y (n) { window.location.href = n } function p (n, t) { n && (n.style.filter = t >= 100 ? "" : "alpha(opacity=" + t + ")", n.style.opacity = t / 100) } t.__esModule = !0; t.getTime = t.getOffset = t.stopPropagation = t.preventDefault = t.wrap = t.forEach = void 0; var i = sb_ie; t.forEach = s; t.wrap = r; t.preventDefault = u; t.stopPropagation = f; t.getOffset = e; t.getTime = o; window.sj_b = document.body; window.sb_de = document.documentElement; window.sj_wf = r; window.sj_pd = u; window.sj_sp = f; window.sj_go = e; window.sj_ev = h; window.sj_et = c; window.sj_mi = l; window.sj_mo = a; window.sj_we = v; window.sb_gt = o; window.sj_so = p; window.sj_lc = y }); define("env", ["require", "exports", "shared"], function (n, t, i) { function v (n, t) { return t.length && typeof n == "function" ? function () { return n.apply(null, t) } : n } function y (n, t) { var e = [].slice.apply(arguments).slice(2), i = v(n, e), u; return typeof i == "function" && (u = window.setImmediate && !window.setImmediate.Override && (!t || t <= 16) ? "i" + setImmediate(i) : o(i, t), f[r] = u, r = (r + 1) % a), u } function p (n, t) { var r = [].slice.apply(arguments).slice(2), i = l(v(n, r), t); return e[u] = i, u = (u + 1) % a, i } function w () { h.forEach(f, s); h.forEach(e, window.clearInterval); r = u = e.length = f.length = 0 } function s (n) { n != null && (typeof n == "string" && n.indexOf("i") === 0 ? window.clearImmediate(parseInt(n.substr(1), 10)) : c(n)) } var h = i, f = [], e = [], o, c, l, a = 1024, r = 0, u = 0; o = window.setTimeout; t.setTimeout = y; l = window.setInterval; t.setInterval = p; t.clear = w; c = window.clearTimeout; t.clearTimeout = s; window.sb_rst = o; window.setTimeout = window.sb_st = y; window.setInterval = window.sb_si = p; window.clearTimeout = window.sb_ct = s }); define("event.custom", ["require", "exports", "shared", "env"], function (n, t, i, r) { function f (n) { return u[n] || (u[n] = []) } function e (n, t) { n.d ? l.setTimeout(c.wrap(n, t), n.d) : n(t) } function v (n, t, i) { var r, f; for (r in u) f = i ? t && r.indexOf(t) === 0 : !(r.indexOf(a) === 0) && !(t && r.indexOf(t) === 0) && !(n != null && n[r] != null), f && delete u[r] } function o (n) { for (var t = f(n), u = t.e = arguments, i, r = 0; r < t.length; r++)if (t[r].alive) try { e(t[r].func, u) } catch (o) { i || (i = o) } if (i) throw i; } function s (n, t, i, r) { var u = f(n); t && (t.d = r, u.push({ func: t, alive: !0 }), i && u.e && e(t, u.e)) } function h (n, t) { for (var i = 0, r = u[n]; r && i < r.length; i++)if (r[i].func == t && r[i].alive) { r[i].alive = !1; break } } var c = i, l = r, u = {}, a = "ajax."; t.reset = v; t.fire = o; t.bind = s; t.unbind = h; _w.sj_evt = { bind: s, unbind: h, fire: o } }); define("event.native", ["require", "exports"], function (n, t) { function r (n, t, r, u) { var f = n === window || n === document || n === document.body; n && (f && t == "load" ? i.bind("onP1", r, !0) : f && t == "unload" ? i.bind("unload", r, !0) : n.addEventListener ? n.addEventListener(t, r, u) : n.attachEvent ? n.attachEvent("on" + t, r) : n["on" + t] = r) } function u (n, t, r, u) { var f = n === window || n === document || n === document.body; n && (f && t == "load" ? i.unbind("onP1", r) : f && t == "unload" ? i.unbind("unload", r) : n.removeEventListener ? n.removeEventListener(t, r, u) : n.detachEvent ? n.detachEvent("on" + t, r) : n["on" + t] = null) } t.__esModule = !0; t.unbind = t.bind = void 0; var i = n("event.custom"); t.bind = r; t.unbind = u; window.sj_be = r; window.sj_ue = u }); define("dom", ["require", "exports"], function (n, t) { function f (n, t) { function s (n, t, r, f) { r && u.unbind(r, f, s); c.bind("onP1", function () { if (!n.l) { n.l = 1; var r = i("script"); r.setAttribute("data-rms", "1"); r.src = (t ? "/fd/sa/" + _G.Ver : "/sa/" + _G.AppVer) + "/" + n.n + ".js"; _d.body.appendChild(r) } }, !0, 5) } for (var f = arguments, e, o, r = 2, l = { n: n }; r < f.length; r += 2)e = f[r], o = f[r + 1], u.bind(e, o, h.wrap(s, l, t, e, o)); r < 3 && s(l, t) } function e () { var n = _d.getElementById("ajaxStyles"); return n || (n = _d.createElement("div"), n.id = "ajaxStyles", _d.body.insertBefore(n, _d.body.firstChild)), n } function l (n) { var t = i("script"); t.type = "text/javascript"; t.text = n; t.setAttribute("data-bing-script", "1"); document.body.appendChild(t); r.setTimeout(function () { document.body.removeChild(t) }, 0) } function a (n) { var t = i("script"); t.type = "text/javascript"; t.src = n; t.setAttribute("crossorigin", "anonymous"); t.onload = r.setTimeout(function () { document.body.removeChild(t) }, 0); document.body.appendChild(t) } function o (n) { var t = s("ajaxStyle"); t || (t = i("style"), t.setAttribute("data-rms", "1"), t.id = "ajaxStyle", e().appendChild(t)); t.textContent !== undefined ? t.textContent += n : t.styleSheet.cssText += n } function v (n, t) { for (var i = Element.prototype, r = i.matches || i.msMatchesSelector; n != null;) { if (r.call(n, t)) return n; n = n.parentElement } return null } function s (n) { return _d.getElementById(n) } function i (n, t, i) { var r = _d.createElement(n); return t && (r.id = t), i && (r.className = i), r } t.__esModule = !0; t.includeCss = t.includeScriptReference = t.includeScript = t.getCssHolder = t.loadJS = void 0; var r = n("env"), h = n("shared"), u = n("event.native"), c = n("event.custom"); t.loadJS = f; t.getCssHolder = e; t.includeScript = l; t.includeScriptReference = a; t.includeCss = o; _w._ge = s; _w.sj_ce = i; _w.sj_jb = f; _w.sj_ic = o; _w.sj_fa = v }); define("cookies", ["require", "exports"], function (n, t) { function a () { var n = location.protocol === "https:"; return n ? ";secure" : "" } function v () { return typeof _G != "undefined" && _G.EF !== undefined && _G.EF.cookss !== undefined && _G.EF.cookss === 1 } function f () { var n = location.hostname.match(/([^.]+\.[^.]*)$/); return n ? ";domain=" + n[0] : "" } function e (n, t, i, r, u) { var s = f(), h = r && r > 0 ? r * 6e4 : 63072e6, c = new Date((new Date).getTime() + Math.min(h, 63072e6)), e = "", o; v() && (o = a(), e = o + (u ? ";SameSite=" + u : ";SameSite=None")); document.cookie = n + s + (t ? ";expires=" + c.toGMTString() : "") + (i ? ";path=" + i : "") + e } function o (n, t, r, u, f) { if (!i) { var o = n + "=" + t; e(o, r, u, f) } } function s () { return !i } function r (n, t) { var r, u; return i ? null : (r = document.cookie.match(new RegExp("\\b" + n + "=[^;]+")), t && r) ? (u = r[0].match(new RegExp("\\b" + t + "=([^&]*)")), u ? u[1] : null) : r ? r[0] : null } function h (n, t, u, f, o, s) { var l, h, c, a; i || (h = t + "=" + u, c = r(n), c ? (a = r(n, t), l = a ? c.replace(t + "=" + a, h) : c + "&" + h) : l = n + "=" + h, e(l, f, o, s)) } function c (n, t) { if (!i) { var r = n + "=", e = f(); document.cookie = r + e + ";expires=" + u + (t ? ";path=" + t : "") } } var i, u, l; t.__esModule = !0; t.clear = t.set = t.get = t.areCookiesAccessible = t.setNoCrumbs = void 0; i = !1; u = new Date(0).toGMTString(); try { l = document.cookie } catch (y) { i = !0 } t.setNoCrumbs = o; t.areCookiesAccessible = s; t.get = r; t.set = h; t.clear = c; window.sj_cook = { get: r, set: h, setNoCrumbs: o, clear: c, areCookiesAccessible: s } }); var sj_anim = function (n) { var s = 25, t = this, c, u, h, f, e, o, l, i, r; t.init = function (n, s, a, v, y) { if (c = n, e = s, o = a, l = v, r = y, v == 0) { f = h; r && r(); return } i || (i = e); u || t.start() }; t.start = function () { h = sb_gt(); f = Math.abs(o - i) / l * s; u = setInterval(t.next, s) }; t.stop = function () { clearInterval(u); u = 0 }; t.next = function () { var u = sb_gt() - h, s = u >= f; i = e + (o - e) * u / f; s && (t.stop(), i = o); n(c, i); s && r && r() }; t.getInterval = function () { return s } }; var sj_fader = function () { return new sj_anim(function (n, t) { sj_so(n, t) }) }; sj_fade = new function () { function n (n, t, i, r, u, f, e) { var o = n.fader; if (o) { if (e == n.fIn) return } else o = sj_fader(), n.fader = o; u && u(); o.init(n, t, i, r, f); n.fIn = e } this.up = function (t, i, r) { function u () { t.style.visibility = "visible" } n(t, 0, 100, i, u, r, 1) }; this.down = function (t, i, r) { function u () { t.style.visibility = "hidden"; r && r() } n(t, 100, 0, i, 0, u, 0) } };
//]]></script>
<style type="text/css">
#b_header #id_h {
content-visibility: hidden
}
#b_results>.b_ans:not(.b_top):nth-child(n+5) .rqnaContainerwithfeedback #df_listaa {
content-visibility: auto;
contain-intrinsic-size: 648px 205px
}
#b_results>.b_algo:not(.b_algoBorder):nth-child(n+5)>h2 {
content-visibility: auto;
contain-intrinsic-size: 608px 24px
}
#b_results>.b_algo:not(.b_algoBorder):nth-child(n+5) .b_caption:not(.b_rich):not(.b_capmedia):not(.b_snippetgobig):not(.rebateContent) {
content-visibility: auto;
contain-intrinsic-size: 608px 65px;
padding-right: 16px;
margin-right: -16px;
margin-left: -16px;
padding-left: 16px
}
#b_results>.b_algo:not(.b_algoBorder):nth-child(n+5) .b_caption.b_rich .captionMediaCard .wide_wideAlgo {
content-visibility: auto;
contain-intrinsic-size: 370px 120px
}
#b_results>.b_algo:not(.b_algoBorder):nth-child(n+5) .scs_icn {
content-visibility: auto
}
#b_results>.b_ans:nth-child(n+7) .b_rs:not(.pageRecoContainer) {
content-visibility: auto;
contain-intrinsic-size: 608px 296px
}
#b_results>.b_ans:nth-child(n+7) .b_rs:not(.pageRecoContainer) .b_rsv3 {
padding-bottom: 1px
}
#b_results>.b_pag {
content-visibility: auto;
contain-intrinsic-size: 628px 45px
}
#b_footer>#b_footerItems {
content-visibility: auto;
contain-intrinsic-size: 1px 24px
}
.cnt_vis_hid {
content-visibility: hidden
}
.sw_plus,
.sw_up,
.sw_down,
.sw_st,
.sw_sth,
.sw_ste,
.sb_pagIconN,
.sb_pagIconP {
display: inline-block;
overflow: hidden;
direction: ltr
}
.sw_plus:after,
.sw_up:after,
.sw_down:after,
.sw_st:after,
.sw_sth:after,
.sw_ste:after,
.sb_pagIconN:after,
.sb_pagIconP:after {
display: inline-block;
-webkit-transform: scale(.5, .5);
transform: scale(.5, .5)
}
.sw_plus {
height: 10px;
width: 10px
}
.sw_plus:after {
-webkit-transform-origin: -216px 0;
transform-origin: -216px 0
}
.sw_play,
.sb_pagIconN,
.sb_pagIconP {
height: 16px;
width: 16px
}
.sw_st,
.sw_sth,
.sw_ste,
.sw_up,
.sw_down {
height: 14px;
width: 14px
}
.sw_down:after {
-webkit-transform-origin: -216px -36px;
transform-origin: -216px -36px
}
.sw_up:after {
-webkit-transform-origin: -252px -36px;
transform-origin: -252px -36px
}
.sw_st:after {
-webkit-transform-origin: -84px -44px;
transform-origin: -84px -44px
}
.sw_sth:after {
-webkit-transform-origin: -148px -44px;
transform-origin: -148px -44px
}
.sw_ste:after {
-webkit-transform-origin: -116px -44px;
transform-origin: -116px -44px
}
.sb_pagIconN:after {
-webkit-transform-origin: -304px 0;
transform-origin: -304px 0
}
.sb_pagIconP:after {
-webkit-transform-origin: -268px 0;
transform-origin: -268px 0
}
#b_results a.sb_pagN,
#b_results a.sb_pagP {
padding-bottom: 5px
}
.b_pag .b_roths {
transform: rotate(180deg)
}
@media(prefers-color-scheme:dark) {
#bpage.b_med .sb_pagIconN:after {
-webkit-transform-origin: -672px 0;
transform-origin: -672px 0
}
#bpage.b_med .sb_pagIconP:after {
-webkit-transform-origin: -636px 0;
transform-origin: -636px 0
}
}
#bpage.b_drk .sb_pagIconN:after {
-webkit-transform-origin: -672px 0;
transform-origin: -672px 0
}
#bpage.b_drk .sb_pagIconP:after {
-webkit-transform-origin: -636px 0;
transform-origin: -636px 0
}
.sw_plus:after,
.sw_up:after,
.sw_down:after,
.sw_st:after,
.sw_sth:after,
.sw_ste:after,
.sb_pagIconN:after,
.sb_pagIconP:after {
content: url(/rp/8nWcDuCQxCQRGNc4826Pyh6RbGA.png)
}
@media screen and (-ms-high-contrast:active) {
* {
background-color: Window
}
*:not(a) {
color: WindowText
}
a *:not(a) {
color: -ms-hotlight;
color: LinkText
}
a[disabled],
a[disabled] * {
color: GrayText
}
}
.siz12 {
width: 12px;
height: 12px
}
.siz16 {
width: 16px;
height: 16px
}
.siz20 {
width: 20px;
height: 20px
}
.siz24 {
width: 24px;
height: 24px
}
.siz28 {
width: 28px;
height: 28px
}
.siz48 {
width: 48px;
height: 48px
}
:root {
--htmlbk: #f5f5f5;
--htmlbk2: #fff;
--canvasbk: #f9f9f9;
--canvasbk2: #fff;
--canvasbk3: #f5f5f5;
--cardsbk: #f5f5f5;
--cardsbk2: #fff;
--canvasbkf7: #f7f7f7;
--promtxt: #111;
--promtxt000: #000;
--primtxt: #444;
--primtxt4a: #4a4a4a;
--primtxt40: #404040;
--regtxt: #666;
--sectxt: #767676;
--opttxt: #919191;
--distxt: #ccc;
--tealcol: #00809d;
--brtealcol: #0c8484;
--actbrdcol: #ccc;
--actbrdcol2: #cdcdcd;
--brdcol: #ddd;
--secbrdcol: #ececec;
--secbrdcolee: #eee;
--secbrdcole1: #e1e1e1;
--secbrdcole5: #e5e5e5;
--alinkcol: #4007a2;
--alinkcol2: #001ba0;
--alinkvcol: #4007a2;
--greencol: #006d21;
--citcol: #006621;
--redcol: #c80000;
--alrtcol: #d90026;
--poscol: #006d21;
--negcol: #c80000;
--tealbtncol: #fff;
--tealbtnbk: #106ebe;
--bluebtncol: #fff;
--bluebtnbk: #106ebe
}
html,
body,
#b_results>.b_pag {
background-color: var(--htmlbk);
color: var(--regtxt)
}
.b_subModule,
.b_suppModule {
border-bottom-color: var(--htmlbk)
}
.b_secondaryFocus,
.b_corActList,
.b_corActList a,
.b_corActList a:visited {
color: var(--primtxt)
}
select,
input[type="text"] {
color: #444;
border-color: #ddd
}
select:hover,
input[type="text"]:hover {
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .1)
}
select:focus,
input[type="text"]:focus {
border-color: #919191;
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .1)
}
.b_algo .b_factrow,
.b_promoteText,
#b_results,
#b_results .b_defaultText,
.cbl {
color: var(--regtxt)
}
#b_results ::placeholder,
.b_factrow,
.b_attribution,
.b_focusLabel,
.b_secondaryText,
.b_demoteText,
.b_footnote,
.b_footnote .cbl,
.b_entitySubTitle,
#b_results p.b_secondaryText,
#b_content .b_imagePair .b_footnote a,
#b_content .b_imagePair .b_footnote a:visited,
#b_content .b_floatR_img .b_footnote a,
#b_content .b_floatR_img .b_footnote a:visited,
.sb_meta,
label {
color: var(--sectxt)
}
#b_results input[type="text"]:disabled {
color: var(--distxt)
}
#b_pole .b_ans,
.b_pag a.sb_pagS,
#b_results>li,
#b_content>.sml {
background-color: var(--canvasbk2)
}
#b_results>.b_ad {
color: var(--regtxt);
background-color: var(--adstbk)
}
#b_results p,
#b_results .b_richcard .b_vList.b_divsec {
color: var(--partxtcol)
}
a,
#b_results .b_no a,
#b_results .b_pag a,
#b_results>.b_ad a {
color: var(--alinkcol)
}
a:visited,
#sb_feedback:visited,
#b_results>.b_ad a:visited {
color: var(--alinkvcol)
}
cite,
#b_results cite.sb_crmb a,
#b_results cite a.sb_metalink,
#b_results .b_adurl cite a,
#bk_wr_container cite a {
color: var(--citcol)
}
.b_touchable,
.b_touchable>li {
border-color: var(--tchsep)
}
#b_results .b_pAlt,
.b_alert,
#b_results .b_no .b_alert,
#b_results .b_alert {
color: var(--alrtcol)
}
.pushpin {
background: #49f;
color: #fff
}
.redPushpin {
background: #d31100
}
#bpage #b_header .b_posText,
#bpage #b_content .b_posText,
.b_posText {
color: var(--poscol)
}
#bpage #b_header .b_negText,
#bpage #b_content .b_negText,
.b_negText {
color: var(--negcol)
}
:root {
--adstbk: #f9fcf7;
--tchsep: #eee;
--partxtcol: var(--regtxt)
}
@media(prefers-color-scheme:dark) {
#bpage.b_med {
--adstbk: #1b1a19;
--tchsep: #3b3a39;
--partxtcol: #edebe9
}
}
#bpage.b_drk {
--adstbk: #1b1a19;
--tchsep: #3b3a39;
--partxtcol: #edebe9
}
#b_content .b_ans,
#b_content .b_ans p,
#b_content .b_ans .cbl {
color: var(--primtxt)
}
z {
a: 1
}
z {
a: 1
}
h3,
h4,
h5 {
font: inherit;
font-size: 100%
}
body {
font-family: "-apple-system", HelveticaNeue, Roboto, Arial, sans-serif;
font-weight: normal;
font-size: 14px;
line-height: 18px
}
cite {
font-style: normal
}
.b_strong,
strong,
.b_no h4 {
font-weight: 700;
font-family: "-apple-system", HelveticaNeue, Roboto, Arial, sans-serif
}
h1,
h2,
.b_focusLabel,
.b_secondaryFocus,
.b_groupLabel {
font-size: 18px;
line-height: 22px;
font-weight: normal
}
h2.b_topTitle {
font-size: 20px;
line-height: 24px;
padding-bottom: 2px
}
.b_anno {
font-size: 20px;
line-height: 24px;
font-weight: normal
}
select,
.cbtn input,
.s_btn.b_highlighted a,
input[type="text"] {
font-size: 14px
}
#fti3,
.sb_count {
font-size: 12px;
line-height: 14px
}
.ftr_ans,
#ftrLnks,
#id_rwds_b {
font-size: 13px;
line-height: 16px
}
.b_mText {
font-size: 16px;
line-height: 22px
}
.b_xlText {
font-size: 18px
}
.b_secondaryFocus,
.b_focusTextExtraSmall {
font-size: 18px;
line-height: 22px
}
.b_focusTextSmall {
font-size: 23px;
line-height: 28px;
font-family: "-apple-system", HelveticaNeue, Roboto, Arial, sans-serif
}
.b_focusTextMedium {
font-size: 32px;
line-height: 38px;
font-family: "-apple-system", HelveticaNeue, Roboto, Arial, sans-serif
}
.b_focusTextLarge {
font-size: 44px;
line-height: 53px;
font-family: "-apple-system", HelveticaNeue, Roboto, Arial, sans-serif
}
.b_smText,
.b_footnote {
font-size: 12px;
line-height: 15px
}
cite,
.nowrap {
white-space: nowrap
}
a,
#b_results .b_rs li a {
text-decoration: none
}
th {
font-weight: normal
}
.pushpin {
font-weight: 700;
font-size: 12px
}
.b_ad {
line-height: 18px
}
.b_prominentFocusLabel {
font-size: 18px
}
.b_groupLabel {
font-size: 14px;
line-height: 20px;
color: var(--primtxt);
text-transform: uppercase;
font-weight: bold
}
html,
body,
h1,
h2,
h3,
h4,
h5,
h6,
p,
img,
ol,
ul,
li,
form,
table,
tr,
th,
td,
blockquote {
border: 0;
border-collapse: collapse;
border-spacing: 0;
list-style: none;
margin: 0;
padding: 0
}
html {
overflow-y: scroll
}
body {
word-wrap: break-word;
overflow-x: hidden;
-webkit-text-size-adjust: none
}
header#b_header:not(:empty):not(.b_hide)~#b_content {
margin-top: 8px
}
.b_footnote {
padding-bottom: 15px
}
.b_imagePair .cico+.b_footnote,
.b_floatR_img .b_footnote,
img+.b_footnote {
padding: 0
}
.b_hList {
padding-bottom: 15px
}
select,
input[type="text"] {
margin: 0 0 16px 0;
padding: 0 11px;
height: 38px;
border-width: 1px;
border-style: solid;
border-radius: 2px
}
input[type="text"] {
-webkit-appearance: none;
max-width: 100%;
min-width: 50%
}
select::-ms-expand {
display: none
}
select {
padding: 0 0 0 11px;
height: 40px;
vertical-align: middle;
border: 1px solid #ddd
}
h2,
h4,
label,
.b_attribution,
.b_sSpace,
.b_label,
.btns,
.b_poiPair {
padding-bottom: 0
}
h2 a,
h3 a,
h4 a,
h5 a,
.b_rs a,
label {
display: block
}
.inline label {
display: inline
}
#sp_requery a {
display: inline-block
}
.b_focusTextLarge,
.b_focusTextMedium,
.b_focusTextSmall,
.b_focusTextExtraSmall {
padding-bottom: 5px
}
.b_lBMargin,
h2.b_entityTitle {
padding-bottom: 10px
}
.b_focusLabel,
.b_secondaryFocus {
padding-bottom: 4px
}
.b_rich {
padding: 12px 0 15px
}
.b_rich>*:last-child,
.b_caption>*:last-child {
padding-bottom: 0;
margin-bottom: 0
}
.b_caption {
padding-bottom: 13px
}
.b_factrow {
display: -webkit-box;
-webkit-box-orient: vertical;
margin-bottom: 2px
}
.b_attribution {
width: 100%
}
.b_attribution,
.b_factrow,
.b_1linetrunc {
overflow: hidden;
text-overflow: ellipsis
}
.b_1linetrunc {
white-space: nowrap
}
.b_mBottom {
padding-bottom: 5px
}
.b_lBottom,
#b_results #sp_recourse.b_lBottom {
padding-bottom: 10px
}
.b_xlBottom {
padding-bottom: 15px
}
.b_xxlBottom {
padding-bottom: 20px
}
.b_xxxlBottom {
padding-bottom: 25px
}
.b_dataList>li>*,
.b_imagePair .b_attribution>*,
.b_factrow>* {
display: inline
}
.b_groupLabel {
padding-bottom: 3px
}
.b_anno {
padding-bottom: 20px
}
.b_anno+.b_rich,
.b_anno+h2+.b_rich {
padding-top: 0
}
.b_vPanel>div {
padding-bottom: 15px
}
.b_vList>li {
padding-bottom: 13px
}
#b_results>li.si_pp,
.sb_hbop,
.b_hide,
#fRmsDefer,
#b_error,
#b_loadingmsg {
display: none
}
.b_rich>*:last-child,
.b_rich>.b_vList:not(.b_touchable)>li:last-child,
.b_rich>.b_vPanel>div:last-child,
.b_vPanel .b_vList:not(.b_touchable)>li:last-child,
.b_vList .b_vPanel>div:last-child,
.b_hList .b_vList>li:last-child,
.b_hList .b_vPanel>div:last-child,
.b_vList>li>*:last-child:not(a),
.b_vPanel>div>*:last-child:not(a),
.b_subModule>*:last-child,
.b_subModule .b_vPanel>*:last-child,
.b_subModule>.b_vList:last-child>*:last-child,
.b_suppModule>*:last-child,
.b_suppModule .b_vPanel>*:last-child,
.b_infocardContent>.b_vList:last-child>*:last-child,
.b_infocardContent>*:last-child,
.sa_uc>.b_vList>li:last-child,
.sa_uc>.b_vList>li:last-child>.b_vList:last-child>li:last-child,
.b_ans>.b_vList>li:last-child {
padding-bottom: 0
}
.b_vlist2col>ul {
min-width: 40%;
display: inline-block;
word-wrap: break-word;
vertical-align: top
}
.b_vlist2col>ul:first-child {
padding-right: 30px
}
.b_vlist2col li {
padding-bottom: 12px
}
.b_touchable>li {
border-bottom-width: 1px;
border-bottom-style: solid;
padding-bottom: 13px;
margin-bottom: 13px
}
.b_touchable>li:first-child {
border-top-width: 1px;
border-top-style: solid;
padding-top: 15px
}
.b_rich>.b_touchable:last-child>li:last-child,
.b_vPanel .b_touchable:last-child>li:last-child {
margin-bottom: 0
}
.b_hPanel>span:not(:last-child),
.b_hList>li:not(:last-child) {
padding-right: 10px
}
.b_hList>li {
vertical-align: top
}
.b_hPanel.wide>span:not(:last-child) {
padding-right: 20px
}
.b_suffix {
padding-left: 10px
}
.b_imagePair {
padding-bottom: 10px
}
.b_imagePair img {
vertical-align: bottom
}
.b_float_img>*:last-child,
.b_imagePair>*:last-child {
overflow: hidden
}
.b_float_img>*:first-child,
.b_imagePair>*:first-child {
margin-right: 10px;
float: left
}
.b_floatR_img {
float: right;
padding-left: 10px
}
.b_float_img {
float: left;
padding-bottom: 10px
}
.b_float_img img {
vertical-align: bottom
}
.b_imagePair.reverse {
display: -ms-flexbox;
display: -webkit-flex;
display: flexbox;
display: -webkit-box;
display: flex
}
.b_imagePair.reverse>*:first-child {
-o-box-flex: 1;
-webkit-box-flex: 1;
-moz-box-flex: 1;
-webkit-flex: 1;
-ms-flex: 1;
flex: 0 1 100%;
float: none
}
.b_imagePair.reverse>*:last-child {
-ms-flex: 0 0 auto;
flex: 0 0 auto
}
.b_imagePair.reverse>*:only-child {
-ms-flex: 1;
flex: 0 1 100%;
margin-right: 0
}
.b_vmparent {
display: -ms-flexbox;
display: -webkit-flex;
display: flexbox;
display: -webkit-box;
display: flex;
-webkit-align-items: center;
align-items: center
}
button,
.button {
border-width: 3px;
border-style: solid;
padding: 8px 18px 12px
}
.b_hPanel>span,
.b_moreLink,
.b_footnote .cico,
.b_hList>li,
.b_title div,
.csrc {
display: inline-block
}
.b_hPanel>span {
vertical-align: middle
}
.b_title h2 {
display: inline
}
.b_title .b_imagePair .rms_img {
margin-top: 3px
}
.b_relative {
position: relative
}
.b_footnote .cico {
padding-left: 10px
}
#b_error div {
padding-bottom: 20px
}
.b_mhdr h2,
.b_float {
float: left
}
.b_floatR {
float: right
}
.b_rTxt {
text-align: right
}
.b_cTxt {
text-align: center
}
.b_jTxt {
text-align: justify
}
.b_moreLink {
padding-bottom: 15px
}
.b_mhdr .b_floatR {
margin-top: 4px
}
.b_mhdr .b_moreLink {
padding-bottom: 0
}
.b_algo p,
.b_ans p {
display: -webkit-box;
-webkit-box-orient: vertical;
overflow: hidden;
-webkit-line-clamp: 5
}
.imgData p,
.b_hList p {
-webkit-line-clamp: 3
}
.b_factrow:after {
content: ""
}
#b_results>li,
#b_pole .b_ans {
padding: 13px 16px;
margin: 0 0 1px
}
#b_results>li .b_fullb,
#b_pole .b_ans .b_fullb {
margin-left: -16px;
margin-right: -16px
}
#b_results>.b_ans {
padding-bottom: 16px
}
#b_results>.b_algo {
padding-bottom: 16px
}
#b_results>.b_ad {
padding-bottom: 0
}
#b_results>.b_ad+.b_algo,
#b_results>.b_ad+.b_ans {
padding-top: 12px
}
#b_results .b_ans+.b_ad,
#b_results .b_ans+.b_algo,
#b_results .b_ans+.b_ans,
#b_results .b_algo+.b_ans,
#b_results .b_nav+.b_algo,
#b_results .b_ans+script+script+.b_ad,
#b_results .b_ans+script+script+.b_algo,
#b_results .b_ans+script+script+.b_ans,
#b_results .b_algo+script+script+.b_ans,
#b_results .b_nav+script+script+.b_algo {
margin-top: 0;
border-top: 0 solid var(--secbrdcole5)
}
#b_results>li>*:last-child,
.b_caption>*:last-child,
.vlist>li:last-child,
.b_vPanel>li:last-child,
.lft>*:last-child {
margin-bottom: 0;
padding-bottom: 0
}
#b_results>.b_pag {
padding: 12px 16px 16px
}
#b_results>li>.b_rs,
#b_results>li .b_deep {
margin-bottom: -12px
}
.b_deep li>a,
.b_deep li>span>a {
width: 110px;
text-overflow: ellipsis;
display: block;
white-space: nowrap;
overflow: hidden
}
.b_rs>.b_rich {
padding-bottom: 0
}
.clrfix:after,
.crch:after,
.b_imagePair:not(.reverse):after,
.b_clearfix:after,
.sb_vdl:after {
clear: both;
content: '.';
display: block;
visibility: hidden;
height: 0
}
#ftrLnks li {
display: inline-block;
padding: 0 20px 15px 0
}
#ftrLnks>*:last-child {
padding-right: 0
}
footer {
padding: 16px;
border-top: 0
}
table {
width: 100%
}
th,
td {
vertical-align: top;
padding: 0 0 15px 15px
}
th:first-child,
td:first-child {
padding-left: 0
}
th {
text-align: left
}
.b_caption>table:last-child tr:last-child td,
.b_caption>.b_vPanel:last-child>div:last-child>table:last-child tr:last-child td {
padding-bottom: 0
}
#fti3 {
margin-bottom: 10px
}
.b_label {
padding-right: 5px
}
.b_subModule,
.b_suppModule {
padding: 13px 0;
border-bottom-width: 1px;
border-bottom-style: solid
}
.wpc_tp .b_subModule,
.wpc_tp .b_suppModule {
margin-left: 10px;
margin-right: 10px
}
.b_subModule h2 {
padding-bottom: 10px
}
.b_subModule h2.b_headerTitle {
padding-bottom: 5px
}
.nowrap {
white-space: nowrap
}
.pushpin {
border-radius: 10px;
text-align: center;
width: 20px;
height: 20px;
margin-top: 2px;
padding-bottom: 0;
line-height: 20px
}
#b_results .b_no {
margin-bottom: 80px
}
.b_no h1,
.b_no h4,
.b_no li {
padding-bottom: 10px
}
.b_factrow .csrc {
margin-right: 5px
}
.sw_next,
.sw_prev {
display: none
}
.sb_pagIconN,
.sb_pagIconP {
margin-top: 2px
}
.b_entitySubTitle {
margin-top: -9px;
padding-bottom: 10px
}
#sb_dir {
flex-grow: 1
}
.b_clear {
clear: both
}
div#b_pole {
margin-bottom: 4px
}
#b_pole .b_ans+.b_ans {
margin-top: 0
}
#bpage.b_imp1 .b_locImgMap .b_hPanel,
#bpage.b_imp1 .wpc_tp .b_hPanel {
min-width: 393px
}
#bpage.b_imp1 .b_locImgMap {
overflow-x: scroll
}
.b_imp1 #b_results>li.b_ad h2,
.b_imp1 .b_algo>.b_algoheader h2 {
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical
}
#bpage.b_imp1 th,
#bpage.b_imp1 td {
padding-left: 8px;
padding-right: 0
}
.b_corActList {
display: -webkit-box;
display: -webkit-flex;
display: flex;
padding-bottom: 16px
}
.b_corActList li {
display: -webkit-inline-flex;
display: inline-flex;
-webkit-box-flex: 1;
-webkit-flex: 1;
flex: 1;
text-align: center;
padding: 0
}
.b_corActList li:only-child {
-webkit-box-flex: none;
-webkit-flex: none;
flex: none
}
.b_corActList li:only-child a>* {
display: inline-block;
vertical-align: middle
}
.b_corActList li:only-child a :first-child {
margin-right: 8px
}
.b_corActList li:not(:first-child) {
border-left: 1px solid var(--secbrdcole5)
}
.b_corActList a {
width: 100%
}
.b_corActList li:not(:only-child) a>:first-child {
margin-left: auto;
margin-right: auto;
display: block;
margin-bottom: 8px
}
.b_hList.b_corActList .cico {
padding: 0
}
z {
a: 1
}
#b_content h2 strong,
#b_content h3 strong,
#b_content .b_caption strong {
font-weight: normal
}
#b_content .b_caption .b_attribution strong {
font-weight: 700
}
z {
a: 1
}
z {
a: 1
}
li.b_algo .b_attribution {
border-bottom: 1px solid var(--brdcol);
padding-bottom: 0;
margin-bottom: 0
}
li.b_ad .b_attribution {
border-bottom: 1px solid var(--brdcol);
padding-bottom: 6px;
margin-bottom: 6px
}
.b_algo>.b_attribution~.b_sideBleed,
.b_algo>.b_caption~.b_sideBleed {
margin-top: -0
}
.b_algo>.b_algoheader>.b_imagePair {
padding-bottom: 0
}
.b_algo>.b_algoheader h2 {
cursor: pointer
}
.b_algo>.b_algoheader a {
cursor: auto
}
.b_algo>.b_algoheader {
margin: -12px -16px 0 -16px
}
.b_algo>.b_algoheader>a:first-of-type {
display: block;
padding: 12px 16px 0 16px
}
z {
a: 1
}
z {
a: 1
}
#b_results .b_lineclamp1 {
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
overflow: hidden;
white-space: normal
}
#b_results .b_lineclamp2 {
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
white-space: normal
}
#b_results .b_lineclamp3 {
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
overflow: hidden;
white-space: normal
}
#b_results .b_lineclamp4 {
display: -webkit-box;
-webkit-line-clamp: 4;
-webkit-box-orient: vertical;
overflow: hidden;
white-space: normal
}
#b_results .b_lineclamp5 {
display: -webkit-box;
-webkit-line-clamp: 5;
-webkit-box-orient: vertical;
overflow: hidden;
white-space: normal
}
z {
a: 1
}
z {
a: 1
}
z {
a: 1
}
z {
a: 1
}
z {
a: 1
}
</style>
<link rel="stylesheet" href="/rp/TbE9r2i8K-3X4Jg222iQY_f_7pQ.br.css" type="text/css" />
<link rel="stylesheet" href="/rp/sKMD9beH8gtVDJ1_u4M6ZXNDOy8.br.css" type="text/css" />
<style type="text/css">
body {
max-width: unset
}
</style>
<script type="text/javascript">//<![CDATA[
(function () { function n (n) { n = sb_ie ? _w.event : n; (!n.altKey || n.ctrlKey || n.shiftKey) && (n.key && n.key === "Enter" || n.keyCode && n.keyCode === 13) && _w.si_ct(sb_ie ? n.srcElement : n.target, !1, n, "enter") } sj_be(document, "keydown", n, !1) })(); (function () { function n (n) { _w.si_ct(sb_ie ? _w.event.srcElement : n.target, !1, _w.event || n) } sj_be(document, "mousedown", n, !1) })(); _w.si_sbwu = function (n) { var r = _G.BQIG == null ? _G.IG : _G.BQIG, u = "/fd/ls/GLinkPingPost.aspx?IG=" + r + n, t = "sendBeacon", i = !1; if (navigator && navigator[t]) try { navigator[t](u, ""); i = !0 } catch (f) { } return i }; ClTrCo = {}; var ctcc = 0, clc = _w.ClTrCo || {}; _w.si_ct = function (n, t, i, r) { var u, o, e, s, f, a, h, c, l; if (clc.SharedClickSuppressed) return !0; u = "getAttribute"; try { for (; n !== document.body; n = n.parentNode) { if (!n || n === document || n[u]("data-noct")) break; if (o = (n.tagName === "A" || n[u]("data-clicks")) && (n[u]("h") || n[u]("data-h")) || n[u]("_ct"), o) { e = n[u]("_ctf"); s = -1; i && (i.type === "keydown" ? s = -2 : i.button != null && (s = i.button)); e && _w[e] || (e = "si_T"); e === "si_T" && (f = n[u]("href"), _G !== undefined && _G.EF !== undefined && _G.EF.newtabredironclicktracking === 1 && f.indexOf("/newtabredir") == 0 ? (a = new RegExp("[?&]?url=([^&]*)(&|$)"), h = f.match(a), h && (f = f.indexOf("&be=1") >= 0 ? encodeURIComponent(atob(decodeURIComponent(h[1]))) : h[1])) : f = encodeURIComponent(n[u]("href")), clc.furl && !n[u]("data-private") ? o += "&url=" + f : clc.mfurl && (o += "&abc=" + f)); r && (o += "&source=" + r); c = ""; clc.mc && (c = "&c=" + ctcc++); l = "&" + o + c; _w.si_sbwu(l) || _w[e] && _w[e](l, n, i, s); break } if (t) break } } catch (v) { _w.SharedLogHelper ? SharedLogHelper.LogWarning("clickEX", null, v) : (new Image).src = _G.lsUrl + '&Type=Event.ClientInst&DATA=[{"T":"CI.Warning","FID":"CI","Name":"JSWarning","Text":' + v.message + "}]" } return !0 }; _w.si_sbwu || (_w.si_sbwu = function () { return !1 }), function () { _w._G && (_G.si_ct_e = "click") }(); function rdr_T (n) { var u = _w.event, f = !0, e = "getAttribute", i, t, r; if (navigator.cookieEnabled && _G && _G.SUIH && u && u.button < 2 && (t = u.target || u.srcElement)) { for (; t !== _d.body; t = t.parentNode)if (t.tagName == "A") break; i = t[e]("href"); var o = t[e]("h") || t[e]("_ct"), h = _w.sj_isAjax && t.host === location.host && t.pathname === "/search", c = t.hash ? t.search === _w.location.search : !1, s = !0; try { s = (_d.cookie.match(/SRCHUID/g) || []).length === 1 } catch (l) { } f = !(!h && o && "&" + o === n && _w.btoa && t.protocol && t.protocol.indexOf("http") > -1 && !c && s) } if (!f && i && i.indexOf(_G.gpUrl) < 0) { for (i = btoa(i).replace(/\+/g, "-").replace(/\//g, "_"), r = i.length - 1; r >= 0 && i.charCodeAt(r) == 61; r--); i = _G.gpUrl + "IG=" + _G.IG + "&" + n + "&SUIH=" + _G.SUIH + "&redir=" + i.substr(0, r + 1); t.setAttribute("href", i) } return f && _w.si_T && _w.si_T(n), !0 }; var perf; (function (n) { function f (n) { return i.hasOwnProperty(n) ? i[n] : n } function e (n) { var t = "S"; return n == 0 ? t = "P" : n == 2 && (t = "M"), t } function o (n) { for (var c, i = [], t = {}, r, l = 0; l < n.length; l++) { var a = n[l], o = a.v, s = a.t, h = a.k; s === 0 && (h = f(h), o = o.toString(36)); s === 3 ? i.push("".concat(h, ":").concat(o)) : (r = t[s] = t[s] || [], r.push("".concat(h, ":").concat(o))) } for (c in t) t.hasOwnProperty(c) && (r = t[c], i.push("".concat(e(+c), ':"').concat(r.join(","), '"'))); return i.push(u), i } for (var r = ["redirectStart", "redirectEnd", "fetchStart", "domainLookupStart", "domainLookupEnd", "connectStart", "secureConnectionStart", "connectEnd", "requestStart", "responseStart", "responseEnd", "domLoading", "domInteractive", "domContentLoadedEventStart", "domContentLoadedEventEnd", "domComplete", "loadEventStart", "loadEventEnd", "unloadEventStart", "unloadEventEnd", "firstChunkEnd", "secondChunkStart", "htmlEnd", "pageEnd", "msFirstPaint"], u = "v:1.1", i = {}, t = 0; t < r.length; t++)i[r[t]] = t; n.compress = o })(perf || (perf = {})); window.perf = window.perf || {}, function (n) { n.log = function (t, i) { var f = n.compress(t), r; f.push('T:"CI.Perf",FID:"CI",Name:"PerfV2"'); var e = "/fd/ls/lsp.aspx?", o = "sendBeacon", h = "<E><T>Event.ClientInst<\/T><IG>".concat(_G.IG, "<\/IG><TS>").concat(i, "<\/TS><D><![CDATA[{").concat(f.join(","), "}]\]><\/D><\/E>"), s = "<ClientInstRequest><Events>".concat(h, "<\/Events><STS>").concat(i, "<\/STS><\/ClientInstRequest>"), u = !_w.navigator || !navigator[o]; if (!u) try { navigator[o](e, s) } catch (c) { u = !0 } u && (r = sj_gx(), r.open("POST", e, !0), r.setRequestHeader("Content-Type", "text/xml"), r.send(s)) } }(window.perf); var perf; (function (n) { function a () { return c(Math.random() * 1e4) } function o () { return y ? c(f.now()) + l : +new Date } function v (n, r, f) { t.length === 0 && i && sb_st(u, 1e3); t.push({ k: n, v: r, t: f }) } function p (n) { return i || (r = n), !i } function w (n, t) { t || (t = o()); v(n, t, 0) } function b (n, t) { v(n, t, 1) } function u () { var u, f; if (t.length) { for (u = 0; u < t.length; u++)f = t[u], f.t === 0 && (f.v -= r); t.push({ k: "id", v: e, t: 3 }); n.log(t, o()); t = []; i = !0 } } function k () { r = o(); e = a(); i = !1; sj_evt.bind("onP1", u) } var s = "performance", h = !!_w[s], f = _w[s], y = h && !!f.now, c = Math.round, t = [], i = !1, l, r, e; h ? l = r = f.timing.navigationStart : r = _w.si_ST ? _w.si_ST : +new Date; e = a(); n.setStartTime = p; n.mark = w; n.record = b; n.flush = u; n.reset = k; sj_be(window, "load", u, !1); sj_be(window, "beforeunload", u, !1) })(perf || (perf = {})); _w.si_PP = function (n, t, i) { var r, o, l, h, e, c; if (!_G.PPS) { for (o = ["FC", "BC", "SE", "TC", "H", "BP", null]; r = o.shift();)o.push('"' + r + '":' + (_G[r + "T"] ? _G[r + "T"] - _G.ST : -1)); var u = _w.perf, s = "navigation", r, f = i || _w.performance && _w.performance.timing; if (f && u) { if (l = f.navigationStart, u.setStartTime(l), l >= 0) { for (r in f) h = f[r], typeof h == "number" && h > 0 && r !== "navigationStart" && r !== s && u.mark(r, h); _G.FCT && u.mark("FN", _G.FCT); _G.BCT && u.mark("BN", _G.BCT) } u.record("nav", s in f ? f[s] : performance[s].type) } e = "connection"; c = ""; _w.navigator && navigator[e] && (c = ',"net":"'.concat(navigator[e].type, '"'), navigator[e].downlinkMax && (c += ',"dlMax":"'.concat(navigator[e].downlinkMax, '"'))); _G.PPImg = new Image; _G.PPImg.src = _G.lsUrl + '&Type=Event.CPT&DATA={"pp":{"S":"' + (t || "L") + '",' + o.join(",") + ',"CT":' + (n - _G.ST) + ',"IL":' + _d.images.length + "}" + (_G.C1 ? "," + _G.C1 : "") + c + "}" + (_G.P ? "&P=" + _G.P : "") + (_G.DA ? "&DA=" + _G.DA : "") + (_G.MN ? "&MN=" + _G.MN : ""); _G.PPS = 1; sb_st(function () { u && u.flush(); sj_evt.fire("onPP"); sj_evt.fire(_w.p1) }, 1) } }; _w.onbeforeunload = function () { si_PP(new Date, "A") }; sj_evt.bind("ajax.requestSent", function () { window.perf && perf.reset() });
//]]></script>
</head>
<body id="bpage">
<script type="text/javascript">//<![CDATA[
var logMetaError = function (n) { (new Image).src = _G.lsUrl + '&Type=Event.ClientInst&DATA=[{"T":"CI.MetaError","FID":"CI","Name":"MetaJSError","Text":"' + escape(n) + '"}]' }, getHref = function () { return location.href }, regexEscape; try { regexEscape = function (n) { return n.replace(/([.?*+^$&[\]\\(){}|<>-])/g, "\\$1") }; function jsErrorHandler (n) { var s, r, y, p, u, f, w, e, h, c, o; try { if (s = "ERC", r = window[s], r = r ? r + 1 : 1, r === 16 && (n = new Error("max errors reached")), r > 16) return; window[s] = r; var l = n.error || n, b = '"noMessage"', k = n.filename, d = n.lineno, g = n.colno, nt = n.extra, a = l.severity || "Error", tt = l.message || b, i = l.stack, t = '"' + escape(tt.replace(/"/g, "")) + '"', it = new RegExp(regexEscape(getHref()), "g"); if (i) { for (y = /\(([^\)]+):[0-9]+:[0-9]+\)/g, u = {}; (p = y.exec(i)) !== null;)f = p[1], u[f] ? u[f]++ : u[f] = 1; e = 0; for (h in u) u[h] > 1 && (c = regexEscape(h), w = new RegExp(c, "g"), i = i.replace(w, e), i += "#" + e + "=" + c, e++); i = i.replace(it, "self").replace(/"/g, ""); t += ',"Stack":"' + (escape(i) + '"') } if (k && (t += ',"Meta":"' + escape(k.replace(it, "self")) + '"'), d && (t += ',"Line":"' + d + '"'), g && (t += ',"Char":"' + g + '"'), nt && (t += ',"ExtraInfo":"' + nt + '"'), tt === b) if (a = "Warning", t += ',"ObjectToString":"' + n.toString() + '"', JSON && JSON.stringify) t += ',"JSON":"' + escape(JSON.stringify(n)) + '"'; else for (o in n) n.hasOwnProperty(o) && (t += ',"' + o + '":"' + n[o] + '"'); var rt = (new Date).getTime(), ut = '"T":"CI.' + a + '","FID":"CI","Name":"JS' + a + '","Text":' + t + "", ft = "<E><T>Event.ClientInst<\/T><IG>" + _G.IG + "<\/IG><TS>" + rt + "<\/TS><D><![CDATA[[{" + ut + "}]]\]><\/D><\/E>", et = "<ClientInstRequest><Events>" + ft + "<\/Events><STS>" + rt + "<\/STS><\/ClientInstRequest>", v = new XMLHttpRequest; v.open("POST", "/fd/ls/lsp.aspx?", !0); v.setRequestHeader("Content-Type", "text/xml"); v.send(et); typeof sj_evt != "undefined" && sj_evt.fire("ErrorInstrumentation", t) } catch (ot) { logMetaError("Failed to execute error handler. " + ot.message) } } window.addEventListener && window.addEventListener("error", jsErrorHandler, !1); window.addEventListener || window.onerror || (window.onerror = function (n, t, i, r, u) { var f = "", e; typeof n == "object" && n.srcElement && n.srcElement.src ? f = "\"ScriptSrc = '" + escape(n.srcElement.src.replace(/'/g, "")) + "'\"" : (n = "" + n, f = '"' + escape(n.replace(/"/g, "")) + '","Meta":"' + escape(t) + '","Line":' + i + ',"Char": ' + r, u && u.stack && (e = new RegExp(regexEscape(getHref()), "g"), f += ',"Stack":"' + escape(u.stack.replace(e, "self").replace(/"/g, "") + '"'))); (new Image).src = _G.lsUrl + '&Type=Event.ClientInst&DATA=[{"T":"CI.GetError","FID":"CI","Name":"JSGetError","Text":' + f + "}]"; typeof sj_evt != "undefined" && sj_evt.fire("ErrorInstrumentation", f) }) } catch (e) { logMetaError("Failed to bind error handler " + e.message) }; var sj_b = _d.body; _w.InstLogQueueKeyFetcher = { Get: function (n) { var t = "eventLogQueue"; return n.indexOf("proactive") == 1 || n.indexOf("search") == 1 || n.indexOf("zinc") == 1 ? t + "_Online" : t + "_Offline" }, GetSharedLocation: function () { return "eventLogQueue_Shared" }, CanUploadSharedMessages: function (n) { return _w.useSharedLocalStorage && n.indexOf("AS/API") === 1 ? !0 : !1 } }; _w.LogUploadCapFeatureEnabled = !1; var CoreUtilities; (function (n) { function i (n) { for (var r = [], i = 1; i < arguments.length; i++)r[i - 1] = arguments[i]; return t.apply(null, [null, n].concat(r)) } function t (n, t) { for (var i = [], r = 2; r < arguments.length; r++)i[r - 2] = arguments[r]; return function () { for (var f, r = [], u = 0; u < arguments.length; u++)r[u] = arguments[u]; if (r && r.length !== 0) for (f in i) i.hasOwnProperty(f) && r.push(i[f]); else r = i; return t.apply(n, r) } } function r () { for (var n, r, t = [], i = 0; i < arguments.length; i++)t[i] = arguments[i]; for (n = t[0], r = 1; r < t.length; r++)if (n) n = n[t[r]]; else return null; return n } n.deferFunction = i; n.deferMethod = t; n.getProperty = r; window.sj_df = i; window.sj_dm = t; window.sj_gp = r })(CoreUtilities || (CoreUtilities = {})); _w.useSharedLocalStorage = !1;
//]]></script>
<script type="text/javascript" crossorigin="anonymous"
src="/rp/5_njacTHNI5UUdpA3bwOxQr_P0s.br.js"></script>
<script type="text/javascript">//<![CDATA[
var __spreadArray = this && this.__spreadArray || function (n, t, i) { if (i || arguments.length === 2) for (var r = 0, f = t.length, u; r < f; r++)!u && r in t || (u || (u = Array.prototype.slice.call(t, 0, r)), u[r] = t[r]); return n.concat(u || Array.prototype.slice.call(t)) }; define("clientinst_xls", ["require", "exports"], function (n, t) { function si () { function n (n, t) { typeof i[n] == "undefined" && (i[n] = t) } _w.ClientInstConfig || (_w.ClientInstConfig = {}); i = ClientInstConfig; n("flushInterval", 5e3); n("retryInterval", 1e3); n("maxStorageUse", 5e5); n("maxBatchSize", 1e5); n("queueDumpInterval", 500); n("waitForPageInfo", !1); n("pageInfoTimeout", 5e3); n("logUploadCapSizeInChar", 15728640 * .5); n("logUploadCapIntervalInDays", 30); n("isInstrumentationEnabled", !0); n("maxDirectErrors", 3) } function yt () { ut = 0; p = _G.ST ? _G.ST.getTime() : 0 } function f (n, t, r, u) { var f, h, e, o; if (i.isInstrumentationEnabled) if (f = { errorType: n, failCount: t }, d(f), u) { vt++; vt > i.maxDirectErrors && (f.errorType = "Overloaded", i.isInstrumentationEnabled = !1); h = { impressionGuid: r, previousImpressionGuid: null, timestamp: (new Date).getTime(), type: s.EVENT, data: { eventType: rt, eventData: f } }; e = et([h], []); try { ht(e) || (o = sj_gx(), o.open("POST", _G.XLS, !0), o.send(e)) } catch (c) { throw c; } } else st(rt, f, null, null, null, r, null, null) } function hi () { function t () { o || (o = function () { }); pt(); f("PageInfoTimedOut", 0, _G.IG) } si(); yt(); typeof h != "undefined" && h.bind && h.bind("ajax.unload", yt); try { u = _w.localStorage; r.initialize() } catch (e) { } var n = null; i.waitForPageInfo && (n = sb_st(t, i.pageInfoTimeout)); sj_evt.bind("ClientInst.PageInstInfo", function (t) { n && (sb_ct(n), n = null); o = t[1]; o && pt() }) } function pt () { for (var n = 0, t, i; ft.length > 0;) { try { i = ft.shift(); t = JSON.parse(i) } catch (r) { n++; continue } o && o(t.data); w(t) } n > 0 && f("InvalidIncompleteImpressions", n, _G.IG) } function w (n) { r.append(n); l() } function a (n) { return JSON.stringify(n).replace(/]]>/g, "]]]\]><![CDATA[>") } function ci (n, t, i) { var f, u, r; t.push("<E>", "<T>Event.", n.data.eventType, "<\/T>", "<IG>", n.impressionGuid, "<\/IG>"); n.previousImpressionGuid && t.push("<PrevIG>", n.previousImpressionGuid, "<\/PrevIG>"); n.dominantImpressionGuid && n.previousImpressionGuid && t.push("<DominantIG>", n.dominantImpressionGuid, "<\/DominantIG>"); f = n.data.dataSources; f && t.push("<DS><![CDATA[", a(f), "]\]><\/DS>"); u = n.data.pageLayout; u && b(u) && t.push("<Page><L><![CDATA[", a(u), "]\]><\/L><\/Page>"); r = n.data.eventData; r || (r = n.data.eventData = {}); r.UTS = i; t.push("<D><![CDATA[", a(r), "]\]><\/D>", "<TS>", n.timestamp, "<\/TS>", "<\/E>") } function b (n) { var t = !1, i; try { n instanceof Array ? t = n.every(b) : (t = !!n.T, i = n.L, t && i && (t = b(i))) } catch (r) { return SharedLogHelper.LogWarning("PageLayoutValidationException", null, r), !1 } return t || SharedLogHelper.LogWarning("PageLayoutValidationException", JSON ? JSON.stringify(n) : n, null), t } function k (n, t, i) { n.push('<requestInfo key="', t, '" value="', i, '"/>') } function li (n, t, i) { function f (n) { return n ? n.replace(/&/g, "&").replace(/"/g, """) : "" } var r = n.data, e, u, c, o, s, h; t.push("<Group>", "<M>", "<IG>", n.impressionGuid, "<\/IG>", "<DS><![CDATA[", a(r.dataSources), "]\]><\/DS>"); e = r.enrichedClientInfo; e || (e = {}); e.ImpressionUrl = r.impressionUrl; _G.AppVer && (e.ResourcesVersion = _G.AppVer); u = n.data.eventData; u || (u = n.data.eventData = {}); u.EnrichedClientInfo = e; u.TS = r.clientTimestamp; u.UTS = i; c = r.uxClassification; c && (u.UxClassification = c); _w.sj_cook && sj_cook.parse && (u.Cookies = sj_cook.parse()); t.push("<D><![CDATA[", a(u), "]\]><\/D>"); t.push("<Page>", "<Name>", r.pageName, "<\/Name>"); o = r.layoutNodes; o && b(o) && t.push("<L><![CDATA[", a(o), "]\]><\/L>"); t.push("<\/Page>", "<TS>", n.timestamp, "<\/TS>", "<Ovr>"); k(t, "RawQuery", f(r.rawQuery)); k(t, "IsQuery", f(r.isQuery.toString())); k(t, "Form", f(r.form)); s = r.userInfoOverrides; for (h in s) s.hasOwnProperty(h) && k(t, f(h), f(s[h])); t.push('<userInfo key="AppName" value="', f(r.appName), '"/>', "<\/Ovr>", "<\/M>", "<\/Group>") } function d (n) { var t = window.location.href, i, r, u; return v && t.indexOf(v) === 0 || (i = t.indexOf("?"), i < 0 && (i = t.indexOf("#")), v = i < 0 ? t : t.substring(0, i), r = _w.ThresholdUtilities, r && (u = r.getUrlParameter(t, "FORM"), u && (v += "?FORM=" + u))), n.CurUrl = v, n.Pivot = _G.PN, typeof ThresholdUtilities != "undefined" && _w.SearchAppWrapper && _w.SearchAppWrapper.CortanaApp && ThresholdUtilities.getCortanaHeaders(function (t) { if (t) { var i; (i = t["X-BM-ClientFeatures"]) && (n.CF = i); (i = t["X-BM-FlightedFeatures"]) && (n.FF = i) } }), n } function et (n, t) { var r = ["<ClientInstRequest>"], u = (new Date).getTime(), f = _G.CID || sj_cook.get(lt, lt), e, i, o; if (f && r.push("<CID>", f, "<\/CID>"), n.length > 0) { for (r.push("<Events>"), i = 0; i < n.length; i++)e = n[i], ci(e, r, u); r.push("<\/Events>") } if (t.length > 0) for (i = 0; i < t.length; i++)o = t[i], li(o, r, u); return r.push("<\/ClientInstRequest>"), r.join("") } function l (n, t) { if (n === void 0 && (n = !1), t === void 0 && (t = !0), i.isInstrumentationEnabled) { var r = n ? c.retryQueue : c.mainQueue; !r.flushTimeoutHandle && typeof tt != "undefined" && tt.setTimeout && (r.flushTimeoutHandle = tt.setTimeout(function () { return wt(n, r, !1, t) }, r.getInterval())) } } function wt (n, t, u, o, s) { var it, v, h, p, g, w, b, nt, k, y, d, rt, a, tt; if ((o === void 0 && (o = !0), i.isInstrumentationEnabled) && (sb_ct(t.flushTimeoutHandle), t.flushTimeoutHandle = null, !n || !c.mainQueue.inProgressUpload)) { if (!n && c.retryQueue.inProgressUpload && c.retryQueue.inProgressUpload.abort(), t.inProgressUpload) if (it = (new Date).getTime() - t.requestSentTimestamp, u || it > i.flushInterval) t.inProgressUpload.abort(), u ? f("SendAbortedForceFlush", 1, _G.IG) : f("SendTimedOut", 1, _G.IG); else return; if (v = r.getBatch(n), v.length != 0) { for (h = {}, p = 0; p < v.events.length; p++)g = v.events[p], w = g.flights, h[w] || (h[w] = { events: [], mpis: [] }), h[w].events.push(g.log); for (b = 0; b < v.masterPageImpressions.length; b++)nt = v.masterPageImpressions[b], k = nt.flights, h[k] || (h[k] = { events: [], mpis: [] }), h[k].mpis.push(nt.log); for (y in h) { if (d = et(h[y].events, h[y].mpis), rt = s && s.useSendBeacon || !1, (rt || ii()) && ri(_G.XLS, d)) { r.clearSentItems(n) && !n && l(!1, s); l(!0, s); continue } a = sj_gx(); a.open("POST", _G.XLS, o); tt = sj_df(ai, a, t, n); o && (i.flushInterval >= 1e3 && (a.timeout = i.flushInterval), a.onload = tt); a.setRequestHeader("Content-type", "text/xml"); y !== "" && (a.setRequestHeader("X-MSEdge-ExternalExpType", "JointCoord"), a.setRequestHeader("X-MSEdge-ExternalExp", y)); t.inProgressUpload = a; t.requestSentTimestamp = (new Date).getTime(); a.send(d); o || tt(null) } } } } function ai (n, t, i, u) { if (t.readyState === 4) { i.inProgressUpload = null; var f = Math.floor(t.status / 100); f === 2 ? (r.clearSentItems(u) && !u && l(!1), l(!0)) : f === 4 ? (r.markFailedItems(!0, u), l(!0)) : r.markFailedItems(!1, u); u && r.recordRetryAttempt() } } function bt (n, t, i) { n === void 0 && (n = !1); t === void 0 && (t = !0); wt(!1, c.mainQueue, n, t, i) } function ot (n, t, i, r, u, f, e, o, h) { var c = {}, l, a; if (d(c), t) if (typeof t == "string") c.Text = t; else for (l in t) t.hasOwnProperty(l) && (c[l] = t[l]); return i && (c.T = "CI." + i), a = h || (new Date).getTime(), c.TS = a, c.RTS = a - p, c.SEQ = ut++, { type: s.EVENT, impressionGuid: f != null ? f : _G.IG, previousImpressionGuid: e, timestamp: a, data: { eventType: n, eventData: c, dataSources: r, pageLayout: u }, dominantImpressionGuid: o } } function kt (n) { var i = et(n, []), t; ht(i) || (t = sj_gx(), t.open("POST", _G.XLS), t.setRequestHeader("Content-type", "text/xml"), t.send(i)) } function st (n, t, r, u, f, e, o, s, h) { var c, l, a; if (EventsToDuplicate && n === "Click" && EventsToDuplicate.indexOf("duplicateClickOnLs") >= 0 && (c = _G.gpUrl + "IG=" + _G.IG + "&ID=" + t.AppNS + "," + t.K, ht("", c) || (_G.GPImg = new Image, _G.GPImg.src = c), n = "XlsDelayedClick"), !_G.XLS) throw new Error("_G.XLS is necessary for clientinst_xls, but it is not defined"); i.isInstrumentationEnabled && (l = ot(n, t, r, u, f, e, o, s, h), EventsToDuplicate && (EventsToDuplicate.indexOf("ALL") >= 0 || EventsToDuplicate.indexOf(n) >= 0) && (a = ot("Immediate" + n, t, r, u, f, e, o, s, h), kt([a])), w(l)) } function dt (n) { var t, r, u; i.isInstrumentationEnabled && (o && o(n), n.clientTimestamp || (n.clientTimestamp = (new Date).getTime()), t = n.eventData, t || (t = n.eventData = {}), d(t), r = { type: s.MASTER_PAGE_IMPRESSION, impressionGuid: n.impressionGuid ? n.impressionGuid : _G.IG, previousImpressionGuid: null, timestamp: n.clientTimestamp, data: n }, EventsToDuplicate && (EventsToDuplicate.indexOf("ALL") >= 0 || EventsToDuplicate.indexOf("masterPageImpression") >= 0) && (u = ot("ImmediateMaster", t, n.impressionUrl, n.dataSources, n.layoutNodes, n.impressionGuid, null, null), kt([u])), o || !i.waitForPageInfo ? w(r) : ft.push(JSON.stringify(r))) } function ii () { return _G !== undefined && _G.EF !== undefined && _G.EF.logsb !== undefined && _G.EF.logsb === 1 } function ht (n, t) { return (t === void 0 && (t = _G.XLS), !ii()) ? !1 : ri(t, n) } function ri (n, t) { var i = "sendBeacon", r = !1; if (navigator && navigator[i]) try { r = navigator[i](n, t) } catch (u) { } return r } function ui (n, t) { n === void 0 && (n = !0); r.dumpToStorage(); bt(!0, n, t) } function nt () { r.dumpToStorage(); bt(!1) } function fi () { r.dumpToStorage(!0) } function ct () { r.dumpToStorage() } function ei () { y = null; _CachedFlights = undefined } var r, c, gt, ni, ti, g; t.__esModule = !0; t.ResetState = t.SaveLogsToLocalStorage = t.SaveLogsToSharedStorage = t.FlushMainQueueDontForce = t.ForceFlush = t.Log2 = t.LogInstrumented = t.Log = t.LogMasterPageImpression = t.LogEvent = void 0; var tt = n("env"), it = n("event.native"), h = n("event.custom"), e = "Shared", s; (function (n) { n[n.EVENT = 0] = "EVENT"; n[n.MASTER_PAGE_IMPRESSION = 1] = "MASTER_PAGE_IMPRESSION" })(s || (s = {})); var lt = "MUID", y = null, rt = "CIQueueError", i, oi = 864e5, ut, p, u, ft = [], o, v, at, vt = 0; (function (n) { function k () { return c && i.isInstrumentationEnabled } function d (n) { var i, t; if (n === void 0 && (n = !1), k()) { i = ct(n); try { t = n ? v : h; u[t] = i; u[t + "_logUploadIntervalStartDate"] = o; u[t + "_uploadedLogSizeInInterval"] = r } catch (f) { if (f.name.toLowerCase().indexOf("quota") >= 0) c = !1; else throw f; } } } function p () { k() && (a && sb_ct(a), a = sb_st(d, i.queueDumpInterval)) } function tt (n, t) { var i = JSON.stringify(n), r = i.length + 3; return n.size = r, t ? i.replace('"size":0', '"size":' + r) : i } function it (n) { return y === null && typeof _CachedFlights != "undefined" && _CachedFlights.sort && (y = _CachedFlights.sort().join(",")), { log: n, lastSendErrorTimeStamp: 0, inProgress: !1, size: 0, flights: y } } function ut () { var n, r, i; if (u) { if (at(), n = u[h], t = [], typeof n == "string" || n && n.length !== 0) try { if (t = JSON.parse(n), t.some(function (n) { return !n.log })) f("PrimaryQueueRestoreInvalidItems", t.length, _G.IG), t = []; else if (r = t.length, r > 0) { for (i = 0; i < r; i++)t[i].inProgress = !1; l() } } catch (e) { f("PrimaryQueueRestoreFailed", 0, _G.IG) } u[h] = "[]"; c = !0 } } function ft (n) { var a = [], y = [], o = n ? e[0] : t, c, h, p, w, l, r, b; if (nt) { if (c = u[v], typeof c == "string" && c.length !== 0) try { h = JSON.parse(c); h.some(function (n) { return !n.log }) ? f("SharedQueueRestoreInvalidItems", h.length, _G.IG) : o ? Array.prototype.push.apply(o, h) : o = h } catch (k) { f("SharedQueueRestoreFailed", 0, _G.IG) } u[v] = "[]" } if (o) for (p = 0, w = o.length, l = 0; l < w; l++)if (r = o[l], n || !r.lastSendErrorTimeStamp) if (p += r.size, p <= i.maxBatchSize) r.inProgress = !0, b = r.log, b.type == s.MASTER_PAGE_IMPRESSION ? y.push(r) : a.push(r); else break; return { events: a, masterPageImpressions: y, length: a.length + y.length, isRetryBatch: n } } function et (n) { return t = t.filter(function (t) { return !t.inProgress && (!n || !!t.lastSendErrorTimeStamp) }), p(), t.length > 0 } function ot (n) { return n.log.type === s.EVENT && n.log.data && n.log.data.eventType === rt } function st (n, i) { for (var u = [], h = i ? e[0] : t, o = 0, r, s, c; o < h.length;)r = h[o], r.inProgress ? n ? (h.splice(o, 1), ot(r) || (r.lastSendErrorTimeStamp = (new Date).getTime(), u.push(r))) : (r.inProgress = !1, o++) : o++; s = u.length; s == 1 ? f("InvalidLogMessage", 1, u[0].log.impressionGuid) : s > 0 && (c = s / 2, e.push(u.slice(0, c)), e.push(u.slice(c))); p() } function ht () { var n, t, i; if (e.length > 0) { for (n = e[0], t = 0; t < n.length;)i = n[t], i.inProgress ? n.splice(t, 1) : t++; n.length == 0 && e.shift() } } function ct (n) { var c = JSON.stringify(t), e = c.length - i.maxStorageUse, o = t.length, u, r, s, h; if (e > 0) for (u = 0, r = 0; r < o; r++)if (s = t[r].size, u += s + 1, u >= e) { t.splice(0, r + 1); f("QueueOverflow", r + 1, _G.IG, !0); break } return h = JSON.stringify(t), n && t.splice(0, o), h } function lt (n) { var i = it(n); tt(i, !1); vt(i.size) && t.push(i); p() } function at () { var t = h + "_logUploadIntervalStartDate", f = h + "_uploadedLogSizeInInterval", n; o = u[t]; r = u[f]; n = sb_gt(); o == undefined || r == undefined ? w(n) : g(o, n) >= i.logUploadCapIntervalInDays && w(n) } function w (n) { o = n; r = 0 } function g (n, t) { var i = t - n; return i / oi } function vt (n) { var t, u; return i.isInstrumentationEnabled ? LogUploadCapFeatureEnabled ? (t = sb_gt(), g(o, t) >= i.logUploadCapIntervalInDays && w(t), r >= i.logUploadCapSizeInChar) ? !1 : (u = r + n, u >= i.logUploadCapSizeInChar) ? (f("LogUploadSizeLimitReached", 1, _G.IG, !0), r = i.logUploadCapSizeInChar, !1) : (r = u, !0) : !0 : !1 } var t = [], o, r, c = !1, a = null, e = [], b = _w.location.pathname, h = InstLogQueueKeyFetcher.Get(b), v = InstLogQueueKeyFetcher.GetSharedLocation(), nt = InstLogQueueKeyFetcher.CanUploadSharedMessages(b); n.dumpToStorage = d; n.initialize = ut; n.getBatch = ft; n.clearSentItems = et; n.markFailedItems = st; n.recordRetryAttempt = ht; n.append = lt })(r || (r = {})); c = { mainQueue: { getInterval: function () { return i.flushInterval } }, retryQueue: { getInterval: function () { return i.retryInterval } } }; t.LogEvent = st; t.LogMasterPageImpression = dt; gt = function (n, t, r, u) { for (var e = [], f = 4; f < arguments.length; f++)e[f - 4] = arguments[f]; i.isInstrumentationEnabled && (at || (g("Init", "CI", "Base"), at = !0), g(n, t, r, u, e)) }; t.Log = gt; ni = function (n, i, r, u, f, e, o) { t.Log2(n, i !== null && i !== void 0 ? i : r, null, null, u, f, o) }; t.LogInstrumented = ni; ti = function (n, t, i, r, u, f, e) { var o = Object.keys(e).reduce(function (n, t) { return __spreadArray(__spreadArray([], n, !0), [t, e[t]], !1) }, []); i && o.push("service", i); r && o.push("scenario", r); u && o.push("appNS", u); f && o.push("kValue", f); g(n, null, t, !1, o) }; t.Log2 = ti; g = function (n, t, r, u, f) { var a, e, c, l, o, h, v; if (i.isInstrumentationEnabled) { if (a = _G.IG, e = {}, f && f.length > 0 && f.length % 2 == 0) for (c = 0; c < f.length; c += 2)(l = f[c], l) && (o = l.toLowerCase(), h = f[c + 1], o === "impressionguid" ? a = h : o === "service" ? e.Service = h : o === "scenario" ? e.Scenario = h : o === "appns" ? e.AppNS = h : o === "k" || o === "kvalue" ? e.K = h : o === "pos" ? e.Pos = h : e[l] = h); v = (new Date).getTime(); e.T = "CI.".concat(n); e.TS = v; e.RTS = v - p; e.SEQ = ut++; e.Name = r !== null && r !== void 0 ? r : ""; e.FID = typeof t != "number" ? t !== null && t !== void 0 ? t : "" : ""; e.hasOwnProperty("K") || typeof t != "number" || (e.K = t); d(e); w({ type: s.EVENT, impressionGuid: a, previousImpressionGuid: null, timestamp: p, data: { eventType: "ClientInst", eventData: e } }) } }; t.ForceFlush = ui; hi(); t.FlushMainQueueDontForce = nt; t.SaveLogsToSharedStorage = fi; t.SaveLogsToLocalStorage = ct; t.ResetState = ei; typeof h != "undefined" && h.bind && (h.bind("onP1", nt, !0), h.bind("ajax.postload", nt, !0)); typeof it != "undefined" && it.bind && it.bind(_w, "beforeunload", ct, !1); _w.Log = { Log: t.Log }; _w.Log2 = { LogEvent: st, LogMasterPageImpression: dt, ForceFlush: ui, FlushMainQueueDontForce: nt, SaveLogsToSharedStorage: fi, ResetState: ei, SaveLogsToLocalStorage: ct }; _w.Shared2 = _w.Shared2 || {}; _w.Shared2.Log = { Log: t.Log, LogInstrumented: t.LogInstrumented }; _w.sj_log2 = t.Log2 }); (function (n) { var i, r, t; if (document.querySelector) { i = []; r = "ad"; function u () { var d = sb_gt(), v = document.documentElement, h = document.body, t = 0, u = -1, g = v.clientHeight, y = ["#b_results ." + _G.adc, ".sb_adsWv2", ".ads"], r, e, o, b, l, s, n, f, a, k; if (h) { r = 0; e = document.querySelector("#b_pole .pa_carousel_mlo"); e && (r = e.offsetHeight, u = e.offsetTop); var p = document.querySelector("#b_results #productAdCarousel"), c = document.querySelector("#b_results .pa_b_supertop"), w = document.querySelector("#b_results .bn_wide"); for (c ? (u = c.offsetTop, r = c.offsetHeight) : w ? r += w.offsetHeight : p && (r += p.offsetHeight), t = r, o = 0; o < y.length; o++)for (b = y[o], l = document.querySelectorAll(b), s = 0; s < l.length; s++)n = l[s], n && n.className.indexOf("b_adTop") !== -1 && (f = n.nextSibling, f && f instanceof Element && _w.getComputedStyle && (a = _w.getComputedStyle(f)) && a ? (k = parseFloat(a.marginTop), t += f.offsetTop - n.offsetTop - k) : t += n.offsetHeight, u === -1 && (u = n.offsetTop)); t === 0 && (t = -1); i = [u, t, v.clientWidth, g, h.offsetWidth, h.offsetHeight, sb_gt() - d] } } n ? (t = n.onbeforefire, n.onbeforefire = function () { t && t(); u(); n.mark(r, i) }) : (t = si_PP, si_PP = function () { u(); var n = '"' + r + '":[' + i.join() + "]"; _G.C1 = _G.C1 ? _G.C1 + "," + n : n; t.apply(null, [].slice.apply(arguments)) }) } })(_w.pp); _G.AppVer = "36188618"; var UndersideDefaultTrustedTypesPolicy; (function () { function r () { var n = window.trustedTypes; n && n.createPolicy && n.createPolicy("default", { createHTML: f, createScript: function (n) { return n }, createScriptURL: u }) } var i = ["www.bing.com", "www2.bing.com", "edgeservices.bing.com", "r.bing.com", "4.bing.com", "services.bingapis.com", "sydney.bing.com", "www.bingapis.com", "www.bing-exp.com", "www.staging-bing-int.com", "snrproxy.binginternal.com", "snrproxync.binginternal.com", "snrproxysc.binginternal.com", "snrproxyeast.binginternal.com", "snrproxywest.binginternal.com", "cetonc.binginternal.com", "cetosc.binginternal.com", "cetoeast.binginternal.com", "cetowest.binginternal.com", "rafd.staging-bing-int.com", "r.staging-bing-int.com"], u = function (n) { return t(n) ? n : (console.log("CreateScriptURL URL check failed:" + n), "") }, f = function (t) { var i = new RegExp("<script(.*?)(/>|s/>|>.*?<\/script>)", "gi"), r = new RegExp("src=['\"](.*?)['\"]", "gi"), u = new RegExp("<link(.*?)(/>|s/>|>.*?<\/link>)", "gi"), f = new RegExp("href=['\"](.*?)['\"]", "gi"); return n(t, i, r) && n(t, u, f) ? t : "" }, n = function (n, i, r) { for (var f, u; (f = i.exec(n)) !== null;)for (f.index === i.lastIndex && i.lastIndex++, u = void 0; (u = r.exec(f[0])) !== null;)if (console.log(u), u.index === r.lastIndex && r.lastIndex++, console.log(u[1]), !t(u[1])) return console.log("CreateHTML URL check failed :" + u[1]), !1; return !0 }, t = function (n) { var t = document.createElement("a"); return (t.href = n, t.hostname !== "localhost" && !i.some(function (n) { return t.hostname === n })) ? !1 : !0 }; r() })(UndersideDefaultTrustedTypesPolicy || (UndersideDefaultTrustedTypesPolicy = {})); var EdgeServicesXMLHttpRequest; (function (n) { function u (n) { n != null && n.Reroutes != null && (t = n.Reroutes, i = window.XMLHttpRequest.prototype.open, window.XMLHttpRequest.prototype.open = f) } function f (n, r, u, f, s) { var h, c, l, a; if (t == null || t.length == 0) return i.call(this, n, r, u, f, s); for (h = r, c = 0; c < t.length; c++)if (l = t[c], a = e(r, l.OriginalPath), l.Enabled && a != null) { h = o(a, r, l.RedirectPath); console.log("rerouted original url: " + r + " to new url: " + h); break } return i.call(this, n, h, u, f, s) } function e (n, t) { var i, u; if (!r(n) || !r(t)) return null; try { i = new URL(n, "https://edgeservices.bing.com") } catch (f) { return null } return (u = i.pathname, u.toLowerCase() != t.toLowerCase()) ? null : i } function o (n, t, i) { return r(i) ? i + n.search + n.hash : t } function r (n) { return n != null && n.trim() !== "" && n.startsWith("/") } var t, i; n.init = u })(EdgeServicesXMLHttpRequest || (EdgeServicesXMLHttpRequest = {})); var rerouteConfig = { "Reroutes": [{ "OriginalPath": "/financeapi/quote", "RedirectPath": "/edgesvc/thirdpartyaj/financeapi/quote", "Enabled": true }, { "OriginalPath": "/financeapi/financials", "RedirectPath": "/edgesvc/thirdpartyaj/financeapi/financials", "Enabled": true }, { "OriginalPath": "/covidans/locations", "RedirectPath": "/edgesvc/thirdpartyaj/covidans/locations", "Enabled": true }, { "OriginalPath": "/covidans/falcon", "RedirectPath": "/edgesvc/thirdpartyaj/covidans/falcon", "Enabled": true }, { "OriginalPath": "/covid-ans/getTab", "RedirectPath": "/edgesvc/thirdpartyaj/covidans/getTab", "Enabled": true }, { "OriginalPath": "/covid-vaccine/getMapData", "RedirectPath": "/edgesvc/thirdpartyaj/covidvaccine/getMapData", "Enabled": true }, { "OriginalPath": "/sharing/getsharecommoncontrol", "RedirectPath": "/edgesvc/thirdpartyaj/sharing/getsharecommoncontrol", "Enabled": true }, { "OriginalPath": "/sharing/getsharelink", "RedirectPath": "/edgesvc/thirdpartyaj/sharing/getsharelink", "Enabled": true }] }; EdgeServicesXMLHttpRequest.init(rerouteConfig);; var uxVariants = { "codexship": "1", "codexvar": "1", "convscope": "1", "edge_feature.frame_unrestricted": "1", "edge_feature.scope_channeldev": "1", "edge_feature.scope_chat": "1", "edge_feature.scope_coauthor": "1", "edge_feature.scope_noheader": "1", "feature.codexemailcc": "1", "feature.codexwinenable": "1", "feature.codexwingreet2": "1", "feature.codexwlong": "1", "feature.sydnoauth": "1", "feature.sydopcdlresponse2k": "1", "feature.sydopcdltokens19k": "1", "feature.sydoppdlresponse2k": "1", "feature.sydoppdltokens19k": "1", "feature.sydoptcricketansgnd": "1", "feature.sydoptdagslnv1": "1", "feature.sydoptresponseos": "1", "feature.sydperfwrapinput": "1", "feature.sydsid0329resp": "1", "feature.sydspcrsrvcf": "1", "feature.sydsuppolemon": "1", "feature.sydsuppolers": "1", "feature.udsedgedescpt": "1", "feature.udsensumcard": "1", "feature.udsfencurated3p": "1", "feature.udsfencurated3p3": "1", "feature.udsfencurated3pco": "1", "feature.udsfencurated3pco2": "1", "feature.udsfencuratedann": "1", "feature.udsfencurationgl": "1", "feature.udsilfdbk": "1", "feature.udsrstconv": "1", "feature.udssydshare": "1", "serpvertical": "UNDERSIDE", "underside": "1", "undersideex": "COMPOSE", "undersidev2": "1" }; var globalConsoleConfig = { "EnableDevMode": false, "GDPR_Regulated": false, "RefreshAccountLinkEndpoint": "/edgesvc/orgid/acclink/refresh", "RefreshRewardsUserStatusEndpoint": "/edgesvc/waitlist/refreshcook", "RefreshUserTokenEndpoint": "/edgesvc/orgid/idtoken/refresh", "UserStatusEndpoint": "/edgesvc/userstatus", "EnableClientDebugLog": false, "LogLevel": 1 }; var initUserStatus = { "CodexEnabled": true, "UserEligible": true, "UserSignedIn": true, "Identity": "123456", "Name": null, "Provider": "MSA", "PrefAuth": "MSA" };;
//]]></script>
<script type="text/javascript" crossorigin="anonymous"
src="/rp/v-yt__JfmqJs4YgvJl5rbreVtgc.br.js"></script>
<script type="text/javascript" crossorigin="anonymous"
src="/rp/jHEvPxlSHGjcxa0R2DNga7EYDSs.br.js"></script>
<script type="text/javascript" crossorigin="anonymous"
src="/rp/DFOfl8RS5jXmhEQw7Le9_v3N7-s.br.js"></script>
<script type="text/javascript" crossorigin="anonymous"
src="/rp/BejEPtU8DGwuoA4_8xk4-Td54QI.br.js"></script>
<!-- Trusted types script must be first JS script to load --><!-- Custom Edge Services XMLHttpRequest -->
<script type="text/javascript">//<![CDATA[
_G.FCT = new Date;
//]]></script>
<script type="text/javascript">//<![CDATA[
_G.BCT = new Date;
//]]></script>
<style type="text/css">
#b_header #id_h {
content-visibility: visible
}
.uds_coauthor_wrapper {
font-family: 'Segoe UI', "-apple-system", Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif;
color: #000;
height: 100vh;
width: 100%;
display: flex;
justify-content: center;
}
.uds_coauthor_wrapper .sidebar {
width: 100%;
min-width: 375px;
max-width: 960px;
position: absolute;
overflow: hidden;
display: flex;
flex-direction: column;
align-items: center;
padding: 10px;
height: 100%;
overflow: auto;
box-sizing: border-box
}
.uds_coauthor_wrapper .sidebar.detached {
margin-top: 0
}
.uds_coauthor_wrapper .child {
width: 100%;
box-sizing: border-box;
padding: 12px;
background: #fff;
border-radius: 5px;
box-shadow: 0 2px 4px rgba(0, 0, 0, .14), 0 0 2px rgba(0, 0, 0, .12);
margin-bottom: 10px;
display: flex;
flex-direction: column
}
.uds_coauthor_wrapper .child:last-child {
flex-grow: 1;
margin-bottom: 0
}
.uds_coauthor_wrapper textarea {
font-family: 'Segoe UI', "-apple-system", Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif;
padding: 8px;
border-radius: 10px;
border: 1px solid #e2e2e2;
box-shadow: 0 1px 1px #7a7a7a;
resize: vertical
}
.uds_coauthor_wrapper textarea#prompt_text {
scroll-padding-bottom: 22px;
padding-bottom: 22px
}
.uds_coauthor_wrapper textarea:focus {
box-shadow: 0 2px 0 #174ae4
}
.uds_coauthor_wrapper textarea:focus-visible {
border: 1px solid #e2e2e2;
outline: none
}
.uds_coauthor_wrapper #letter_counter {
display: flex;
position: relative;
color: #717171;
background: #fff;
left: 1px;
padding-left: 8px;
font-size: 12px;
line-height: 16px;
font-weight: 400;
bottom: 20px;
width: calc(100% - 20px);
height: 19px;
margin-bottom: -19px;
border-bottom-left-radius: 10px
}
.uds_coauthor_wrapper .button {
width: 100%;
background: linear-gradient(81.62deg, #2870ea 8.72%, #1b4aef 85.01%);
align-self: center;
border: none;
border-radius: 20px;
color: #fff;
padding: 7px 10px;
line-height: 22px;
font-size: 14px;
font-weight: 600;
font-family: 'Segoe UI', "-apple-system", Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif;
box-sizing: border-box;
text-decoration: none;
text-align: center
}
.uds_coauthor_wrapper .button:hover {
box-shadow: 0 1.2px 3.6px rgba(0, 0, 0, .1), 0 6.4px 14.4px rgba(0, 0, 0, .13);
cursor: pointer;
text-decoration: none
}
.uds_coauthor_wrapper .button.disabled {
cursor: default;
background: linear-gradient(0deg, rgba(255, 255, 255, .8), rgba(255, 255, 255, .8)), linear-gradient(81.62deg, #2870ea 8.72%, #1b4aef 85.01%)
}
.uds_coauthor_wrapper .button.secondary {
background: #fff;
border: 1px solid #174ae4;
color: #174ae4
}
.uds_coauthor_wrapper .button.disabled:hover {
box-shadow: none
}
.uds_coauthor_wrapper .button.secondary.disabled {
cursor: default;
color: #d1dbfa;
border-color: #d1dbfa;
background: rgba(255, 255, 255, .8)
}
.uds_coauthor_wrapper #prompt_text {
height: 50px;
min-height: 50px
}
.uds_coauthor_wrapper .length-options,
.uds_coauthor_wrapper .tone-options,
.uds_coauthor_wrapper .change-suggestions-options {
display: flex;
flex-wrap: wrap
}
.uds_coauthor_wrapper .tag {
margin: 4px;
padding: 1px 10px;
border-radius: 8px;
line-height: 22px;
height: 28px;
box-sizing: border-box;
color: #174ae4;
border: 1px solid #174ae4
}
.uds_coauthor_wrapper .tag span {
font-size: 12px;
font-weight: 600
}
.uds_coauthor_wrapper .tag.selected {
background: #174ae4;
color: #fff
}
.uds_coauthor_wrapper .tag.selected svg>path {
fill: #fff
}
.uds_coauthor_wrapper .tag:hover {
cursor: pointer;
background: #eff3ff
}
.uds_coauthor_wrapper .tag.selected:hover,
.uds_coauthor_wrapper #custom_tone_edit_button.tag.selected:hover {
background: #174ae4;
color: #fff
}
.uds_coauthor_wrapper #custom_tone_plus_button,
.uds_coauthor_wrapper #add_change_suggestion_button {
width: 28px;
padding: 7px 8px 8px 7px
}
.uds_coauthor_wrapper #custom_tone_plus_button svg,
.uds_coauthor_wrapper #add_change_suggestion_button svg {
display: block
}
.uds_coauthor_wrapper .custom_tone_container {
display: flex;
margin: 4px;
max-width: calc(40% - 4px)
}
.uds_coauthor_wrapper #custom_tone {
margin: 0;
border-radius: 8px 0 0 8px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis
}
.uds_coauthor_wrapper #custom_tone_edit_button {
width: 28px;
margin: 0 0 0 0;
border-left: none;
border-radius: 0 8px 8px 0;
padding: 5px
}
.uds_coauthor_wrapper #custom_tone_edit_button svg>path {
fill: #174ae4
}
.uds_coauthor_wrapper #custom_tone_edit_button.tag.selected {
margin-left: 1px
}
.uds_coauthor_wrapper #custom_tone_edit_button.tag.selected svg>path {
fill: #fff
}
.uds_coauthor_wrapper .custom-tone-edit-container,
.uds_coauthor_wrapper #custom_change_suggestion_container {
display: flex
}
.uds_coauthor_wrapper input,
.uds_coauthor_wrapper input:focus,
.uds_coauthor_wrapper input:focus-visible,
.uds_coauthor_wrapper input:hover {
width: 100%;
height: 20px;
margin: 4px 0 4px 4px;
padding: 5px 0 5px 13px;
border-radius: 4px 0 0 4px;
border: 1px;
font-family: 'Segoe UI', "-apple-system", Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif;
font-size: 14px;
font-weight: 400;
background-color: rgba(0, 0, 0, .05);
color: rgba(0, 0, 0, .85);
outline: none;
box-shadow: none
}
.uds_coauthor_wrapper #custom_tone_add_button,
.uds_coauthor_wrapper #custom_tone_save_button,
.uds_coauthor_wrapper #submit_change_suggestion_button {
height: 18px;
background-color: rgba(0, 0, 0, .05);
font-family: 'Segoe UI', "-apple-system", Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif;
font-size: 14px;
font-weight: 600;
line-height: 20px;
letter-spacing: 0;
text-align: center;
margin: 4px 4px 0 0;
padding: 5px 10px 7px 10px;
border-radius: 0 4px 4px 0;
border: 1px
}
.uds_coauthor_wrapper #submit_change_suggestion_button {
padding-top: 6px;
padding-bottom: 6px
}
.uds_coauthor_wrapper #custom_tone_add_button:not(.disabled) span:hover,
.uds_coauthor_wrapper #custom_tone_save_button:not(.disabled) span:hover,
.uds_coauthor_wrapper #submit_change_suggestion_button:not(.disabled):hover {
cursor: pointer;
color: rgba(0, 0, 0, .85)
}
.uds_coauthor_wrapper #custom_tone_add_button.disabled,
.uds_coauthor_wrapper #custom_tone_save_button.disabled {
color: rgba(0, 0, 0, .2)
}
.uds_coauthor_wrapper .paragraph-options {
display: flex;
flex-wrap: wrap
}
.uds_coauthor_wrapper .paragraph-option {
margin-right: 10px;
text-align: center;
display: flex;
flex-direction: column;
align-items: center
}
.uds_coauthor_wrapper .paragraph-option:hover .illustration {
cursor: pointer;
background: #eff3ff
}
.uds_coauthor_wrapper .paragraph-option.selected .illustration {
border-color: #174ae4
}
.uds_coauthor_wrapper .paragraph-option .illustration {
height: 50px;
width: 50px;
border: 2px solid #fff;
border-radius: 10px;
background: #f7f7f7;
padding: 3px
}
.uds_coauthor_wrapper .paragraph-option .illustration svg {
width: 50px;
height: 50px
}
.uds_coauthor_wrapper .paragraph-option p {
font-weight: 500;
font-size: 11px
}
.uds_coauthor_wrapper .option-section {
margin-top: 12px;
padding: 3px;
padding-top: 9px;
border: 1px solid #e8e8e8;
border-radius: 8px
}
.uds_coauthor_wrapper .header {
display: flex;
padding: 3px;
font-size: 14px;
line-height: 20px;
margin-bottom: 8px
}
.uds_coauthor_wrapper .header#preview_heading {
margin-bottom: 0
}
.uds_coauthor_wrapper .header.secondary {
color: #1a1a1a
}
.uds_coauthor_wrapper .header svg {
display: inline-block;
width: 18px;
height: 18px;
margin-right: 4px
}
.uds_coauthor_wrapper div.preview {
height: 100%;
position: relative;
margin-top: 8px
}
.uds_coauthor_wrapper #disclaimer_box {
padding: 4px;
color: #717171
}
.uds_coauthor_wrapper #preview_text {
height: 100%;
width: 100%;
box-sizing: border-box;
resize: none;
min-height: 200px;
padding-bottom: 45px;
scroll-padding-bottom: 45px
}
.uds_coauthor_wrapper .preview-options {
display: flex;
position: absolute;
bottom: 0;
border-bottom-left-radius: 8px;
border-bottom-right-radius: 8px;
right: 6px;
justify-content: flex-end;
box-sizing: border-box;
width: calc(100% - 8px);
background: #fff
}
.uds_coauthor_wrapper .preview-options.disabled {
background: rgba(0, 0, 0, 0)
}
.uds_coauthor_wrapper .preview-options .item {
width: 32px;
height: 32px;
border-radius: 3px;
margin-left: 4px;
display: flex;
align-items: center;
justify-content: center
}
.uds_coauthor_wrapper .preview-options .item:hover {
cursor: pointer;
background: #f7f7f7
}
.uds_coauthor_wrapper .preview-options .item.disabled svg>path,
.uds_coauthor_wrapper #submit_change_suggestion_button.disabled svg>path {
fill: #717171
}
.uds_coauthor_wrapper .preview-options .item.disabled:hover {
background: none;
cursor: auto
}
.uds_coauthor_wrapper div.preview #shimmer {
width: 98%;
height: 100px;
position: absolute;
top: 5px;
left: 5px
}
.uds_coauthor_wrapper div.preview #shimmer .line {
width: 95%;
height: 12px;
background: #e2e2e2;
border-radius: 4px;
margin: 3px;
-webkit-mask: linear-gradient(-60deg, #000 30%, rgba(0, 0, 0, .5), #000 70%) 0;
animation: uds-coauthor-shimmer 1.5s infinite
}
.uds_coauthor_wrapper div.preview #shimmer .line:last-child {
width: 50%
}
.uds_coauthor_wrapper div.preview #error {
position: absolute;
top: 8px;
left: 8px;
text-align: left;
display: flex;
color: #c42b1c
}
.uds_coauthor_wrapper div.preview #error>div {
margin-right: 8px
}
.uds_coauthor_wrapper #compose_button,
.uds_coauthor_wrapper #insert_button,
.uds_coauthor_wrapper #change_suggestions,
.uds_coauthor_wrapper #detached_copy_button {
margin-top: 12px
}
.uds_coauthor_wrapper #compose_button {
color: #fff
}
.uds_coauthor_wrapper #insert_button,
.uds_coauthor_wrapper #detached_copy_button {
color: #174ae4;
display: none;
}
.uds_coauthor_wrapper #insert_button.disabled,
.uds_coauthor_wrapper #detached_copy_button.disabled {
color: #d1dbfa
}
.uds_coauthor_wrapper .hidden {
display: none !important
}
.uds_coauthor_wrapper .aria-alert {
position: absolute;
top: -100px
}
.uds_coauthor_wrapper .change-suggestion.tag {
padding: 5px 12px;
font-size: 12px;
line-height: 16px;
max-width: calc(100% - 8px);
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
border-color: #a2b7f4
}
.uds_coauthor_wrapper .change-suggestion.tag:hover {
border-color: #174ae4
}
.uds_coauthor_wrapper #add_change_suggestion_button {
height: 28px;
width: 28px;
display: flex;
justify-content: center;
align-items: center
}
.uds_coauthor_wrapper .inline {
height: 200px;
overflow: hidden;
padding: 12px;
box-sizing: border-box;
background-color: #fff;
display: flex;
flex-direction: column;
gap: 12px
}
.uds_coauthor_wrapper .inline header {
display: flex;
height: 20px;
font-size: 12px;
color: rgba(0, 0, 0, .65);
font-weight: 600;
font-family: 'Segoe UI', "-apple-system", Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif
}
.uds_coauthor_wrapper .inline header svg {
width: 20px;
height: 20px
}
.uds_coauthor_wrapper .inline #inline_options {
display: flex;
gap: 4px
}
.uds_coauthor_wrapper .inline .inline-button svg {
width: 20px;
height: 20px
}
.uds_coauthor_wrapper .inline #inline_icon {
width: 20px;
height: 20px;
margin-right: 8px
}
.uds_coauthor_wrapper .inline #inline_close_button {
margin-left: auto;
width: 20px;
height: 20px
}
.uds_coauthor_wrapper .inline #inline_close_button:hover {
cursor: pointer
}
.uds_coauthor_wrapper .inline .inline-button {
background: linear-gradient(81.62deg, #2870ea 8.72%, #1b4aef 85.01%);
border: none;
border-radius: 4px;
color: #fff !important;
line-height: 14px;
font-size: 12px;
font-weight: 600;
font-family: 'Segoe UI', "-apple-system", Segoe, Tahoma, HelveticaNeue, Roboto, Arial, Verdana, sans-serif;
text-decoration: none;
display: flex;
height: 24px;
padding: 2px 8px;
justify-content: center;
align-items: center;
gap: 4px
}
.uds_coauthor_wrapper .inline-button:hover {
box-shadow: 0 1.2px 3.6px rgba(0, 0, 0, .1), 0 6.4px 14.4px rgba(0, 0, 0, .13);
cursor: pointer;
text-decoration: none
}
.uds_coauthor_wrapper .inline-button.disabled {
cursor: default;
background: linear-gradient(0deg, rgba(255, 255, 255, .8), rgba(255, 255, 255, .8)), linear-gradient(81.62deg, #2870ea 8.72%, #1b4aef 85.01%)
}
.uds_coauthor_wrapper .inline-button.secondary {
background: #fff;
border: 1px solid rgba(0, 0, 0, .1);
color: #000 !important;
font-weight: 500
}
.uds_coauthor_wrapper .inline-button.disabled:hover {
box-shadow: none
}
.uds_coauthor_wrapper .inline-button.secondary.disabled {
cursor: default;
color: #d1dbfa;
border-color: #d1dbfa;
background: #e2e2e2
}
.uds_coauthor_wrapper .inline #inline_preview {
position: relative
}
.uds_coauthor_wrapper .inline #inline_preview_text {
height: 100px;
width: 100%;
box-sizing: border-box;
background: linear-gradient(to right, #fff, #fff), linear-gradient(81.09deg, #18c1ed 8.85%, #3495ea 48.98%, #2161ef 89.11%);
border-radius: 8px;
border-style: solid;
border-width: 10px;
border: 2px solid transparent;
background-clip: padding-box, border-box;
background-origin: padding-box, border-box;
box-shadow: none;
padding: 12px
}
.uds_coauthor_wrapper .inline #inline_preview #inline_shimmer {
width: 98%;
height: 100px;
position: absolute;
top: 5px;
left: 5px
}
.uds_coauthor_wrapper .inline #inline_preview #inline_shimmer .line {
width: 95%;
height: 12px;
background: #e2e2e2;
border-radius: 4px;
margin: 3px;
-webkit-mask: linear-gradient(-60deg, #000 30%, rgba(0, 0, 0, .5), #000 70%) 0;
animation: uds-coauthor-shimmer 1.5s infinite
}
.uds_coauthor_wrapper .inline #inline_preview #inline_shimmer .line:last-child {
width: 50%
}
@keyframes uds-coauthor-shimmer {
100% {
-webkit-mask-position: 190px
}
}
#bpage.b_drk .uds_coauthor_wrapper {
color: #fff !important
}
#bpage.b_drk .uds_coauthor_wrapper textarea {
color: #fff !important
}
#bpage.b_drk .uds_coauthor_wrapper .child {
background: #2b2b2b;
box-shadow: 0 2px 4px rgba(255, 255, 255, .14), 0 0 2px rgba(255, 255, 255, .12)
}
#bpage.b_drk .uds_coauthor_wrapper textarea {
border-color: #686868;
box-shadow: 0 1px 1px #7a7a7a;
background: #333
}
#bpage.b_drk .uds_coauthor_wrapper textarea:focus,
#bpage.b_drk .uds_coauthor_wrapper input:focus,
#bpage.b_drk .uds_coauthor_wrapper #custom_tone_add_button,
#bpage.b_drk .uds_coauthor_wrapper #custom_tone_save_button,
#bpage.b_drk .uds_coauthor_wrapper #change_suggestions_input,
#bpage.b_drk .uds_coauthor_wrapper #submit_change_suggestion_button {
box-shadow: 0 2px 0 #a2b7f4
}
#bpage.b_drk .uds_coauthor_wrapper textarea:focus-visible {
border: 1px solid #686868
}
#bpage.b_drk .uds_coauthor_wrapper #letter_counter {
background: #333
}
#bpage.b_drk .uds_coauthor_wrapper .button {
background: linear-gradient(81.62deg, #2870ea 8.72%, #1b4aef 85.01%);
color: #fff
}
#bpage.b_drk .uds_coauthor_wrapper .button:hover:not(.disabled) {
box-shadow: 0 1.2px 3.6px rgba(255, 255, 255, .1), 0 6.4px 14.4px rgba(255, 255, 255, .13);
cursor: pointer;
text-decoration: none
}
#bpage.b_drk .uds_coauthor_wrapper .button.disabled {
background: linear-gradient(0deg, rgba(255, 255, 255, .8), rgba(255, 255, 255, .8)), linear-gradient(81.62deg, #2870ea 8.72%, #1b4aef 85.01%)
}
#bpage.b_drk .uds_coauthor_wrapper .button.secondary {
background: none;
background-color: rgba(255, 255, 255, .1);
border-color: #a2b7f4;
color: #a2b7f4
}
#bpage.b_drk .uds_coauthor_wrapper .button.secondary:hover:not(.disabled) {
background-color: rgba(255, 255, 255, .2);
box-shadow: none
}
#bpage.b_drk .uds_coauthor_wrapper .button.disabled {
background: rgba(255, 255, 255, .1);
border-color: rgba(255, 255, 255, .1)
}
#bpage.b_drk .uds_coauthor_wrapper .tag {
color: #a2b7f4;
border-color: #a2b7f4;
background: rgba(255, 255, 255, .1)
}
#bpage.b_drk .uds_coauthor_wrapper .tag.selected {
background: #a2b7f4;
color: #000
}
#bpage.b_drk .uds_coauthor_wrapper .tag:hover {
background: rgba(255, 255, 255, .2)
}
#bpage.b_drk .uds_coauthor_wrapper .tag.selected:hover,
#bpage.b_drk .uds_coauthor_wrapper #custom_tone_edit_button.tag.selected:hover {
background: #a2b7f4;
color: #000
}
#bpage.b_drk .uds_coauthor_wrapper #custom_tone_plus_button svg>path,
#bpage.b_drk .uds_coauthor_wrapper #custom_tone_edit_button svg>path,
#bpage.b_drk .uds_coauthor_wrapper #add_change_suggestion_button svg>path {
fill: #a2b7f4
}
#bpage.b_drk .uds_coauthor_wrapper .tag.selected svg>path {
fill: #000 !important
}
#bpage.b_drk .uds_coauthor_wrapper input,
#bpage.b_drk .uds_coauthor_wrapper input:focus,
#bpage.b_drk .uds_coauthor_wrapper input:focus-visible,
#bpage.b_drk .uds_coauthor_wrapper input:hover {
color: #fff !important;
background-color: #3b3a39 !important
}
#bpage.b_drk .uds_coauthor_wrapper #custom_tone_add_button,
#bpage.b_drk .uds_coauthor_wrapper #custom_tone_save_button,
#bpage.b_drk .uds_coauthor_wrapper #custom_tone_add_button:not(.disabled) span:hover,
#bpage.b_drk .uds_coauthor_wrapper #custom_tone_save_button:not(.disabled) span:hover,
#bpage.b_drk .uds_coauthor_wrapper #submit_change_suggestion_button,
#bpage.b_drk .uds_coauthor_wrapper #submit_change_suggestion_button:not(.disabled) span:hover {
color: #d6d6d6 !important;
background-color: #3b3a39 !important
}
#bpage.b_drk .uds_coauthor_wrapper #custom_tone_add_button.disabled,
#bpage.b_drk .uds_coauthor_wrapper #custom_tone_save_button.disabled {
color: #5c5c5c !important
}
#bpage.b_drk .uds_coauthor_wrapper .paragraph-option p {
color: #fff !important
}
#bpage.b_drk .uds_coauthor_wrapper .paragraph-option .illustration {
border-color: #2b2b2b;
background: rgba(255, 255, 255, .1)
}
#bpage.b_drk .uds_coauthor_wrapper .paragraph-option:hover .illustration {
background: rgba(255, 255, 255, .2)
}
#bpage.b_drk .uds_coauthor_wrapper .paragraph-option .illustration .objectS {
stroke: #fff
}
#bpage.b_drk .uds_coauthor_wrapper .paragraph-option .illustration .objectF {
fill: #fff
}
#bpage.b_drk .uds_coauthor_wrapper .paragraph-option.selected .illustration {
border-color: #a2b7f4;
background: rgba(255, 255, 255, .2)
}
#bpage.b_drk .uds_coauthor_wrapper .option-section {
border-color: #545454
}
#bpage.b_drk .uds_coauthor_wrapper .header.secondary {
color: #fff
}
#bpage.b_drk .uds_coauthor_wrapper .preview-options {
background: #333
}
#bpage.b_drk .uds_coauthor_wrapper .preview-options .item svg>path,
#bpage.b_drk .uds_coauthor_wrapper #submit_change_suggestion_button svg>path {
fill: #fff
}
#bpage.b_drk .uds_coauthor_wrapper .preview-options .item:hover {
background: rgba(255, 255, 255, .2)
}
#bpage.b_drk .uds_coauthor_wrapper .preview-options .item.disabled:hover {
background: #333
}
#bpage.b_drk .uds_coauthor_wrapper .preview-options .item.disabled svg>path,
#bpage.b_drk .uds_coauthor_wrapper #submit_change_suggestion_button.disabled svg>path {
fill: #7a7a7a
}
#bpage.b_drk .uds_coauthor_wrapper .header svg>path,
#bpage.b_drk .uds_coauthor_wrapper #submit_change_suggestion_button svg>path {
fill: #fff
}
#bpage.b_drk .uds_coauthor_wrapper div.preview #shimmer .line {
background: #686868
}
#bpage.b_drk .uds_coauthor_wrapper #compose_button {
color: #fff
}
#bpage.b_drk .uds_coauthor_wrapper #compose_button.disabled {
color: rgba(255, 255, 255, .54)
}
#bpage.b_drk .uds_coauthor_wrapper #insert_button,
#bpage.b_drk .uds_coauthor_wrapper #detached_copy_button {
color: #a2b7f4
}
#bpage.b_drk .uds_coauthor_wrapper #insert_button.disabled,
#bpage.b_drk .uds_coauthor_wrapper #detached_copy_button.disabled {
color: rgba(255, 255, 255, .54)
}
#bpage.b_drk .uds_coauthor_wrapper div.preview #error {
color: #ed8e85
}
@media screen and (-ms-high-contrast:active) {
.uds_coauthor_wrapper .button {
background: Window;
border: 2px solid
}
.uds_coauthor_wrapper .tag,
.uds_coauthor_wrapper #custom_tone_edit_button {
color: LinkText;
border-color: WindowText
}
.uds_coauthor_wrapper #custom_tone_plus_button svg>path,
.uds_coauthor_wrapper #custom_tone_edit_button svg>path,
.uds_coauthor_wrapper #add_change_suggestion_button svg>path,
#bpage.b_drk .uds_coauthor_wrapper #custom_tone_plus_button svg>path,
#bpage.b_drk .uds_coauthor_wrapper #custom_tone_edit_button svg>path,
#bpage.b_drk .uds_coauthor_wrapper #add_change_suggestion_button svg>path {
fill: WindowText
}
.uds_coauthor_wrapper .tag.selected,
.uds_coauthor_wrapper #custom_tone_edit_button.tag.selected,
.uds_coauthor_wrapper .tag:hover,
.uds_coauthor_wrapper #custom_tone_edit_button:hover,
#bpage.b_drk .uds_coauthor_wrapper .tag.selected,
#bpage.b_drk .uds_coauthor_wrapper #custom_tone_edit_button.tag.selected,
#bpage.b_drk .uds_coauthor_wrapper .tag:hover,
#bpage.b_drk .uds_coauthor_wrapper #custom_tone_edit_button:hover {
border-color: Highlight;
background: Highlight
}
.uds_coauthor_wrapper .tag.selected span,
.uds_coauthor_wrapper .tag:hover span,
.uds_coauthor_wrapper #custom_tone_edit_button:hover span {
color: HighlightText;
background: Highlight
}
.uds_coauthor_wrapper .tag.selected svg,
.uds_coauthor_wrapper #custom_tone_edit_button.tag.selected svg,
.uds_coauthor_wrapper .tag:hover svg,
.uds_coauthor_wrapper #custom_tone_edit_button:hover svg {
background: Highlight
}
.uds_coauthor_wrapper #custom_tone_plus_button.tag.selected svg>path,
.uds_coauthor_wrapper #custom_tone_edit_button.tag.selected svg>path,
.uds_coauthor_wrapper #add_change_suggestion_button.tag.selected svg>path,
.uds_coauthor_wrapper #custom_tone_plus_button:hover svg>path,
.uds_coauthor_wrapper #custom_tone_edit_button:hover svg>path,
.uds_coauthor_wrapper #add_change_suggestion_button:hover svg>path,
#bpage.b_drk .uds_coauthor_wrapper #custom_tone_plus_button.tag.selected svg>path,
#bpage.b_drk .uds_coauthor_wrapper #custom_tone_edit_button.tag.selected svg>path,
#bpage.b_drk .uds_coauthor_wrapper #add_change_suggestion_button.tag.selected svg>path,
#bpage.b_drk .uds_coauthor_wrapper #custom_tone_plus_button:hover svg>path,
#bpage.b_drk .uds_coauthor_wrapper #custom_tone_edit_button:hover svg>path,
#bpage.b_drk .uds_coauthor_wrapper #add_change_suggestion_button:hover svg>path {
fill: HighlightText
}
.uds_coauthor_wrapper input,
.uds_coauthor_wrapper input:focus,
.uds_coauthor_wrapper input:focus-visible,
.uds_coauthor_wrapper input:hover,
.uds_coauthor_wrapper #custom_tone_add_button,
.uds_coauthor_wrapper #custom_tone_save_button {
border-style: solid
}
.uds_coauthor_wrapper .preview-options .item:hover,
#bpage.b_drk .uds_coauthor_wrapper .preview-options .item:hover {
background: Highlight
}
.uds_coauthor_wrapper .header svg>path {
fill: WindowText
}
.uds_coauthor_wrapper .preview-options svg>path,
.uds_coauthor_wrapper #submit_change_suggestion_button svg>path {
fill: WindowText
}
.uds_coauthor_wrapper .preview-options .item:hover svg>path,
.uds_coauthor_wrapper #submit_change_suggestion_button:hover svg>path {
fill: LinkText
}
.uds_coauthor_wrapper .paragraph-option.selected .illustration,
.uds_coauthor_wrapper .paragraph-option:hover .illustration,
#bpage.b_drk .uds_coauthor_wrapper .paragraph-option.selected .illustration,
#bpage.b_drk .uds_coauthor_wrapper .paragraph-option:hover .illustration {
border-color: Highlight;
background: Highlight
}
.uds_coauthor_wrapper .paragraph-option.selected .illustration svg,
.uds_coauthor_wrapper .paragraph-option:hover .illustration svg {
background: Highlight
}
.uds_coauthor_wrapper .paragraph-option.selected .illustration .objectS,
.uds_coauthor_wrapper .paragraph-option:hover .illustration .objectS,
#bpage.b_drk .uds_coauthor_wrapper .paragraph-option.selected .illustration .objectS,
#bpage.b_drk .uds_coauthor_wrapper .paragraph-option:hover .illustration .objectS {
stroke: ButtonFace
}
.uds_coauthor_wrapper .paragraph-option.selected .illustration .objectF,
.uds_coauthor_wrapper .paragraph-option:hover .illustration .objectF,
#bpage.b_drk .uds_coauthor_wrapper .paragraph-option.selected .illustration .objectF,
#bpage.b_drk .uds_coauthor_wrapper .paragraph-option:hover .illustration .objectF {
fill: ButtonFace
}
.uds_coauthor_wrapper #compose_button,
.uds_coauthor_wrapper #insert_button,
.uds_coauthor_wrapper #custom_tone_add_button,
.uds_coauthor_wrapper #custom_tone_save_button,
.uds_coauthor_wrapper #detached_copy_button,
#bpage.b_drk .uds_coauthor_wrapper #compose_button,
#bpage.b_drk .uds_coauthor_wrapper #insert_button,
#bpage.b_drk .uds_coauthor_wrapper #detached_copy_button,
#bpage.b_drk .uds_coauthor_wrapper #custom_tone_add_button,
#bpage.b_drk .uds_coauthor_wrapper #custom_tone_save_button {
border-color: WindowText;
color: WindowText
}
.uds_coauthor_wrapper #compose_button.disabled,
.uds_coauthor_wrapper #insert_button.disabled,
.uds_coauthor_wrapper #custom_tone_add_button.disabled,
.uds_coauthor_wrapper #custom_tone_save_button.disabled,
.uds_coauthor_wrapper #detached_copy_button.disabled,
#bpage.b_drk .uds_coauthor_wrapper #compose_button.disabled,
#bpage.b_drk .uds_coauthor_wrapper #insert_button.disabled,
#bpage.b_drk .uds_coauthor_wrapper #detached_copy_button.disabled,
#bpage.b_drk .uds_coauthor_wrapper #custom_tone_add_button.disabled,
#bpage.b_drk .uds_coauthor_wrapper #custom_tone_save_button.disabled {
border-color: GrayText !important;
color: GrayText !important
}
.uds_coauthor_wrapper #custom_tone_add_button.disabled span,
.uds_coauthor_wrapper #custom_tone_save_button.disabled span,
#bpage.b_drk .uds_coauthor_wrapper #custom_tone_add_button.disabled span,
#bpage.b_drk .uds_coauthor_wrapper #custom_tone_save_button.disabled span {
color: GrayText
}
.uds_coauthor_wrapper div.preview #shimmer .line {
background: WindowText
}
.uds_coauthor_wrapper textarea:focus {
box-shadow: 0 2px 0 #174ae4
}
.uds_coauthor_wrapper textarea:focus-visible {
border-color: #e2e2e2
}
}
</style>
<script type="text/javascript">//<![CDATA[
var Shared; (function (n) { function t (n) { for (var i = [], t = 1; t < arguments.length; t++)i[t - 1] = arguments[t]; return n.replace(/\{([0-9]+)\}/g, function (n, t) { var r = parseInt(t); return r >= 0 && r < i.length ? i[r] : "" }) } n.formatString = t })(Shared || (Shared = {}));
//]]></script>
<script type="text/javascript" crossorigin="anonymous"
src="/rp/ewpjexaHUg43JVD_aYNfJbu1EJQ.br.js"></script>
<script type="text/javascript">//<![CDATA[
_w["_udsCoAuthorConfig"] = { "EnableSecureConversation": true, "AddOptionsSets": ["soedgeca"], "RemoveOptionsSets": [], "DevMode": false, "UseHarmonyImaginitive": false, "ComposeUnderVPTest": false, "ComposeInline": false, "Source": "edge_coauthor_prod", "ComposeSidebarCustomization": false, "DetachedUX": false, "GetConversationId": false, "CodexV2": false };;
//]]></script>
<script type="text/javascript" crossorigin="anonymous"
src="/rp/M0YyMjv9PZ4MLAB8vBy5DUrdPJ0.br.js"></script>
<div id="b_content">
<ol id="b_results" class="">
<li class="b_ans">
<div class="b_uns_container_ans b_uns_inst_ans" data-ans-name="Underside:Compose">
<!-- keep in order! then we import sydney bundle -->
<div class="underside-inst-module" data-inst-name="USI_Module_CoAuthor">
<div id="underside-coauthor-module" class="b_uns_module b_uns_module_fullbleed"
data-content-available="true" data-finalized="true" data-load-time="">
<div class="no-title" role="heading" aria-level="2" aria-label="Module Heading"></div>
<div class="uds_coauthor_wrapper">
<div class="sidebar ">
<div class="child">
<div class="header secondary" role="heading" id="input_heading">著作领域</div><textarea id="prompt_text"
placeholder="告诉我们你想要写的内容"></textarea>
<div id="letter_counter"></div>
<div class="option-section" expanded="true">
<div class="header" role="heading" id="tone_heading">语气</div>
<div class="panel">
<div class="tone-options tags"></div>
<div class="custom-tone-edit-container"><input id="custom_tone_input" class='hidden' type="text"
placeholder="例如,放松的" />
<div id="custom_tone_add_button" class='hidden' role="button" title="添加" aria-label="添加">
<span>添加</span></div>
<div id="custom_tone_save_button" class='hidden' role="button" title="保存" aria-label="保存">
<span>保存</span></div>
</div>
</div>
</div>
<div class="option-section" expanded="true">
<div class="header" role="heading" id="paragraph_heading">格式</div>
<div class="panel" role="group" aria-labelledby="paragraph_heading">
<div class="paragraph-options" role="group"></div>
</div>
</div>
<div class="option-section" expanded="true">
<div class="header" role="heading" id="length_heading">长度</div>
<div class="panel" role="group" aria-labelledby="length_heading">
<div class="length-options tags"></div>
</div>
</div><a class="button linkBtn" role="button" id="compose_button" aria-label="生成草稿" target="_blank"
_ctf="rdr_T" h="ID=SERP,5056.1">生成草稿</a>
</div>
<div class="child">
<div class="header" role="heading" id="preview_heading">预览</div>
<div id="disclaimer_box"></div>
<div class="preview"><textarea id="preview_text" aria-label="预览生成的文本"
placeholder="AI 生成的内容将显示在此处"></textarea>
<div class="preview-options">
<div id="conversation_id_copy_button" role="button" class="item hidden" title="ID"
aria-label="ID">ID</div>
<div id="stop_button" role="button" class="item" title="停止" aria-label="停止"></div>
<div id="previous_button" role="button" class="item" title="后退" aria-label="后退"></div>
<div id="next_button" role="button" class="item" title="下一个" aria-label="下一个"></div>
<div id="copy_button" role="button" class="item" title="复制" aria-label="复制"></div>
<div id="regenerate_button" role="button" class="item" title="重新生成草稿" aria-label="重新生成草稿"></div>
</div>
<div id="shimmer" class='hidden'>
<div class='line'></div>
<div class='line'></div>
<div class='line'></div>
</div>
<div id="error" class='hidden'></div>
</div>
<div id="change_suggestions" class="hidden">
<div class="panel" role="group">
<div class="change-suggestions-options tags"></div>
<div id="custom_change_suggestion_container"><input id="change_suggestions_input" type="text"
class="hidden" placeholder="告诉我是否要更改任何内容" />
<div id="submit_change_suggestion_button" role="button" class="hidden disabled"></div>
</div>
</div>
</div><a id="insert_button" role="button" aria-label="添加到网站"
class="button secondary disabled linkBtn" target="_blank" _ctf="rdr_T"
h="ID=SERP,5056.2">添加到网站</a>
</div>
</div>
<div id="aria_alert" role="alert" class='aria-alert'><span class="hidden">正在生成文本</span></div>
</div>
</div>
</div>
</div>
</li>
<li class="b_ans">
<div class="b_uns_container_ans b_uns_inst_ans" data-ans-name="Underside:ServerNavigate"></div>
</li>
</ol>
</div>
<footer id="b_footer" class="b_footer" role="contentinfo" aria-label="页脚">
<div id="b_footerItems"><span>© 2023 Microsoft</span>
<ul>
<li><a id="sb_privacy" target="_blank" _ctf="rdr_T" href="http://go.microsoft.com/fwlink/?LinkId=521839"
h="ID=SERP,5046.1">隐私声明和 Cookie</a></li>
<li><a id="sb_legal" target="_blank" _ctf="rdr_T" href="http://go.microsoft.com/fwlink/?LinkID=246338"
h="ID=SERP,5047.1">法律声明</a></li>
<li><a id="sb_advertise" target="_blank" _ctf="rdr_T" href="https://go.microsoft.com/fwlink/?linkid=868922"
h="ID=SERP,5048.1">广告</a></li>
<li><a id="sb_adinfo" target="_blank" _ctf="rdr_T" href="http://go.microsoft.com/fwlink/?LinkID=286759"
h="ID=SERP,5049.1">关于我们的广告</a></li>
<li><a id="sb_help" target="_blank" _ctf="rdr_T"
href="https://support.microsoft.com/topic/82d20721-2d6f-4012-a13d-d1910ccf203f" h="ID=SERP,5050.1">帮助</a>
</li>
<li><a role="button" id="sb_feedback" target="_blank" _ctf="rdr_T" href="https://www.bing.com#"
h="ID=SERP,5051.1">反馈</a></li>
</ul>
</div><!--foo-->
</footer>
<script type="text/javascript">//<![CDATA[
var customEvents=require('event.custom');customEvents.fire('onHTML');define('RMSBootstrap',['require','exports'],function(n,t){function f(){i.push(r.call(arguments))}function e(){for(var n=0;n<i.length;++n)_w.rms.js.apply(null,r.call(i[n],0))}var u,i,r;t.__esModule=!0;t.replay=void 0;u=n('event.custom');i=[];_w.rms={};r=[].slice;_w.rms.js=f;t.replay=e;u.bind('onPP',function(){for(var u,t,f,n,r=0;r<i.length;r++)for(u=i[r],t=0;t<u.length;t++)if(((f=u[t]['A:rms:answers:Shared:BingCore.RMSBundle']),f)){n=_d.createElement('script');n.setAttribute('data-rms','1');n.setAttribute('crossorigin','anonymous');n.src=f;n.type='text/javascript';setTimeout(function(){_d.body.appendChild(n)},0);u.splice(t,1);break}},!0)});(function(n,t){onload=function(){_G.BPT=new Date();n&&n();!_w.sb_ppCPL&&t&&sb_st(function(){t(new Date())},0)}})(_w.onload,_w.si_PP);sj_be(_d.body,'load',function(){if(_w.lb)lb()},false);var Underside;(function(n){var t;(function(n){n.QueryParam_SetText='setText';n.QueryParam_SetText_Max_Length=1500;n.paragraphSVG='<svg width="58" height="58" viewBox="0 0 58 58" fill="none" xmlns="http://www.w3.org/2000/svg">\n <rect width="58" height="58" rx="8" fill="none"/>\n <line x1="11.5" y1="21.5" x2="46.5" y2="21.5" stroke="#6E6E6E" stroke-linecap="round" stroke-linejoin="round"/>\n <line x1="11.5" y1="14.5" x2="46.5" y2="14.5" stroke="#6E6E6E" stroke-linecap="round" stroke-linejoin="round"/>\n <line x1="11.5" y1="28.5" x2="46.5" y2="28.5" stroke="#6E6E6E" stroke-linecap="round" stroke-linejoin="round"/>\n <line x1="11.5" y1="35.5" x2="46.5" y2="35.5" stroke="#6E6E6E" stroke-linecap="round" stroke-linejoin="round"/>\n <line x1="11.5" y1="42.5" x2="28.5" y2="42.5" stroke="#6E6E6E" stroke-linecap="round" stroke-linejoin="round"/>\n </svg>';n.paragraphShortSVG='<svg width="58" height="58" viewBox="0 0 58 58" fill="none" xmlns="http://www.w3.org/2000/svg">\n <rect width="58" height="58" rx="8" fill="none"/>\n <line x1="11.5" y1="18.5" x2="46.5" y2="18.5" class="objectS" stroke="#6E6E6E" stroke-linecap="round" stroke-linejoin="round"/>\n <line x1="11.5" y1="25.5" x2="46.5" y2="25.5" class="objectS" stroke="#6E6E6E" stroke-linecap="round" stroke-linejoin="round"/>\n <line x1="11.5" y1="32.5" x2="46.5" y2="32.5" class="objectS" stroke="#6E6E6E" stroke-linecap="round" stroke-linejoin="round"/>\n <line x1="11.5" y1="39.5" x2="28.5" y2="39.5" class="objectS" stroke="#6E6E6E" stroke-linecap="round" stroke-linejoin="round"/>\n </svg>';n.blogSVG='<svg width="58" height="58" viewBox="0 0 58 58" fill="none" xmlns="http://www.w3.org/2000/svg">\n <rect width="58" height="58" rx="8" fill="none"/>\n <rect x="11" y="11" width="36" height="36" rx="8" stroke="#6E6E6E" stroke-linecap="round" stroke-linejoin="round"/>\n <line x1="18.5" y1="18.5" x2="39.5" y2="18.5" stroke="#6E6E6E" stroke-linecap="round" stroke-linejoin="round"/>\n <line x1="18.5" y1="23.5" x2="39.5" y2="23.5" stroke="#6E6E6E" stroke-linecap="round" stroke-linejoin="round"/>\n <line x1="18.5" y1="28.5" x2="39.5" y2="28.5" stroke="#6E6E6E" stroke-linecap="round" stroke-linejoin="round"/>\n <line x1="18.5" y1="33.5" x2="39.5" y2="33.5" stroke="#6E6E6E" stroke-linecap="round" stroke-linejoin="round"/>\n <line x1="18.5" y1="38.5" x2="39.5" y2="38.5" stroke="#6E6E6E" stroke-linecap="round" stroke-linejoin="round"/>\n </svg>';n.bulletPointsSVG='<svg width="58" height="58" viewBox="0 0 58 58" fill="none" xmlns="http://www.w3.org/2000/svg">\n <rect width="58" height="58" rx="8" fill="none"/>\n <line x1="16.5" y1="21.5" x2="48.5" y2="21.5" class="objectS" stroke="#6E6E6E" stroke-linecap="round" stroke-linejoin="round"/>\n <line x1="16.5" y1="29.5" x2="48.5" y2="29.5" class="objectS" stroke="#6E6E6E" stroke-linecap="round" stroke-linejoin="round"/>\n <line x1="16.5" y1="37.5" x2="48.5" y2="37.5" class="objectS" stroke="#6E6E6E" stroke-linecap="round" stroke-linejoin="round"/>\n <circle cx="10.5" cy="29.5" r="1.5" class="objectF" fill="#6E6E6E"/>\n <circle cx="10.5" cy="37.5" r="1.5" class="objectF" fill="#6E6E6E"/>\n <circle cx="10.5" cy="21.5" r="1.5" class="objectF" fill="#6E6E6E"/>\n </svg>';n.wandIcon='<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M16.5001 2C16.7762 2 17.0001 2.22386 17.0001 2.5V3H17.5001C17.7762 3 18.0001 3.22386 18.0001 3.5C18.0001 3.77614 17.7762 4 17.5001 4H17.0001V4.5C17.0001 4.77614 16.7762 5 16.5001 5C16.224 5 16.0001 4.77614 16.0001 4.5V4H15.5001C15.224 4 15.0001 3.77614 15.0001 3.5C15.0001 3.22386 15.224 3 15.5001 3H16.0001V2.5C16.0001 2.22386 16.224 2 16.5001 2ZM6.5001 6C6.77625 6 7.0001 5.77614 7.0001 5.5C7.0001 5.22386 6.77625 5 6.5001 5H6.0001V4.5C6.0001 4.22386 5.77625 4 5.5001 4C5.22396 4 5.0001 4.22386 5.0001 4.5V5H4.5001C4.22396 5 4.0001 5.22386 4.0001 5.5C4.0001 5.77614 4.22396 6 4.5001 6H5.0001V6.5C5.0001 6.77614 5.22396 7 5.5001 7C5.77625 7 6.0001 6.77614 6.0001 6.5V6H6.5001ZM15.5001 15C15.7762 15 16.0001 14.7761 16.0001 14.5C16.0001 14.2239 15.7762 14 15.5001 14H15.0001V13.5C15.0001 13.2239 14.7762 13 14.5001 13C14.224 13 14.0001 13.2239 14.0001 13.5V14H13.5001C13.224 14 13.0001 14.2239 13.0001 14.5C13.0001 14.7761 13.224 15 13.5001 15H14.0001V15.5C14.0001 15.7761 14.224 16 14.5001 16C14.7762 16 15.0001 15.7761 15.0001 15.5V15H15.5001ZM13.4346 6.56566C12.687 5.81812 11.475 5.81812 10.7275 6.56566L2.56067 14.7324C1.81311 15.4799 1.81311 16.6919 2.56066 17.4395C3.3082 18.187 4.52021 18.187 5.26776 17.4395L13.4346 9.27278C14.1821 8.52523 14.1821 7.31321 13.4346 6.56566ZM11.4346 7.27277C11.7916 6.91575 12.3704 6.91575 12.7275 7.27277C13.0845 7.6298 13.0845 8.20865 12.7274 8.56567L12.2501 9.04299L10.9572 7.7501L11.4346 7.27277ZM10.2501 8.4572L11.543 9.75009L4.56066 16.7324C4.20363 17.0894 3.62479 17.0894 3.26777 16.7324C2.91074 16.3754 2.91074 15.7965 3.26777 15.4395L10.2501 8.4572Z" fill="#212121"/>\n </svg>';n.textBoxIcon='<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M6.5 6C6.22386 6 6 6.22386 6 6.5C6 6.77614 6.22386 7 6.5 7H13.5C13.7761 7 14 6.77614 14 6.5C14 6.22386 13.7761 6 13.5 6H6.5ZM6 9.5C6 9.22386 6.22386 9 6.5 9H10.5C10.7761 9 11 9.22386 11 9.5C11 9.77614 10.7761 10 10.5 10H6.5C6.22386 10 6 9.77614 6 9.5ZM6.5 12C6.22386 12 6 12.2239 6 12.5C6 12.7761 6.22386 13 6.5 13H13.5C13.7761 13 14 12.7761 14 12.5C14 12.2239 13.7761 12 13.5 12H6.5ZM17 5.5C17 4.11929 15.8807 3 14.5 3H5.5C4.11929 3 3 4.11929 3 5.5V14.5C3 15.8807 4.11929 17 5.5 17H14.5C15.8807 17 17 15.8807 17 14.5V5.5ZM5.5 4H14.5C15.3284 4 16 4.67157 16 5.5V14.5C16 15.3284 15.3284 16 14.5 16H5.5C4.67157 16 4 15.3284 4 14.5V5.5C4 4.67157 4.67157 4 5.5 4Z" fill="#212121"/>\n </svg>';n.toneIcon='<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M15.8536 1.14645C15.6583 0.951184 15.3417 0.951184 15.1464 1.14645C14.9512 1.34171 14.9512 1.65829 15.1464 1.85355C16.2815 2.98857 16.875 4.72424 16.875 6.5C16.875 8.27576 16.2815 10.0114 15.1464 11.1464C14.9512 11.3417 14.9512 11.6583 15.1464 11.8536C15.3417 12.0488 15.6583 12.0488 15.8536 11.8536C17.2185 10.4886 17.875 8.47424 17.875 6.5C17.875 4.52576 17.2185 2.51143 15.8536 1.14645ZM13.8536 3.14645C13.6583 2.95118 13.3417 2.95118 13.1464 3.14645C12.9512 3.34171 12.9512 3.65829 13.1464 3.85355C13.7815 4.48857 14.125 5.47424 14.125 6.5C14.125 7.52576 13.7815 8.51143 13.1464 9.14645C12.9512 9.34171 12.9512 9.65829 13.1464 9.85355C13.3417 10.0488 13.6583 10.0488 13.8536 9.85355C14.7185 8.98857 15.125 7.72424 15.125 6.5C15.125 5.27576 14.7185 4.01143 13.8536 3.14645ZM4 7C4 4.79086 5.79086 3 8 3C10.2091 3 12 4.79086 12 7C12 9.20914 10.2091 11 8 11C5.79086 11 4 9.20914 4 7ZM8 4C6.34315 4 5 5.34315 5 7C5 8.65685 6.34315 10 8 10C9.65685 10 11 8.65685 11 7C11 5.34315 9.65685 4 8 4ZM1 14C1 12.8869 1.90315 12 3.00873 12L13 12C14.1045 12 15 12.8956 15 14C15 15.6912 14.1672 16.9663 12.865 17.7966C11.583 18.614 9.85474 19 8 19C6.14526 19 4.41697 18.614 3.13499 17.7966C1.83281 16.9663 1 15.6912 1 14ZM3.00873 13C2.44786 13 2 13.4467 2 14C2 15.3088 2.62226 16.2837 3.67262 16.9534C4.74318 17.636 6.26489 18 8 18C9.73511 18 11.2568 17.636 12.3274 16.9534C13.3777 16.2837 14 15.3088 14 14C14 13.4478 13.5522 13 13 13L3.00873 13Z" fill="#212121"/>\n </svg>';n.copyIcon='<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M8 2C6.89543 2 6 2.89543 6 4V14C6 15.1046 6.89543 16 8 16H14C15.1046 16 16 15.1046 16 14V4C16 2.89543 15.1046 2 14 2H8ZM7 4C7 3.44772 7.44772 3 8 3H14C14.5523 3 15 3.44772 15 4V14C15 14.5523 14.5523 15 14 15H8C7.44772 15 7 14.5523 7 14V4ZM4 6.00001C4 5.25973 4.4022 4.61339 5 4.26758V14.5C5 15.8807 6.11929 17 7.5 17H13.7324C13.3866 17.5978 12.7403 18 12 18H7.5C5.567 18 4 16.433 4 14.5V6.00001Z" fill="#1A1A1A"/>\n </svg>';n.generateIcon='<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M11.4142 3.63503C11.6095 3.43977 11.6095 3.12319 11.4142 2.92792L9.29289 0.806603C9.09763 0.611341 8.78104 0.611341 8.58578 0.806603C8.39052 1.00186 8.39052 1.31845 8.58578 1.51371L9.58264 2.51056C7.80518 2.60911 6.05488 3.33754 4.69671 4.6957C1.76776 7.62463 1.76776 12.3734 4.69671 15.3023C4.95359 15.5592 5.2247 15.7937 5.50757 16.0058C5.72852 16.1714 6.04191 16.1266 6.20756 15.9057C6.3732 15.6847 6.32838 15.3713 6.10743 15.2057C5.86235 15.0219 5.6271 14.8185 5.40382 14.5952C2.8654 12.0568 2.8654 7.94121 5.40382 5.40281C6.68997 4.11666 8.38002 3.48223 10.0664 3.49934C10.0915 3.49959 10.1162 3.49799 10.1404 3.49466L8.58578 5.04924C8.39052 5.24451 8.39052 5.56109 8.58578 5.75635C8.78104 5.95161 9.09763 5.95161 9.29289 5.75635L11.4142 3.63503ZM8.58578 16.363C8.39052 16.5582 8.39052 16.8748 8.58578 17.0701L10.7071 19.1914C10.9024 19.3866 11.219 19.3866 11.4142 19.1914C11.6095 18.9961 11.6095 18.6795 11.4142 18.4843L10.4174 17.4874C12.1948 17.3889 13.9451 16.6605 15.3033 15.3023C18.2322 12.3734 18.2322 7.62462 15.3033 4.69569C15.0464 4.43881 14.7753 4.20428 14.4924 3.99221C14.2715 3.82656 13.9581 3.87139 13.7924 4.09233C13.6268 4.31327 13.6716 4.62667 13.8926 4.79231C14.1377 4.97606 14.3729 5.17952 14.5962 5.40279C17.1346 7.9412 17.1346 12.0568 14.5962 14.5952C13.31 15.8813 11.62 16.5158 9.9336 16.4987C9.90849 16.4984 9.88379 16.5 9.85963 16.5033L11.4142 14.9487C11.6095 14.7535 11.6095 14.4369 11.4142 14.2416C11.219 14.0464 10.9024 14.0464 10.7071 14.2416L8.58578 16.363Z" fill="#1A1A1A"/>\n </svg>';n.stopIcon='<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M21.5 10C21.7761 10 22 10.2239 22 10.5V21.5C22 21.7761 21.7761 22 21.5 22H10.5C10.2239 22 10 21.7761 10 21.5V10.5C10 10.2239 10.2239 10 10.5 10H21.5ZM10.5 9C9.67157 9 9 9.67157 9 10.5V21.5C9 22.3284 9.67157 23 10.5 23H21.5C22.3284 23 23 22.3284 23 21.5V10.5C23 9.67157 22.3284 9 21.5 9H10.5Z" fill="#1A1A1A"/>\n </svg>';n.prevIcon='<svg width="17" height="15" viewBox="0 0 17 15" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M8.15898 14.3666C8.36292 14.5528 8.67918 14.5384 8.86536 14.3345C9.05154 14.1305 9.03714 13.8143 8.8332 13.6281L2.66535 7.99736H16.4961C16.7722 7.99736 16.9961 7.7735 16.9961 7.49736C16.9961 7.22122 16.7722 6.99736 16.4961 6.99736H2.66824L8.8332 1.36927C9.03714 1.18309 9.05154 0.866835 8.86536 0.662895C8.67918 0.458954 8.36292 0.444557 8.15898 0.630737L1.24263 6.94478C1.10268 7.07254 1.02285 7.24008 1.00314 7.41323C0.998507 7.44058 0.996094 7.46869 0.996094 7.49736C0.996094 7.52423 0.998213 7.55061 1.00229 7.57633C1.02047 7.75224 1.10058 7.9229 1.24263 8.05258L8.15898 14.3666Z" fill="#212121"/>\n </svg>';n.nextIcon='<svg width="16" height="15" viewBox="0 0 16 15" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M8.83711 0.630737C8.63317 0.444557 8.31692 0.458954 8.13074 0.662894C7.94456 0.866834 7.95895 1.18309 8.16289 1.36927L14.3307 7H0.5C0.223858 7 0 7.22386 0 7.5C0 7.77614 0.223858 8 0.5 8H14.3279L8.16289 13.6281C7.95895 13.8143 7.94456 14.1305 8.13074 14.3345C8.31692 14.5384 8.63317 14.5528 8.83711 14.3666L15.7535 8.05258C15.8934 7.92482 15.9732 7.75728 15.993 7.58414C15.9976 7.55678 16 7.52867 16 7.5C16 7.47313 15.9979 7.44675 15.9938 7.42103C15.9756 7.24512 15.8955 7.07446 15.7535 6.94478L8.83711 0.630737Z" fill="#212121"/>\n </svg>';n.downIcon='<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M15.794 7.73271C16.0797 8.03263 16.0681 8.50737 15.7682 8.79306L10.5178 13.7944C10.2281 14.0703 9.77285 14.0703 9.48318 13.7944L4.23271 8.79306C3.93279 8.50737 3.92125 8.03263 4.20694 7.73271C4.49264 7.43279 4.96737 7.42125 5.26729 7.70694L10.0005 12.2155L14.7336 7.70694C15.0336 7.42125 15.5083 7.43279 15.794 7.73271Z" fill="#212121"/>\n </svg>';n.rightIcon='<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M7.64582 4.14708C7.84073 3.95147 8.15731 3.9509 8.35292 4.14582L13.8374 9.6108C14.0531 9.82574 14.0531 10.1751 13.8374 10.39L8.35292 15.855C8.15731 16.0499 7.84073 16.0493 7.64582 15.8537C7.4509 15.6581 7.45147 15.3415 7.64708 15.1466L12.8117 10.0004L7.64708 4.85418C7.45147 4.65927 7.4509 4.34269 7.64582 4.14708Z" fill="#212121"/>\n </svg>';n.EmailSVG='<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="48" height="48" rx="8" fill="none"/><rect x="9" y="14" width="31" height="21" rx="4" class="objectS" stroke="#717171" stroke-linecap="round" stroke-linejoin="round"/><path d="M10 16L21.7743 26.9623C23.3101 28.3922 25.6899 28.3922 27.2257 26.9623L39 16" class="objectS" stroke="#717171" stroke-linecap="round" stroke-linejoin="round"/></svg>';n.BlogpostSVG='<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="48" height="48" rx="8" fill="none"/><rect x="9" y="9" width="31" height="31" rx="8" class="objectS" stroke="#717171" stroke-linecap="round" stroke-linejoin="round"/><path d="M24 19.8477L33.4862 19.8477" class="objectS" stroke="#717171" stroke-linecap="round" stroke-linejoin="round"/><line x1="15.5417" y1="26.7363" x2="33.4862" y2="26.7363" class="objectS" stroke="#717171" stroke-linecap="round" stroke-linejoin="round"/><line x1="15.5417" y1="33.625" x2="33.4862" y2="33.625" class="objectS" stroke="#717171" stroke-linecap="round" stroke-linejoin="round"/><path d="M18.4573 15.1086C18.4093 14.9704 18.2802 14.8771 18.1341 14.875C17.988 14.873 17.8563 14.9627 17.8045 15.0994L15.9125 20.0923H15.8983V20.1298L15.0366 22.4037C14.9685 22.5833 15.0588 22.7841 15.2381 22.8523C15.4175 22.9204 15.6181 22.8301 15.6861 22.6505L16.3919 20.788L19.6946 20.788L20.3384 22.6413C20.4014 22.8228 20.5994 22.9187 20.7806 22.8556C20.9618 22.7925 21.0576 22.5943 20.9945 22.4128L18.4573 15.1086ZM16.6555 20.0923L18.115 16.2407L19.453 20.0923H16.6555Z" class="objectF" fill="#717171"/></svg>';n.LengthSVG='<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M2.5 5C2.22386 5 2 5.22386 2 5.5C2 5.77614 2.22386 6 2.5 6H17.5C17.7761 6 18 5.77614 18 5.5C18 5.22386 17.7761 5 17.5 5H2.5ZM2.5 8C2.22386 8 2 8.22386 2 8.5C2 8.77614 2.22386 9 2.5 9H17.5C17.7761 9 18 8.77614 18 8.5C18 8.22386 17.7761 8 17.5 8H2.5ZM2 11.5C2 11.2239 2.22386 11 2.5 11H17.5C17.7761 11 18 11.2239 18 11.5C18 11.7761 17.7761 12 17.5 12H2.5C2.22386 12 2 11.7761 2 11.5ZM2.5 14C2.22386 14 2 14.2239 2 14.5C2 14.7761 2.22386 15 2.5 15H12.5C12.7761 15 13 14.7761 13 14.5C13 14.2239 12.7761 14 12.5 14H2.5Z" fill="#1A1A1A"/>\n </svg>';n.warningSVG='<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M10 2C14.4183 2 18 5.58172 18 10C18 14.4183 14.4183 18 10 18C5.58172 18 2 14.4183 2 10C2 5.58172 5.58172 2 10 2ZM10 12.5C9.58579 12.5 9.25 12.8358 9.25 13.25C9.25 13.6642 9.58579 14 10 14C10.4142 14 10.75 13.6642 10.75 13.25C10.75 12.8358 10.4142 12.5 10 12.5ZM10 6C9.75454 6 9.55039 6.17688 9.50806 6.41012L9.5 6.5V11L9.50806 11.0899C9.55039 11.3231 9.75454 11.5 10 11.5C10.2455 11.5 10.4496 11.3231 10.4919 11.0899L10.5 11V6.5L10.4919 6.41012C10.4496 6.17688 10.2455 6 10 6Z" fill="#C42B1C"/>\n </svg>';n.composeLogo='<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M14.8535 1.85355C15.0488 1.65829 15.0488 1.34171 14.8535 1.14645C14.6583 0.951184 14.3417 0.951185 14.1464 1.14645L6.14645 9.14645L6.00008 10L6.85355 9.85355L14.8535 1.85355ZM4.5 2C3.11929 2 2 3.11929 2 4.5L2 11.5C2 12.8807 3.11929 14 4.5 14H11.5C12.8807 14 14 12.8807 14 11.5V6.5C14 6.22386 13.7761 6 13.5 6C13.2239 6 13 6.22386 13 6.5V11.5C13 12.3284 12.3284 13 11.5 13H4.5C3.67157 13 3 12.3284 3 11.5L3 4.5C3 3.67157 3.67157 3 4.5 3L9.50459 3C9.78073 3 10.0046 2.77614 10.0046 2.5C10.0046 2.22386 9.78073 2 9.50459 2L4.5 2Z" fill="url(#paint0_linear_733_438556)"/>\n <defs>\n <linearGradient id="paint0_linear_733_438556" x1="3.6374" y1="15.95" x2="15.4172" y2="14.1028" gradientUnits="userSpaceOnUse">\n <stop stop-color="#18C1ED"/>\n <stop offset="0.5" stop-color="#3495EA"/>\n <stop offset="1" stop-color="#2161EF"/>\n </linearGradient>\n </defs>\n </svg>';n.closeIcon='<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M2.58859 2.71569L2.64645 2.64645C2.82001 2.47288 3.08944 2.4536 3.28431 2.58859L3.35355 2.64645L8 7.293L12.6464 2.64645C12.8417 2.45118 13.1583 2.45118 13.3536 2.64645C13.5488 2.84171 13.5488 3.15829 13.3536 3.35355L8.707 8L13.3536 12.6464C13.5271 12.82 13.5464 13.0894 13.4114 13.2843L13.3536 13.3536C13.18 13.5271 12.9106 13.5464 12.7157 13.4114L12.6464 13.3536L8 8.707L3.35355 13.3536C3.15829 13.5488 2.84171 13.5488 2.64645 13.3536C2.45118 13.1583 2.45118 12.8417 2.64645 12.6464L7.293 8L2.64645 3.35355C2.47288 3.17999 2.4536 2.91056 2.58859 2.71569L2.64645 2.64645L2.58859 2.71569Z" fill="black" fill-opacity="0.898039"/>\n </svg>';n.adjustIcon='<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M14.95 5C14.7184 3.85888 13.7095 3 12.5 3C11.2905 3 10.2816 3.85888 10.05 5H2.5C2.22386 5 2 5.22386 2 5.5C2 5.77614 2.22386 6 2.5 6H10.05C10.2816 7.14112 11.2905 8 12.5 8C13.7297 8 14.752 7.11217 14.961 5.94254C14.9575 5.96177 14.9539 5.98093 14.95 6H17.5C17.7761 6 18 5.77614 18 5.5C18 5.22386 17.7761 5 17.5 5H14.95ZM12.5 7C11.6716 7 11 6.32843 11 5.5C11 4.67157 11.6716 4 12.5 4C13.3284 4 14 4.67157 14 5.5C14 6.32843 13.3284 7 12.5 7ZM9.94999 14C9.71836 12.8589 8.70948 12 7.5 12C6.29052 12 5.28164 12.8589 5.05001 14H2.5C2.22386 14 2 14.2239 2 14.5C2 14.7761 2.22386 15 2.5 15H5.05001C5.28164 16.1411 6.29052 17 7.5 17C8.70948 17 9.71836 16.1411 9.94999 15H17.5C17.7761 15 18 14.7761 18 14.5C18 14.2239 17.7761 14 17.5 14H9.94999ZM7.5 16C6.67157 16 6 15.3284 6 14.5C6 13.6716 6.67157 13 7.5 13C8.32843 13 9 13.6716 9 14.5C9 15.3284 8.32843 16 7.5 16Z" fill="black" fill-opacity="0.898039"/>\n </svg>';n.checkmarkIcon='<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M15.8639 5.65609C16.0533 5.85704 16.0439 6.17348 15.8429 6.36288L7.91309 13.8368C7.67573 14.0605 7.30311 14.0536 7.07417 13.8213L4.39384 11.1009C4.20003 10.9042 4.20237 10.5877 4.39907 10.3938C4.59578 10.2 4.91235 10.2024 5.10616 10.3991L7.51192 12.8407L15.1571 5.63517C15.358 5.44577 15.6745 5.45513 15.8639 5.65609Z" fill="white"/>\n </svg>';n.plusIcon='<svg width="11" height="11" viewBox="0 0 11 11" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M6 0.5C6 0.223858 5.77614 0 5.5 0C5.22386 0 5 0.223858 5 0.5V5H0.5C0.223858 5 0 5.22386 0 5.5C0 5.77614 0.223858 6 0.5 6H5V10.5C5 10.7761 5.22386 11 5.5 11C5.77614 11 6 10.7761 6 10.5V6H10.5C10.7761 6 11 5.77614 11 5.5C11 5.22386 10.7761 5 10.5 5H6V0.5Z" fill="#174AE4"/>\n </svg>';n.penSVG='<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M15.1813 0.926893C14.0291 -0.284951 12.1047 -0.309226 10.9222 0.873168L1.54741 10.2
gitextract_29oud4j_/
├── .github/
│ └── workflows/
│ └── build.yml
├── .gitignore
├── .vscode/
│ ├── extensions.json
│ └── launch.json
├── LICENSE
├── README.md
├── Taskfile.yaml
├── api/
│ ├── helper/
│ │ └── helper.go
│ ├── index.go
│ ├── sydney.go
│ ├── sys-config.go
│ └── web.go
├── cloudflare/
│ ├── index.html
│ └── worker.js
├── common/
│ ├── env.go
│ ├── ip.go
│ └── proxy.go
├── docker/
│ ├── Dockerfile
│ └── docker-compose.yml
├── frontend/
│ ├── .eslintrc.cjs
│ ├── .gitignore
│ ├── .prettierrc.config.js
│ ├── .vscode/
│ │ └── extensions.json
│ ├── README.md
│ ├── index.html
│ ├── package.json
│ ├── postcss.config.js
│ ├── public/
│ │ ├── compose.html
│ │ ├── data/
│ │ │ └── prompts/
│ │ │ ├── prompts-zh-TW.json
│ │ │ ├── prompts-zh.json
│ │ │ └── prompts.csv
│ │ └── js/
│ │ └── bing/
│ │ └── chat/
│ │ ├── amd.js
│ │ ├── config.js
│ │ ├── core.js
│ │ ├── global.js
│ │ └── lib.js
│ ├── src/
│ │ ├── App.vue
│ │ ├── api/
│ │ │ ├── model/
│ │ │ │ ├── ApiResult.ts
│ │ │ │ └── sysconf/
│ │ │ │ └── SysConfig.ts
│ │ │ └── sysconf.ts
│ │ ├── assets/
│ │ │ └── css/
│ │ │ ├── base.css
│ │ │ ├── conversation.css
│ │ │ └── main.css
│ │ ├── components/
│ │ │ ├── ChatNav/
│ │ │ │ ├── ChatNav.vue
│ │ │ │ └── ChatNavItem.vue
│ │ │ ├── ChatPromptStore/
│ │ │ │ ├── ChatPromptItem.vue
│ │ │ │ └── ChatPromptStore.vue
│ │ │ ├── ChatServiceSelect/
│ │ │ │ └── ChatServiceSelect.vue
│ │ │ ├── CreateImage/
│ │ │ │ └── CreateImage.vue
│ │ │ ├── LoadingSpinner/
│ │ │ │ └── LoadingSpinner.vue
│ │ │ └── ReloadPWA/
│ │ │ └── ReloadPWA.vue
│ │ ├── main.ts
│ │ ├── router/
│ │ │ └── index.ts
│ │ ├── stores/
│ │ │ ├── index.ts
│ │ │ └── modules/
│ │ │ ├── chat/
│ │ │ │ └── index.ts
│ │ │ ├── prompt/
│ │ │ │ └── index.ts
│ │ │ └── user/
│ │ │ └── index.ts
│ │ ├── sw.ts
│ │ ├── utils/
│ │ │ ├── cookies.ts
│ │ │ └── utils.ts
│ │ └── views/
│ │ └── chat/
│ │ ├── components/
│ │ │ └── Chat/
│ │ │ ├── Chat.vue
│ │ │ └── ChatPromptItem.vue
│ │ └── index.vue
│ ├── tailwind.config.js
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ ├── tsconfig.node.json
│ ├── types/
│ │ ├── bing/
│ │ │ └── index.d.ts
│ │ ├── env.d.ts
│ │ ├── global.d.ts
│ │ └── vue3-virtual-scroll-list.d.ts
│ └── vite.config.ts
├── go.mod
├── go.sum
├── main.go
├── render.yaml
├── vercel.json
└── web/
├── assets/
│ ├── index-1dc749ba.css
│ ├── index-29dab197.css
│ ├── index-3a8b3b00.js
│ └── index-63d32cbb.js
├── compose.html
├── data/
│ └── prompts/
│ ├── prompts-zh-TW.json
│ ├── prompts-zh.json
│ └── prompts.csv
├── index.html
├── js/
│ └── bing/
│ └── chat/
│ ├── amd.js
│ ├── config.js
│ ├── core.js
│ ├── global.js
│ └── lib.js
├── manifest.webmanifest
├── registerSW.js
├── sw.js
└── web.go
SYMBOL INDEX (1162 symbols across 31 files)
FILE: api/helper/helper.go
type Response (line 9) | type Response struct
function CommonResult (line 15) | func CommonResult(w http.ResponseWriter, code int, msg string, data inte...
function SuccessResult (line 29) | func SuccessResult(w http.ResponseWriter, data interface{}) error {
function ErrorResult (line 33) | func ErrorResult(w http.ResponseWriter, code int, msg string) error {
function UnauthorizedResult (line 37) | func UnauthorizedResult(w http.ResponseWriter) error {
function CheckAuth (line 41) | func CheckAuth(r *http.Request) bool {
FILE: api/index.go
function Index (line 10) | func Index(w http.ResponseWriter, r *http.Request) {
FILE: api/sydney.go
function Sydney (line 9) | func Sydney(w http.ResponseWriter, r *http.Request) {
FILE: api/sys-config.go
type SysConfig (line 9) | type SysConfig struct
function SysConf (line 16) | func SysConf(w http.ResponseWriter, r *http.Request) {
FILE: api/web.go
function WebStatic (line 10) | func WebStatic(w http.ResponseWriter, r *http.Request) {
FILE: cloudflare/worker.js
constant SYDNEY_ORIGIN (line 1) | const SYDNEY_ORIGIN = 'https://sydney.bing.com';
constant KEEP_REQ_HEADERS (line 2) | const KEEP_REQ_HEADERS = [
constant IP_RANGE (line 19) | const IP_RANGE = [
method fetch (line 104) | async fetch(request, env, ctx) {
FILE: common/env.go
function init (line 23) | func init() {
function initEnv (line 28) | func initEnv() {
function initUserToken (line 39) | func initUserToken() {
FILE: common/ip.go
function GetRandomIP (line 223) | func GetRandomIP() string {
function ipToUint32 (line 247) | func ipToUint32(ip net.IP) uint32 {
function uint32ToIP (line 258) | func uint32ToIP(intIP uint32) string {
FILE: common/proxy.go
function NewSingleHostReverseProxy (line 57) | func NewSingleHostReverseProxy(target *url.URL) *httputil.ReverseProxy {
function getRandCookie (line 244) | func getRandCookie(req *http.Request) (int, string) {
function replaceResBody (line 270) | func replaceResBody(originalBody string, originalScheme string, original...
function modifyGzipBody (line 295) | func modifyGzipBody(res *http.Response, originalScheme string, originalH...
function modifyBrBody (line 336) | func modifyBrBody(res *http.Response, originalScheme string, originalHos...
function modifyDefaultBody (line 362) | func modifyDefaultBody(res *http.Response, originalScheme string, origin...
FILE: frontend/public/js/bing/chat/amd.js
function e (line 2) | function e(n,i,u){t[n]||(t[n]={dependencies:i,callback:u},r(n))}
function r (line 2) | function r(n){if(n){if(n)return u(n)}else{if(!f){for(var r in t)u(r);f=!...
function u (line 2) | function u(n){var s,e;if(i[n])return i[n];if(t.hasOwnProperty(n)){var h=...
function f (line 2) | function f(){return function(){for(var r,h,c,t=[],n=0;n<arguments.length...
function s (line 2) | function s(n){for(var t in i)if(i[t].h===n)return t}
function e (line 2) | function e(n,t){for(var u,e=n.split("."),i=_w,r=0;r<e.length;r++)u=e[r],...
function o (line 2) | function o(){var e=i["rms.js"].q,o,f,r,n,s,u,t;if(e.length>0)for(o=!1,f=...
function h (line 2) | function h(){var n,t,f;for(u=!1,n=0;n<r.length;n++)t=r[n],f=e(t,!0),i[t]...
function c (line 2) | function c(){for(var t,n=0;n<r.length;n++){var o=r[n],s=i[o].q,h=e(o);fo...
function l (line 2) | function l(n,t,i,r){n&&((n===_w||n===_d||n===_d.body)&&t=="load"?_w.sj_e...
function lb (line 2) | function lb(){_w.si_sendCReq&&sb_st(_w.si_sendCReq,800);_w.lbc&&_w.lbc()}
function n (line 2) | function n(n){n=sb_ie?_w.event:n;(!n.altKey||n.ctrlKey||n.shiftKey)&&(n....
function n (line 2) | function n(n){_w.si_ct(sb_ie?_w.event.srcElement:n.target,!1,_w.event||n...
function f (line 2) | function f(n){return i.hasOwnProperty(n)?i[n]:n}
function e (line 2) | function e(n){var t="S";return n==0?t="P":n==2&&(t="M"),t}
function o (line 2) | function o(n){for(var c,i=[],t={},r,l=0;l<n.length;l++){var a=n[l],o=a.v...
function a (line 2) | function a(){return c(Math.random()*1e4)}
function o (line 2) | function o(){return y?c(f.now())+l:+new Date}
function v (line 2) | function v(n,r,f){t.length===0&&i&&sb_st(u,1e3);t.push({k:n,v:r,t:f})}
function p (line 2) | function p(n){return i||(r=n),!i}
function w (line 2) | function w(n,t){t||(t=o());v(n,t,0)}
function b (line 2) | function b(n,t){v(n,t,1)}
function u (line 2) | function u(){var u,f;if(t.length){for(u=0;u<t.length;u++)f=t[u],f.t===0&...
function k (line 2) | function k(){r=o();e=a();i=!1;sj_evt.bind("onP1",u)}
function u (line 2) | function u(n,u){n in t||(t[n]=[]);!u.compute||n in r||(r[n]=u.compute);!...
function f (line 2) | function f(n,i){t[n].push({t:s(),i:i})}
function e (line 2) | function e(n){return n in i&&i[n](),n in t?t[n]:void 0}
function o (line 2) | function o(){for(var n in r)r[n]()}
function s (line 2) | function s(){return window.performance&&performance.now?Math.round(perfo...
function i (line 2) | function i(){var i=document.documentElement,r=document.body,u="innerWidt...
function i (line 2) | function i(){var e,o,u,s,f,r;if(document.querySelector&&document.querySe...
function f (line 2) | function f(){u(sj_be,r)}
function r (line 2) | function r(i){return i&&n.enqueue(t,i),!0}
function e (line 2) | function e(){u(sj_ue,r)}
function u (line 2) | function u(n,t){for(var u,r=0;r<i.length;r++)u=i[r],n(u==="resize"?windo...
FILE: frontend/public/js/bing/chat/config.js
function parseQueryParamsFromQuery (line 620) | function parseQueryParamsFromQuery(n, t) {
function parseQueryParams (line 631) | function parseQueryParams() {
function convertQueryParamsToUrlStr (line 637) | function convertQueryParamsToUrlStr(n, t) {
function queryParamsToString (line 642) | function queryParamsToString(n) {
function getCurrentQuery (line 648) | function getCurrentQuery() {
function extractDomainFromUrl (line 655) | function extractDomainFromUrl(n, t, i) {
function addCommonPersistedParams (line 671) | function addCommonPersistedParams(n) {
FILE: frontend/public/js/bing/chat/global.js
function si_T (line 65) | function si_T(a) {
FILE: frontend/public/js/bing/chat/lib.js
function u (line 6) | function u(n, t) {
function f (line 13) | function f(n, u) {
function e (line 22) | function e(n, f) {
function s (line 35) | function s(n, t) {
function i (line 40) | function i(n, i) {
function h (line 50) | function h(n, i) {
function o (line 57) | function o(n, t) {
function t (line 60) | function t(n) {
function getBrowserWidth (line 73) | function getBrowserWidth() {
function getBrowserHeight (line 78) | function getBrowserHeight() {
function getBrowserScrollWidth (line 83) | function getBrowserScrollWidth() {
function getBrowserScrollHeight (line 87) | function getBrowserScrollHeight() {
FILE: frontend/src/api/model/ApiResult.ts
type ApiResult (line 1) | interface ApiResult<T> {
type ApiResultCode (line 7) | enum ApiResultCode {
FILE: frontend/src/api/model/sysconf/SysConfig.ts
type SysConfig (line 1) | interface SysConfig {
FILE: frontend/src/api/sysconf.ts
function getSysConfig (line 4) | async function getSysConfig() {
FILE: frontend/src/stores/index.ts
function setupStore (line 8) | function setupStore(app: App) {
FILE: frontend/src/stores/modules/chat/index.ts
type SydneyConfig (line 4) | interface SydneyConfig {
type CheckSydneyConfigResult (line 12) | interface CheckSydneyConfigResult {
FILE: frontend/src/stores/modules/prompt/index.ts
type IPrompt (line 4) | interface IPrompt {
type IPromptDownloadConfig (line 8) | interface IPromptDownloadConfig {
type IOptPromptResult (line 16) | interface IOptPromptResult<T = unknown> {
function addPrompt (line 78) | function addPrompt(list: Array<IPrompt>): IOptPromptResult<{ successCoun...
FILE: frontend/src/sw.ts
constant CACHE_NAME_PREFIX (line 8) | const CACHE_NAME_PREFIX = 'BingAI';
FILE: frontend/src/utils/cookies.ts
function get (line 1) | function get(name: string) {
function set (line 6) | function set(name: string, value: string, minutes = 0, path = '/', domai...
FILE: frontend/types/bing/index.d.ts
type ToneType (line 12) | type ToneType = 'Creative' | 'Balanced' | 'Precise';
type BingMessage (line 14) | interface BingMessage {
type BingMessageType (line 26) | type BingMessageType = keyof {
type SuggestedResponses (line 51) | interface SuggestedResponses {
type TextMessageModel (line 59) | interface TextMessageModel {
type BingChat (line 71) | interface BingChat {
type BingConversation (line 114) | interface BingConversation {
type PublicSubscribeEvent (line 126) | type PublicSubscribeEvent = (callback: Function, thisArgs, disposables) ...
FILE: main.go
function main (line 11) | func main() {
FILE: web/assets/index-3a8b3b00.js
function zl (line 1) | function zl(){Zt.forEach(e=>e(...On.get(e))),Zt=[]}
function Bn (line 1) | function Bn(e,...t){On.set(e,t),!Zt.includes(e)&&Zt.push(e)===1&&request...
function Io (line 1) | function Io(e,t){let{target:r}=e;for(;r;){if(r.dataset&&r.dataset[t]!==v...
function Tl (line 1) | function Tl(e,t="default",r=[]){const n=e.$slots[t];return n===void 0?r:...
function Il (line 1) | function Il(e){return t=>{t?e.value=t.$el:e.value=null}}
function qe (line 1) | function qe(e,{c:t=1,offset:r=0,attachPx:o=!0}={}){if(typeof e=="number"...
function Rl (line 1) | function Rl(){return ur===void 0&&(ur=navigator.userAgent.includes("Node...
function Ml (line 1) | function Ml(e,t,r){if(!t)return e;const o=O(e.value);let n=null;return T...
function Bl (line 1) | function Bl(e){if(Mt)return;let t=!1;et(()=>{Mt||wt==null||wt.then(()=>{...
function nr (line 1) | function nr(e,t){return Te(e,r=>{r!==void 0&&(t.value=r)}),D(()=>e.value...
function Ll (line 1) | function Ll(e,t){return D(()=>{for(const r of t)if(e[r]!==void 0)return ...
function El (line 1) | function El(e={},t){const r=Ha({ctrl:!1,command:!1,win:!1,shift:!1,tab:!...
function Ct (line 1) | function Ct(e){const t=ue(Ar,null),r=ue(Dr,null),o=ue(tr,null),n=ue(Al,n...
function En (line 1) | function En(){if(tt===null&&(tt=document.getElementById("v-binder-view-m...
function Dl (line 1) | function Dl(e,t){const r=En();return{top:t,left:e,height:0,width:0,right...
function fr (line 1) | function fr(e){const t=e.getBoundingClientRect(),r=En();return{left:t.le...
function Fl (line 1) | function Fl(e){return e.nodeType===9?null:e.parentNode}
function An (line 1) | function An(e){if(e===null)return null;const t=Fl(e);if(t===null)return ...
method setup (line 1) | setup(e){var t;_e("VBinder",(t=Fr())===null||t===void 0?void 0:t.proxy);...
method render (line 1) | render(){return Wa("binder",this.$slots)}
method setup (line 1) | setup(){const{setTargetRef:e,syncTarget:t}=ue("VBinder");return{syncTarg...
method render (line 1) | render(){const{syncTarget:e,setTargetDirective:t}=this;return e?xt(go("f...
method mounted (line 1) | mounted(e,{value:t}){e[pt]={handler:void 0},typeof t=="function"&&(e[pt]...
method updated (line 1) | updated(e,{value:t}){const r=e[pt];typeof t=="function"?r.handler?r.hand...
method unmounted (line 1) | unmounted(e){const{handler:t}=e[pt];t&&Ie("mousemoveoutside",e,t),e[pt]....
function ql (line 1) | function ql(e,t,r,o,n,i){if(!n||i)return{placement:e,top:0,left:0};const...
function Gl (line 1) | function Gl(e,t){return t?Vl[e]:Wl[e]}
function Xl (line 1) | function Xl(e,t,r,o,n,i){if(i)switch(e){case"bottom-start":return{top:`$...
method setup (line 1) | setup(e){const t=ue("VBinder"),r=We(()=>e.enabled!==void 0?e.enabled:e.s...
method render (line 1) | render(){return c(vn,{show:this.show,to:this.mergedTo,disabled:this.tele...
function rs (line 1) | function rs(e){if(!Ga(e))return Ql(e);var t=[];for(var r in Object(e))ts...
function Jr (line 1) | function Jr(e){return jr(e)?Xa(e):rs(e)}
function Qr (line 1) | function Qr(e,t){if(rt(e))return!1;var r=typeof e;return r=="number"||r=...
function eo (line 1) | function eo(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")...
function ls (line 1) | function ls(e){var t=eo(e,function(o){return r.size===as&&r.clear(),o}),...
function Hn (line 1) | function Hn(e,t){return rt(e)?e:Qr(e,t)?[e]:us(Wr(e))}
function ir (line 1) | function ir(e){if(typeof e=="string"||gn(e))return e;var t=e+"";return t...
function jn (line 1) | function jn(e,t){t=Hn(t,e);for(var r=0,o=t.length;e!=null&&r<o;)e=e[ir(t...
function hs (line 1) | function hs(e,t,r){var o=e==null?void 0:jn(e,t);return o===void 0?r:o}
function ps (line 1) | function ps(e,t){for(var r=-1,o=t.length,n=e.length;++r<o;)e[n+r]=t[r];r...
function vs (line 1) | function vs(e,t,r,o){var n=-1,i=e==null?0:e.length;for(o&&i&&(r=e[++n]);...
function gs (line 1) | function gs(e){return function(t){return e==null?void 0:e[t]}}
function zs (line 1) | function zs(e){return e=Wr(e),e&&e.replace(ws,ys).replace($s,"")}
function Is (line 1) | function Is(e){return e.match(Ts)||[]}
function Rs (line 1) | function Rs(e){return _s.test(e)}
function ed (line 1) | function ed(e){return e.match(Qs)||[]}
function td (line 1) | function td(e,t,r){return e=Wr(e),t=r?void 0:t,t===void 0?Rs(e)?ed(e):Is...
function nd (line 1) | function nd(e){return function(t){return vs(td(zs(t).replace(od,"")),e,"...
function id (line 1) | function id(e,t){for(var r=-1,o=e==null?0:e.length,n=0,i=[];++r<o;){var ...
function ad (line 1) | function ad(){return[]}
function ud (line 1) | function ud(e,t,r){var o=t(e);return rt(e)?o:ps(o,r(e))}
function Fo (line 1) | function Fo(e){return ud(e,Jr,cd)}
function Cd (line 1) | function Cd(e){return this.__data__.set(e,xd),this}
function Sd (line 1) | function Sd(e){return this.__data__.has(e)}
function Jt (line 1) | function Jt(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new Ur;++...
function kd (line 1) | function kd(e,t){for(var r=-1,o=e==null?0:e.length;++r<o;)if(t(e[r],r,e)...
function Pd (line 1) | function Pd(e,t){return e.has(t)}
function ri (line 1) | function ri(e,t,r,o,n,i){var l=r&$d,d=e.length,a=t.length;if(d!=a&&!(l&&...
function Td (line 1) | function Td(e){var t=-1,r=Array(e.size);return e.forEach(function(o,n){r...
function Id (line 1) | function Id(e){var t=-1,r=Array(e.size);return e.forEach(function(o){r[+...
function Ud (line 1) | function Ud(e,t,r,o,n,i,l){switch(r){case jd:if(e.byteLength!=t.byteLeng...
function qd (line 1) | function qd(e,t,r,o,n,i){var l=r&Wd,d=Fo(e),a=d.length,s=Fo(t),u=s.lengt...
function Yd (line 1) | function Yd(e,t,r,o,n,i){var l=rt(e),d=rt(t),a=l?Go:Vo(e),s=d?Go:Vo(t);a...
function to (line 1) | function to(e,t,r,o,n){return e===t?!0:e==null||t==null||!wo(e)&&!wo(t)?...
function Qd (line 1) | function Qd(e,t,r,o){var n=r.length,i=n,l=!o;if(e==null)return!i;for(e=O...
function oi (line 1) | function oi(e){return e===e&&!Ja(e)}
function ec (line 1) | function ec(e){for(var t=Jr(e),r=t.length;r--;){var o=t[r],n=e[o];t[r]=[...
function ni (line 1) | function ni(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==voi...
function tc (line 1) | function tc(e){var t=ec(e);return t.length==1&&t[0][2]?ni(t[0][0],t[0][1...
function rc (line 1) | function rc(e,t){return e!=null&&t in Object(e)}
function oc (line 1) | function oc(e,t,r){t=Hn(t,e);for(var o=-1,n=t.length,i=!1;++o<n;){var l=...
function nc (line 1) | function nc(e,t){return e!=null&&oc(e,t,rc)}
function lc (line 1) | function lc(e,t){return Qr(e)&&oi(t)?ni(ir(e),t):function(r){var o=hs(r,...
function sc (line 1) | function sc(e){return function(t){return t==null?void 0:t[e]}}
function dc (line 1) | function dc(e){return function(t){return jn(t,e)}}
function cc (line 1) | function cc(e){return Qr(e)?sc(ir(e)):dc(e)}
function uc (line 1) | function uc(e){return typeof e=="function"?e:e==null?rl:typeof e=="objec...
function fc (line 1) | function fc(e,t){return e&&ol(e,t,Jr)}
function hc (line 1) | function hc(e,t){return function(r,o){if(r==null)return r;if(!jr(r))retu...
function gc (line 1) | function gc(e,t){var r=-1,o=jr(e)?Array(e.length):[];return vc(e,functio...
function mc (line 1) | function mc(e,t){var r=rt(e)?nl:gc;return r(e,uc(t))}
function vr (line 1) | function vr(e){return function(){var t=arguments.length>0&&arguments[0]!...
function _t (line 1) | function _t(e){return function(t,r){var o=r!=null&&r.context?String(r.co...
function Rt (line 1) | function Rt(e){return function(t){var r=arguments.length>1&&arguments[1]...
function Cc (line 1) | function Cc(e,t){for(var r in e)if(e.hasOwnProperty(r)&&t(e[r]))return r}
function Sc (line 1) | function Sc(e,t){for(var r=0;r<e.length;r++)if(t(e[r]))return r}
function kc (line 1) | function kc(e){return function(t){var r=arguments.length>1&&arguments[1]...
function ro (line 1) | function ro(e){const{mergedLocaleRef:t,mergedDateLocaleRef:r}=ue(bn,null...
method render (line 1) | render(){return c("svg",{width:"512",height:"512",viewBox:"0 0 512 512",...
method render (line 1) | render(){return c("svg",{viewBox:"0 0 16 16",fill:"none",xmlns:"http://w...
method render (line 1) | render(){return c("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0...
method render (line 1) | render(){return c("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0...
method render (line 1) | render(){return c("svg",{viewBox:"0 0 28 28",fill:"none",xmlns:"http://w...
method render (line 1) | render(){return c("svg",{viewBox:"0 0 16 16",fill:"none",xmlns:"http://w...
method render (line 1) | render(){return c("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0...
function Yo (line 1) | function Yo(e){return Array.isArray(e)?e:[e]}
function ai (line 1) | function ai(e,t){const r=t(e);e.children!==void 0&&r!==Mr.STOP&&e.childr...
function Pu (line 1) | function Pu(e,t={}){const{preserveGroup:r=!1}=t,o=[],n=r?l=>{l.isLeaf||(...
function $u (line 1) | function $u(e,t){const{isLeaf:r}=e;return r!==void 0?r:!t(e)}
function zu (line 1) | function zu(e){return e.children}
function Tu (line 1) | function Tu(e){return e.key}
function Iu (line 1) | function Iu(){return!1}
function _u (line 1) | function _u(e,t){const{isLeaf:r}=e;return!(r===!1&&!Array.isArray(t(e)))}
function Ru (line 1) | function Ru(e){return e.disabled===!0}
function Mu (line 1) | function Mu(e,t){return e.isLeaf===!1&&!Array.isArray(t(e))}
function gr (line 1) | function gr(e){var t;return e==null?[]:Array.isArray(e)?e:(t=e.checkedKe...
function mr (line 1) | function mr(e){var t;return e==null||Array.isArray(e)?[]:(t=e.indetermin...
function Ou (line 1) | function Ou(e,t){const r=new Set(e);return t.forEach(o=>{r.has(o)||r.add...
function Bu (line 1) | function Bu(e,t){const r=new Set(e);return t.forEach(o=>{r.has(o)&&r.del...
function Lu (line 1) | function Lu(e){return(e==null?void 0:e.type)==="group"}
class Eu (line 1) | class Eu extends Error{constructor(){super(),this.message="SubtreeNotLoa...
method constructor (line 1) | constructor(){super(),this.message="SubtreeNotLoadedError: checking a ...
function Au (line 1) | function Au(e,t,r,o){return Qt(t.concat(e),r,o,!1)}
function Du (line 1) | function Du(e,t){const r=new Set;return e.forEach(o=>{const n=t.treeNode...
function Fu (line 1) | function Fu(e,t,r,o){const n=Qt(t,r,o,!1),i=Qt(e,r,o,!0),l=Du(e,r),d=[];...
function br (line 1) | function br(e,t){const{checkedKeys:r,keysToCheck:o,keysToUncheck:n,indet...
function Qt (line 1) | function Qt(e,t,r,o){const{treeNodeMap:n,getChildren:i}=t,l=new Set,d=ne...
function Nu (line 1) | function Nu(e,{includeGroup:t=!1,includeSelf:r=!0},o){var n;const i=o.tr...
function Hu (line 1) | function Hu(e){if(e.length===0)return null;const t=e[0];return t.isGroup...
function ju (line 1) | function ju(e,t){const r=e.siblings,o=r.length,{index:n}=e;return t?r[(n...
function Zo (line 1) | function Zo(e,t,{loop:r=!1,includeDisabled:o=!1}={}){const n=t==="prev"?...
function Uu (line 1) | function Uu(e,t){const r=e.siblings,o=r.length,{index:n}=e;return t?r[(n...
function Wu (line 1) | function Wu(e){return e.parent}
function oo (line 1) | function oo(e,t={}){const{reverse:r=!1}=t,{children:o}=e;if(o){const{len...
method getChild (line 1) | getChild(){return this.ignored?null:oo(this)}
method getParent (line 1) | getParent(){const{parent:e}=this;return e!=null&&e.isGroup?e.getParent():e}
method getNext (line 1) | getNext(e={}){return Zo(this,"next",e)}
method getPrev (line 1) | getPrev(e={}){return Zo(this,"prev",e)}
function Ku (line 1) | function Ku(e,t){const r=t?new Set(t):void 0,o=[];function n(i){i.forEac...
function qu (line 1) | function qu(e,t){const r=e.key;for(;t;){if(t.key===r)return!0;t=t.parent...
function li (line 1) | function li(e,t,r,o,n,i=null,l=0){const d=[];return e.forEach((a,s)=>{va...
function Gu (line 1) | function Gu(e,t={}){var r;const o=new Map,n=new Map,{getDisabled:i=Ru,ge...
method setup (line 24) | setup(e){const{mergedClsPrefixRef:t,inlineThemeDisabled:r}=Re(e),o=ae("E...
method render (line 24) | render(){const{$slots:e,mergedClsPrefix:t,onRender:r}=this;return r==nul...
function Ye (line 126) | function Ye(e){return["top","bottom"].includes(e.split("-")[0])?"var(--n...
function je (line 126) | function je(e,t){const r=e.split("-")[0],o=["top","bottom"].includes(r)?...
method setup (line 140) | setup(e,{slots:t,attrs:r}){const{namespaceRef:o,mergedClsPrefixRef:n,inl...
method render (line 140) | render(){return c(Nn,{ref:"followerRef",zIndex:this.zIndex,show:this.sho...
function df (line 140) | function df(e,t,r){sf[t].forEach(o=>{e.props?e.props=Object.assign({},e....
method setup (line 140) | setup(e){const t=Nr(),r=O(null),o=D(()=>e.show),n=O(e.defaultShow),i=nr(...
method render (line 140) | render(){var e;const{positionManually:t,$slots:r}=this;let o,n=!1;if(!t&...
method setup (line 209) | setup(e){const t=O(null),{mergedBorderedRef:r,mergedClsPrefixRef:o,inlin...
method render (line 209) | render(){var e,t;const{mergedClsPrefix:r,rtlEnabled:o,closable:n,color:{...
method setup (line 233) | setup(e){return Sn("-base-clear",wf,ee(e,"clsPrefix")),{handleMouseDown(...
method render (line 233) | render(){const{clsPrefix:e}=this;return c("div",{class:`${e}-base-clear`...
method setup (line 233) | setup(e,{slots:t}){return()=>{const{clsPrefix:r}=e;return c(dl,{clsPrefi...
function $f (line 233) | function $f(e){let t=0;for(const r of e)t++;return t}
function Wt (line 233) | function Wt(e){return e===""||e==null}
function zf (line 233) | function zf(e){const t=O(null);function r(){const{value:i}=e;if(!(i!=nul...
method setup (line 233) | setup(e,{slots:t}){const{mergedValueRef:r,maxlengthRef:o,mergedClsPrefix...
method setup (line 464) | setup(e){const{mergedClsPrefixRef:t,mergedBorderedRef:r,inlineThemeDisab...
method render (line 465) | render(){var e,t;const{mergedClsPrefix:r,mergedStatus:o,themeClass:n,typ...
method setup (line 465) | setup(e){const t=ae("Tooltip","-tooltip",void 0,ao,e),r=O(null);return O...
method render (line 465) | render(){const{mergedTheme:e,internalExtraClass:t}=this;return c(ci,Obje...
function Qo (line 475) | function Qo(e){return`${e}-ellipsis--line-clamp`}
function en (line 475) | function en(e,t){return`${e}-ellipsis--cursor-${t}`}
method setup (line 475) | setup(e,{slots:t,attrs:r}){const{mergedClsPrefixRef:o}=Re(e),n=ae("Ellip...
method render (line 475) | render(){var e;const{tooltip:t,renderTrigger:r,$slots:o}=this;if(t){cons...
method render (line 475) | render(){return c("div",{class:`${this.clsPrefix}-dropdown-divider`})}
method setup (line 484) | setup(e){const{mergedClsPrefixRef:t,inlineThemeDisabled:r}=Re(e),o=ae("I...
method render (line 484) | render(){var e;const{$parent:t,depth:r,mergedClsPrefix:o,component:n,onR...
function Br (line 484) | function Br(e,t){return e.type==="submenu"||e.type===void 0&&e[t]!==void 0}
function Zf (line 484) | function Zf(e){return e.type==="group"}
function vi (line 484) | function vi(e){return e.type==="divider"}
function Jf (line 484) | function Jf(e){return e.type==="render"}
method setup (line 484) | setup(e){const t=ue(lr),{hoverKeyRef:r,keyboardKeyRef:o,lastToggledSubme...
method render (line 484) | render(){var e,t;const{animated:r,rawNode:o,mergedShowSubmenu:n,clsPrefi...
method setup (line 484) | setup(){const{showIconRef:e,hasSubmenuRef:t}=ue(lo),{renderLabelRef:r,la...
method render (line 484) | render(){var e;const{clsPrefix:t,hasSubmenu:r,showIcon:o,nodeProps:n,ren...
method render (line 484) | render(){const{tmNode:e,parentKey:t,clsPrefix:r}=this,{children:o}=e;ret...
method render (line 484) | render(){const{rawNode:{render:e,props:t}}=this.tmNode;return c("div",t,...
method setup (line 484) | setup(e){const{renderIconRef:t,childrenFieldRef:r}=ue(lr);_e(lo,{showIco...
method render (line 484) | render(){const{parentKey:e,clsPrefix:t,scrollable:r}=this,o=this.tmNodes...
method setup (line 600) | setup(e){const t=O(!1),r=nr(ee(e,"show"),t),o=D(()=>{const{keyField:F,ch...
method render (line 600) | render(){const e=(o,n,i,l,d)=>{var a;const{mergedClsPrefix:s,menuProps:u...
method setup (line 600) | setup(e){const{mergedClsPrefixRef:t,mergedRtlRef:r}=Re(e),o=ae("Space","...
method render (line 600) | render(){const{vertical:e,align:t,inline:r,justify:o,itemStyle:n,margin:...
function hh (line 600) | function hh(){return{toolbarIconColor:"rgba(255, 255, 255, .9)",toolbarC...
method setup (line 658) | setup(e){const t=ae("Image","-image",Ah,ph,e,ee(e,"clsPrefix"));let r=nu...
method render (line 658) | render(){var e,t;const{clsPrefix:r}=this;return c(Ve,null,(t=(e=this.$sl...
method setup (line 658) | setup(e){let t;const{mergedClsPrefixRef:r}=Re(e),o=`c${$r()}`,n=Fr(),i=a...
method render (line 658) | render(){return c(wi,{theme:this.theme,themeOverrides:this.themeOverride...
method setup (line 658) | setup(e){const t=O(null),r=O(!1),o=O(null),n=ue(xi,null),{mergedClsPrefi...
method render (line 658) | render(){var e,t;const{mergedClsPrefix:r,imgProps:o={},loaded:n,$attrs:i...
method setup (line 730) | setup(e){const{mergedClsPrefixRef:t,inlineThemeDisabled:r,mergedRtlRef:o...
method render (line 730) | render(){var e;const{$slots:t,mergedClsPrefix:r,onRender:o}=this;return ...
method setup (line 730) | setup(){const e=ue(Ci,null);return e||Pt("list-item","`n-list-item` must...
method render (line 730) | render(){const{$slots:e,mergedClsPrefix:t}=this;return c("li",{class:`${...
function $t (line 730) | function $t(){const e=ue(wl,null);return e===null&&Pt("use-message","No ...
method setup (line 893) | setup(e,{slots:t}){const r=D(()=>qe(e.height)),o=D(()=>e.railBorderRadiu...
method setup (line 893) | setup(e,{slots:t}){function r(o,n,i){const{gapDegree:l,viewBoxWidth:d,st...
function on (line 895) | function on(e,t,r=100){return`m ${r/2} ${r/2-e} a ${e} ${e} 0 1 1 0 ${2*...
method setup (line 895) | setup(e,{slots:t}){const r=D(()=>e.percentage.map((n,i)=>`${Math.PI*n/10...
method setup (line 895) | setup(e){const t=D(()=>e.indicatorPlacement||e.indicatorPosition),r=D(()...
method render (line 895) | render(){const{type:e,cssVars:t,indicatorTextColor:r,showIndicator:o,sta...
method setup (line 926) | setup(e){const{mergedClsPrefixRef:t,inlineThemeDisabled:r}=Re(e),o=ae("R...
method render (line 926) | render(){var e;const{status:t,$slots:r,mergedClsPrefix:o,onRender:n}=thi...
method setup (line 1001) | setup(e){const{mergedClsPrefixRef:t,inlineThemeDisabled:r,mergedRtlRef:o...
method render (line 1001) | render(){var e;const{mergedClsPrefix:t}=this;return(e=this.onRender)===n...
method setup (line 1034) | setup(e,{slots:t}){const{mergedClsPrefixRef:r,inlineThemeDisabled:o,merg...
method setup (line 1034) | setup(e,{slots:t}){const r=ue(zt,null);return r||Pt("upload-dragger","`n...
function n (line 1034) | function n(i){return i instanceof r?i:new r(function(l){l(i)})}
function d (line 1034) | function d(u){try{s(o.next(u))}catch(f){l(f)}}
function a (line 1034) | function a(u){try{s(o.throw(u))}catch(f){l(f)}}
function s (line 1034) | function s(u){u.done?i(u.value):n(u.value).then(d,a)}
function hp (line 1034) | function hp(e){return Pi(this,void 0,void 0,function*(){return yield new...
function vp (line 1034) | function vp(e){return e.isDirectory}
function gp (line 1034) | function gp(e){return e.isFile}
function mp (line 1034) | function mp(e,t){return Pi(this,void 0,void 0,function*(){const r=[];let...
function Bt (line 1034) | function Bt(e){const{id:t,name:r,percentage:o,status:n,url:i,file:l,thum...
function bp (line 1034) | function bp(e,t,r){return e=e.toLowerCase(),t=t.toLocaleLowerCase(),r=r....
method setup (line 1034) | setup(e,{slots:t}){const r=ue(zt,null);r||Pt("upload-trigger","`n-upload...
method setup (line 1034) | setup(){return{mergedTheme:ue(zt).mergedThemeRef}}
method render (line 1034) | render(){return c(In,null,{default:()=>this.show?c(Jh,{type:"line",showI...
function n (line 1034) | function n(i){return i instanceof r?i:new r(function(l){l(i)})}
function d (line 1034) | function d(u){try{s(o.next(u))}catch(f){l(f)}}
function a (line 1034) | function a(u){try{s(o.throw(u))}catch(f){l(f)}}
function s (line 1034) | function s(u){u.done?i(u.value):n(u.value).then(d,a)}
method setup (line 1034) | setup(e){const t=ue(zt),r=O(null),o=O(""),n=D(()=>{const{file:m}=e;retur...
method render (line 1034) | render(){const{clsPrefix:e,mergedTheme:t,listType:r,file:o,renderIcon:n}...
method setup (line 1034) | setup(e,{slots:t}){const r=ue(zt,null);r||Pt("upload-file-list","`n-uplo...
function n (line 1250) | function n(i){return i instanceof r?i:new r(function(l){l(i)})}
function d (line 1250) | function d(u){try{s(o.next(u))}catch(f){l(f)}}
function a (line 1250) | function a(u){try{s(o.throw(u))}catch(f){l(f)}}
function s (line 1250) | function s(u){u.done?i(u.value):n(u.value).then(d,a)}
function zp (line 1250) | function zp(e,t,r){const{doChange:o,xhrMap:n}=e;let i=0;function l(a){va...
function Tp (line 1250) | function Tp(e){const{inst:t,file:r,data:o,headers:n,withCredentials:i,ac...
function Ip (line 1250) | function Ip(e,t,r){const o=zp(e,t,r);r.onabort=o.handleXHRAbort,r.onerro...
function Ii (line 1250) | function Ii(e,t){return typeof e=="function"?e({file:t}):e||{}}
function _p (line 1250) | function _p(e,t,r){const o=Ii(t,r);o&&Object.keys(o).forEach(n=>{e.setRe...
function Rp (line 1250) | function Rp(e,t,r){const o=Ii(t,r);o&&Object.keys(o).forEach(n=>{e.appen...
function Mp (line 1250) | function Mp(e,t,r,{method:o,action:n,withCredentials:i,responseType:l,he...
method setup (line 1250) | setup(e){e.abstract&&e.listType==="image-card"&&Pt("upload","when the li...
method render (line 1250) | render(){var e,t;const{draggerInsideRef:r,mergedClsPrefix:o,$slots:n,dir...
function a (line 1250) | function a(s){if(s instanceof Array&&s.every(u=>u.act&&u.prompt)){if(o.v...
method setup (line 1250) | setup(e){return(t,r)=>t.navConfig.url?(te(),Se("a",{key:0,href:t.navConf...
method setup (line 1250) | setup(e,{emit:t}){const r=e,o=$t(),n=O(""),i=O(""),l=O(!1),d=D({get:()=>...
function Wp (line 1250) | function Wp(e){const t=document.cookie.match("(^|;) ?"+e+"=([^;]*)(;|$)"...
function Vp (line 1250) | function Vp(e,t,r=0,o="/",n=""){let i=e+"="+t+";path="+o;if(n&&(i+=";dom...
function Kp (line 1250) | async function Kp(){return fetch("/sysconf",{credentials:"include"}).the...
method setup (line 1250) | setup(e){const t=O(!1),r=O(!1),o=O(""),n=$t(),i=At(),{isShowPromptSotre:...
function cn (line 1250) | function cn(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){v...
function qt (line 1250) | function qt(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=n...
function Zp (line 1250) | function Zp(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function un (line 1250) | function un(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.e...
function Jp (line 1250) | function Jp(e,t,r){return t&&un(e.prototype,t),r&&un(e,r),e}
function Qp (line 1250) | function Qp(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enum...
function ev (line 1250) | function ev(e){return tv(e)||rv(e)||ov(e)||nv()}
function tv (line 1250) | function tv(e){if(Array.isArray(e))return Er(e)}
function rv (line 1250) | function rv(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iter...
function ov (line 1250) | function ov(e,t){if(e){if(typeof e=="string")return Er(e,t);var r=Object...
function Er (line 1250) | function Er(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,o=new A...
function nv (line 1250) | function nv(){throw new TypeError(`Invalid attempt to spread non-iterabl...
function e (line 1251) | function e(t,r){Zp(this,e),this.init(t,r)}
method setup (line 1251) | setup(e){const t=$t(),r=At(),{promptList:o,optPromptConfig:n}=ot(r),i=d=...
method setup (line 1251) | setup(e){const t=$t(),r=At(),{promptDownloadConfig:o,isShowPromptSotre:n...
method setup (line 1278) | setup(e){const t=At(),{selectedPromptIndex:r,isShowChatPrompt:o,keyword:...
method setup (line 1278) | setup(e){return(t,r)=>(te(),ke(bt,{name:"fade"},{default:X(()=>[t.isShow...
method setup (line 1278) | setup(e){const t=co(),{isShowChatServiceSelectModal:r,sydneyConfigs:o,se...
method setup (line 1278) | setup(e){const t=$t(),r=O(!0),o=At(),{isShowPromptSotre:n,isShowChatProm...
method setup (line 1278) | setup(e){return(t,r)=>(te(),Se("main",null,[G(Yp),G(mv),G(Nv)]))}
FILE: web/assets/index-63d32cbb.js
function n (line 1) | function n(o){const i={};return o.integrity&&(i.integrity=o.integrity),o...
function r (line 1) | function r(o){if(o.ep)return;o.ep=!0;const i=n(o);fetch(o.href,i)}
function Hi (line 1) | function Hi(e,t){const n=Object.create(null),r=e.split(",");for(let o=0;...
function Ni (line 1) | function Ni(e){if(le(e)){const t={};for(let n=0;n<e.length;n++){const r=...
function zf (line 1) | function zf(e){const t={};return e.replace(Of,"").split(Rf).forEach(n=>{...
function Wi (line 1) | function Wi(e){let t="";if(Be(e))t=e;else if(le(e))for(let n=0;n<e.lengt...
function Ma (line 1) | function Ma(e){return!!e||e===""}
class Fa (line 1) | class Fa{constructor(t=!1){this.detached=t,this._active=!0,this.effects=...
method constructor (line 1) | constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this...
method active (line 1) | get active(){return this._active}
method run (line 1) | run(t){if(this._active){const n=tt;try{return tt=this,t()}finally{tt=n}}}
method on (line 1) | on(){tt=this}
method off (line 1) | off(){tt=this.parent}
method stop (line 1) | stop(t){if(this._active){let n,r;for(n=0,r=this.effects.length;n<r;n++...
function La (line 1) | function La(e){return new Fa(e)}
function kf (line 1) | function kf(e,t=tt){t&&t.active&&t.effects.push(e)}
function ja (line 1) | function ja(){return tt}
function Bf (line 1) | function Bf(e){tt&&tt.cleanups.push(e)}
class Ki (line 1) | class Ki{constructor(t,n=null,r){this.fn=t,this.scheduler=n,this.active=...
method constructor (line 1) | constructor(t,n=null,r){this.fn=t,this.scheduler=n,this.active=!0,this...
method run (line 1) | run(){if(!this.active)return this.fn();let t=lt,n=Ut;for(;t;){if(t===t...
method stop (line 1) | stop(){lt===this?this.deferStop=!0:this.active&&(Ts(this),this.onStop&...
function Ts (line 1) | function Ts(e){const{deps:t}=e;if(t.length){for(let n=0;n<t.length;n++)t...
function jn (line 1) | function jn(){Wa.push(Ut),Ut=!1}
function Dn (line 1) | function Dn(){const e=Wa.pop();Ut=e===void 0?!0:e}
function et (line 1) | function et(e,t,n){if(Ut&<){let r=ao.get(e);r||ao.set(e,r=new Map);let...
function Ua (line 1) | function Ua(e,t){let n=!1;rr<=li?Na(e)||(e.n|=Vt,n=!Da(e)):n=!e.has(lt),...
function Tt (line 1) | function Tt(e,t,n,r,o,i){const s=ao.get(e);if(!s)return;let l=[];if(t===...
function ci (line 1) | function ci(e,t){const n=le(e)?e:[...e];for(const r of n)r.computed&&Os(...
function Os (line 1) | function Os(e,t){(e!==lt||e.allowRecurse)&&(e.scheduler?e.scheduler():e....
function Ff (line 1) | function Ff(e,t){var n;return(n=ao.get(e))==null?void 0:n.get(t)}
function Wf (line 1) | function Wf(){const e={};return["includes","indexOf","lastIndexOf"].forE...
function Uf (line 1) | function Uf(e){const t=ge(this);return et(t,"has",e),t.hasOwnProperty(e)}
function Vi (line 1) | function Vi(e=!1,t=!1){return function(r,o,i){if(o==="__v_isReactive")re...
function Va (line 1) | function Va(e=!1){return function(n,r,o,i){let s=n[r];if(kn(s)&&Oe(s)&&!...
function qf (line 1) | function qf(e,t){const n=ve(e,t);e[t];const r=Reflect.deleteProperty(e,t...
function Gf (line 1) | function Gf(e,t){const n=Reflect.has(e,t);return(!ji(t)||!Ka.has(t))&&et...
function Xf (line 1) | function Xf(e){return et(e,"iterate",le(e)?"length":fn),Reflect.ownKeys(e)}
method set (line 1) | set(e,t){return!0}
method deleteProperty (line 1) | deleteProperty(e,t){return!0}
function Lr (line 1) | function Lr(e,t,n=!1,r=!1){e=e.__v_raw;const o=ge(e),i=ge(t);n||(t!==i&&...
function jr (line 1) | function jr(e,t=!1){const n=this.__v_raw,r=ge(n),o=ge(e);return t||(e!==...
function Dr (line 1) | function Dr(e,t=!1){return e=e.__v_raw,!t&&et(ge(e),"iterate",fn),Reflec...
function Is (line 1) | function Is(e){e=ge(e);const t=ge(this);return So(t).has.call(t,e)||(t.a...
function As (line 1) | function As(e,t){t=ge(t);const n=ge(this),{has:r,get:o}=So(n);let i=r.ca...
function ks (line 1) | function ks(e){const t=ge(this),{has:n,get:r}=So(t);let o=n.call(t,e);o|...
function Bs (line 1) | function Bs(){const e=ge(this),t=e.size!==0,n=e.clear();return t&&Tt(e,"...
function Nr (line 1) | function Nr(e,t){return function(r,o){const i=this,s=i.__v_raw,l=ge(s),a...
function Wr (line 1) | function Wr(e,t,n){return function(...r){const o=this.__v_raw,i=ge(o),s=...
function Mt (line 1) | function Mt(e){return function(...t){return e==="delete"?!1:this}}
function Jf (line 1) | function Jf(){const e={get(i){return Lr(this,i)},get size(){return Dr(th...
function Gi (line 1) | function Gi(e,t){const n=t?e?nd:td:e?ed:Qf;return(r,o,i)=>o==="__v_isRea...
function ld (line 1) | function ld(e){switch(e){case"Object":case"Array":return 1;case"Map":cas...
function ad (line 1) | function ad(e){return e.__v_skip||!Object.isExtensible(e)?0:ld(Sf(e))}
function Xt (line 1) | function Xt(e){return kn(e)?e:Xi(e,!1,qa,rd,Ga)}
function cd (line 1) | function cd(e){return Xi(e,!1,Zf,od,Xa)}
function Ot (line 1) | function Ot(e){return Xi(e,!0,Yf,id,Ya)}
function Xi (line 1) | function Xi(e,t,n,r,o){if(!_e(e)||e.__v_raw&&!(t&&e.__v_isReactive))retu...
function Rt (line 1) | function Rt(e){return kn(e)?Rt(e.__v_raw):!!(e&&e.__v_isReactive)}
function kn (line 1) | function kn(e){return!!(e&&e.__v_isReadonly)}
function co (line 1) | function co(e){return!!(e&&e.__v_isShallow)}
function Za (line 1) | function Za(e){return Rt(e)||kn(e)}
function ge (line 1) | function ge(e){const t=e&&e.__v_raw;return t?ge(t):e}
function qt (line 1) | function qt(e){return lo(e,"__v_skip",!0),e}
function Ja (line 1) | function Ja(e){Ut&<&&(e=ge(e),Ua(e.dep||(e.dep=Ui())))}
function Qa (line 1) | function Qa(e,t){e=ge(e);const n=e.dep;n&&ci(n)}
function Oe (line 1) | function Oe(e){return!!(e&&e.__v_isRef===!0)}
function se (line 1) | function se(e){return ec(e,!1)}
function ud (line 1) | function ud(e){return ec(e,!0)}
function ec (line 1) | function ec(e,t){return Oe(e)?e:new fd(e,t)}
class fd (line 1) | class fd{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_...
method constructor (line 1) | constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!...
method value (line 1) | get value(){return Ja(this),this._value}
method value (line 1) | set value(t){const n=this.__v_isShallow||co(t)||kn(t);t=n?t:ge(t),mr(t...
function Ct (line 1) | function Ct(e){return Oe(e)?e.value:e}
function tc (line 1) | function tc(e){return Rt(e)?e:new Proxy(e,dd)}
function hd (line 1) | function hd(e){const t=le(e)?new Array(e.length):{};for(const n in e)t[n...
class pd (line 1) | class pd{constructor(t,n,r){this._object=t,this._key=n,this._defaultValu...
method constructor (line 1) | constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,thi...
method value (line 1) | get value(){const t=this._object[this._key];return t===void 0?this._de...
method value (line 1) | set value(t){this._object[this._key]=t}
method dep (line 1) | get dep(){return Ff(ge(this._object),this._key)}
class gd (line 1) | class gd{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isRead...
method constructor (line 1) | constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}
method value (line 1) | get value(){return this._getter()}
function zt (line 1) | function zt(e,t,n){return Oe(e)?e:ue(e)?new gd(e):_e(e)&&arguments.lengt...
function nc (line 1) | function nc(e,t,n){const r=e[t];return Oe(r)?r:new pd(e,t,n)}
class vd (line 1) | class vd{constructor(t,n,r,o){this._setter=n,this.dep=void 0,this.__v_is...
method constructor (line 1) | constructor(t,n,r,o){this._setter=n,this.dep=void 0,this.__v_isRef=!0,...
method value (line 1) | get value(){const t=ge(this);return Ja(t),(t._dirty||!t._cacheable)&&(...
method value (line 1) | set value(t){this._setter(t)}
function md (line 1) | function md(e,t,n=!1){let r,o;const i=ue(e);return i?(r=e,o=ct):(r=e.get...
function Kt (line 1) | function Kt(e,t,n,r){let o;try{o=r?e(...r):e()}catch(i){_o(i,t,n)}return o}
function st (line 1) | function st(e,t,n,r){if(ue(e)){const i=Kt(e,t,n,r);return i&&Ia(i)&&i.ca...
function _o (line 1) | function _o(e,t,n,r=!0){const o=t?t.vnode:null;if(t){let i=t.parent;cons...
function bd (line 1) | function bd(e,t,n,r=!0){console.error(e)}
function Bn (line 1) | function Bn(e){const t=Zi||rc;return e?t.then(this?e.bind(this):e):t}
function yd (line 1) | function yd(e){let t=xt+1,n=Ne.length;for(;t<n;){const r=t+n>>>1;xr(Ne[r...
function Ji (line 1) | function Ji(e){(!Ne.length||!Ne.includes(e,yr&&e.allowRecurse?xt+1:xt))&...
function oc (line 1) | function oc(){!yr&&!ui&&(ui=!0,Zi=rc.then(sc))}
function xd (line 1) | function xd(e){const t=Ne.indexOf(e);t>xt&&Ne.splice(t,1)}
function Cd (line 1) | function Cd(e){le(e)?zn.push(...e):(!Pt||!Pt.includes(e,e.allowRecurse?n...
function Ms (line 1) | function Ms(e,t=yr?xt+1:0){for(;t<Ne.length;t++){const n=Ne[t];n&&n.pre&...
function ic (line 1) | function ic(e){if(zn.length){const t=[...new Set(zn)];if(zn.length=0,Pt)...
function sc (line 1) | function sc(e){ui=!1,yr=!0,Ne.sort(wd);const t=ct;try{for(xt=0;xt<Ne.len...
function Sd (line 1) | function Sd(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||Re;...
function lc (line 1) | function lc(e,t,n=!1){const r=t.emitsCache,o=r.get(e);if(o!==void 0)retu...
function Eo (line 1) | function Eo(e,t){return!e||!xo(t)?!1:(t=t.slice(2).replace(/Once$/,""),v...
function uo (line 1) | function uo(e){const t=We;return We=e,$o=e&&e.type.__scopeId||null,t}
function Nx (line 1) | function Nx(e){$o=e}
function Wx (line 1) | function Wx(){$o=null}
function ro (line 1) | function ro(e,t=We,n){if(!t||e._n)return e;const r=(...o)=>{r._d&&Gs(-1)...
function Uo (line 1) | function Uo(e){const{type:t,vnode:n,proxy:r,withProxy:o,props:i,propsOpt...
function $d (line 1) | function $d(e,t,n){const{props:r,children:o,component:i}=e,{props:s,chil...
function Hs (line 1) | function Hs(e,t,n){const r=Object.keys(t);if(r.length!==Object.keys(e).l...
function Pd (line 1) | function Pd({vnode:e,parent:t},n){for(;t&&t.subTree===e;)(e=t.vnode).el=...
function Td (line 1) | function Td(e,t){t&&t.pendingBranch?le(e)?t.effects.push(...e):t.effects...
function Qi (line 1) | function Qi(e,t){return es(e,null,t)}
function ut (line 1) | function ut(e,t,n){return es(e,t,n)}
function es (line 1) | function es(e,t,{immediate:n,deep:r,flush:o,onTrack:i,onTrigger:s}=Re){v...
function Od (line 1) | function Od(e,t,n){const r=this.proxy,o=Be(e)?e.includes(".")?ac(r,e):()...
function ac (line 1) | function ac(e,t){const n=t.split(".");return()=>{let r=e;for(let o=0;o<n...
function sn (line 1) | function sn(e,t){if(!_e(e)||e.__v_skip||(t=t||new Set,t.has(e)))return e...
function fi (line 1) | function fi(e,t){const n=We;if(n===null)return e;const r=zo(n)||n.proxy,...
function Zt (line 1) | function Zt(e,t,n,r){const o=e.dirs,i=t&&t.dirs;for(let s=0;s<o.length;s...
function cc (line 1) | function cc(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leaving...
method setup (line 1) | setup(e,{slots:t}){const n=Ar(),r=cc();let o;return()=>{const i=t.defaul...
function fc (line 1) | function fc(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||...
function Cr (line 1) | function Cr(e,t,n,r){const{appear:o,mode:i,persisted:s=!1,onBeforeEnter:...
function Ko (line 1) | function Ko(e){if(Po(e))return e=It(e),e.children=null,e}
function Fs (line 1) | function Fs(e){return Po(e)?e.children?e.children[0]:void 0:e}
function wr (line 1) | function wr(e,t){e.shapeFlag&6&&e.component?wr(e.component.subTree,t):e....
function ts (line 1) | function ts(e,t=!1,n){let r=[],o=0;for(let i=0;i<e.length;i++){let s=e[i...
function Ee (line 1) | function Ee(e,t){return ue(e)?(()=>ke({name:e.name},t,{setup:e}))():e}
function dc (line 1) | function dc(e,t){pc(e,"a",t)}
function hc (line 1) | function hc(e,t){pc(e,"da",t)}
function pc (line 1) | function pc(e,t,n=Le){const r=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if...
function Ad (line 1) | function Ad(e,t,n,r){const o=Ro(t,e,r,!0);vc(()=>{Li(r[t],o)},n)}
function Ro (line 1) | function Ro(e,t,n=Le,r=!1){if(n){const o=n[e]||(n[e]=[]),i=t.__weh||(t._...
function Fd (line 1) | function Fd(e,t=Le){Ro("ec",e,t)}
function Ux (line 1) | function Ux(e,t,n,r){let o;const i=n&&n[r];if(le(e)||Be(e)){o=new Array(...
function jd (line 1) | function jd(e,t,n={},r,o){if(We.isCE||We.parent&&lr(We.parent)&&We.paren...
function mc (line 1) | function mc(e){return e.some(t=>_r(t)?!(t.type===Ge||t.type===Me&&!mc(t....
method get (line 1) | get({_:e},t){const{ctx:n,setupState:r,data:o,props:i,accessCache:s,type:...
method set (line 1) | set({_:e},t,n){const{data:r,setupState:o,ctx:i}=e;return Vo(o,t)?(o[t]=n...
method has (line 1) | has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:o,propsOption...
method defineProperty (line 1) | defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ve(n,"valu...
function Ls (line 1) | function Ls(e){return le(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}
function Nd (line 1) | function Nd(e){const t=ns(e),n=e.proxy,r=e.ctx;hi=!1,t.beforeCreate&&js(...
function Wd (line 1) | function Wd(e,t,n=ct){le(e)&&(e=pi(e));for(const r in e){const o=e[r];le...
function js (line 1) | function js(e,t,n){st(le(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}
function bc (line 1) | function bc(e,t,n,r){const o=r.includes(".")?ac(n,r):()=>n[r];if(Be(e)){...
function ns (line 1) | function ns(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:o,optionsCa...
function fo (line 1) | function fo(e,t,n,r=!1){const{mixins:o,extends:i}=t;i&&fo(e,i,n,!0),o&&o...
function Ds (line 1) | function Ds(e,t){return t?e?function(){return ke(ue(e)?e.call(this,this)...
function Kd (line 1) | function Kd(e,t){return or(pi(e),pi(t))}
function pi (line 1) | function pi(e){if(le(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e...
function Ke (line 1) | function Ke(e,t){return e?[...new Set([].concat(e,t))]:t}
function or (line 1) | function or(e,t){return e?ke(Object.create(null),e,t):t}
function Ns (line 1) | function Ns(e,t){return e?le(e)&&le(t)?[...new Set([...e,...t])]:ke(Obje...
function Vd (line 1) | function Vd(e,t){if(!e)return t;if(!t)return e;const n=ke(Object.create(...
function yc (line 1) | function yc(){return{app:null,config:{isNativeTag:xf,performance:!1,glob...
function Gd (line 1) | function Gd(e,t){return function(r,o=null){ue(r)||(r=ke({},r)),o!=null&&...
function qe (line 1) | function qe(e,t){if(Le){let n=Le.provides;const r=Le.parent&&Le.parent.p...
function ze (line 1) | function ze(e,t,n=!1){const r=Le||We;if(r||ho){const o=r?r.parent==null?...
function Xd (line 1) | function Xd(e,t,n,r=!1){const o={},i={};lo(i,Oo,1),e.propsDefaults=Objec...
function Yd (line 1) | function Yd(e,t,n,r){const{props:o,attrs:i,vnode:{patchFlag:s}}=e,l=ge(o...
function xc (line 1) | function xc(e,t,n,r){const[o,i]=e.propsOptions;let s=!1,l;if(t)for(let a...
function gi (line 1) | function gi(e,t,n,r,o,i){const s=e[n];if(s!=null){const l=ve(s,"default"...
function Cc (line 1) | function Cc(e,t,n=!1){const r=t.propsCache,o=r.get(e);if(o)return o;cons...
function Ws (line 1) | function Ws(e){return e[0]!=="$"}
function Us (line 1) | function Us(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)...
function Ks (line 1) | function Ks(e,t){return Us(e)===Us(t)}
function Vs (line 1) | function Vs(e,t){return le(t)?t.findIndex(n=>Ks(n,e)):ue(t)&&Ks(t,e)?0:-1}
function vi (line 1) | function vi(e,t,n,r,o=!1){if(le(e)){e.forEach((d,v)=>vi(d,t&&(le(t)?t[v]...
function eh (line 1) | function eh(e){return th(e)}
function th (line 1) | function th(e,t){const n=si();n.__VUE__=!0;const{insert:r,remove:o,patch...
function Jt (line 1) | function Jt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}
function os (line 1) | function os(e,t,n=!1){const r=e.children,o=t.children;if(le(r)&&le(o))fo...
function nh (line 1) | function nh(e){const t=e.slice(),n=[0];let r,o,i,s,l;const a=e.length;fo...
method process (line 1) | process(e,t,n,r,o,i,s,l,a,c){const{mc:u,pc:f,pbc:d,o:{insert:v,querySele...
method remove (line 1) | remove(e,t,n,r,{um:o,o:{remove:i}},s){const{shapeFlag:l,children:a,ancho...
function Kr (line 1) | function Kr(e,t,n,{o:{insert:r},m:o},i=2){i===0&&r(e.targetAnchor,t,n);c...
function ih (line 1) | function ih(e,t,n,r,o,i,{o:{nextSibling:s,parentNode:l,querySelector:a}}...
function $c (line 1) | function $c(e){const t=e.ctx;if(t&&t.ut){let n=e.children[0].el;for(;n!=...
function is (line 1) | function is(e=!1){ur.push(at=e?null:[])}
function sh (line 1) | function sh(){ur.pop(),at=ur[ur.length-1]||null}
function Gs (line 1) | function Gs(e){Sr+=e}
function Pc (line 1) | function Pc(e){return e.dynamicChildren=Sr>0?at||Tn:null,sh(),Sr>0&&at&&...
function Kx (line 1) | function Kx(e,t,n,r,o,i){return Pc(Tc(e,t,n,r,o,i,!0))}
function ss (line 1) | function ss(e,t,n,r,o){return Pc(Fe(e,t,n,r,o,!0))}
function _r (line 1) | function _r(e){return e?e.__v_isVNode===!0:!1}
function rn (line 1) | function rn(e,t){return e.type===t.type&&e.key===t.key}
function Tc (line 1) | function Tc(e,t=null,n=null,r=0,o=null,i=e===Me?0:1,s=!1,l=!1){const a={...
function lh (line 1) | function lh(e,t=null,n=null,r=0,o=null,i=!1){if((!e||e===Ld)&&(e=Ge),_r(...
function ah (line 1) | function ah(e){return e?Za(e)||Oo in e?ke({},e):e:null}
function It (line 1) | function It(e,t,n=!1){const{props:r,ref:o,patchFlag:i,children:s}=e,l=t?...
function Er (line 1) | function Er(e=" ",t=0){return Fe(To,null,e,t)}
function Vx (line 1) | function Vx(e="",t=!1){return t?(is(),ss(Ge,null,e)):Fe(Ge,null,e)}
function bt (line 1) | function bt(e){return e==null||typeof e=="boolean"?Fe(Ge):le(e)?Fe(Me,nu...
function Nt (line 1) | function Nt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:It(e)}
function ls (line 1) | function ls(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(...
function as (line 1) | function as(...e){const t={};for(let n=0;n<e.length;n++){const r=e[n];fo...
function gt (line 1) | function gt(e,t,n,r=null){st(e,t,7,[n,r])}
function fh (line 1) | function fh(e,t,n){const r=e.type,o=(t?t.appContext:e.appContext)||ch,i=...
function Oc (line 1) | function Oc(e){return e.vnode.shapeFlag&4}
function dh (line 1) | function dh(e,t=!1){$r=t;const{props:n,children:r}=e.vnode,o=Oc(e);Xd(e,...
function hh (line 1) | function hh(e,t){const n=e.type;e.accessCache=Object.create(null),e.prox...
function Ys (line 1) | function Ys(e,t,n){ue(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render...
function zc (line 1) | function zc(e,t,n){const r=e.type;if(!e.render){if(!t&&Zs&&!r.render){co...
function ph (line 1) | function ph(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get...
function gh (line 1) | function gh(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return ph...
function zo (line 1) | function zo(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Pro...
function vh (line 1) | function vh(e){return ue(e)&&"__vccOpts"in e}
function E (line 1) | function E(e,t,n){const r=arguments.length;return r===2?_e(t)&&!le(t)?_r...
method setScopeId (line 1) | setScopeId(e,t){e.setAttribute(t,"")}
method insertStaticContent (line 1) | insertStaticContent(e,t,n,r,o,i){const s=n?n.previousSibling:t.lastChild...
function wh (line 1) | function wh(e,t,n){const r=e._vtc;r&&(t=(t?[t,...r]:[...r]).join(" ")),t...
function Sh (line 1) | function Sh(e,t,n){const r=e.style,o=Be(n);if(n&&!o){if(t&&!Be(t))for(co...
function bi (line 1) | function bi(e,t,n){if(le(n))n.forEach(r=>bi(e,t,r));else if(n==null&&(n=...
function _h (line 1) | function _h(e,t){const n=Go[t];if(n)return n;let r=An(t);if(r!=="filter"...
function Eh (line 1) | function Eh(e,t,n,r,o){if(r&&t.startsWith("xlink:"))n==null?e.removeAttr...
function $h (line 1) | function $h(e,t,n,r,o,i,s){if(t==="innerHTML"||t==="textContent"){r&&s(r...
function Ph (line 1) | function Ph(e,t,n,r){e.addEventListener(t,n,r)}
function Rh (line 1) | function Rh(e,t,n,r){e.removeEventListener(t,n,r)}
function Th (line 1) | function Th(e,t,n,r,o=null){const i=e._vei||(e._vei={}),s=i[t];if(r&&s)s...
function Oh (line 1) | function Oh(e){let t;if(nl.test(e)){t={};let r;for(;r=e.match(nl);)e=e.s...
function Ah (line 1) | function Ah(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts...
function kh (line 1) | function kh(e,t){if(le(t)){const n=e.stopImmediatePropagation;return e.s...
function Mh (line 1) | function Mh(e,t,n,r){return r?!!(t==="innerHTML"||t==="textContent"||t i...
function Ac (line 1) | function Ac(e){const t={};for(const k in e)k in Ic||(t[k]=e[k]);if(e.css...
function Fh (line 1) | function Fh(e){if(e==null)return null;if(_e(e))return[Yo(e.enter),Yo(e.l...
function Yo (line 1) | function Yo(e){return Pf(e)}
function $t (line 1) | function $t(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e._vt...
function jt (line 1) | function jt(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));con...
function il (line 1) | function il(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}
function sl (line 1) | function sl(e,t,n,r){const o=e._endId=++Lh,i=()=>{o===e._endId&&r()};if(...
function kc (line 1) | function kc(e,t){const n=window.getComputedStyle(e),r=p=>(n[p]||"").spli...
function ll (line 1) | function ll(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(....
function al (line 1) | function al(e){return Number(e.slice(0,-1).replace(",","."))*1e3}
function Bc (line 1) | function Bc(){return document.body.offsetHeight}
method setup (line 1) | setup(e,{slots:t}){const n=Ar(),r=cc();let o,i;return gc(()=>{if(!o.leng...
function Nh (line 1) | function Nh(e){const t=e.el;t._moveCb&&t._moveCb(),t._enterCb&&t._enterC...
function Wh (line 1) | function Wh(e){Hc.set(e,e.el.getBoundingClientRect())}
function Uh (line 1) | function Uh(e){const t=Mc.get(e),n=Hc.get(e),r=t.left-n.left,o=t.top-n.t...
function Kh (line 1) | function Kh(e,t,n){const r=e.cloneNode();e._vtc&&e._vtc.forEach(s=>{s.sp...
method beforeMount (line 1) | beforeMount(e,{value:t},{transition:n}){e._vod=e.style.display==="none"?...
method mounted (line 1) | mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)}
method updated (line 1) | updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnt...
method beforeUnmount (line 1) | beforeUnmount(e,{value:t}){Jn(e,t)}
function Jn (line 1) | function Jn(e,t){e.style.display=t?e._vod:"none"}
function Gh (line 1) | function Gh(){return ul||(ul=eh(qh))}
function Yh (line 1) | function Yh(e){return Be(e)?document.querySelector(e):e}
function yi (line 5) | function yi(e){return e&&typeof e=="object"&&Object.prototype.toString.c...
function Jh (line 5) | function Jh(){const e=La(!0),t=e.run(()=>se({}));let n=[],r=[];const o=q...
function fl (line 5) | function fl(e,t,n,r=Dc){e.push(t);const o=()=>{const i=e.indexOf(t);i>-1...
function _n (line 5) | function _n(e,...t){e.slice().forEach(n=>{n(...t)})}
function xi (line 5) | function xi(e,t){e instanceof Map&&t instanceof Map&&t.forEach((n,r)=>e....
function ep (line 5) | function ep(e){return!yi(e)||!e.hasOwnProperty(Qh)}
function tp (line 5) | function tp(e){return!!(Oe(e)&&e.effect)}
function np (line 5) | function np(e,t,n,r){const{state:o,actions:i,getters:s}=t,l=n.state.valu...
function Nc (line 5) | function Nc(e,t,n={},r,o,i){let s;const l=Dt({actions:{}},n),a={deep:!0}...
function Gx (line 5) | function Gx(e,t,n){let r,o;const i=typeof t=="function";typeof e=="strin...
function Xx (line 5) | function Xx(e){{e=ge(e);const t={};for(const n in e){const r=e[n];(Oe(r)...
function rp (line 5) | function rp(e){return typeof e=="object"&&e!==null}
function dl (line 5) | function dl(e,t){return e=rp(e)?e:Object.create(null),new Proxy(e,{get(n...
function op (line 5) | function op(e,t){return t.reduce((n,r)=>n==null?void 0:n[r],e)}
function ip (line 5) | function ip(e,t,n){return t.slice(0,-1).reduce((r,o)=>/^(__proto__)$/.te...
function sp (line 5) | function sp(e,t){return t.reduce((n,r)=>{const o=r.split(".");return ip(...
function hl (line 5) | function hl(e,{storage:t,serializer:n,key:r,debug:o}){try{const i=t==nul...
function pl (line 5) | function pl(e,{storage:t,serializer:n,key:r,paths:o,debug:i}){try{const ...
function lp (line 5) | function lp(e={}){return t=>{const{auto:n=!1}=e,{options:{persist:r=n},s...
function cp (line 5) | function cp(e){e.use(Wc)}
function us (line 5) | function us(e){return e.composedPath()[0]||null}
function Yx (line 5) | function Yx(e){return typeof e=="string"?e.endsWith("px")?Number(e.slice...
function up (line 5) | function up(e,t){const n=e.trim().split(/\s+/g),r={top:n[0]};switch(n.le...
function Zx (line 5) | function Zx(e,t){const[n,r]=e.split(" ");return t?t==="row"?n:r:{row:n,c...
function Je (line 5) | function Je(e){return parseInt(e,16)}
function gn (line 5) | function gn(e){try{let t;if(t=pp.exec(e))return[Je(t[1]),Je(t[2]),Je(t[3...
function mp (line 5) | function mp(e){return e>1?1:e<0?0:e}
function Ci (line 5) | function Ci(e,t,n,r){return`rgba(${De(e)}, ${De(t)}, ${De(n)}, ${mp(r)})`}
function Zo (line 5) | function Zo(e,t,n,r,o){return De((e*t*(1-r)+n*r)/o)}
function fs (line 5) | function fs(e,t){Array.isArray(e)||(e=gn(e)),Array.isArray(t)||(t=gn(t))...
function Vr (line 5) | function Vr(e,t){const[n,r,o,i=1]=Array.isArray(e)?e:gn(e);return t.alph...
function qr (line 5) | function qr(e,t){const[n,r,o,i=1]=Array.isArray(e)?e:gn(e),{lightness:s=...
function dr (line 5) | function dr(e){const t=Math.round(Number(e)*100)/100;return t>1?1:t<0?0:t}
function De (line 5) | function De(e){const t=Math.round(Number(e));return t>255?255:t<0?0:t}
function bp (line 5) | function bp(e){const[t,n,r]=e;return 3 in e?`rgba(${De(t)}, ${De(n)}, ${...
function ds (line 5) | function ds(e=8){return Math.random().toString(16).slice(2,2+e)}
function po (line 5) | function po(e,t=[],n){const r={};return t.forEach(o=>{r[o]=e[o]}),Object...
function Uc (line 5) | function Uc(e,t=[],n){const r={};return Object.getOwnPropertyNames(e).fo...
function wi (line 5) | function wi(e,t=!0,n=[]){return e.forEach(r=>{if(r!==null){if(typeof r!=...
function un (line 5) | function un(e,...t){if(Array.isArray(e))e.forEach(n=>un(n,...t));else re...
function hs (line 5) | function hs(e){return Object.keys(e)}
function go (line 5) | function go(e,t){console.error(`[naive/${e}]: ${t}`)}
function yp (line 5) | function yp(e,t){throw new Error(`[naive/${e}]: ${t}`)}
function xp (line 5) | function xp(e,t="default",n=void 0){const r=e[t];if(!r)return go("getFir...
function Jx (line 5) | function Jx(e){return e}
function kr (line 5) | function kr(e){return e.some(t=>_r(t)?!(t.type===Ge||t.type===Me&&!kr(t....
function vl (line 5) | function vl(e,t){return e&&kr(e())||t()}
function Qx (line 5) | function Qx(e,t,n){return e&&kr(e(t))||n(t)}
function yt (line 5) | function yt(e,t){const n=e&&kr(e());return t(n||null)}
function Cp (line 5) | function Cp(e){return!(e&&kr(e()))}
method render (line 5) | render(){var e,t;return(t=(e=this.$slots).default)===null||t===void 0?vo...
function bl (line 5) | function bl(e){return e.replace(/#|\(|\)|,|\s/g,"_")}
function wp (line 5) | function wp(e){let t=0;for(let n=0;n<e.length;++n)e[n]==="&"&&++t;return t}
function _p (line 5) | function _p(e,t){const n=[];return t.split(Kc).forEach(r=>{let o=wp(r);i...
function Ep (line 5) | function Ep(e,t){const n=[];return t.split(Kc).forEach(r=>{e.forEach(o=>...
function $p (line 5) | function $p(e){let t=[""];return e.forEach(n=>{n=n&&n.trim(),n&&(n.inclu...
function yl (line 5) | function yl(e){if(!e)return;const t=e.parentElement;t&&t.removeChild(e)}
function Ao (line 5) | function Ao(e){return document.querySelector(`style[cssr-id="${e}"]`)}
function Pp (line 5) | function Pp(e){const t=document.createElement("style");return t.setAttri...
function Gr (line 5) | function Gr(e){return e?/^\s*@(s|m)/.test(e):!1}
function Vc (line 5) | function Vc(e){return e.replace(Rp,t=>"-"+t.toLowerCase())}
function Tp (line 5) | function Tp(e,t=" "){return typeof e=="object"&&e!==null?` {
function Op (line 8) | function Op(e,t,n){return typeof e=="function"?e({context:t.context,prop...
function xl (line 8) | function xl(e,t,n,r){if(!t)return"";const o=Op(t,n,r);if(!o)return"";if(...
function Si (line 14) | function Si(e,t,n){e&&e.forEach(r=>{if(Array.isArray(r))Si(r,t,n);else i...
function qc (line 14) | function qc(e,t,n,r,o,i){const s=e.$;let l="";if(!s||typeof s=="string")...
function Gc (line 17) | function Gc(e,t,n,r=!1){const o=[];return qc(e,[],o,t,n,r?e.instance.__s...
function Pr (line 19) | function Pr(e){for(var t=0,n,r=0,o=e.length;o>=4;++r,o-=4)n=e.charCodeAt...
function zp (line 19) | function zp(e,t,n){const{els:r}=t;if(n===void 0)r.forEach(yl),t.els=[];e...
function Cl (line 19) | function Cl(e,t){e.push(t)}
function Ip (line 19) | function Ip(e,t,n,r,o,i,s,l,a){if(i&&!a){if(n===void 0){console.error("[...
function Ap (line 19) | function Ap(e){return Gc(this,this.instance,e)}
function kp (line 19) | function kp(e={}){const{id:t,ssr:n,props:r,head:o=!1,silent:i=!1,force:s...
function Bp (line 19) | function Bp(e={}){const{id:t}=e;zp(this.instance,this,t)}
function Hp (line 19) | function Hp(e={}){let t=null;const n={c:(...r)=>Mp(n,...r),use:(r,...o)=...
function Fp (line 19) | function Fp(e,t){if(e===void 0)return!1;if(t){const{context:{ids:n}}=t;r...
function Lp (line 19) | function Lp(e){let t=".",n="__",r="--",o;if(e){let p=e.blockPrefix;p&&(t...
function ie (line 19) | function ie(e,t){return e+(t==="default"?"":t.replace(/^[a-z]/,n=>n.toUp...
function Zc (line 19) | function Zc(e){return D(({props:{bPrefix:t}})=>`${t||Rr}modal, ${t||Rr}d...
function Wp (line 19) | function Wp(e){return D(({props:{bPrefix:t}})=>`${t||Rr}popover`,[e])}
function Jc (line 19) | function Jc(e){return D(({props:{bPrefix:t}})=>`&${t||Rr}modal`,e)}
function Kp (line 19) | function Kp(e){return!Up.has(e)}
function Vp (line 19) | function Vp(e){const t=se(!!e.value);if(t.value)return Ot(t);const n=ut(...
function Ei (line 19) | function Ei(e){const t=V(e),n=se(t.value);return ut(t,r=>{n.value=r}),ty...
function Qc (line 19) | function Qc(){return Ar()!==null}
function io (line 19) | function io(e){return e.composedPath()[0]}
function Gp (line 19) | function Gp(e,t,n){if(e==="mousemoveoutside"){const r=o=>{t.contains(io(...
function tu (line 19) | function tu(e,t,n){const r=qp[e];let o=r.get(t);o===void 0&&r.set(t,o=ne...
function Xp (line 19) | function Xp(e,t,n,r){if(e==="mousemoveoutside"||e==="clickoutside"){cons...
function Yp (line 19) | function Yp(e,t,n,r){if(e==="mousemoveoutside"||e==="clickoutside"){cons...
function Zp (line 19) | function Zp(){if(typeof window>"u")return{on:()=>{},off:()=>{}};const e=...
function wl (line 19) | function wl(e){if(e.clientX>0||e.clientY>0)ir.value={x:e.clientX,y:e.cli...
function nu (line 19) | function nu(){if(!eu)return Ot(se(null));Yr===0&&it("click",document,wl,...
function _l (line 19) | function _l(){Jp.value=Date.now()}
function ru (line 19) | function ru(e){if(!eu)return Ot(se(!1));const t=se(!1);let n=null;functi...
function ou (line 19) | function ou(){const e=se(!1);return Yt(()=>{e.value=!0}),Ot(e)}
function eg (line 19) | function eg(){return Qp}
function $l (line 19) | function $l(e,t,n="default"){const r=t[n];if(r===void 0)throw new Error(...
function $i (line 19) | function $i(e,t=!0,n=[]){return e.forEach(r=>{if(r!==null){if(typeof r!=...
function n1 (line 19) | function n1(e,t,n="default"){const r=t[n];if(r===void 0)throw new Error(...
method mounted (line 19) | mounted(e,{value:t,modifiers:n}){e[En]={handler:void 0},typeof t=="funct...
method updated (line 19) | updated(e,{value:t,modifiers:n}){const r=e[En];typeof t=="function"?r.ha...
method unmounted (line 19) | unmounted(e,{modifiers:t}){const{handler:n}=e[En];n&&Ve("clickoutside",e...
function sg (line 19) | function sg(e,t){console.error(`[vdirs/${e}]: ${t}`)}
class lg (line 19) | class lg{constructor(){this.elementZIndex=new Map,this.nextZIndex=2e3}ge...
method constructor (line 19) | constructor(){this.elementZIndex=new Map,this.nextZIndex=2e3}
method elementCount (line 19) | get elementCount(){return this.elementZIndex.size}
method ensureZIndex (line 19) | ensureZIndex(t,n){const{elementZIndex:r}=this;if(n!==void 0){t.style.z...
method unregister (line 19) | unregister(t,n){const{elementZIndex:r}=this;r.has(t)?r.delete(t):n===v...
method squashState (line 19) | squashState(){const{elementCount:t}=this;t||(this.nextZIndex=2e3),this...
method rearrange (line 19) | rearrange(){const t=Array.from(this.elementZIndex.entries());t.sort((n...
method mounted (line 19) | mounted(e,t){const{value:n={}}=t,{zIndex:r,enabled:o}=n;e[$n]={enabled:!...
method updated (line 19) | updated(e,t){const{value:n={}}=t,{zIndex:r,enabled:o}=n,i=e[$n].enabled;...
method unmounted (line 19) | unmounted(e,t){if(!e[$n].initialized)return;const{value:n={}}=t,{zIndex:...
function ug (line 19) | function ug(e,t){return`<style cssr-id="${e}">
function fg (line 21) | function fg(e,t){const n=ze(su,null);if(n===null){console.error("[css-re...
function ko (line 21) | function ko(){if(dg)return;const e=ze(su,null);if(e!==null)return{adapte...
function Pl (line 21) | function Pl(e,t){console.error(`[vueuc/${e}]: ${t}`)}
function Rl (line 21) | function Rl(e){return typeof e=="string"?document.querySelector(e):e()}
method setup (line 21) | setup(e){return{showTeleport:Vp(zt(e,"show")),mergedTo:V(()=>{const{to:t...
method render (line 21) | render(){return this.showTeleport?this.disabled?$l("lazy-teleport",this....
function e (line 21) | function e(t,n){this.inlineSize=t,this.blockSize=n,pn(this)}
function e (line 21) | function e(t,n,r,o){return this.x=t,this.y=n,this.width=r,this.height=o,...
function e (line 21) | function e(t){var n=cu(t);this.target=t,this.contentRect=n.contentRect,t...
function e (line 21) | function e(){var t=this;this.stopped=!0,this.listener=function(){return ...
function e (line 21) | function e(t,n){this.target=t,this.observedBox=n||Tr.CONTENT_BOX,this.la...
function e (line 21) | function e(t,n){this.activeTargets=[],this.skippedTargets=[],this.observ...
function e (line 21) | function e(){}
function e (line 21) | function e(t){if(arguments.length===0)throw new TypeError("Failed to con...
class Bg (line 21) | class Bg{constructor(){this.handleResize=this.handleResize.bind(this),th...
method constructor (line 21) | constructor(){this.handleResize=this.handleResize.bind(this),this.obse...
method handleResize (line 21) | handleResize(t){for(const n of t){const r=this.elHandlersMap.get(n.tar...
method registerHandler (line 21) | registerHandler(t,n){this.elHandlersMap.set(t,n),this.observer.observe...
method unregisterHandler (line 21) | unregisterHandler(t){this.elHandlersMap.has(t)&&(this.elHandlersMap.de...
method setup (line 21) | setup(e){let t=!1;const n=Ar().proxy;function r(o){const{onResize:i}=e;i...
method render (line 21) | render(){return jd(this.$slots,"default")}
function hu (line 21) | function hu(e){return e instanceof HTMLElement}
function pu (line 21) | function pu(e){for(let t=0;t<e.childNodes.length;t++){const n=e.childNod...
function gu (line 21) | function gu(e){for(let t=e.childNodes.length-1;t>=0;t--){const n=e.child...
function vu (line 21) | function vu(e){if(!Mg(e))return!1;try{e.focus({preventScroll:!0})}catch{...
function Mg (line 21) | function Mg(e){if(e.tabIndex>0||e.tabIndex===0&&e.getAttribute("tabIndex...
method setup (line 21) | setup(e){const t=ds(),n=se(null),r=se(null);let o=!1,i=!1;const s=typeof...
method render (line 21) | render(){const{default:e}=this.$slots;if(e===void 0)return null;if(this....
function Fg (line 21) | function Fg(e){if(typeof document>"u")return;const t=document.documentEl...
function jg (line 21) | function jg(e){const t={isDeactivated:!1};let n=!1;return dc(()=>{if(t.i...
function Dg (line 21) | function Dg(e,{defaultSize:t="medium",mergedSize:n,mergedDisabled:r}={})...
function Gg (line 21) | function Gg(e){var t=Vg.call(e,tr),n=e[tr];try{e[tr]=void 0;var r=!0}cat...
function Zg (line 21) | function Zg(e){return Yg.call(e)}
function Mr (line 21) | function Mr(e){return e==null?e===void 0?Qg:Jg:Gl&&Gl in Object(e)?Gg(e)...
function Kn (line 21) | function Kn(e){return e!=null&&typeof e=="object"}
function tv (line 21) | function tv(e){return typeof e=="symbol"||Kn(e)&&Mr(e)==ev}
function nv (line 21) | function nv(e,t){for(var n=-1,r=e==null?0:e.length,o=Array(r);++n<r;)o[n...
function yu (line 21) | function yu(e){if(typeof e=="string")return e;if(vo(e))return nv(e,yu)+"...
function xn (line 21) | function xn(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}
function xu (line 21) | function xu(e){return e}
function vs (line 21) | function vs(e){if(!xn(e))return!1;var t=Mr(e);return t==sv||t==lv||t==iv...
function uv (line 21) | function uv(e){return!!Zl&&Zl in e}
function hv (line 21) | function hv(e){if(e!=null){try{return dv.call(e)}catch{}try{return e+""}...
function Cv (line 21) | function Cv(e){if(!xn(e)||uv(e))return!1;var t=vs(e)?xv:gv;return t.test...
function wv (line 21) | function wv(e,t){return e==null?void 0:e[t]}
function ms (line 21) | function ms(e,t){var n=wv(e,t);return Cv(n)?n:void 0}
function e (line 21) | function e(){}
function Ev (line 21) | function Ev(e,t,n){switch(n.length){case 0:return e.call(t);case 1:retur...
function $v (line 21) | function $v(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n<r;)t[n]=e[n...
function Ov (line 21) | function Ov(e){var t=0,n=0;return function(){var r=Tv(),o=Rv-(r-n);if(n=...
function zv (line 21) | function zv(e){return function(){return e}}
function Cu (line 21) | function Cu(e,t){var n=typeof e;return t=t??Hv,!!t&&(n=="number"||n!="sy...
function bs (line 21) | function bs(e,t,n){t=="__proto__"&&mo?mo(e,t,{configurable:!0,enumerable...
function Bo (line 21) | function Bo(e,t){return e===t||e!==e&&t!==t}
function Dv (line 21) | function Dv(e,t,n){var r=e[t];(!(jv.call(e,t)&&Bo(r,n))||n===void 0&&!(t...
function Nv (line 21) | function Nv(e,t,n,r){var o=!n;n||(n={});for(var i=-1,s=t.length;++i<s;){...
function Wv (line 21) | function Wv(e,t,n){return t=Ql(t===void 0?e.length-1:t,0),function(){for...
function Uv (line 21) | function Uv(e,t){return Mv(Wv(e,t,xu),e+"")}
function wu (line 21) | function wu(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=Kv}
function ys (line 21) | function ys(e){return e!=null&&wu(e.length)&&!vs(e)}
function Vv (line 21) | function Vv(e,t,n){if(!xn(n))return!1;var r=typeof t;return(r=="number"?...
function qv (line 21) | function qv(e){return Uv(function(t,n){var r=-1,o=n.length,i=o>1?n[o-1]:...
function Su (line 21) | function Su(e){var t=e&&e.constructor,n=typeof t=="function"&&t.prototyp...
function Xv (line 21) | function Xv(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}
function ea (line 21) | function ea(e){return Kn(e)&&Mr(e)==Yv}
function em (line 21) | function em(){return!1}
function Rm (line 21) | function Rm(e){return Kn(e)&&wu(e.length)&&!!Pe[Mr(e)]}
function Tm (line 21) | function Tm(e){return function(t){return e(t)}}
function Bm (line 21) | function Bm(e,t){var n=vo(e),r=!n&&Ri(e),o=!n&&!r&&$u(e),i=!n&&!r&&!o&&R...
function Mm (line 21) | function Mm(e,t){return function(n){return e(t(n))}}
function Hm (line 21) | function Hm(e){var t=[];if(e!=null)for(var n in Object(e))t.push(n);retu...
function jm (line 21) | function jm(e){if(!xn(e))return Hm(e);var t=Su(e),n=[];for(var r in e)r=...
function Tu (line 21) | function Tu(e){return ys(e)?Bm(e,!0):jm(e)}
function Nm (line 21) | function Nm(){this.__data__=Or?Or(null):{},this.size=0}
function Wm (line 21) | function Wm(e){var t=this.has(e)&&delete this.__data__[e];return this.si...
function qm (line 21) | function qm(e){var t=this.__data__;if(Or){var n=t[e];return n===Um?void ...
function Ym (line 21) | function Ym(e){var t=this.__data__;return Or?t[e]!==void 0:Xm.call(t,e)}
function Jm (line 21) | function Jm(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n...
function vn (line 21) | function vn(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){va...
function Qm (line 21) | function Qm(){this.__data__=[],this.size=0}
function Mo (line 21) | function Mo(e,t){for(var n=e.length;n--;)if(Bo(e[n][0],t))return n;retur...
function nb (line 21) | function nb(e){var t=this.__data__,n=Mo(t,e);if(n<0)return!1;var r=t.len...
function rb (line 21) | function rb(e){var t=this.__data__,n=Mo(t,e);return n<0?void 0:t[n][1]}
function ob (line 21) | function ob(e){return Mo(this.__data__,e)>-1}
function ib (line 21) | function ib(e,t){var n=this.__data__,r=Mo(n,e);return r<0?(++this.size,n...
function kt (line 21) | function kt(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){va...
function lb (line 21) | function lb(){this.size=0,this.__data__={hash:new vn,map:new(Ou||kt),str...
function ab (line 21) | function ab(e){var t=typeof e;return t=="string"||t=="number"||t=="symbo...
function Ho (line 21) | function Ho(e,t){var n=e.__data__;return ab(t)?n[typeof t=="string"?"str...
function cb (line 21) | function cb(e){var t=Ho(this,e).delete(e);return this.size-=t?1:0,t}
function ub (line 21) | function ub(e){return Ho(this,e).get(e)}
function fb (line 21) | function fb(e){return Ho(this,e).has(e)}
function db (line 21) | function db(e,t){var n=Ho(this,e),r=n.size;return n.set(e,t),this.size+=...
function Vn (line 21) | function Vn(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){va...
function hb (line 21) | function hb(e){return e==null?"":yu(e)}
function xb (line 21) | function xb(e){if(!Kn(e)||Mr(e)!=gb)return!1;var t=zu(e);if(t===null)ret...
function Cb (line 21) | function Cb(e,t,n){var r=-1,o=e.length;t<0&&(t=-t>o?0:o+t),n=n>o?o:n,n<0...
function wb (line 21) | function wb(e,t,n){var r=e.length;return n=n===void 0?r:n,!t&&n>=r?e:Cb(...
function Au (line 21) | function Au(e){return Ob.test(e)}
function zb (line 21) | function zb(e){return e.split("")}
function Ub (line 21) | function Ub(e){return e.match(Wb)||[]}
function Kb (line 21) | function Kb(e){return Au(e)?Ub(e):zb(e)}
function Vb (line 21) | function Vb(e){return function(t){t=hb(t);var n=Au(t)?Kb(t):void 0,r=n?n...
function Xb (line 21) | function Xb(){this.__data__=new kt,this.size=0}
function Yb (line 21) | function Yb(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}
function Zb (line 21) | function Zb(e){return this.__data__.get(e)}
function Jb (line 21) | function Jb(e){return this.__data__.has(e)}
function e0 (line 21) | function e0(e,t){var n=this.__data__;if(n instanceof kt){var r=n.__data_...
function qn (line 21) | function qn(e){var t=this.__data__=new kt(e);this.size=t.size}
function n0 (line 21) | function n0(e,t){if(t)return e.slice();var n=e.length,r=la?la(n):new e.c...
function o0 (line 21) | function o0(e){var t=new e.constructor(e.byteLength);return new aa(t).se...
function i0 (line 21) | function i0(e,t){var n=t?o0(e.buffer):e.buffer;return new e.constructor(...
function s0 (line 21) | function s0(e){return typeof e.constructor=="function"&&!Su(e)?_v(zu(e))...
function l0 (line 21) | function l0(e){return function(t,n,r){for(var o=-1,i=Object(t),s=r(t),l=...
function zi (line 21) | function zi(e,t,n){(n!==void 0&&!Bo(e[t],n)||n===void 0&&!(t in e))&&bs(...
function u0 (line 21) | function u0(e){return Kn(e)&&ys(e)}
function Ii (line 21) | function Ii(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="_...
function f0 (line 21) | function f0(e){return Nv(e,Tu(e))}
function d0 (line 21) | function d0(e,t,n,r,o,i,s){var l=Ii(e,n),a=Ii(t,n),c=s.get(a);if(c){zi(e...
function Du (line 21) | function Du(e,t,n,r,o){e!==t&&c0(t,function(i,s){if(o||(o=new qn),xn(i))...
function r1 (line 31) | function r1(e){return e}
function nt (line 31) | function nt(e,t,n,r,o,i){const s=ko(),l=ze(mn,null);if(n){const c=()=>{c...
function wn (line 31) | function wn(e={},t={defaultBordered:!0}){const n=ze(mn,null);return{inli...
function Fo (line 31) | function Fo(e,t,n){if(!t)return;const r=ko(),o=ze(mn,null),i=()=>{const ...
function Gn (line 31) | function Gn(e,t,n,r){var o;n||yp("useThemeClass","cssVarsRef is not pass...
function Lo (line 31) | function Lo(e,t,n){if(!t)return;const r=ko(),o=V(()=>{const{value:s}=t;i...
function Hr (line 31) | function Hr(e,t){return Ee({name:Gb(e),setup(){var n;const r=(n=ze(mn,nu...
method setup (line 31) | setup(e,{slots:t}){const n=ou();return()=>E(Gt,{name:"icon-switch-transi...
method setup (line 31) | setup(e,{slots:t}){function n(l){e.width?l.style.maxWidth=`${l.offsetWid...
method setup (line 43) | setup(e){Fo("-base-icon",b0,zt(e,"clsPrefix"))}
method render (line 43) | render(){return E("i",{class:`${this.clsPrefix}-base-icon`,onClick:this....
method setup (line 87) | setup(e){return Fo("-base-close",y0,zt(e,"clsPrefix")),()=>{const{clsPre...
function bo (line 87) | function bo({originalTransform:e="",left:t=0,top:n=0,transition:r=`all ....
method setup (line 219) | setup(e){Fo("-base-loading",C0,zt(e,"clsPrefix"))}
method render (line 219) | render(){const{clsPrefix:e,radius:t,strokeWidth:n,stroke:r,scale:o}=this...
function ca (line 219) | function ca(e){return _0+String(e)+")"}
function je (line 219) | function je(e){const t=Array.from(Xu);return t[3]=Number(e),fs(S0,t)}
function Zu (line 219) | function Zu({name:e="fade-in",enterDuration:t="0.2s",leaveDuration:n="0....
method setup (line 267) | setup(e){const{mergedClsPrefixRef:t,inlineThemeDisabled:n,mergedRtlRef:r...
method render (line 267) | render(){var e;const{$slots:t,mergedClsPrefix:n,triggerDisplayManually:r...
function z0 (line 267) | function z0({transformOrigin:e="inherit",duration:t=".2s",enterScale:n="...
method setup (line 274) | setup(e){Fo("-base-wave",I0,zt(e,"clsPrefix"));const t=se(null),n=se(!1)...
method render (line 274) | render(){const{clsPrefix:e}=this;return E("div",{ref:"selfRef","aria-hid...
function k0 (line 274) | function k0({duration:e=".2s",delay:t=".1s"}={}){return[D("&.fade-in-wid...
function H0 (line 292) | function H0({overflow:e="hidden",duration:t=".3s",originalTransition:n="...
function en (line 314) | function en(e){return fs(e,[255,255,255,.16])}
function to (line 314) | function to(e){return fs(e,[0,0,0,.12])}
method setup (line 391) | setup(e){const t=se(null),n=se(null),r=se(!1),o=Ei(()=>!e.quaternary&&!e...
method render (line 391) | render(){const{mergedClsPrefix:e,tag:t,onRender:n}=this;n==null||n();con...
method setup (line 477) | setup(e){const t=()=>{const{onClose:c}=e;c&&un(c)},{inlineThemeDisabled:...
method render (line 477) | render(){const{segmented:e,bordered:t,hoverable:n,mergedClsPrefix:r,rtlE...
method setup (line 477) | setup(e){const t=ze(mn,null),n=V(()=>{const{theme:p}=e;if(p===null)retur...
method render (line 477) | render(){var e,t,n,r;return this.abstract?(r=(n=this.$slots).default)===...
method setup (line 523) | setup(e){const{mergedComponentPropsRef:t,mergedClsPrefixRef:n,inlineThem...
method render (line 523) | render(){var e;const{bordered:t,mergedIconPlacement:n,cssVars:r,closable...
method setup (line 523) | setup(e){const t=se(null),n=se(null),r=se(e.show),o=se(null),i=se(null);...
method render (line 523) | render(){const{$slots:e,$attrs:t,handleEnter:n,handleAfterLeave:r,handle...
method setup (line 554) | setup(e){const t=se(null),{mergedClsPrefixRef:n,namespaceRef:r,inlineThe...
method render (line 554) | render(){const{mergedClsPrefix:e}=this;return E(hg,{to:this.to,show:this...
method setup (line 554) | setup(e){const t=se(!0);function n(){const{onInternalAfterLeave:u,intern...
method render (line 554) | render(){const{handlePositiveClick:e,handleUpdateShow:t,handleNegativeCl...
method setup (line 554) | setup(){const e=se([]),t={};function n(l={}){const a=ds(),c=Xt(Object.as...
method render (line 554) | render(){var e,t;return E(Me,null,[this.dialogList.map(n=>E(by,Uc(n,["de...
method setup (line 647) | setup(e){const{inlineThemeDisabled:t,mergedRtlRef:n}=wn(e),{props:r,merg...
method render (line 647) | render(){const{render:e,type:t,closable:n,content:r,mergedClsPrefix:o,cs...
function Ty (line 647) | function Ty(e,t,n){if(typeof e=="function")return e();{const r=t==="load...
method setup (line 647) | setup(e){let t=null;const n=se(!0);Yt(()=>{r()});function r(){const{dura...
method render (line 647) | render(){return E(qu,{appear:!0,onAfterLeave:this.handleAfterLeave,onLea...
method setup (line 647) | setup(e){const{mergedClsPrefixRef:t}=wn(e),n=se([]),r=se({}),o={create(a...
method render (line 647) | render(){var e,t,n;return E(Me,null,(t=(e=this.$slots).default)===null||...
function Ay (line 651) | function Ay(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}
function ri (line 651) | function ri(e,t){const n={};for(const r in t){const o=t[r];n[r]=ft(o)?o....
function oi (line 651) | function oi(e,t,n="/"){let r,o={},i="",s="";const l=t.indexOf("#");let a...
function My (line 651) | function My(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+...
function pa (line 651) | function pa(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?...
function Hy (line 651) | function Hy(e,t,n){const r=t.matched.length-1,o=n.matched.length-1;retur...
function Fn (line 651) | function Fn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}
function af (line 651) | function af(e,t){if(Object.keys(e).length!==Object.keys(t).length)return...
function Fy (line 651) | function Fy(e,t){return ft(e)?ga(e,t):ft(t)?ga(t,e):e===t}
function ga (line 651) | function ga(e,t){return ft(t)?e.length===t.length&&e.every((n,r)=>n===t[...
function Ly (line 651) | function Ly(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t....
function jy (line 651) | function jy(e){if(!e)if(Rn){const t=document.querySelector("base");e=t&&...
function Ny (line 651) | function Ny(e,t){return e.replace(Dy,"#")+t}
function Wy (line 651) | function Wy(e,t){const n=document.documentElement.getBoundingClientRect(...
function Uy (line 651) | function Uy(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.s...
function va (line 651) | function va(e,t){return(history.state?history.state.position-t:-1)+e}
function Ky (line 651) | function Ky(e,t){ki.set(e,t)}
function Vy (line 651) | function Vy(e){const t=ki.get(e);return ki.delete(e),t}
function cf (line 651) | function cf(e,t){const{pathname:n,search:r,hash:o}=t,i=e.indexOf("#");if...
function Gy (line 651) | function Gy(e,t,n,r){let o=[],i=[],s=null;const l=({state:d})=>{const v=...
function ma (line 651) | function ma(e,t,n,r=!1,o=!1){return{back:e,current:t,forward:n,replaced:...
function Xy (line 651) | function Xy(e){const{history:t,location:n}=window,r={value:cf(e,n)},o={v...
function Yy (line 651) | function Yy(e){e=jy(e);const t=Xy(e),n=Gy(e,t.state,t.location,t.replace...
function Zy (line 651) | function Zy(e){return e=location.host?e||location.pathname+location.sear...
function Jy (line 651) | function Jy(e){return typeof e=="string"||e&&typeof e=="object"}
function uf (line 651) | function uf(e){return typeof e=="string"||typeof e=="symbol"}
function Ln (line 651) | function Ln(e,t){return ye(new Error,{type:e,[ff]:!0},t)}
function Et (line 651) | function Et(e,t){return e instanceof Error&&ff in e&&(t==null||!!(e.type...
function tx (line 651) | function tx(e,t){const n=ye({},Qy,t),r=[];let o=n.start?"^":"";const i=[...
function nx (line 651) | function nx(e,t){let n=0;for(;n<e.length&&n<t.length;){const r=t[n]-e[n]...
function rx (line 651) | function rx(e,t){let n=0;const r=e.score,o=t.score;for(;n<r.length&&n<o....
function xa (line 651) | function xa(e){const t=e[e.length-1];return e.length>0&&t[t.length-1]<0}
function sx (line 651) | function sx(e){if(!e)return[[]];if(e==="/")return[[ox]];if(!e.startsWith...
function lx (line 651) | function lx(e,t,n){const r=tx(sx(e.path),n),o=ye(r,{record:e,parent:t,ch...
function ax (line 651) | function ax(e,t){const n=[],r=new Map;t=Sa({strict:!1,end:!0,sensitive:!...
function Ca (line 651) | function Ca(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}
function cx (line 651) | function cx(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e...
function ux (line 651) | function ux(e){const t={},n=e.props||!1;if("component"in e)t.default=n;e...
function wa (line 651) | function wa(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}
function fx (line 651) | function fx(e){return e.reduce((t,n)=>ye(t,n.meta),{})}
function Sa (line 651) | function Sa(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];retur...
function df (line 651) | function df(e,t){return t.children.some(n=>n===e||df(e,n))}
function Es (line 651) | function Es(e){return encodeURI(""+e).replace(yx,"|").replace(vx,"[").re...
function Cx (line 651) | function Cx(e){return Es(e).replace(vf,"{").replace(mf,"}").replace(gf,"...
function Bi (line 651) | function Bi(e){return Es(e).replace(pf,"%2B").replace(xx,"+").replace(hf...
function wx (line 651) | function wx(e){return Bi(e).replace(px,"%3D")}
function Sx (line 651) | function Sx(e){return Es(e).replace(hf,"%23").replace(gx,"%3F")}
function _x (line 651) | function _x(e){return e==null?"":Sx(e).replace(hx,"%2F")}
function yo (line 651) | function yo(e){try{return decodeURIComponent(""+e)}catch{}return""+e}
function Ex (line 651) | function Ex(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?...
function _a (line 651) | function _a(e){let t="";for(let n in e){const r=e[n];if(n=wx(n),r==null)...
function $x (line 651) | function $x(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[...
function nr (line 651) | function nr(){let e=[];function t(r){return e.push(r),()=>{const o=e.ind...
function Wt (line 651) | function Wt(e,t,n,r,o){const i=r&&(r.enterCallbacks[o]=r.enterCallbacks[...
function ii (line 651) | function ii(e,t,n,r){const o=[];for(const i of e)for(const s in i.compon...
function Rx (line 651) | function Rx(e){return typeof e=="object"||"displayName"in e||"props"in e...
function $a (line 651) | function $a(e){const t=ze($s),n=ze(bf),r=V(()=>t.resolve(Ct(e.to))),o=V(...
method setup (line 651) | setup(e,{slots:t}){const n=Xt($a(e)),{options:r}=ze($s),o=V(()=>({[Ra(e....
function zx (line 651) | function zx(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defa...
function Ix (line 651) | function Ix(e,t){for(const n in t){const r=t[n],o=e[n];if(typeof r=="str...
function Pa (line 651) | function Pa(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}
method setup (line 651) | setup(e,{attrs:t,slots:n}){const r=ze(Mi),o=V(()=>e.route||r.value),i=ze...
function Ta (line 651) | function Ta(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}
function kx (line 651) | function kx(e){const t=ax(e.routes,e),n=e.parseQuery||Ex,r=e.stringifyQu...
function Bx (line 651) | function Bx(e,t){const n=[],r=[],o=[],i=Math.max(t.matched.length,e.matc...
method setup (line 651) | setup(e){const t={common:{primaryColor:"#2080F0FF",primaryColorHover:"#4...
FILE: web/js/bing/chat/amd.js
function e (line 2) | function e(n,i,u){t[n]||(t[n]={dependencies:i,callback:u},r(n))}
function r (line 2) | function r(n){if(n){if(n)return u(n)}else{if(!f){for(var r in t)u(r);f=!...
function u (line 2) | function u(n){var s,e;if(i[n])return i[n];if(t.hasOwnProperty(n)){var h=...
function f (line 2) | function f(){return function(){for(var r,h,c,t=[],n=0;n<arguments.length...
function s (line 2) | function s(n){for(var t in i)if(i[t].h===n)return t}
function e (line 2) | function e(n,t){for(var u,e=n.split("."),i=_w,r=0;r<e.length;r++)u=e[r],...
function o (line 2) | function o(){var e=i["rms.js"].q,o,f,r,n,s,u,t;if(e.length>0)for(o=!1,f=...
function h (line 2) | function h(){var n,t,f;for(u=!1,n=0;n<r.length;n++)t=r[n],f=e(t,!0),i[t]...
function c (line 2) | function c(){for(var t,n=0;n<r.length;n++){var o=r[n],s=i[o].q,h=e(o);fo...
function l (line 2) | function l(n,t,i,r){n&&((n===_w||n===_d||n===_d.body)&&t=="load"?_w.sj_e...
function lb (line 2) | function lb(){_w.si_sendCReq&&sb_st(_w.si_sendCReq,800);_w.lbc&&_w.lbc()}
function n (line 2) | function n(n){n=sb_ie?_w.event:n;(!n.altKey||n.ctrlKey||n.shiftKey)&&(n....
function n (line 2) | function n(n){_w.si_ct(sb_ie?_w.event.srcElement:n.target,!1,_w.event||n...
function f (line 2) | function f(n){return i.hasOwnProperty(n)?i[n]:n}
function e (line 2) | function e(n){var t="S";return n==0?t="P":n==2&&(t="M"),t}
function o (line 2) | function o(n){for(var c,i=[],t={},r,l=0;l<n.length;l++){var a=n[l],o=a.v...
function a (line 2) | function a(){return c(Math.random()*1e4)}
function o (line 2) | function o(){return y?c(f.now())+l:+new Date}
function v (line 2) | function v(n,r,f){t.length===0&&i&&sb_st(u,1e3);t.push({k:n,v:r,t:f})}
function p (line 2) | function p(n){return i||(r=n),!i}
function w (line 2) | function w(n,t){t||(t=o());v(n,t,0)}
function b (line 2) | function b(n,t){v(n,t,1)}
function u (line 2) | function u(){var u,f;if(t.length){for(u=0;u<t.length;u++)f=t[u],f.t===0&...
function k (line 2) | function k(){r=o();e=a();i=!1;sj_evt.bind("onP1",u)}
function u (line 2) | function u(n,u){n in t||(t[n]=[]);!u.compute||n in r||(r[n]=u.compute);!...
function f (line 2) | function f(n,i){t[n].push({t:s(),i:i})}
function e (line 2) | function e(n){return n in i&&i[n](),n in t?t[n]:void 0}
function o (line 2) | function o(){for(var n in r)r[n]()}
function s (line 2) | function s(){return window.performance&&performance.now?Math.round(perfo...
function i (line 2) | function i(){var i=document.documentElement,r=document.body,u="innerWidt...
function i (line 2) | function i(){var e,o,u,s,f,r;if(document.querySelector&&document.querySe...
function f (line 2) | function f(){u(sj_be,r)}
function r (line 2) | function r(i){return i&&n.enqueue(t,i),!0}
function e (line 2) | function e(){u(sj_ue,r)}
function u (line 2) | function u(n,t){for(var u,r=0;r<i.length;r++)u=i[r],n(u==="resize"?windo...
FILE: web/js/bing/chat/config.js
function parseQueryParamsFromQuery (line 620) | function parseQueryParamsFromQuery(n, t) {
function parseQueryParams (line 631) | function parseQueryParams() {
function convertQueryParamsToUrlStr (line 637) | function convertQueryParamsToUrlStr(n, t) {
function queryParamsToString (line 642) | function queryParamsToString(n) {
function getCurrentQuery (line 648) | function getCurrentQuery() {
function extractDomainFromUrl (line 655) | function extractDomainFromUrl(n, t, i) {
function addCommonPersistedParams (line 671) | function addCommonPersistedParams(n) {
FILE: web/js/bing/chat/global.js
function si_T (line 65) | function si_T(a) {
FILE: web/js/bing/chat/lib.js
function u (line 6) | function u(n, t) {
function f (line 13) | function f(n, u) {
function e (line 22) | function e(n, f) {
function s (line 35) | function s(n, t) {
function i (line 40) | function i(n, i) {
function h (line 50) | function h(n, i) {
function o (line 57) | function o(n, t) {
function t (line 60) | function t(n) {
function getBrowserWidth (line 73) | function getBrowserWidth() {
function getBrowserHeight (line 78) | function getBrowserHeight() {
function getBrowserScrollWidth (line 83) | function getBrowserScrollWidth() {
function getBrowserScrollHeight (line 87) | function getBrowserScrollHeight() {
FILE: web/sw.js
class l (line 1) | class l extends Error{constructor(e,t){const n=J(e,t);super(n),this.name...
method constructor (line 1) | constructor(e,t){const n=J(e,t);super(n),this.name=e,this.details=t}
function O (line 1) | function O(s,e){const t=e();return s.waitUntil(t),t}
function Z (line 1) | function Z(s){if(!s)throw new l("add-to-cache-list-unexpected-type",{ent...
class ee (line 1) | class ee{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.h...
method constructor (line 1) | constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerW...
class te (line 1) | class te{constructor({precacheController:e}){this.cacheKeyWillBeUsed=asy...
method constructor (line 1) | constructor({precacheController:e}){this.cacheKeyWillBeUsed=async({req...
function se (line 1) | function se(){if(w===void 0){const s=new Response("");if("body"in s)try{...
function ne (line 1) | async function ne(s,e){let t=null;if(s.url&&(t=new URL(s.url).origin),t!...
function S (line 1) | function S(s,e){const t=new URL(s);for(const n of e)t.searchParams.delet...
function re (line 1) | async function re(s,e,t,n){const a=S(e.url,t);if(e.url===a)return s.matc...
class ie (line 1) | class ie{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,t...
method constructor (line 1) | constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.rej...
function ce (line 1) | async function ce(){for(const s of F)await s()}
function oe (line 1) | function oe(s){return new Promise(e=>setTimeout(e,s))}
function C (line 1) | function C(s){return typeof s=="string"?new Request(s):s}
class he (line 1) | class he{constructor(e,t){this._cacheKeys={},Object.assign(this,t),this....
method constructor (line 1) | constructor(e,t){this._cacheKeys={},Object.assign(this,t),this.event=t...
method fetch (line 1) | async fetch(e){const{event:t}=this;let n=C(e);if(n.mode==="navigate"&&...
method fetchAndCachePut (line 1) | async fetchAndCachePut(e){const t=await this.fetch(e),n=t.clone();retu...
method cacheMatch (line 1) | async cacheMatch(e){const t=C(e);let n;const{cacheName:a,matchOptions:...
method cachePut (line 1) | async cachePut(e,t){const n=C(e);await oe(0);const a=await this.getCac...
method getCacheKey (line 1) | async getCacheKey(e,t){const n=`${e.url} | ${t}`;if(!this._cacheKeys[n...
method hasCallback (line 1) | hasCallback(e){for(const t of this._strategy.plugins)if(e in t)return!...
method runCallbacks (line 1) | async runCallbacks(e,t){for(const n of this.iterateCallbacks(e))await ...
method iterateCallbacks (line 1) | *iterateCallbacks(e){for(const t of this._strategy.plugins)if(typeof t...
method waitUntil (line 1) | waitUntil(e){return this._extendLifetimePromises.push(e),e}
method doneWaiting (line 1) | async doneWaiting(){let e;for(;e=this._extendLifetimePromises.shift();...
method destroy (line 1) | destroy(){this._handlerDeferred.resolve(null)}
method _ensureResponseSafeToCache (line 1) | async _ensureResponseSafeToCache(e){let t=e,n=!1;for(const a of this.i...
class N (line 1) | class N{constructor(e={}){this.cacheName=b.getRuntimeName(e.cacheName),t...
method constructor (line 1) | constructor(e={}){this.cacheName=b.getRuntimeName(e.cacheName),this.pl...
method handle (line 1) | handle(e){const[t]=this.handleAll(e);return t}
method handleAll (line 1) | handleAll(e){e instanceof FetchEvent&&(e={event:e,request:e.request});...
method _getResponse (line 1) | async _getResponse(e,t,n){await e.runCallbacks("handlerWillStart",{eve...
method _awaitComplete (line 1) | async _awaitComplete(e,t,n,a){let r,i;try{r=await e}catch{}try{await t...
class p (line 1) | class p extends N{constructor(e={}){e.cacheName=b.getPrecacheName(e.cach...
method constructor (line 1) | constructor(e={}){e.cacheName=b.getPrecacheName(e.cacheName),super(e),...
method _handle (line 1) | async _handle(e,t){const n=await t.cacheMatch(e);return n||(t.event&&t...
method _handleFetch (line 1) | async _handleFetch(e,t){let n;const a=t.params||{};if(this._fallbackTo...
method _handleInstall (line 1) | async _handleInstall(e,t){this._useDefaultCacheabilityPluginIfNeeded()...
method _useDefaultCacheabilityPluginIfNeeded (line 1) | _useDefaultCacheabilityPluginIfNeeded(){let e=null,t=0;for(const[n,a]o...
method cacheWillUpdate (line 1) | async cacheWillUpdate({response:s}){return!s||s.status>=400?null:s}
method cacheWillUpdate (line 1) | async cacheWillUpdate({response:s}){return s.redirected?await ne(s):s}
class le (line 1) | class le{constructor({cacheName:e,plugins:t=[],fallbackToNetwork:n=!0}={...
method constructor (line 1) | constructor({cacheName:e,plugins:t=[],fallbackToNetwork:n=!0}={}){this...
method strategy (line 1) | get strategy(){return this._strategy}
method precache (line 1) | precache(e){this.addToCacheList(e),this._installAndActiveListenersAdde...
method addToCacheList (line 1) | addToCacheList(e){const t=[];for(const n of e){typeof n=="string"?t.pu...
method install (line 2) | install(e){return O(e,async()=>{const t=new ee;this.strategy.plugins.p...
method activate (line 2) | activate(e){return O(e,async()=>{const t=await self.caches.open(this.s...
method getURLsToCacheKeys (line 2) | getURLsToCacheKeys(){return this._urlsToCacheKeys}
method getCachedURLs (line 2) | getCachedURLs(){return[...this._urlsToCacheKeys.keys()]}
method getCacheKeyForURL (line 2) | getCacheKeyForURL(e){const t=new URL(e,location.href);return this._url...
method getIntegrityForCacheKey (line 2) | getIntegrityForCacheKey(e){return this._cacheKeysToIntegrities.get(e)}
method matchPrecache (line 2) | async matchPrecache(e){const t=e instanceof Request?e.url:e,n=this.get...
method createHandlerBoundToURL (line 2) | createHandlerBoundToURL(e){const t=this.getCacheKeyForURL(e);if(!t)thr...
class g (line 2) | class g{constructor(e,t,n=H){this.handler=x(t),this.match=e,this.method=...
method constructor (line 2) | constructor(e,t,n=H){this.handler=x(t),this.match=e,this.method=n}
method setCatchHandler (line 2) | setCatchHandler(e){this.catchHandler=x(e)}
class ue (line 2) | class ue extends g{constructor(e,t,n){const a=({url:r})=>{const i=e.exec...
method constructor (line 2) | constructor(e,t,n){const a=({url:r})=>{const i=e.exec(r.href);if(i&&!(...
class de (line 2) | class de{constructor(){this._routes=new Map,this._defaultHandlerMap=new ...
method constructor (line 2) | constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}
method routes (line 2) | get routes(){return this._routes}
method addFetchListener (line 2) | addFetchListener(){self.addEventListener("fetch",e=>{const{request:t}=...
method addCacheListener (line 2) | addCacheListener(){self.addEventListener("message",e=>{if(e.data&&e.da...
method handleRequest (line 2) | handleRequest({request:e,event:t}){const n=new URL(e.url,location.href...
method findMatchingRoute (line 2) | findMatchingRoute({url:e,sameOrigin:t,request:n,event:a}){const r=this...
method setDefaultHandler (line 2) | setDefaultHandler(e,t=H){this._defaultHandlerMap.set(t,x(e))}
method setCatchHandler (line 2) | setCatchHandler(e){this._catchHandler=x(e)}
method registerRoute (line 2) | registerRoute(e){this._routes.has(e.method)||this._routes.set(e.method...
method unregisterRoute (line 2) | unregisterRoute(e){if(!this._routes.has(e.method))throw new l("unregis...
function E (line 2) | function E(s,e,t){let n;if(typeof s=="string"){const r=new URL(s,locatio...
function pe (line 2) | function pe(s,e=[]){for(const t of[...s.searchParams.keys()])e.some(n=>n...
class me (line 2) | class me extends g{constructor(e,t){const n=({request:a})=>{const r=e.ge...
method constructor (line 2) | constructor(e,t){const n=({request:a})=>{const r=e.getURLsToCacheKeys(...
function we (line 2) | function we(s){const e=M(),t=new me(e,s);E(t)}
function Re (line 2) | function Re(){self.addEventListener("activate",s=>{const e=b.getPrecache...
function be (line 2) | function be(s){return M().createHandlerBoundToURL(s)}
function Ce (line 2) | function Ce(s){M().precache(s)}
function xe (line 2) | function xe(s,e){Ce(s),we(e)}
class Ee (line 2) | class Ee extends g{constructor(e,{allowlist:t=[/./],denylist:n=[]}={}){s...
method constructor (line 2) | constructor(e,{allowlist:t=[/./],denylist:n=[]}={}){super(a=>this._mat...
method _match (line 2) | _match({url:e,request:t}){if(t&&t.mode!=="navigate")return!1;const n=e...
class De (line 2) | class De extends N{async _handle(e,t){let n=await t.cacheMatch(e),a;if(!...
method _handle (line 2) | async _handle(e,t){let n=await t.cacheMatch(e),a;if(!n)try{n=await t.f...
class Ue (line 2) | class Ue extends N{constructor(e={}){super(e),this.plugins.some(t=>"cach...
method constructor (line 2) | constructor(e={}){super(e),this.plugins.some(t=>"cacheWillUpdate"in t)...
method _handle (line 2) | async _handle(e,t){const n=t.fetchAndCachePut(e).catch(()=>{});t.waitU...
class Te (line 2) | class Te{constructor(e={}){this._statuses=e.statuses,this._headers=e.hea...
method constructor (line 2) | constructor(e={}){this._statuses=e.statuses,this._headers=e.headers}
method isResponseCacheable (line 2) | isResponseCacheable(e){let t=!0;return this._statuses&&(t=this._status...
class q (line 2) | class q{constructor(e){this.cacheWillUpdate=async({response:t})=>this._c...
method constructor (line 2) | constructor(e){this.cacheWillUpdate=async({response:t})=>this._cacheab...
function V (line 2) | function V(s){s.then(()=>{})}
function ke (line 2) | function ke(){return v||(v=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCurso...
function Ie (line 2) | function Ie(){return W||(W=[IDBCursor.prototype.advance,IDBCursor.protot...
function Ne (line 2) | function Ne(s){const e=new Promise((t,n)=>{const a=()=>{s.removeEventLis...
function Me (line 2) | function Me(s){if(k.has(s))return;const e=new Promise((t,n)=>{const a=()...
method get (line 2) | get(s,e,t){if(s instanceof IDBTransaction){if(e==="done")return k.get(s)...
method set (line 2) | set(s,e,t){return s[e]=t,!0}
method has (line 2) | has(s,e){return s instanceof IDBTransaction&&(e==="done"||e==="store")?!...
function Ae (line 2) | function Ae(s){I=s(I)}
function Ke (line 2) | function Ke(s){return s===IDBDatabase.prototype.transaction&&!("objectSt...
function Oe (line 2) | function Oe(s){return typeof s=="function"?Ke(s):(s instanceof IDBTransa...
function f (line 2) | function f(s){if(s instanceof IDBRequest)return Ne(s);if(U.has(s))return...
function Se (line 2) | function Se(s,e,{blocked:t,upgrade:n,blocking:a,terminated:r}={}){const ...
function ve (line 2) | function ve(s,{blocked:e}={}){const t=indexedDB.deleteDatabase(s);return...
function B (line 2) | function B(s,e){if(!(s instanceof IDBDatabase&&!(e in s)&&typeof e=="str...
class Fe (line 2) | class Fe{constructor(e){this._db=null,this._cacheName=e}_upgradeDb(e){co...
method constructor (line 2) | constructor(e){this._db=null,this._cacheName=e}
method _upgradeDb (line 2) | _upgradeDb(e){const t=e.createObjectStore(R,{keyPath:"id"});t.createIn...
method _upgradeDbAndDeleteOldDbs (line 2) | _upgradeDbAndDeleteOldDbs(e){this._upgradeDb(e),this._cacheName&&ve(th...
method setTimestamp (line 2) | async setTimestamp(e,t){e=j(e);const n={url:e,timestamp:t,cacheName:th...
method getTimestamp (line 2) | async getTimestamp(e){const n=await(await this.getDb()).get(R,this._ge...
method expireEntries (line 2) | async expireEntries(e,t){const n=await this.getDb();let a=await n.tran...
method _getId (line 2) | _getId(e){return this._cacheName+"|"+j(e)}
method getDb (line 2) | async getDb(){return this._db||(this._db=await Se(je,1,{upgrade:this._...
class He (line 2) | class He{constructor(e,t={}){this._isRunning=!1,this._rerunRequested=!1,...
method constructor (line 2) | constructor(e,t={}){this._isRunning=!1,this._rerunRequested=!1,this._m...
method expireEntries (line 2) | async expireEntries(){if(this._isRunning){this._rerunRequested=!0;retu...
method updateTimestamp (line 2) | async updateTimestamp(e){await this._timestampModel.setTimestamp(e,Dat...
method isURLExpired (line 2) | async isURLExpired(e){if(this._maxAgeSeconds){const t=await this._time...
method delete (line 2) | async delete(){this._rerunRequested=!1,await this._timestampModel.expi...
function qe (line 2) | function qe(s){F.add(s)}
class Ve (line 2) | class Ve{constructor(e={}){this.cachedResponseWillBeUsed=async({event:t,...
method constructor (line 2) | constructor(e={}){this.cachedResponseWillBeUsed=async({event:t,request...
method _getCacheExpiration (line 2) | _getCacheExpiration(e){if(e===b.getRuntimeName())throw new l("expire-c...
method _isResponseDateFresh (line 2) | _isResponseDateFresh(e){if(!this._maxAgeSeconds)return!0;const t=this....
method _getDateHeaderTimestamp (line 2) | _getDateHeaderTimestamp(e){if(!e.headers.has("date"))return null;const...
method deleteCacheAndMetadata (line 2) | async deleteCacheAndMetadata(){for(const[e,t]of this._cacheExpirations...
FILE: web/web.go
function init (line 16) | func init() {
function initWebPathMapByDir (line 28) | func initWebPathMapByDir() error {
function initWebPathMapByFS (line 41) | func initWebPathMapByFS() error {
function GetWebFS (line 54) | func GetWebFS() http.FileSystem {
Condensed preview — 95 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,479K chars).
[
{
"path": ".github/workflows/build.yml",
"chars": 4976,
"preview": "name: Build Go-Proxy-BingAI\non:\n push:\n tags:\n - v*\n\njobs:\n release:\n runs-on: ubuntu-latest\n outputs:\n "
},
{
"path": ".gitignore",
"chars": 149,
"preview": "# Editor directories and files\n.vscode/*\n!.vscode/extensions.json\n!.vscode/launch.json\n.idea\n*.suo\n*.ntvs*\n*.njsproj\n*.s"
},
{
"path": ".vscode/extensions.json",
"chars": 46,
"preview": "{\n \"recommendations\": [\n \"golang.go\"\n ]\n}"
},
{
"path": ".vscode/launch.json",
"chars": 703,
"preview": "{\n // 使用 IntelliSense 了解相关属性。 \n // 悬停以查看现有属性的描述。\n // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387\n \"v"
},
{
"path": "LICENSE",
"chars": 1100,
"preview": "MIT License Copyright (c) 2023 adams549659584\n\nPermission is hereby granted, free\nof charge, to any person obtaining a c"
},
{
"path": "README.md",
"chars": 5312,
"preview": "# go-proxy-bing\n\n基于微软 New Bing 用 Vue3 和 Go 简单定制的微软 New Bing 演示站点,拥有一致的 UI 体验,支持 ChatGPT 提示词,国内可用,基本兼容微软 Bing AI 所有功能,无需登"
},
{
"path": "Taskfile.yaml",
"chars": 5750,
"preview": "version: '3'\n\nvars:\n BUILD_VERSION:\n sh: git describe --tags\n BUILD_DATE:\n sh: date \"+%F %T\"\n COMMIT_ID:\n sh"
},
{
"path": "api/helper/helper.go",
"chars": 1149,
"preview": "package helper\n\nimport (\n\t\"adams549659584/go-proxy-bingai/common\"\n\t\"encoding/json\"\n\t\"net/http\"\n)\n\ntype Response struct {"
},
{
"path": "api/index.go",
"chars": 485,
"preview": "package api\n\nimport (\n\t\"adams549659584/go-proxy-bingai/api/helper\"\n\t\"adams549659584/go-proxy-bingai/common\"\n\t\"net/http\"\n"
},
{
"path": "api/sydney.go",
"chars": 323,
"preview": "package api\n\nimport (\n\t\"adams549659584/go-proxy-bingai/api/helper\"\n\t\"adams549659584/go-proxy-bingai/common\"\n\t\"net/http\"\n"
},
{
"path": "api/sys-config.go",
"chars": 443,
"preview": "package api\n\nimport (\n\t\"adams549659584/go-proxy-bingai/api/helper\"\n\t\"adams549659584/go-proxy-bingai/common\"\n\t\"net/http\"\n"
},
{
"path": "api/web.go",
"chars": 567,
"preview": "package api\n\nimport (\n\t\"adams549659584/go-proxy-bingai/api/helper\"\n\t\"adams549659584/go-proxy-bingai/common\"\n\t\"adams54965"
},
{
"path": "cloudflare/index.html",
"chars": 3819,
"preview": "<!doctype html>\n<html>\n\n<head>\n <meta content=\"text/html; charset=utf-8\" http-equiv=\"content-type\" />\n <link rel=\"icon"
},
{
"path": "cloudflare/worker.js",
"chars": 4296,
"preview": "const SYDNEY_ORIGIN = 'https://sydney.bing.com';\nconst KEEP_REQ_HEADERS = [\n 'accept',\n 'accept-encoding',\n 'accept-l"
},
{
"path": "common/env.go",
"chars": 934,
"preview": "package common\n\nimport (\n\t\"os\"\n\t\"strings\"\n)\n\nvar (\n\t// is debug\n\tIS_DEBUG_MODE bool\n\t// socks\n\tSOCKS_URL string\n\tSOCKS_"
},
{
"path": "common/ip.go",
"chars": 10672,
"preview": "package common\n\nimport (\n\t\"fmt\"\n\t\"math/rand\"\n\t\"net\"\n\t\"time\"\n)\n\n// 使用真实有效的美国ip\n// https://lite.ip2location.com/united-sta"
},
{
"path": "common/proxy.go",
"chars": 10839,
"preview": "package common\n\nimport (\n\t\"bytes\"\n\t\"compress/gzip\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"math/rand\"\n\t\"net/http\"\n\t\"net/http/httputil\"\n\t\"n"
},
{
"path": "docker/Dockerfile",
"chars": 241,
"preview": "FROM golang:alpine AS builder\nWORKDIR /app\nCOPY . .\nRUN go build -ldflags=\"-s -w\" -tags netgo -trimpath -o go-proxy-bing"
},
{
"path": "docker/docker-compose.yml",
"chars": 1008,
"preview": "version: '3'\n\nservices:\n go-proxy-bingai:\n # 镜像名称\n image: adams549659584/go-proxy-bingai\n # 容器名称\n container"
},
{
"path": "frontend/.eslintrc.cjs",
"chars": 333,
"preview": "/* eslint-env node */\nrequire('@rushstack/eslint-patch/modern-module-resolution')\n\nmodule.exports = {\n root: true,\n 'e"
},
{
"path": "frontend/.gitignore",
"chars": 302,
"preview": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\n.DS_Stor"
},
{
"path": "frontend/.prettierrc.config.js",
"chars": 223,
"preview": "module.exports = {\n plugins: [require('prettier-plugin-tailwindcss')],\n $schema: 'https://json.schemastore.org/prettie"
},
{
"path": "frontend/.vscode/extensions.json",
"chars": 180,
"preview": "{\n \"recommendations\": [\n \"vue.volar\",\n \"vue.vscode-typescript-vue-plugin\",\n \"bradlc.vscode-tailwindcss\",\n \""
},
{
"path": "frontend/README.md",
"chars": 1678,
"preview": "# go-proxy-bingai\n\nThis template should help get you started developing with Vue 3 in Vite.\n\n## Recommended IDE Setup\n\n["
},
{
"path": "frontend/index.html",
"chars": 3689,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n <meta content=\"text/html; charset=utf-8\" http-equiv=\"content-type\" />\n <meta"
},
{
"path": "frontend/package.json",
"chars": 1516,
"preview": "{\n \"name\": \"go-proxy-bingai\",\n \"version\": \"1.8.7\",\n \"private\": true,\n \"scripts\": {\n \"dev\": \"vite\",\n \"build\": \""
},
{
"path": "frontend/postcss.config.js",
"chars": 82,
"preview": "module.exports = {\n plugins: {\n tailwindcss: {},\n autoprefixer: {},\n },\n}\n"
},
{
"path": "frontend/public/compose.html",
"chars": 207426,
"preview": "<!DOCTYPE html>\n<html dir=\"ltr\" lang=\"zh\" xml:lang=\"zh\" xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:Web=\"http://schemas.l"
},
{
"path": "frontend/public/data/prompts/prompts-zh-TW.json",
"chars": 26543,
"preview": "[\n {\n \"act\": \"擔任雅思寫作考官\",\n \"prompt\": \"我希望你假定自己是雅思寫作考官,根據雅思評判標準,按我給你的雅思考題和對應答案給我評分,並且按照雅思寫作評分細則給出打分依據。此外,請給我詳細的修改意見"
},
{
"path": "frontend/public/data/prompts/prompts-zh.json",
"chars": 27174,
"preview": "[\r\n {\r\n \"act\": \"担任雅思写作考官\",\r\n \"prompt\": \"我希望你假定自己是雅思写作考官,根据雅思评判标准,按我给你的雅思考题和对应答案给我评分,并且按照雅思写作评分细则给出打分依据。此外,请给我详细的修"
},
{
"path": "frontend/public/data/prompts/prompts.csv",
"chars": 79914,
"preview": "\"act\",\"prompt\"\n\"Linux Terminal\",\"I want you to act as a linux terminal. I will type commands and you will reply with wha"
},
{
"path": "frontend/public/js/bing/chat/amd.js",
"chars": 10963,
"preview": "/* eslint-disable */\nvar amd,define,require;(function(n){function e(n,i,u){t[n]||(t[n]={dependencies:i,callback:u},r(n))"
},
{
"path": "frontend/public/js/bing/chat/config.js",
"chars": 25105,
"preview": "/* eslint-disable */\n_w['_sydPayWallConfig'] = { loadSydneyConvResWithPayWall: false, useSydneyPayWall: false };\n_w['_sy"
},
{
"path": "frontend/public/js/bing/chat/core.js",
"chars": 780,
"preview": "/* eslint-disable */\n(function (n, t) {\n onload = function () {\n _G.BPT = new Date();\n // n && n();\n !_w.sb_pp"
},
{
"path": "frontend/public/js/bing/chat/global.js",
"chars": 2024,
"preview": "/* eslint-disable */\ntry {\n const logPathReg = new RegExp('/fd/ls/|/web/xls.aspx');\n // hack sb log\n const _oldSendBe"
},
{
"path": "frontend/public/js/bing/chat/lib.js",
"chars": 3040,
"preview": "/* eslint-disable */\nvar Lib;\n(function (n) {\n var t;\n (function (n) {\n function u(n, t) {\n var r, i;\n if"
},
{
"path": "frontend/src/App.vue",
"chars": 609,
"preview": "<script setup lang=\"ts\">\nimport { NMessageProvider, NConfigProvider, type GlobalThemeOverrides, NDialogProvider } from '"
},
{
"path": "frontend/src/api/model/ApiResult.ts",
"chars": 211,
"preview": "export interface ApiResult<T> {\r\n code: ApiResultCode;\r\n message: string;\r\n data: T;\r\n}\r\n\r\nexport enum ApiResultCode "
},
{
"path": "frontend/src/api/model/sysconf/SysConfig.ts",
"chars": 74,
"preview": "export interface SysConfig {\r\n isSysCK: boolean;\r\n isAuth: boolean;\r\n}\r\n"
},
{
"path": "frontend/src/api/sysconf.ts",
"chars": 381,
"preview": "import type { ApiResult } from './model/ApiResult';\r\nimport type { SysConfig } from './model/sysconf/SysConfig';\r\n\r\nexpo"
},
{
"path": "frontend/src/assets/css/base.css",
"chars": 58,
"preview": "@tailwind base;\n@tailwind components;\n@tailwind utilities;"
},
{
"path": "frontend/src/assets/css/conversation.css",
"chars": 445,
"preview": "/* 移除顶部背景遮挡 */\r\n.scroller>.top {\r\n display: none !important;\r\n}\r\n\r\n/* 移除顶部边距 */\r\n.scroller>.scroller-positioner>.conten"
},
{
"path": "frontend/src/assets/css/main.css",
"chars": 65,
"preview": "@import './base.css';\r\n\r\n.cib-serp-main {\r\n overflow: hidden;\r\n}"
},
{
"path": "frontend/src/components/ChatNav/ChatNav.vue",
"chars": 4970,
"preview": "<script setup lang=\"ts\">\r\nimport { h, ref } from 'vue';\r\nimport { NDropdown, type DropdownOption, NModal, NInput, NButto"
},
{
"path": "frontend/src/components/ChatNav/ChatNavItem.vue",
"chars": 327,
"preview": "<script setup lang=\"ts\">\r\n\r\ndefineProps<{\r\n navConfig: {\r\n key: string;\r\n label: string;\r\n url?: string;\r\n };"
},
{
"path": "frontend/src/components/ChatPromptStore/ChatPromptItem.vue",
"chars": 1512,
"preview": "<script setup lang=\"ts\">\r\nimport { usePromptStore, type IPrompt } from '@/stores/modules/prompt';\r\nimport { NThing, NTag"
},
{
"path": "frontend/src/components/ChatPromptStore/ChatPromptStore.vue",
"chars": 7537,
"preview": "<script setup lang=\"ts\">\r\nimport { ref } from 'vue';\r\nimport { NModal, NList, NListItem, NButton, useMessage, NSpace, NI"
},
{
"path": "frontend/src/components/ChatServiceSelect/ChatServiceSelect.vue",
"chars": 3248,
"preview": "<script setup lang=\"ts\">\r\nimport { NModal, NTable, NTag, NButton, NInput, useMessage } from 'naive-ui';\r\nimport { useCha"
},
{
"path": "frontend/src/components/CreateImage/CreateImage.vue",
"chars": 2171,
"preview": "<script setup lang=\"ts\">\r\nimport { ref } from 'vue';\r\nimport { NButton, NEmpty, NInput, NModal, useMessage } from 'naive"
},
{
"path": "frontend/src/components/LoadingSpinner/LoadingSpinner.vue",
"chars": 1464,
"preview": "<script setup lang=\"ts\">\r\ndefineProps<{\r\n isShow: boolean;\r\n}>();\r\n</script>\r\n\r\n<template>\r\n <Transition name=\"fade\">\r"
},
{
"path": "frontend/src/components/ReloadPWA/ReloadPWA.vue",
"chars": 1366,
"preview": "<script setup lang=\"ts\">\r\nimport { ref } from 'vue';\r\nimport { NModal, NButton, useMessage } from 'naive-ui';\r\nimport { "
},
{
"path": "frontend/src/main.ts",
"chars": 250,
"preview": "import './assets/css/main.css';\n\nimport { createApp } from 'vue';\nimport { setupStore } from './stores';\n\nimport App fro"
},
{
"path": "frontend/src/router/index.ts",
"chars": 365,
"preview": "import { createRouter, createWebHashHistory } from 'vue-router';\n\nconst router = createRouter({\n // history: createWebH"
},
{
"path": "frontend/src/stores/index.ts",
"chars": 283,
"preview": "import type { App } from 'vue';\r\nimport { createPinia } from 'pinia';\r\nimport piniaPluginPersistedstate from 'pinia-plug"
},
{
"path": "frontend/src/stores/modules/chat/index.ts",
"chars": 2854,
"preview": "import { ref } from 'vue';\r\nimport { defineStore } from 'pinia';\r\n\r\nexport interface SydneyConfig {\r\n baseUrl: string;\r"
},
{
"path": "frontend/src/stores/modules/prompt/index.ts",
"chars": 3112,
"preview": "import { ref, computed } from 'vue';\r\nimport { defineStore } from 'pinia';\r\n\r\nexport interface IPrompt {\r\n act: string;"
},
{
"path": "frontend/src/stores/modules/user/index.ts",
"chars": 3872,
"preview": "import { ref } from 'vue';\r\nimport { defineStore } from 'pinia';\r\nimport cookies from '@/utils/cookies';\r\nimport { sleep"
},
{
"path": "frontend/src/sw.ts",
"chars": 1761,
"preview": "import { cleanupOutdatedCaches, createHandlerBoundToURL, precacheAndRoute } from 'workbox-precaching';\r\nimport { Navigat"
},
{
"path": "frontend/src/utils/cookies.ts",
"chars": 592,
"preview": "export function get(name: string) {\r\n const v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)');\r\n return v "
},
{
"path": "frontend/src/utils/utils.ts",
"chars": 1013,
"preview": "export const isMobile = () => {\r\n const mobileRegex = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i;"
},
{
"path": "frontend/src/views/chat/components/Chat/Chat.vue",
"chars": 10680,
"preview": "<script setup lang=\"ts\">\r\nimport { onMounted, ref, computed } from 'vue';\r\nimport { NEmpty, NButton, useMessage, NResult"
},
{
"path": "frontend/src/views/chat/components/Chat/ChatPromptItem.vue",
"chars": 1205,
"preview": "<script setup lang=\"ts\">\r\nimport { usePromptStore, type IPrompt } from '@/stores/modules/prompt';\r\nimport { NThing, NTag"
},
{
"path": "frontend/src/views/chat/index.vue",
"chars": 327,
"preview": "<script setup lang=\"ts\">\r\nimport ChatNav from '@/components/ChatNav/ChatNav.vue';\r\nimport ChatPromptStore from '@/compon"
},
{
"path": "frontend/tailwind.config.js",
"chars": 270,
"preview": "/** @type {import('tailwindcss').Config} */\nmodule.exports = {\n // 禁用预加载,修复tailwind样式 与 naive-ui button等样式等冲突问题\n coreP"
},
{
"path": "frontend/tsconfig.app.json",
"chars": 427,
"preview": "{\n \"extends\": \"@vue/tsconfig/tsconfig.dom.json\",\n \"include\": [\n \"types/**/*.d.ts\",\n \"src/**/*\",\n \"src/**/*.vu"
},
{
"path": "frontend/tsconfig.json",
"chars": 139,
"preview": "{\n \"files\": [],\n \"references\": [\n {\n \"path\": \"./tsconfig.node.json\"\n },\n {\n \"path\": \"./tsconfig.app"
},
{
"path": "frontend/tsconfig.node.json",
"chars": 324,
"preview": "{\n \"extends\": \"@tsconfig/node18/tsconfig.json\",\n \"include\": [\n \"vite.config.*\",\n \"vitest.config.*\",\n \"cypress"
},
{
"path": "frontend/types/bing/index.d.ts",
"chars": 6325,
"preview": "declare const sj_evt: {\r\n bind: (n: string, t: Function, i: boolean, r?: any) => void;\r\n fire: (n: string) => void;\r\n}"
},
{
"path": "frontend/types/env.d.ts",
"chars": 189,
"preview": "/// <reference types=\"vite/client\" />\n\ndeclare module '*.vue' {\n import type { DefineComponent } from 'vue';\n const co"
},
{
"path": "frontend/types/global.d.ts",
"chars": 234,
"preview": "/**\r\n * 当前web版本信息\r\n */\r\ndeclare const __APP_INFO__: {\r\n buildTimestamp: number;\r\n name: string;\r\n version: string;\r\n "
},
{
"path": "frontend/types/vue3-virtual-scroll-list.d.ts",
"chars": 2108,
"preview": "declare module 'vue3-virtual-scroll-list' {\r\n import type { defineComponent } from 'vue';\r\n\r\n const VirtualProps = {\r\n"
},
{
"path": "frontend/vite.config.ts",
"chars": 2123,
"preview": "import { fileURLToPath, URL } from 'node:url';\nimport { defineConfig, loadEnv } from 'vite';\nimport vue from '@vitejs/pl"
},
{
"path": "go.mod",
"chars": 124,
"preview": "module adams549659584/go-proxy-bingai\n\ngo 1.20\n\nrequire (\n\tgithub.com/andybalholm/brotli v1.0.5\n\tgolang.org/x/net v0.10."
},
{
"path": "go.sum",
"chars": 330,
"preview": "github.com/andybalholm/brotli v1.0.5 h1:8uQZIdzKmjc/iuPu7O2ioW48L81FgatrcpfFmiq/cCs=\ngithub.com/andybalholm/brotli v1.0."
},
{
"path": "main.go",
"chars": 556,
"preview": "package main\n\nimport (\n\t\"adams549659584/go-proxy-bingai/api\"\n\t\"log\"\n\t\"net/http\"\n\t\"os\"\n\t\"time\"\n)\n\nfunc main() {\n\thttp.Han"
},
{
"path": "render.yaml",
"chars": 229,
"preview": "services:\n - type: web\n name: go-proxy-bingai\n # oregon: frankfurt\n plan: free\n env: go\n buildCommand: g"
},
{
"path": "vercel.json",
"chars": 448,
"preview": "{\n \"name\": \"go-proxy-bingai\",\n \"version\": 2,\n \"builds\": [\n {\n \"src\": \"/api/{index,web,sydney,sys-config}.go\","
},
{
"path": "web/assets/index-1dc749ba.css",
"chars": 728,
"preview": ".fade-enter-active[data-v-4813a901],.fade-leave-active[data-v-4813a901]{transition:opacity 2.5s ease}.fade-enter-from[da"
},
{
"path": "web/assets/index-29dab197.css",
"chars": 6510,
"preview": "*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: "
},
{
"path": "web/assets/index-3a8b3b00.js",
"chars": 258783,
"preview": "import{r as O,w as Te,o as et,a as nt,i as Na,c as D,b as Ha,h as ja,d as pn,e as Ie,f as Ua,g as Oe,j as Ge,k as ue,m a"
},
{
"path": "web/assets/index-63d32cbb.js",
"chars": 236406,
"preview": "(function(){const t=document.createElement(\"link\").relList;if(t&&t.supports&&t.supports(\"modulepreload\"))return;for(cons"
},
{
"path": "web/compose.html",
"chars": 207426,
"preview": "<!DOCTYPE html>\n<html dir=\"ltr\" lang=\"zh\" xml:lang=\"zh\" xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:Web=\"http://schemas.l"
},
{
"path": "web/data/prompts/prompts-zh-TW.json",
"chars": 26543,
"preview": "[\n {\n \"act\": \"擔任雅思寫作考官\",\n \"prompt\": \"我希望你假定自己是雅思寫作考官,根據雅思評判標準,按我給你的雅思考題和對應答案給我評分,並且按照雅思寫作評分細則給出打分依據。此外,請給我詳細的修改意見"
},
{
"path": "web/data/prompts/prompts-zh.json",
"chars": 27174,
"preview": "[\r\n {\r\n \"act\": \"担任雅思写作考官\",\r\n \"prompt\": \"我希望你假定自己是雅思写作考官,根据雅思评判标准,按我给你的雅思考题和对应答案给我评分,并且按照雅思写作评分细则给出打分依据。此外,请给我详细的修"
},
{
"path": "web/data/prompts/prompts.csv",
"chars": 79914,
"preview": "\"act\",\"prompt\"\n\"Linux Terminal\",\"I want you to act as a linux terminal. I will type commands and you will reply with wha"
},
{
"path": "web/index.html",
"chars": 3493,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n <meta content=\"text/html; charset=utf-8\" http-equiv=\"content-type\" />\n <meta"
},
{
"path": "web/js/bing/chat/amd.js",
"chars": 10963,
"preview": "/* eslint-disable */\nvar amd,define,require;(function(n){function e(n,i,u){t[n]||(t[n]={dependencies:i,callback:u},r(n))"
},
{
"path": "web/js/bing/chat/config.js",
"chars": 25105,
"preview": "/* eslint-disable */\n_w['_sydPayWallConfig'] = { loadSydneyConvResWithPayWall: false, useSydneyPayWall: false };\n_w['_sy"
},
{
"path": "web/js/bing/chat/core.js",
"chars": 780,
"preview": "/* eslint-disable */\n(function (n, t) {\n onload = function () {\n _G.BPT = new Date();\n // n && n();\n !_w.sb_pp"
},
{
"path": "web/js/bing/chat/global.js",
"chars": 2024,
"preview": "/* eslint-disable */\ntry {\n const logPathReg = new RegExp('/fd/ls/|/web/xls.aspx');\n // hack sb log\n const _oldSendBe"
},
{
"path": "web/js/bing/chat/lib.js",
"chars": 3040,
"preview": "/* eslint-disable */\nvar Lib;\n(function (n) {\n var t;\n (function (n) {\n function u(n, t) {\n var r, i;\n if"
},
{
"path": "web/manifest.webmanifest",
"chars": 409,
"preview": "{\"name\":\"BingAI\",\"short_name\":\"BingAI\",\"start_url\":\"/web/\",\"display\":\"standalone\",\"background_color\":\"#ffffff\",\"lang\":\"e"
},
{
"path": "web/registerSW.js",
"chars": 142,
"preview": "if('serviceWorker' in navigator) {window.addEventListener('load', () => {navigator.serviceWorker.register('/web/sw.js', "
},
{
"path": "web/sw.js",
"chars": 26072,
"preview": "try{self[\"workbox:core:6.5.4\"]&&_()}catch{}const z=(s,...e)=>{let t=s;return e.length>0&&(t+=` :: ${JSON.stringify(e)}`)"
},
{
"path": "web/web.go",
"chars": 963,
"preview": "package web\n\nimport (\n\t\"adams549659584/go-proxy-bingai/common\"\n\t\"embed\"\n\t\"io/fs\"\n\t\"net/http\"\n\t\"path/filepath\"\n)\n\n//go:em"
}
]
About this extraction
This page contains the full source code of the adams549659584/go-proxy-bingai GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 95 files (1.4 MB), approximately 493.8k tokens, and a symbol index with 1162 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.